def add_popup_menu_option(self, label, function_action=None, key=None, icon=None, submenu=None): """ Add an option to the Control popup menu @param label: label of the option. @param function_action: function called when the option is selected. @param key: shortcut key @param icon: icon """ self.__create_popup_menu() menu = submenu if submenu else self._popup_menu if label == "-": return menu.addSeparator() else: action = QAction(label, self.form) if icon is not None: action.setIconVisibleInMenu(True) action.setIcon(icon if isinstance(icon, QIcon) else QIcon(icon) ) if key != None: action.setShortcut(QKeySequence(key)) if function_action: action.triggered.connect(function_action) menu.addAction(action) return action
def add_popup_menu_option(self, label, function_action=None, key=None, icon=None, menu=None): """ Add an option to the Control popup menu. :param str label: Label of the option :param function function_action: The function that should be executed when the menu is selected. :param str key: Short key. :param QIcon or str icon: Icon. :param QMenu submenu: Parent submenu to which the option should be added. If no value is set, then the option will be added to the main popup menu. .. code:: python control.add_popup_menu_option('option 0', function_action=self._do_something) submenu1 = control.add_popup_submenu('menu 1') submenu2 = control.add_popup_submenu('menu 2', submenu=submenu1) control.add_popup_menu_option('option 1', function_action=self._do_something, key='Control+Q', submenu=submenu2) """ self.__create_popup_menu() menu = menu if menu else self._popup_menu if label == "-": return menu.addSeparator() else: action = QAction(label, self.form) if icon is not None: action.setIconVisibleInMenu(True) action.setIcon(icon if isinstance(icon, QIcon) else QIcon(icon) ) if key != None: action.setShortcut(QKeySequence(key)) if function_action: action.triggered.connect(function_action) menu.addAction(action) return action
def createTabButton(self, widget, text, icon=None, toolTip=None): """ Create the tab button for `widget`. """ action = QAction(text, self) action.setCheckable(True) if icon: action.setIcon(icon) if toolTip: action.setToolTip(toolTip) self.__tabActionGroup.addAction(action) self.__actionMapper.setMapping(action, action) action.toggled.connect(self.__actionMapper.map) button = ToolBoxTabButton(self, objectName="toolbox-tab-button") button.setDefaultAction(action) button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) button.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Fixed) if self.__tabIconSize.isValid(): button.setIconSize(self.__tabIconSize) if self.__tabButtonHeight > 0: button.setFixedHeight(self.__tabButtonHeight) return button
def __insertItem(self, index, item): """ Insert a widget action (from a `QStandardItem`) at index. """ value = item.data(self.__actionRole) if value is not None: action = value else: action = QAction(item.text(), self) action.setIcon(item.icon()) self.insertAction(index, action)
def __insertItem(self, index, item): """ Insert a widget action from `item` (`QModelIndex`) at `index`. """ value = item.data(self.__actionRole) if isinstance(value, QAction): action = value else: action = QAction(item_text(item), self) action.setIcon(item_icon(item)) action.setToolTip(item_tooltip(item)) self.insertAction(index, action)
def __insertItem(self, index, item): """ Insert a widget action from `item` (`QModelIndex`) at `index`. """ value = qtcompat.qunwrap(item.data(self.__actionRole)) if isinstance(value, QAction): action = value else: action = QAction(item_text(item), self) action.setIcon(item_icon(item)) action.setToolTip(item_tooltip(item)) self.insertAction(index, action)
def __initMainMenu(self, options, keys={}): menubar = self.menuBar() for menuIndex, m in enumerate(options): for key, menus in m.items(): menu = menubar.addMenu(key) for subMenuIndex, m1 in enumerate(menus): if isinstance(m1, str) and m1 == "-": menu.addSeparator() else: for text, func in m1.items(): if text != 'icon': action = QAction(text, self) if 'icon' in m1.keys(): action.setIconVisibleInMenu(True) action.setIcon(QIcon(m1['icon'])) if func: action.triggered.connect(func) menu.addAction(action) options[menuIndex][key][subMenuIndex][text] = action break return options
def addTab(self, widget, text, toolTip=None, icon=None): if self.__macUnified: action = QAction(text, self) if toolTip: action.setToolTip(toolTip) if icon: action.setIcon(toolTip) action.setData(len(self.tab.actions())) self.tab.addAction(action) self.stack.addWidget(widget) else: i = self.tab.addTab(widget, text) if toolTip: self.tab.setTabToolTip(i, toolTip) if icon: self.tab.setTabIcon(i, icon)
def add_popup_menu_option(self, label='', function_action=None, key=None, item=None, icon=None, submenu=None): """ Add an option to the Control popup menu @param label: label of the option. @param function_action: function called when the option is selected. @param key: shortcut key @param key: shortcut key """ action = super(ControlTree, self).add_popup_menu_option(label, function_action, key, submenu) if item is not None: if label == "-": self._items[id(item)].append(label) else: action = QAction(label, self.form) if icon is not None: action.setIconVisibleInMenu(True) action.setIcon(QIcon(icon)) if key is not None: action.setShortcut(QKeySequence(key)) if function_action: action.triggered.connect(function_action) # Associate action to the item. if id(item) not in self._items.keys(): self._items.update({id(item): []}) self._items[id(item)].append(action) ########################## return action return action
class MainWindow(OWCanvasMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.notification_overlay = NotificationOverlay(self.scheme_widget) self.notification_server = None # add build and run pipeline buttons # self._tods_run() def _tods_run(self): self.run_pipeline_action = QAction( self.tr("Run"), self, objectName="run-action", toolTip=self.tr("Run Pipeline"), triggered=self.run_pipeline, ) self.build_pipeline_action = QAction( self.tr("Build"), self, objectName="build-action", toolTip=self.tr("Build Pipeline"), triggered=self.run_pipeline, ) # self.zoom_in_action.setIcon(canvas_icons("arrow-right.svg")) # self.welcome_action.setIcon(canvas_icons("arrow-right.svg")) self.run_pipeline_action.setIcon(canvas_icons("arrow-right.svg")) self.build_pipeline_action.setIcon(canvas_icons("default-widget.svg")) dock_actions = [ self.show_properties_action, self.canvas_align_to_grid_action, self.canvas_text_action, self.canvas_arrow_action, self.freeze_action, self.dock_help_action, # self.zoom_in_action, # self.welcome_action, self.build_pipeline_action, self.run_pipeline_action, ] # Tool bar in the collapsed dock state (has the same actions as # the tool bar in the CanvasToolDock actions_toolbar = QToolBar(orientation=Qt.Vertical) actions_toolbar.setFixedWidth(38) actions_toolbar.layout().setSpacing(0) actions_toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) for action in dock_actions: self.canvas_toolbar.addAction(action) button = self.canvas_toolbar.widgetForAction(action) button.setPopupMode(QToolButton.DelayedPopup) actions_toolbar.addAction(action) button = actions_toolbar.widgetForAction(action) button.setFixedSize(38, 30) button.setPopupMode(QToolButton.DelayedPopup) def run_pipeline(self): pass def build_pipeline(self): pass def open_canvas_settings(self): # type: () -> None """Reimplemented.""" dlg = OUserSettingsDialog(self, windowTitle=self.tr("Preferences")) dlg.show() status = dlg.exec_() if status == 0: self.user_preferences_changed_notify_all() def set_notification_server(self, notif_server): self.notification_server = notif_server # populate notification overlay with current notifications for notif in self.notification_server.getNotificationQueue(): self.notification_overlay.addNotification(notif) notif_server.newNotification.connect( self.notification_overlay.addNotification) notif_server.nextNotification.connect( self.notification_overlay.nextWidget) def create_new_window(self): # type: () -> CanvasMainWindow window = super().create_new_window() window.set_notification_server(self.notification_server) return window
def setActionIcon(action: QAction, name: str): icon = QIcon.fromTheme(name) if not icon.isNull(): action.setIcon(icon)