Example #1
0
    def _fill_widget_influences(self, qt_parent, data):
        obj = pymel.PyNode(data.val) if data.val else None
        #obj, children_data = data
        if obj:
            obj_name = obj.stripNamespace()

            fnFilter = lambda x: libSerialization.is_network_from_class(x, 'Module')
            networks = libSerialization.get_connected_networks(obj, key=fnFilter, recursive=False)

            textBrush = QtGui.QBrush(QtCore.Qt.white)

            if self._is_influence(obj):  # todo: listen to the Rig class
                qItem = QtGui.QTreeWidgetItem(0)
                qItem.obj = obj
                qItem.networks = networks
                qItem.setText(0, obj_name)
                qItem.setForeground(0, textBrush)
                ui_shared._set_icon_from_type(obj, qItem)
                qItem.setCheckState(0, QtCore.Qt.Checked if networks else QtCore.Qt.Unchecked)
                if qItem.flags() & QtCore.Qt.ItemIsUserCheckable:
                    qItem.setFlags(qItem.flags() ^ QtCore.Qt.ItemIsUserCheckable)
                qt_parent.addChild(qItem)
                qt_parent = qItem

        for child_data in data.children:
            self._fill_widget_influences(qt_parent, child_data)
Example #2
0
    def _fill_widget_meshes(self, qt_parent, mesh, influences):
        textBrush = QtGui.QBrush(QtCore.Qt.white)

        # Add mesh
        item_mesh = QtGui.QTreeWidgetItem(0)
        item_mesh.setText(0, str(mesh))
        item_mesh.setForeground(0, textBrush)
        ui_shared._set_icon_from_type(mesh.getParent(), item_mesh)
        qt_parent.addChild(item_mesh)

        # Monkey-patch mesh QWidget
        item_mesh.metadata_type = ui_shared.MetadataType.Mesh
        item_mesh.metadata_data = mesh

        # Add influences
        if influences:
            for influence in influences:
                item = QtGui.QTreeWidgetItem(0)
                item.setText(0, str(influence))
                item.setForeground(0, textBrush)
                ui_shared._set_icon_from_type(influence, item)
                item_mesh.addChild(item)

                # Monkey-patch influence QWidget
                item.metadata_type = ui_shared.MetadataType.Influece
                item.metadata_data = influence
Example #3
0
    def _fill_widget_influences(self, qt_parent, data):
        obj = pymel.PyNode(data.val) if data.val else None
        #obj, children_data = data
        if obj:
            obj_name = obj.stripNamespace()

            fnFilter = lambda x: libSerialization.is_network_from_class(
                x, 'Module')
            networks = libSerialization.get_connected_networks(obj,
                                                               key=fnFilter,
                                                               recursive=False)

            textBrush = QtGui.QBrush(QtCore.Qt.white)

            if self._is_influence(obj):  # todo: listen to the Rig class
                qItem = QtGui.QTreeWidgetItem(0)
                qItem.obj = obj
                qItem.networks = networks
                qItem.setText(0, obj_name)
                qItem.setForeground(0, textBrush)
                ui_shared._set_icon_from_type(obj, qItem)
                qItem.setCheckState(
                    0, QtCore.Qt.Checked if networks else QtCore.Qt.Unchecked)
                if qItem.flags() & QtCore.Qt.ItemIsUserCheckable:
                    qItem.setFlags(qItem.flags()
                                   ^ QtCore.Qt.ItemIsUserCheckable)
                qt_parent.addChild(qItem)
                qt_parent = qItem

        for child_data in data.children:
            self._fill_widget_influences(qt_parent, child_data)
Example #4
0
    def _fill_widget_meshes(self, qt_parent, mesh, influences):
        textBrush = QtGui.QBrush(QtCore.Qt.white)

        # Add mesh
        item_mesh = QtGui.QTreeWidgetItem(0)
        item_mesh.setText(0, str(mesh))
        item_mesh.setForeground(0, textBrush)
        ui_shared._set_icon_from_type(mesh.getParent(), item_mesh)
        qt_parent.addChild(item_mesh)

        # Monkey-patch mesh QWidget
        item_mesh.metadata_type = ui_shared.MetadataType.Mesh
        item_mesh.metadata_data = mesh

        # Add influences
        if influences:
            for influence in influences:
                item = QtGui.QTreeWidgetItem(0)
                item.setText(0, str(influence))
                item.setForeground(0, textBrush)
                ui_shared._set_icon_from_type(influence, item)
                item_mesh.addChild(item)

                # Monkey-patch influence QWidget
                item.metadata_type = ui_shared.MetadataType.Influece
                item.metadata_data = influence
Example #5
0
    def _rig_to_tree_widget(self, module):
        qItem = QtGui.QTreeWidgetItem(0)
        if hasattr(module, '_network'):
            qItem.net = module._network
        else:
            pymel.warning("{0} have no _network attributes".format(module))
        qItem.rig = module

        # Set label
        label = str(module)
        if isinstance(module, classModule.Module) and module.locked:
            label += ' (locked)'
        qItem.setText(0, label)

        # HACK: bypass the stylecheet
        # see: http://forum.qt.io/topic/22219/item-view-stylesheet-bgcolor/12
        # style_sheet_invalid = """
        # QTreeView::item
        # {
        #   background-color: rgb(45,45,45);
        # }"""
        self._set_QTreeWidgetItem_color(qItem, module)

        qItem._name = qItem.text(0)
        qItem._checked = module.is_built()
        qItem.setFlags(qItem.flags() | QtCore.Qt.ItemIsEditable)
        qItem.setCheckState(
            0, QtCore.Qt.Checked if module.is_built() else QtCore.Qt.Unchecked)
        if isinstance(module, classRig.Rig):
            qItem.setIcon(0, QtGui.QIcon(":/out_character.png"))
            sorted_modules = sorted(module, key=lambda mod: mod.name)
            for child in sorted_modules:
                qSubItem = self._rig_to_tree_widget(child)
                qSubItem.setIcon(0, QtGui.QIcon(":/out_objectSet.png"))
                for input in child.input:
                    qInputItem = QtGui.QTreeWidgetItem(0)
                    qInputItem.setText(0, input.name())
                    ui_shared._set_icon_from_type(input, qInputItem)
                    qInputItem.setFlags(qItem.flags()
                                        & QtCore.Qt.ItemIsSelectable)
                    qSubItem.addChild(qInputItem)
                qItem.addChild(qSubItem)
        return qItem
Example #6
0
    def _rig_to_tree_widget(self, module):
        qItem = QtGui.QTreeWidgetItem(0)
        if hasattr(module, '_network'):
            qItem.net = module._network
        else:
            pymel.warning("{0} have no _network attributes".format(module))
        qItem.rig = module

        # Set label
        label = str(module)
        if isinstance(module, classModule.Module) and module.locked:
            label += ' (locked)'
        qItem.setText(0, label)

        # HACK: bypass the stylecheet
        # see: http://forum.qt.io/topic/22219/item-view-stylesheet-bgcolor/12
        # style_sheet_invalid = """
        # QTreeView::item
        # {
        #   background-color: rgb(45,45,45);
        # }"""
        self._set_QTreeWidgetItem_color(qItem, module)

        qItem._name = qItem.text(0)
        qItem._checked = module.is_built()
        qItem.setFlags(qItem.flags() | QtCore.Qt.ItemIsEditable)
        qItem.setCheckState(0, QtCore.Qt.Checked if module.is_built() else QtCore.Qt.Unchecked)
        if isinstance(module, classRig.Rig):
            qItem.setIcon(0, QtGui.QIcon(":/out_character.png"))
            sorted_modules = sorted(module, key=lambda mod: mod.name)
            for child in sorted_modules:
                qSubItem = self._rig_to_tree_widget(child)
                qSubItem.setIcon(0, QtGui.QIcon(":/out_objectSet.png"))
                for input in child.input:
                    qInputItem = QtGui.QTreeWidgetItem(0)
                    qInputItem.setText(0, input.name())
                    ui_shared._set_icon_from_type(input, qInputItem)
                    qInputItem.setFlags(qItem.flags() & QtCore.Qt.ItemIsSelectable)
                    qSubItem.addChild(qInputItem)
                qItem.addChild(qSubItem)
        return qItem