currently I'm doing the PyQT Model View Programming Tutorial by Yasin Uludag. As I'm new to PyQT I'm still unfamilar with how to get information out of pyqt and back into Maya again. Currently I'm doing the Treeview part of the tutorial trying to figure out how to interpret a name change in the menu into an actual rename for the object.This is the setData method for the model class
def setData(self, index, value, role=QtCore.Qt.EditRole): if index.isValid(): if role ==QtCore.Qt.EditRole: node = index.internalPointer() node.setName(value) return True return False and this is the setName method def name(self): return self._name How do I convert the value in node.setName(value) into something that Maya could read so that I could use it for a cmds.rename? Attached is also the full script in case that information is needed. Thanks for any suggestions given. -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/e2f648f4-8910-4309-8d64-6d31f9c09bfe%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
from PyQt4 import QtCore, QtGui import sip import maya.cmds as cmds import maya.OpenMaya as api import maya.OpenMayaUI as apiUI def mayaMainWindow(): ptr = apiUI.MQtUtil.mainWindow() mainWin= sip.wrapinstance(long(ptr),QtCore.QObject) return mainWin class Node(object): def __init__(self, name, parent=None): self._name=name self._children=[] self._parent=parent if parent is not None: parent.addChild(self) def typeInfo(self): return 'NODE' def addChild(self, child): self._children.append(child) def name(self): return self._name def setName(self, name): print self._name, name self._name=name #cmds.rename(self._name, name) def child(self, row): return self._children[row] def childCount(self): return len(self._children) def parent(self): return self._parent def row(self): if self._parent is not None: return self._parent._children.index(self) def log(self, tabLevel=-1): output = '' tabLevel +=1 for i in range(tabLevel): output+='\t' output += '|---------'+ self._name+'\n' for child in self._children: output +=child.log(tabLevel) tablevel -=1 output +='\n' return output def __repr__(self): return self.log() class TransformNode(Node): def __init__(self, name, parent=None): super(TransformNode, self).__init__(name, parent) def typeInfo(self): return 'TRANSFORM' class CameraNode(Node): def __init__(self, name, parent=None): super(CameraNode, self).__init__(name, parent) def typeInfo(self): return 'Camera' class LightNode(Node): def __init__(self, name, parent=None): super(LightNode, self).__init__(name, parent) def typeInfo(self): return 'Light' class SceneGraphModel(QtCore.QAbstractItemModel): '''INPUTS: Node, QOject''' def __init__(self, root, parent=mayaMainWindow()): super(SceneGraphModel,self).__init__(parent) self._rootNode=root '''INPUTS:QModelIndex''' '''OUTPUT: init''' def rowCount(self, parent): if not parent.isValid(): parentNode=self._rootNode else: parentNode = parent.internalPointer() return parentNode.childCount() '''INPUTS:QModelIndex''' '''OUTPUT: init''' def columnCount(self, parent): return 2 '''INPUTS:QModelIndex, int''' '''OUTPUT: QVariant, strings are cast to QString which is a QVariant''' def data(self, index, role): if not index.isValid(): return None node=index.internalPointer() if role==QtCore.Qt.DisplayRole or role==QtCore.Qt.EditRole: if index.column()==0: return node.name() else: return node.typeInfo() #INPUTS: QModelIndex, QVariant, int(flag)''' def setData(self, index, value, role=QtCore.Qt.EditRole): if index.isValid(): if role ==QtCore.Qt.EditRole: node = index.internalPointer() node.setName(value) return True return False '''INPUTS: int, Qt::QModelIndex, int''' '''OUTPUT: QVariant, strings are cast to QString which is a QVariant''' def headerData(self, section, orientation, role): if role==QtCore.Qt.DisplayRole: if section==0: return 'Scenegraph' else: return 'TypeInfo' '''INPUTS:QModelIndex''' '''OUTPUT: int(flag)''' def flags(self, index): return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable '''INPUTS: QModelIndex''' '''OUTPUT: QModelIndex''' '''Should return the parent of the node with the given QModelIndex''' def parent(self, index): node= index.internalPointer() parentNode = node.parent() if parentNode == self._rootNode: return QtCore.QModelIndex() return self.createIndex(parentNode.row(), 0,parentNode) '''INPUTS: int, int, QMOdelIndex''' '''OUTPUT: QModelIndex''' '''Should return the QModelIndex that corresponds to the given row, column and parent node''' def index(self, row, column, parent): if not parent.isValid(): parentNode=self._rootNode else: parentNode=parent.internalPointer() childItem=parentNode.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QtCore.QModelIndex()