예제 #1
0
def convert(mguiName):
	"""
	From the name of a Maya UI element of any type to pointer,
	and wrap the pointer into a python QObject
	:param mguiName: Maya UI Name
	:type mguiName: string
	:return: QWidget or subclass instance
	:rtype: QtGui.QWidget

	Thanks to Nathan Horne
	"""
	# Get pointer
	ptr = MQtUtil.findControl(mguiName)
	if ptr is None:
		ptr = MQtUtil.findLayout(mguiName)
	if ptr is None:
		ptr = MQtUtil.findMenuItem(mguiName)
	if ptr is None:
		return None
	# Find corresponding class
	qObj = wrapInstance(long(ptr), QtCore.QObject)
	metaObj = qObj.metaObject()
	cls = metaObj.className()
	superCls = metaObj.superClass().className()
	if hasattr(QtGui, cls):
		base = getattr(QtGui, cls)
	elif hasattr(QtGui, superCls):
		base = getattr(QtGui, superCls)
	else:
		base = QtGui.QWidget

	return wrapInstance(long(ptr), base)
예제 #2
0
def convert(mguiName):
    """
	From the name of a Maya UI element of any type to pointer,
	and wrap the pointer into a python QObject
	:param mguiName: Maya UI Name
	:type mguiName: string
	:return: QWidget or subclass instance
	:rtype: QtWidgets.QWidget

	Thanks to Nathan Horne
	"""
    # Get pointer
    ptr = MQtUtil.findControl(mguiName)
    if ptr is None:
        ptr = MQtUtil.findLayout(mguiName)
    if ptr is None:
        ptr = MQtUtil.findMenuItem(mguiName)
    if ptr is None:
        return None
    # Find corresponding class
    qObj = QtCompat.wrapInstance(long(ptr), QtCore.QObject)
    metaObj = qObj.metaObject()
    cls = metaObj.className()
    superCls = metaObj.superClass().className()
    if hasattr(QtWidgets, cls):
        base = getattr(QtWidgets, cls)
    elif hasattr(QtWidgets, superCls):
        base = getattr(QtWidgets, superCls)
    else:
        base = QtWidgets.QWidget

    return QtCompat.wrapInstance(long(ptr), base)
예제 #3
0
def active_panel_widget():
    from maya import cmds
    from maya.OpenMayaUI import MQtUtil
    try:
        from shiboken import wrapInstance
    except ImportError:
        from shiboken2 import wrapInstance

    panel = cmds.getPanel(withFocus=True)
    widget = wrapInstance(long(MQtUtil.findControl(panel)), QtWidgets.QWidget)
    return MayaWidget(panel, widget)
예제 #4
0
def get_q_object(element_name):
    """
    :param element_name: str(<maya_element_name>)
    :return: QObject
    """
    pointer = MQtUtil.findControl(element_name)
    if not pointer:
        pointer = MQtUtil.findLayout(element_name)
    if not pointer:
        pointer = MQtUtil.findMenuItem(element_name)
    return shiboken.wrapInstance(pointer, QtCore.QObject)
예제 #5
0
파일: maya.py 프로젝트: danbradham/hotline
def active_panel_widget():
    from maya import cmds
    from maya.OpenMayaUI import MQtUtil
    try:
        from shiboken import wrapInstance
    except ImportError:
        from shiboken2 import wrapInstance

    panel = cmds.getPanel(withFocus=True)
    widget = wrapInstance(long(MQtUtil.findControl(panel)), QtWidgets.QWidget)
    return MayaWidget(panel, widget)
def wrap():
    i = 1
    while i:
        try:
            se_edit = wrapInstance(long(MQtUtil.findControl('cmdScrollFieldReporter%i' % i)), QTextEdit)
            break
        except TypeError:
            i += 1
    try:
        syntax_highlighter.deleteLater()
    except:
        pass
    syntax_highlighter = SH(se_edit)
예제 #7
0
    def get_shader(self, shader):
        """Wrap and return a maya material swatch as a QWidget"""

        port = cmds.swatchDisplayPort(sn=shader,
                                      widthHeight=[32, 32],
                                      width=32,
                                      height=32,
                                      renderSize=32,
                                      backgroundColor=[0, 0, 0])
        ptr = MQtUtil.findControl(port)
        qport = shiboken2.wrapInstance(long(ptr), QtWidgets.QWidget)
        qport.setFixedSize(32, 32)
        return qport
예제 #8
0
def getChildWin(title, widgType=QtWidgets.QWidget):
    for w in getMayaMainWindow().children():
        if w.isWidgetType() and w.windowTitle() == title:
            return w
    else:
        ptr = MQtUtil.findControl(title)
        if not ptr:
            ptr = MQtUtil.findWindow(title)
        if not ptr:
            ptr = MQtUtil.findLayout(title)
        if not ptr:
            return
        return shiboken2.wrapInstance(long(ptr), widgType)
예제 #9
0
    def __init__(self, workspace_control_name=None):
        super(MyDockableButton, self).__init__()

        self.setWindowTitle("Dockable Window")

        self.setText("My Button")

        if workspace_control_name:
            workspace_control_ptr = long(
                MQtUtil.findControl(workspace_control_name))
            widget_ptr = long(getCppPointer(self)[0])

            MQtUtil.addWidgetToMayaLayout(widget_ptr, workspace_control_ptr)
예제 #10
0
def setupMannequinUI():
    """Sets up the side panel UI for the Mannequin plugin."""

    currentContext = cmds.currentCtx()
    influenceObjectsStr = cmds.mannequinContext(currentContext,
                                                q=True,
                                                io=True)
    ioTokens = influenceObjectsStr.split(" ")
    ioDagPaths = ioTokens[::2]
    ioAvailableStyles = ioTokens[1::2]

    mannequinDockPtr = MQtUtil.findLayout("mannequinPaletteDock")
    mannequinDock = wrapInstance(long(mannequinDockPtr), QWidget)
    mannequinDock.setMinimumWidth(300)

    mannequinLayoutPtr = MQtUtil.findLayout("mannequinPaletteLayout")
    mannequinLayout = wrapInstance(long(mannequinLayoutPtr), QWidget)

    mannequinSearchPtr = MQtUtil.findControl("mannequinSearchField")
    mannequinSearch = wrapInstance(long(mannequinSearchPtr), QLineEdit)

    uiFile = QFile(os.path.join(os.path.dirname(__file__), "mannequin.ui"))
    uiFile.open(QFile.ReadOnly)
    gui = mannequinToolPanel.loader.load(uiFile, parentWidget=mannequinLayout)
    uiFile.close()

    selList = om.MSelectionList()
    for obj in ioDagPaths:
        selList.add(obj)

    joints = []
    for i in range(selList.length()):
        dagPath = selList.getDagPath(i)
        dependNode = selList.getDependNode(i)
        styles = ioAvailableStyles[i]

        joints.append(JointInfo(dagPath, dependNode, styles))

    # Alphabetize joints by full DAG path; should sort slightly better.
    joints = sorted(joints, key=lambda j: j.dagPath.fullPathName())

    prefixTrim = commonPrefix(joints)
    mannequinToolPanel.reset(mannequinLayout,
                             gui,
                             mannequinSearch,
                             prefixTrim)

    jointDisplays = organizeJoints(joints)
    for jointDisplay in jointDisplays:
        mannequinToolPanel.layoutJointGroup(jointDisplay)
    mannequinToolPanel.finishLayout()
예제 #11
0
def setupMannequinUI():
    """Sets up the side panel UI for the Mannequin plugin."""

    currentContext = cmds.currentCtx()
    influenceObjectsStr = cmds.mannequinContext(currentContext,
                                                q=True,
                                                io=True)
    ioTokens = influenceObjectsStr.split(" ")
    ioDagPaths = ioTokens[::2]
    ioAvailableStyles = ioTokens[1::2]

    mannequinDockPtr = MQtUtil.findLayout("mannequinPaletteDock")
    mannequinDock = wrapInstance(long(mannequinDockPtr), QWidget)
    mannequinDock.setMinimumWidth(300)

    mannequinLayoutPtr = MQtUtil.findLayout("mannequinPaletteLayout")
    mannequinLayout = wrapInstance(long(mannequinLayoutPtr), QWidget)

    mannequinSearchPtr = MQtUtil.findControl("mannequinSearchField")
    mannequinSearch = wrapInstance(long(mannequinSearchPtr), QLineEdit)

    uiFile = QFile(os.path.join(os.path.dirname(__file__), "mannequin.ui"))
    uiFile.open(QFile.ReadOnly)
    gui = mannequinToolPanel.loader.load(uiFile, parentWidget=mannequinLayout)
    uiFile.close()

    selList = om.MSelectionList()
    for obj in ioDagPaths:
        selList.add(obj)

    joints = []
    for i in range(selList.length()):
        dagPath = selList.getDagPath(i)
        dependNode = selList.getDependNode(i)
        styles = ioAvailableStyles[i]

        joints.append(JointInfo(dagPath, dependNode, styles))

    # Alphabetize joints by full DAG path; should sort slightly better.
    joints = sorted(joints, key=lambda j: j.dagPath.fullPathName())

    prefixTrim = commonPrefix(joints)
    mannequinToolPanel.reset(mannequinLayout, gui, mannequinSearch, prefixTrim)

    jointDisplays = organizeJoints(joints)
    for jointDisplay in jointDisplays:
        mannequinToolPanel.layoutJointGroup(jointDisplay)
    mannequinToolPanel.finishLayout()
    def __init__(self):
        super(MyDockableButtonStatic, self).__init__()

        self.setObjectName(self.UI_NAME)

        self.setWindowTitle("Dockable Window")
        self.setText('My Button')

        workspace_control_name = "{0}WorkspaceControl".format(self.UI_NAME)

        if cmds.workspaceControl(workspace_control_name, q=True, exists=True):
            workspace_control_ptr = long(
                MQtUtil.findControl(workspace_control_name))
            widget_ptr = long(getCppPointer(self)[0])

            MQtUtil.addWidgetToMayaLayout(widget_ptr, workspace_control_ptr)
예제 #13
0
def dp_makePySideUI(ctrlName, myStyle):

    # thanks to Nathan Horne
    ctrlName = long(MQtUtil.findControl(ctrlName))
    qObj = wrapInstance(ctrlName, QtCore.QObject)
    metaObj = qObj.metaObject()
    cls = metaObj.className()
    superCls = metaObj.superClass().className()

    if hasattr(QtGui, cls):
        base = getattr(QtGui, cls)
    elif hasattr(QtGui, superCls):
        base = getattr(QtGui, superCls)
    else:
        base = QtGui.QWidget

    uiPySide = wrapInstance(ctrlName, base)
    uiPySide.setStyleSheet(myStyle)
예제 #14
0
	def dpaf_makePySideUI(self, ctrlName, myStyle):

		# thanks to Nathan Horne
		ctrlName = long(MQtUtil.findControl(ctrlName))
		qObj = wrapInstance(ctrlName, QtCore.QObject)
		metaObj = qObj.metaObject()
		cls = metaObj.className()
		superCls = metaObj.superClass().className()

		if hasattr(QtGui, cls):
			base = getattr(QtGui, cls)
		elif hasattr(QtGui, superCls):
			base = getattr(QtGui, superCls)
		else:
			base = QtGui.QWidget

		uiPySide = wrapInstance(ctrlName, base)
		uiPySide.setStyleSheet(myStyle)
예제 #15
0
        def __init__(self, name='scriptEditor', parent=None, textChangeHandler=None, **kwargs):
            super(ScriptEditorWidget, self).__init__(parent)

            self.setObjectName(name)

            self.__layout = QtWidgets.QVBoxLayout(self)
            self.__layout.setContentsMargins(0,0,0,0)

            self.mayaEditor = cmds.cmdScrollFieldExecuter(
                st='python', searchWraps=True, filterKeyPress=self.__keyPress,
                cco=False, opc=False, sth=False, # acb=False,
                **kwargs)
            self.__txt = ''

            p = MQtUtil.findControl(self.mayaEditor)
            self.editor = p and wrapInstance(long(p), QtWidgets.QTextEdit)
            if self.editor:
                self.editor.setParent(self)
                if textChangeHandler:
                    self.__textChangeHandler = textChangeHandler
                    self.editor.installEventFilter(self)
                    #self.editor.textChanged.connect(self.__textChanged)
                self.__layout.addWidget(self.editor)
예제 #16
0
파일: QTextField.py 프로젝트: alfsici/mGui
def hook_text_changed_event(maya_text_field, event):
    ptr = MQtUtil.findControl(maya_text_field)
    qt_wrapper = wrapInstance(long(ptr), QTextEdit)
    signal = QtCore.SIGNAL("textChanged(const QString&)")
    qt_wrapper.connect(signal, event)
    return qt_wrapper
예제 #17
0
파일: QTextField.py 프로젝트: alfsici/mGui
def hook_key_changed_event(maya_text_field, event):
    ptr = MQtUtil.findControl(maya_text_field)
    qt_wrapper = wrapInstance(long(ptr), QTextEdit)
    signal = QtCore.SIGNAL("keyReleaseEvent(QKeyEvent * ev)")
    qt_wrapper.connect(signal, event)
    return qt_wrapper
예제 #18
0
# Create an instance of the button and display it.
#
button = MyButton()
button.show()

# A valid Maya control name has been automatically assigned
# to the button.
#
buttonName = button.objectName()
print('# ' + buttonName)
# MyButton_368fe1d8-5bc3-4942-a1bf-597d1b5d3b83

# Losing our only reference to the button does not cause it to be
# destroyed.
#
myButton = None

# We can use the button's name to find it as a Maya control.
#
from maya.OpenMayaUI import MQtUtil
from shiboken2 import wrapInstance

ptr = MQtUtil.findControl(buttonName)
foundControl = wrapInstance(long(ptr), QPushButton)

# Print out the button's text.
#
print('# ' + foundControl.text())
# Push Me
예제 #19
0
파일: _compat.py 프로젝트: techartorg/mGui
def _find_widget_ptr(widget):
    ptr = (MQtUtil.findControl(widget) or
           MQtUtil.findLayout(widget) or
           MQtUtil.findMenuItem(widget))
    return ptr