def delNodeCB(self, node, data): ''' Callback when a node has been deleted ''' mobject = MObjectHandle(node).object() nodeFn = MFnDependencyNode(mobject) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() didSomething = False if cmds.nodeType(nodeName) == "displacementShader": items = self.displacementList.findItems( nodeName, QtCore.Qt.MatchExactly) for item in items: self.displacementList.takeItem( self.displacementList.row(item)) # remove shaders from caches for cache in self.ABCViewerNode.values(): didSomething = True cache.removeDisplacement(nodeName) else: items = self.shadersList.findItems(nodeName, QtCore.Qt.MatchExactly) for item in items: self.shadersList.takeItem(self.shadersList.row(item)) # remove shaders from caches for cache in self.ABCViewerNode.values(): didSomething = True cache.removeShader(nodeName) if didSomething: self.checkShaders()
def delNodeCB(self, node, data ): ''' Callback when a node has been deleted ''' mobject = MObjectHandle( node ).object() nodeFn = MFnDependencyNode ( mobject ) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() didSomething = False if cmds.nodeType(nodeName) == "displacementShader": items = self.displacementList.findItems(nodeName, QtCore.Qt.MatchExactly) for item in items: self.displacementList.takeItem(self.displacementList.row(item)) # remove shaders from caches for cache in self.ABCViewerNode.values(): didSomething = True cache.removeDisplacement(nodeName) else: items = self.shadersList.findItems(nodeName, QtCore.Qt.MatchExactly) for item in items: self.shadersList.takeItem(self.shadersList.row(item)) # remove shaders from caches for cache in self.ABCViewerNode.values(): didSomething = True cache.removeShader(nodeName) if didSomething: self.checkShaders()
def nameChangedCB(self, node, prevName, client): ''' Callback when a node is renamed ''' if prevName == "" or not prevName or prevName.startswith("_"): return handle = MObjectHandle( node ) if not handle.isValid(): return mobject = handle.object() nodeFn = MFnDependencyNode ( mobject ) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"): if cmds.nodeType(nodeName) == "displacementShader": items = self.displacementList.findItems(prevName, QtCore.Qt.MatchExactly) for item in items: item.setText(nodeName) # renaming shaders in caches for cache in self.ABCViewerNode.values(): cache.renameDisplacement(prevName, nodeName) self.checkShaders() else: items = self.shadersList.findItems(prevName, QtCore.Qt.MatchExactly) for item in items: item.setText(nodeName) if cmds.nodeType(nodeName) == "shadingEngine": # renaming shaders in caches for cache in self.ABCViewerNode.values(): cache.renameShader(prevName, nodeName) self.checkShaders()
def newNodeCB(self, newNode, data): """Callback when creating a new node""" mobject = MObjectHandle(newNode).object() nodeFn = MFnDependencyNode(mobject) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"): # add shader to scroller self.shaderEditor.addShader(nodeName) elif nodeFn.typeName() == 'renderLayer': self.renderLayer.addItems([nodeName])
def delNodeCB(self, node, data): """Callback when a node has been deleted""" mobject = MObjectHandle(node).object() nodeFn = MFnDependencyNode(mobject) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() didSomething = False for cache in self.ABCViewerNode.values(): didSomething = True cache.removeShader(nodeName) self.shaderEditor.removeShader(nodeName) if didSomething: self.checkShaders()
def findMPlug(in_node, in_attribute): ''' @param in_node_name: string, unique name of the node, meaning the full path if multiple nodes of this name exist @param in_attribute_name: string, attribute to find, should exist or you'll get errors ''' node = node_utils.getNodeFromName(in_node) return MPlug(node, MFnDependencyNode(node).attribute(in_attribute))
def newNodeCB(self, newNode, data ): ''' Callback when creating a new node ''' mobject = MObjectHandle( newNode ).object() nodeFn = MFnDependencyNode ( mobject ) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"): if cmds.nodeType(nodeName) == "displacementShader": icon = QtGui.QIcon() icon.addFile(os.path.join(d, "../../icons/sg.xpm"), QtCore.QSize(25,25)) item = QtGui.QListWidgetItem(nodeName) item.setIcon(icon) self.displacementList.addItem(item) else: icon = QtGui.QIcon() icon.addFile(os.path.join(d, "../../icons/sg.xpm"), QtCore.QSize(25,25)) item = QtGui.QListWidgetItem(nodeName) item.setIcon(icon) self.shadersList.addItem(item)
def nameChangedCB(self, node, prevName, client): ''' Callback when a node is renamed ''' if prevName == "" or not prevName or prevName.startswith("_"): return handle = MObjectHandle(node) if not handle.isValid(): return mobject = handle.object() nodeFn = MFnDependencyNode(mobject) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() if not cmds.objExists(nodeName): return if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"): if cmds.nodeType(nodeName) == "displacementShader": items = self.displacementList.findItems( prevName, QtCore.Qt.MatchExactly) for item in items: item.setText(nodeName) # renaming shaders in caches for cache in self.ABCViewerNode.values(): cache.renameDisplacement(prevName, nodeName) self.checkShaders() else: items = self.shadersList.findItems(prevName, QtCore.Qt.MatchExactly) for item in items: item.setText(nodeName) if cmds.nodeType(nodeName) == "shadingEngine": # renaming shaders in caches for cache in self.ABCViewerNode.values(): cache.renameShader(prevName, nodeName) self.checkShaders()
def newNodeCB(self, newNode, data): ''' Callback when creating a new node ''' mobject = MObjectHandle(newNode).object() nodeFn = MFnDependencyNode(mobject) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"): if cmds.nodeType(nodeName) == "displacementShader": icon = QtGui.QIcon() icon.addFile(os.path.join(d, "../../icons/sg.xpm"), QtCore.QSize(25, 25)) item = QtGui.QListWidgetItem(nodeName) item.setIcon(icon) self.displacementList.addItem(item) else: icon = QtGui.QIcon() icon.addFile(os.path.join(d, "../../icons/sg.xpm"), QtCore.QSize(25, 25)) item = QtGui.QListWidgetItem(nodeName) item.setIcon(icon) self.shadersList.addItem(item)
def getDependNodeFromName(in_name): return MFnDependencyNode(getNodeFromName(in_name))
def nameChangedCB(self, node, prevName, client): """Callback when a node is renamed""" if prevName == "" or not prevName or prevName.startswith("_"): return handle = MObjectHandle(node) if not handle.isValid(): return mobject = handle.object() nodeFn = MFnDependencyNode(mobject) if nodeFn.hasUniqueName(): nodeName = nodeFn.name() if not cmds.objExists(nodeName): return # we need to ensure that we are updating all the caches, not just the one selected current_selection = cmds.ls(sl=True) cmds.select(cmds.ls(type='alembicHolder')) self.getNode() if self.ABCViewerNode != {}: if cmds.getClassification(cmds.nodeType(nodeName), satisfies="shader"): if cmds.nodeType(nodeName) == "displacementShader": # renaming displacements in caches for cache in self.ABCViewerNode.values(): cache.renameDisplacement(prevName, nodeName) self.reset(shape=cache.shape) self.shaderEditor.renameShader(prevName, nodeName) else: # renaming shaders in caches for cache in self.ABCViewerNode.values(): cache.renameShader(prevName, nodeName) self.reset(shape=cache.shape) self.shaderEditor.renameShader(prevName, nodeName) elif cmds.nodeType(nodeName) == "shadingEngine": # renaming shaders in caches for cache in self.ABCViewerNode.values(): cache.renameShader(prevName, nodeName) self.reset(shape=cache.shape) self.shaderEditor.renameShader(prevName, nodeName) self.checkShaders() elif cmds.nodeType(nodeName) == "renderLayer": for cache in self.ABCViewerNode.values(): cache.assignations.layers.renameLayer( prevName, nodeName) cache.assignations.writeLayer() self.reset(shape=cache.shape) # update the layers combo self.getLayers() self.setLayer(nodeName) cmds.select(current_selection)