def __action(self, name: Union[str, QAction], slot: Optional[Callable[..., None]] = None, enable: Optional[_Enable] = None, *, cast_to: Type[_N]) -> _N: """New action or menu.""" is_menu = cast_to is QMenu if isinstance(name, QAction): menu: Optional[QMenu] = None action = name elif is_menu: menu = QMenu(name, self) action = menu.menuAction() else: menu = None action = QAction(name, self) if slot is not None: action.triggered.connect(slot) if enable is not None: for target in self.context[enable]: if isinstance(target, QMenu): if is_menu: target.addMenu(menu) else: target.addAction(action) elif isinstance(target, list): target.append(action) else: raise ValueError("not a list or menu") if is_menu: return cast(QMenu, menu) else: return action
def __action(self, name: Union[str, QAction], slot: Optional[Callable[..., None]] = None, enable: Optional[_Enable] = None, *, is_menu: bool = False) -> Union[QAction, QMenu]: """New action or menu.""" if type(name) is QAction: menu = None action: QAction = name elif is_menu: menu = QMenu(name, self) action = menu.menuAction() else: menu = None action = QAction(name, self) if slot is not None: action.triggered.connect(slot) if enable is not None: for target in self.context[enable]: if type(target) is QMenu: if is_menu: target.addMenu(menu) else: target.addAction(action) elif type(target) is list: target.append(action) else: raise ValueError("not a list or menu") if is_menu: return menu else: return action
def add_toggle_view_action_to_menu(self, toggle_view_action: QAction, group: str, group_icon: QIcon) -> QAction: ''' Adds a toggle view action to the the internal view menu. You can either manage the insertion of the toggle view actions in your application or you can add the actions to the internal view menu and then simply insert the menu object into your. Parameters ---------- toggle_view_action : QAction group : str group_icon : QIcon Returns ------- value : QAction ''' order = self._mgr.menu_insertion_order alphabetically_sorted = ( InsertionOrder.by_spelling == order ) if not group: self._mgr.add_action_to_menu(toggle_view_action, self._mgr.view_menu, alphabetically_sorted) return toggle_view_action try: group_menu = self._mgr.view_menu_groups[group] except KeyError: group_menu = QMenu(group, self) group_menu.setIcon(group_icon) self._mgr.add_action_to_menu( group_menu.menuAction(), self._mgr.view_menu, alphabetically_sorted) self._mgr.view_menu_groups[group] = group_menu self._mgr.add_action_to_menu(toggle_view_action, group_menu, alphabetically_sorted) return group_menu.menuAction()
class UiLinelistsWindow(object): # this code was taken as-is from the Designer. # Cleaning it up sounds like a lower priority # task for now. def setupUi(self, MainWindow, title): MainWindow.setWindowTitle(title) MainWindow.setObjectName("MainWindow") MainWindow.resize(500, 500) MainWindow.setMinimumSize(QSize(300, 350)) self.centralWidget = QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.gridLayout = QGridLayout(self.centralWidget) self.gridLayout.setContentsMargins(11, 11, 11, 11) self.gridLayout.setSpacing(6) self.gridLayout.setObjectName("gridLayout") self.horizontalLayout_5 = QHBoxLayout() self.horizontalLayout_5.setContentsMargins(11, 11, 11, 11) self.horizontalLayout_5.setSpacing(6) self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.lines_selected_label = QLabel(self.centralWidget) self.lines_selected_label.setObjectName("lines_selected_label") self.horizontalLayout_5.addWidget(self.lines_selected_label) self.label = QLabel(self.centralWidget) self.label.setObjectName("label") self.horizontalLayout_5.addWidget(self.label) self.draw_button = QPushButton(self.centralWidget) self.draw_button.setObjectName("draw_button") self.horizontalLayout_5.addWidget(self.draw_button) self.erase_button = QPushButton(self.centralWidget) self.erase_button.setObjectName("erase_button") self.horizontalLayout_5.addWidget(self.erase_button) self.dismiss_button = QPushButton(self.centralWidget) self.dismiss_button.setObjectName("dismiss_button") self.horizontalLayout_5.addWidget(self.dismiss_button) self.gridLayout.addLayout(self.horizontalLayout_5, 4, 0, 1, 1) self.verticalLayout_11 = QVBoxLayout() self.verticalLayout_11.setContentsMargins(11, 11, 11, 11) self.verticalLayout_11.setSpacing(6) self.verticalLayout_11.setObjectName("verticalLayout_11") self.tabWidget = QTabWidget(self.centralWidget) self.tabWidget.setObjectName("tabWidget") self.verticalLayout_11.addWidget(self.tabWidget) self.gridLayout.addLayout(self.verticalLayout_11, 0, 0, 1, 1) self.horizontalLayout_7 = QHBoxLayout() self.horizontalLayout_7.setContentsMargins(11, 11, 11, 11) self.horizontalLayout_7.setSpacing(6) self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.add_set_button = QPushButton(self.centralWidget) self.add_set_button.setObjectName("add_set_button") self.horizontalLayout_7.addWidget(self.add_set_button) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_7.addItem(spacerItem) self.gridLayout.addLayout(self.horizontalLayout_7, 2, 0, 2, 1) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QMenuBar(MainWindow) self.menuBar.setGeometry(QRect(0, 0, 767, 22)) self.menuBar.setObjectName("menuBar") self.menuFile = QMenu(self.menuBar) self.menuFile.setObjectName("menuFile") MainWindow.setMenuBar(self.menuBar) self.mainToolBar = QToolBar(MainWindow) self.mainToolBar.setMovable(False) self.mainToolBar.setFloatable(False) self.mainToolBar.setObjectName("mainToolBar") MainWindow.addToolBar(Qt.TopToolBarArea, self.mainToolBar) self.statusBar = QStatusBar(MainWindow) self.statusBar.setObjectName("statusBar") MainWindow.setStatusBar(self.statusBar) self.actionOpen = QAction(MainWindow) icon = QIcon() icon.addPixmap(QPixmap(":/img/Open Folder-48.png"), QIcon.Normal, QIcon.Off) self.actionOpen.setIcon(icon) self.actionOpen.setObjectName("actionOpen") self.actionExit = QAction(MainWindow) self.actionExit.setObjectName("actionExit") self.actionRemove = QAction(MainWindow) self.actionRemove.setObjectName("actionRemove") self.actionChange_Color = QAction(MainWindow) self.actionChange_Color.setObjectName("actionChange_Color") self.menuFile.addAction(self.actionOpen) self.menuFile.addSeparator() self.menuFile.addAction(self.actionExit) self.menuBar.addAction(self.menuFile.menuAction()) self.mainToolBar.addAction(self.actionOpen) self.mainToolBar.addSeparator() self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QCoreApplication.translate self.lines_selected_label.setText(_translate("MainWindow", "0")) self.label.setText(_translate("MainWindow", "lines selected")) self.draw_button.setText(_translate("MainWindow", "Draw")) self.erase_button.setText(_translate("MainWindow", "Erase")) self.dismiss_button.setText(_translate("MainWindow", "Dismiss")) self.add_set_button.setText(_translate("MainWindow", "Add set")) self.menuFile.setTitle(_translate("MainWindow", "File")) self.actionOpen.setText(_translate("MainWindow", "Open")) self.actionExit.setText(_translate("MainWindow", "Exit")) self.actionRemove.setText(_translate("MainWindow", "Remove")) self.actionRemove.setToolTip( _translate("MainWindow", "Removes the selected layer")) self.actionChange_Color.setText( _translate("MainWindow", "Change Color")) self.actionChange_Color.setToolTip( _translate("MainWindow", "Change the line color selected layer"))
def add_menu(self, menu: QtWidgets.QMenu): return self.addAction(menu.menuAction())