Exemplo n.º 1
0
    def __init__(self, parent=None, qobject=None):
        super(ObjectInfoWidget, self).__init__(parent)
        self.setWindowIcon(Icon("applications-development"))
        self.setWindowTitle("QObject Inspector")
        layout = QtGui.QHBoxLayout()
        self.setLayout(layout)
        layout.setSpacing(0)
        layout.setMargin(0)
        self.__splitter = splitter = QtGui.QSplitter(QtCore.Qt.Horizontal,
                                                     self)
        layout.addWidget(splitter)

        self.__form = form = PropertyEditor(parent=splitter, qobject=qobject)
        self.__tree = tree = TreeQObjectWidget(parent=splitter,
                                               qobject=qobject)
        splitter.addWidget(tree)
        splitter.addWidget(form)

        treeSelectionModel = tree.viewWidget().selectionModel()
        QtCore.QObject.connect(
            treeSelectionModel,
            QtCore.SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
            self.__onSelectionChanged)
Exemplo n.º 2
0
    def setQObject(self, qobject):
        """Sets the current QObject whose properties are to been seen by the
        editor.

        :param qobject: the new QObject (can be None)
        """
        ui = self.__ui
        superClassName = ""
        _class = ""
        className = ""
        isWidget = False
        propCount = 0
        if qobject is None:
            self.__qobject = None
        else:
            _class = qobject.__class__.__name__
            self.__qobject = weakref.ref(qobject)
            metaObject = qobject.metaObject()
            if metaObject is not None:
                className = metaObject.className()
                superClass = metaObject.superClass()
                if superClass is not None:
                    superClassName = superClass.className()
                isWidget = qobject.isWidgetType()
                propCount = metaObject.propertyCount()

        ui.classLineEdit.setText(_class)
        ui.classNameLineEdit.setText(className)
        ui.superClassNameLineEdit.setText(superClassName)
        ui.isWidgetLineEdit.setText(str(isWidget))
        ui.focusButton.setEnabled(isWidget)

        propTree = ui.propertiesTreeWidget

        QtCore.QObject.disconnect(
            propTree, QtCore.SIGNAL("itemChanged (QTreeWidgetItem*, int)"),
            self.__onPropertyTreeChanged)
        propTree.clear()
        if propCount == 0:
            return

        metaO, props = metaObject, []
        while True:
            first, last = metaO.propertyOffset(), metaO.propertyCount()
            if first < last:
                class_props = {}
                for p_index in range(first, last):
                    metaProp = metaObject.property(p_index)
                    class_props[metaProp.name()] = metaProp
                props.insert(0, (metaO, class_props))
            metaO = metaO.superClass()
            if metaO is None:
                break

        # build tree
        for metaO, props in props:
            topItem = QtGui.QTreeWidgetItem(propTree)
            topItem.setText(0, metaO.className())
            for prop_name in sorted(props.keys()):
                metaProp = props[prop_name]
                prop_type = metaProp.typeName()
                value = qobject.property(prop_name)
                prop_value = getPropertyValueDisplay(metaProp, value)
                columns = [prop_name, prop_type, prop_value]
                propItem = QtGui.QTreeWidgetItem(topItem, columns)
                propItem.setFlags(propItem.flags() | QtCore.Qt.ItemIsEditable)
                propItem.setData(2, QtCore.Qt.UserRole, prop_name)
                propItem.setData(2, QtCore.Qt.DisplayRole, value)
                propItem.setToolTip(2,
                                    getPropertyValueToolTip(metaProp, value))

        propTree.expandToDepth(1)
        propTree.headerItem()
        QtCore.QObject.connect(
            propTree, QtCore.SIGNAL("itemChanged (QTreeWidgetItem*, int)"),
            self.__onPropertyTreeChanged)