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