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 [email protected].
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()