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

Reply via email to