コード例 #1
0
 def customContextMenu(self, pos):
     """ Open up a custom context menu. """
     # pylint: disable=unused-argument
     self.deleteSelectedAction.setEnabled(self.listWidget.currentRow() > -1)
     menu = QtWidgets.QMenu()
     menu.addAction(self.deleteSelectedAction)
     menu.exec_(QtGui.QCursor.pos())
コード例 #2
0
ファイル: menu_generation.py プロジェクト: demon7x/tk-katana
    def setup_root_menu(self):
        """
        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)
        try:
            main_menu = self.get_katana_main_bar()
        except Exception as error:
            message = 'Failed to get main Katana menu bar: {}'.format(error)
            self.engine.log_debug(message)
            return

        # Attempt to find existing menu
        for menu in main_menu.children():
            is_menu = isinstance(menu, QtWidgets.QMenu)
            if is_menu and menu.title() == self.menu_name:
                return menu

        # Otherwise, create a new menu
        menu = QtWidgets.QMenu(self.menu_name, main_menu)
        main_menu.addMenu(menu)
        return menu
コード例 #3
0
    def __listMousePressEvent(self, event):
        item = self.tree.itemAt(event.pos())
        if not item:
            return
        pos = event.pos()
        pos = self.tree.mapToGlobal(
            QtCore.QPoint(pos.x(),
                          pos.y() + self.tree.header().height()))
        self.__lastTreePos = event.pos()
        self.__lastPos = pos
        if event.button() == QtCore.Qt.LeftButton:
            local_pos = event.pos()
            global_pos = pos
            if self.__popupVersions(item, local_pos, global_pos):
                event.accept()
        else:
            if event.button() == QtCore.Qt.RightButton:
                if item.isSelected():
                    items = self.tree.selectedItems()
                else:
                    items = [item]
                for item in items:
                    dark = QtGui.QColor(32, 32, 32)
                    item.setHiliteColor(dark)
                    self.tree.update(self.tree.indexFromItem(item))

                menu = QtWidgets.QMenu(None)
                types = set((i.getItemData()['type'] for i in items))
                if len(types) > 1:
                    menu.addAction(RemoveItemsAction(menu, self.node, items))
                else:
                    itemType = tuple(types)[0]
                    if itemType == 'output':
                        if str(item.text(NAME_COLUMN)) == 'default':
                            a = menu.addAction(
                                '(Default Output Cannot Be Removed)')
                            a.setEnabled(False)
                        else:
                            menu.addAction(
                                RemoveItemsAction(menu, self.node, items))
                    else:
                        if itemType == 'assetTree':
                            assetItem = item.getItemData()['assetItem']
                            if assetItem.isIgnorable():
                                menu.addAction(
                                    ToggleIgnoreItemsAction(
                                        menu, self.node, items,
                                        not assetItem.isIgnored()))
                            if assetItem.isDeletable():
                                try:
                                    menu.addAction(
                                        RemoveItemsAction(
                                            menu, self.node, items))
                                except Exception as exception:
                                    log.exception(
                                        'Error adding action to context menu: %s'
                                        % str(exception))

                            if assetItem.canDuplicate():
                                try:
                                    menu.addAction(
                                        DuplicateItemAction(
                                            menu, self.node, items))
                                except:
                                    import traceback
                                    traceback.print_exc()

                            if len(items) == 1:
                                assetItem.addToContextMenu(menu, self.node)
                menu.exec_(pos)
                for item in items:
                    item.setHiliteColor(None)
                    self.tree.update(self.tree.indexFromItem(item))

                event.accept()
        return