示例#1
0
    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()"))
示例#2
0
    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()"))
示例#3
0
    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)
示例#4
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)
示例#5
0
 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)
示例#6
0
 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)
示例#7
0
 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
示例#8
0
 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
示例#9
0
    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