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)
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
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)
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
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