def sort(self, column, order=QtCore.Qt.AscendingOrder): """ @see: L{sort<PyQt4.QtCore.QAbstractTableModel.sort>} """ self._sortedColumn = column self._sortedOrder = order self.emit(QtCore.SIGNAL("layoutAboutToBeChanged()")) self._properties.sort(reverse = (order == QtCore.Qt.DescendingOrder), cmp=lambda x, y: cmp(determineDisplayRepresentation(x[column]).lower(), determineDisplayRepresentation(y[column]).lower())) self.emit(QtCore.SIGNAL("layoutChanged()"))
def sort(self, column, order=QtCore.Qt.AscendingOrder): """ @see: L{sort<PyQt4.QtCore.QAbstractTableModel.sort>} """ self._sortedColumn = column self._sortedOrder = order self.emit(QtCore.SIGNAL("layoutAboutToBeChanged()")) self._properties.sort( reverse=(order == QtCore.Qt.DescendingOrder), cmp=lambda x, y: cmp( determineDisplayRepresentation(x[column]).lower(), determineDisplayRepresentation(y[column]).lower())) self.emit(QtCore.SIGNAL("layoutChanged()"))
def _selectedDataStoreChanged(self, dataStoreName): """ Handles changed selection of the data store. """ dataStoreName = unicode(dataStoreName) if not dataStoreName in self._dataStores: dataStoreName = self._dataStores.keys()[0] dataStore = self._dataStores[unicode(dataStoreName)] self.dataStoreTableWidget.clear() row = 0 self.dataStoreTableWidget.setRowCount(len(self._DATASTORE_PROPERTY_DISPLAYNAME_MAP)) for dataStorePropertyName, displayName in self._DATASTORE_PROPERTY_DISPLAYNAME_MAP.iteritems(): try: value = getattr(dataStore, dataStorePropertyName) value = determineDisplayRepresentation(value) except AttributeError: continue else: propertyNameItem = QtGui.QTableWidgetItem(displayName) valueItem = QtGui.QTableWidgetItem(unicode(value)) self.dataStoreTableWidget.setItem(row, 0, propertyNameItem) self.dataStoreTableWidget.setItem(row, 1, valueItem) row += 1 self.dataStoreTableWidget.setRowCount(row) self.dataStoreTableWidget.model().sort(0)
def __init__(self, restrictions, editorFactory, initData=list(), parent=None): """ @param restrictions: List-specific restrictions. see: L{<property_type.ListType>datafinder.core.configuration.properties.property_type.ListType} @type restrictions: C{dict} @param editorFactory: Factory for creation of value editors. @type editorFactory: C{EditorFactory} @param initData: Initial list data. @type initData: C{list} of C{object} @param parent: Parent widget of the dialog. @type parent: L{QWidget<PyQt4.QtGui.QWidget} """ QtGui.QLineEdit.__init__(self, parent) self._editorFactory = editorFactory self.value = initData self._allowedPropertyTypes = restrictions.get(constants.ALLOWED_SUB_TYPES, self._SUPPORTED_PROPERTY_TYPES) self._removeUnsupportedPropertyTypes() self._editButton = QtGui.QPushButton("...", self) self._editButton.setMaximumSize(QtCore.QSize(20, 20)) self.setReadOnly(True) self.setStyleSheet("QLineEdit { padding-right: 0px; } ") self.setText(determineDisplayRepresentation(initData)) self._showEditorSlot() self.connect(self._editButton, QtCore.SIGNAL("clicked()"), self._showEditorSlot)
def data(self, role): """ Ensures that the values are correctly rendered. """ if role == Qt.DisplayRole: return QtCore.QVariant(determineDisplayRepresentation(self._value)) else: return QtGui.QTableWidgetItem(self).data(role)
def _showEditorSlot(self): """ Slot which shows the list editor. """ listPropertyEditor = _ListPropertyDialog(self._allowedPropertyTypes, self.value, self._editorFactory, self) listPropertyEditor.exec_() self.setText(determineDisplayRepresentation(self.value)) self.setFocus(Qt.OtherFocusReason)
def _getValueDisplayRepresentation(self, row, index): value = self._properties[row][index.column()] if index.column() == 2: propDef = self._properties[row][3] propId = None if not propDef is None: propId = propDef.identifier variant = QtCore.QVariant(determineDisplayRepresentation(value, propId)) else: variant = QtCore.QVariant(value) return variant
def _getValueDisplayRepresentation(self, row, index): value = self._properties[row][index.column()] if index.column() == 2: propDef = self._properties[row][3] propId = None if not propDef is None: propId = propDef.identifier variant = QtCore.QVariant( determineDisplayRepresentation(value, propId)) else: variant = QtCore.QVariant(value) return variant
def _determineDisplayRole(self, column, item): """ Determines value of the different columns which has to be displayed. """ data = self._emptyQVariant value = getattr(item, self._headerIds[column]) if not value is None: if item.isLink and self._headerIds[column] == "name": if sys.platform == "win32" and item.uri.startswith( "file:///") and value.endswith(".lnk"): value = value[:-4] data = QtCore.QVariant( determineDisplayRepresentation(value, self._headerIds[column])) return data