Example #1
0
    def listItemRightClicked(self, QPos):
        self.listMenu = QtGui.QMenu()

        self.listMenu.setStyleSheet("""
            QMenu {
                background-color: #313131;
                border: 1px solid ;
            }
            QMenu::item::selected {
                background-color: #1e1e1e;
            }
        """)

        import_mtl = self.listMenu.addAction("Import Material")
        import_klf = self.listMenu.addAction("Import Lookfile")
        import_Lmtl = self.listMenu.addAction("Create Material")
        delete_mtl = self.listMenu.addAction("Delete Material")

        self.connect(import_mtl, QtCore.SIGNAL("triggered()"), self.importMtl)
        self.connect(import_klf, QtCore.SIGNAL("triggered()"), self.importKlf)
        self.connect(import_Lmtl, QtCore.SIGNAL("triggered()"),
                     self.importLmtl)
        self.connect(delete_mtl, QtCore.SIGNAL("triggered()"), self.deleteMtl)
        parentPosition = self.listWidget.mapToGlobal(QtCore.QPoint(0, 0))
        self.listMenu.move(parentPosition + QPos)
        self.listMenu.show()
Example #2
0
        def lightListWidgetMousePressEvent(event):
            """
            Handle mouse events
            """
            # Set up context menu (right-click)
            if event.button() == QtCore.Qt.RightButton:
                item = lightListWidget.itemAt(event.pos())
                if not item:
                    return

                scriptItem = item.getItemData()
                item.setHiliteColor(QtGui.QColor(32,32,32))
                lightListWidget.update(lightListWidget.indexFromItem(item))

                menu = QtGui.QMenu(None)

                # Render options
                UI4.Util.RenderMenu.AddRenderItemsToMenu(
                        menu, scriptItem.getRenderNode(), None)
                menu.addSeparator()

                # Add 'Delete' action
                def delete():
                    # Delete selected light pass items
                    for item in lightListWidget.selectedItems():
                        item.getItemData().delete()


                menu.addAction('Delete', delete)
                menu.addSeparator()

                # Add 'View From Render Node' action
                def viewNode():
                    NodegraphAPI.SetNodeViewed(
                            scriptItem.getRenderNode(), True, exclusive=True)
                action = menu.addAction('View From Render Node', viewNode)
                action.setIcon(UI4.Util.IconManager.GetIcon(
                        'Icons/AttributeEditor/blue_snapback.png'))

                # Show menu
                pos = event.pos()
                pos = lightListWidget.mapToGlobal(QtCore.QPoint(
                         pos.x(), pos.y() + lightListWidget.header().height()))
                try:
                    menu.exec_(pos)
                finally:
                    item.setHiliteColor(None)
                    lightListWidget.update(lightListWidget.indexFromItem(item))
                    event.accept()
                    self.updateLightList()
Example #3
0
    def buildWidgets(self, hints):
        """Creates most of the UI widgets"""
        label = QtGui.QLabel(" (PyMock)", self)
        label.setProperty('smallFont', True)
        label.setProperty('boldFont', True)
        p = label.palette()
        p.setColor(QtGui.QPalette.WindowText, QtGui.QColor(255, 200, 0))
        p.setColor(QtGui.QPalette.Text, QtGui.QColor(255, 200, 0))
        label.setPalette(p)
        self.layout().addWidget(label)

        self.__protocolLabel = QtGui.QLabel("mock://")
        self.layout().addWidget(self.__protocolLabel)

        self.__showEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__showEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__shotEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__shotEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__assetEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__assetEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__versionEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__versionEdit)

        self.connect(self.__showEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__shotEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__assetEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__versionEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)

        # Add a context menu to the protocol label
        self.__protocolLabel.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.connect(
            self.__protocolLabel,
            QtCore.SIGNAL('customContextMenuRequested(const QPoint&)'),
            self.onContextMenu)

        self.__popupMenu = QtGui.QMenu(self)
        self.__popupMenu.addAction("Swap protocol", self.onSwapProtocol)
Example #4
0
 def __get_or_create_root_menu(cls, menu_name):
     '''
     Attempts to find an existing menu of the specified title. If it can't be
     found, it creates one.
     '''
     # Get the "main menu" (the bar of menus)
     main_menu = cls.__get_katana_main_menu()
     if not main_menu:
         return
     # Attempt to find existing menu
     for menu in main_menu.children():
         if type(menu).__name__ == "QMenu" and menu.title() == menu_name:
             return menu
     # Otherwise, create a new menu
     menu = QtGui.QMenu(menu_name, main_menu)
     main_menu.addMenu(menu)
     return menu
Example #5
0
 def treeWidgetMousePressEvent(event):
     """
     Handle mouse events
     """
     # Set up context menu (right-click)
     if event.button() == QtCore.Qt.RightButton:
         item = treeWidget.itemAt(event.pos())
         if not item:
             return
         
         scriptItem = item.getItemData()                
         item.setHiliteColor(QtGui.QColor(32,32,32))
         treeWidget.update(treeWidget.indexFromItem(item))
         
         menu = QtGui.QMenu(None)
         
         # Add 'Delete' action
         menu.addAction('Delete', scriptItem.delete)
         menu.addSeparator()
         
         # Add 'View From ShadowBranch Node' action
         def viewNode():
             NodegraphAPI.SetNodeViewed(
                 scriptItem.getShadowBranchNode(), True, exclusive=True)
         action = menu.addAction('View From ShadowBranch Node',viewNode)
         action.setIcon(UI4.Util.IconManager.GetIcon(
                 'Icons/AttributeEditor/blue_snapback.png'))                
         
         # Show menu
         pos = event.pos()
         pos = treeWidget.mapToGlobal(QtCore.QPoint(
                         pos.x(), pos.y()))
         
         try:
             menu.exec_(pos)
         finally:
             item.setHiliteColor(None)
             treeWidget.update(treeWidget.indexFromItem(item))
             event.accept()
Example #6
0
def onStartupComplete(objectHash):
    try:

        def exec_cmd(cmd):
            cmd_str = str(cmd)
            exec cmd_str in locals()
            return

        def add_katana_menu(parent_menu, label, cmd, icon=''):
            action = QtGui.QAction(label, parent_menu)
            if icon:
                action.setIcon(QtGui.QIcon(icon))
            mapper.setMapping(action, cmd)
            action.triggered.connect(mapper.map)
            parent_menu.addAction(action)

        global log
        from lxml import etree as ET
        log.info("Start creating LCA Tools menu.")

        import Katana
        from Katana import QtGui, QtCore
        layoutsMenus = [
            x for x in QtGui.qApp.topLevelWidgets()
            if type(x).__name__ == 'LayoutsMenu'
        ]

        if len(layoutsMenus) != 1:
            return

        mainMenu = layoutsMenus[0].parent()
        mapper = QtCore.QSignalMapper(mainMenu)

        root_menu = QtGui.QMenu('LCA Tools', mainMenu)
        mainMenu.addMenu(root_menu)

        _iconsDir = os.path.join(os.path.dirname(__file__), 'icons')
        lc_tool_set_env = os.environ.get(
            'LCAREZ_RESOURCES_PATH',
            '/mnt/utility/linked_tools/katana/resources')
        script_dir = os.path.join(lc_tool_set_env, '2.5/Startup')
        tree = ET.parse(script_dir + "/menu_root.xml")
        root = tree.getroot()
        for sub_node in root:
            if sub_node.tag == 'sub_menu':
                dept = sub_node.attrib['name']
                if not os.path.isfile(script_dir + "/menu_" + dept + ".xml"):
                    continue

                dept_menu = root_menu.addMenu('LCA ' + dept.upper())
                sub_root = ET.parse(script_dir + "/menu_" + dept +
                                    ".xml").getroot()
                l_cmds = sub_root.getiterator("cmd_menu")
                for cmd_node in l_cmds:
                    add_katana_menu(dept_menu,
                                    cmd_node.attrib.get('label'),
                                    cmd_node.attrib.get('command'),
                                    icon=cmd_node.attrib.get('icon'))

            elif sub_node.tag == 'separator':
                root_menu.addSeparator()

            elif sub_node.tag == 'cmd_menu':
                add_katana_menu(root_menu,
                                sub_node.attrib.get('label'),
                                sub_node.attrib.get('command'),
                                icon=sub_node.attrib.get('icon'))

        root_menu.addSeparator()
        mapper.mapped['QString'].connect(exec_cmd)
    except:
        print traceback.format_exc()

    ##################################################################################################
    # Add Light Chaser Animation Katana Shelf ToolBox
    try:
        import sys
        LCAREZ_RESOURCES_PATH = os.environ.get(
            'LCAREZ_RESOURCES_PATH',
            '/mnt/utility/linked_tools/katana/resources')
        STARTUP_PATH = os.path.join(LCAREZ_RESOURCES_PATH, '2.5/Startup')
        sys.path.insert(0, '%s' % STARTUP_PATH)
        import shelf, menu
        theShelf = shelf.shelfGui()
        layoutsMenus = [
            x for x in QtGui.qApp.topLevelWidgets()
            if type(x).__name__ == 'LayoutsMenu'
        ]
        KatanaWindow = layoutsMenus[0].parent().parent()
        KatanaWindowLayout = KatanaWindow.layout()

        menuLayout = KatanaWindowLayout.itemAt(0)

        shelfIndex = 18
        menuLayout.insertWidget(shelfIndex, theShelf.get())
    except:
        print traceback.format_exc()
    ##################################################################################################

    #sys.path.append("/home/zhixiang/dev/lcatools/applications/katana_v2/Scripts/mayaCfxSocket")
    if 'maya' in sys.argv:
        import mayaCfxSocket.katanaSocket
        print 'port:15000'