'''The StandardAssetItem represents a row/column cell in the Qt model.
'''
SUPPORTED_ROLES = [ Qt.EditRole, Qt.DisplayRole, Qt.CheckStateRole ]
def __init__(self, mydata):
self._mydata = mydata
if type(mydata) == types.BooleanType:
checkstate = Qt.Unchecked
if mydata == True:
checkstate = Qt.Checked
self.setCheckState(checkstate)
self.setCheckable(True)
self.setEditable(False)
elif type(mydata) == types.StringType:
self.setText(mydata)
else:
self.setEditable(False)
def setData(self, variant, role):
if role not in self.SUPPORTED_ROLES:
value = None
if role in [ Qt.EditRole, Qt.DisplayRole ]:
value = variant.toPyObject()
if type
(value
) == PyQt4.
QtCore.
QString: # convert it to a std string.
value = str(value)
elif role == Qt.CheckStateRole:
checkstate, okay = variant.toInt()
value = checkstate == Qt.Checked
if self._mydata != value:
self._mydata = value
# and tell the world the value changed
class StandardAssetItem(QtGui.QStandardItem):
'''The StandardAssetItem represents a row/column cell in the Qt model.
'''
SUPPORTED_ROLES = [ Qt.EditRole, Qt.DisplayRole, Qt.CheckStateRole ]
def __init__(self, mydata):
QtGui.QStandardItem.__init__(self)
self._mydata = mydata
if type(mydata) == types.BooleanType:
checkstate = Qt.Unchecked
if mydata == True:
checkstate = Qt.Checked
self.setCheckState(checkstate)
self.setCheckable(True)
self.setEditable(False)
elif type(mydata) == types.StringType:
self.setText(mydata)
else:
self.setEditable(False)
def setData(self, variant, role):
if role not in self.SUPPORTED_ROLES:
return QtGui.QStandardItem.setData(self, variant, role)
value = None
if role in [ Qt.EditRole, Qt.DisplayRole ]:
value = variant.toPyObject()
if type(value) == PyQt4.QtCore.QString:
# convert it to a std string.
value = str(value)
elif role == Qt.CheckStateRole:
checkstate, okay = variant.toInt()
value = checkstate == Qt.Checked
if self._mydata != value:
self._mydata = value
# and tell the world the value changed
QtGui.QStandardItem.setData(self, variant, role)
To copy to clipboard, switch view to plain text mode
Bookmarks