def _create_actions(self): act = QtGui.QAction('Edit style', self) act.triggered.connect(nonpartial(self._edit_style)) self.addAction(act) act = QtGui.QAction('Remove', self) act.setShortcut(QtGui.QKeySequence(Qt.Key_Backspace)) act.setShortcutContext(Qt.WidgetShortcut) act.triggered.connect( lambda *args: self.model().removeRow(self.current_row())) self.addAction(act)
def __init__(self, *args, **kwargs): super(QMessageBoxPatched, self).__init__(*args, **kwargs) copy_action = QtGui.QAction('&Copy', self) copy_action.setShortcut(QtGui.QKeySequence.Copy) copy_action.triggered.connect(self.copy_detailed) select_all = QtGui.QAction('Select &All', self) select_all.setShortcut(QtGui.QKeySequence.SelectAll) select_all.triggered.connect(self.select_all) menubar = QtGui.QMenuBar() editMenu = menubar.addMenu('&Edit') editMenu.addAction(copy_action) editMenu.addAction(select_all) self.layout().setMenuBar(menubar)
def action(name, parent, tip='', icon=None, shortcut=None): """ Factory for making a new action """ a = QtGui.QAction(name, parent) a.setToolTip(tip) if icon: a.setIcon(get_icon(icon)) if shortcut: a.setShortcut(shortcut) return a
def _create_actions(self): tree = self.ui.layerTree sep = QtGui.QAction("", tree) sep.setSeparator(True) tree.addAction(sep) self._actions['save'] = SaveAction(self) self._actions['copy'] = CopyAction(self) self._actions['paste'] = PasteAction(self) self._actions['paste_special'] = PasteSpecialAction(self) self._actions['invert'] = Inverter(self) self._actions['new'] = NewAction(self) self._actions['clear'] = ClearAction(self) self._actions['delete'] = DeleteAction(self) self._actions['facet'] = FacetAction(self) self._actions['merge'] = MergeAction(self) self._actions['maskify'] = MaskifySubsetAction(self) # new component definer separator = QtGui.QAction("sep", tree) separator.setSeparator(True) tree.addAction(separator) a = action("Define new component", self, tip="Define a new component using python expressions") tree.addAction(a) a.triggered.connect(nonpartial(self._create_component)) self._actions['new_component'] = a # user-defined layer actions for name, callback, tooltip, icon in single_subset_action: self._actions[name] = SingleSubsetUserAction(self, callback, name=name, tooltip=tooltip, icon=icon) # right click pulls up menu tree.setContextMenuPolicy(Qt.ActionsContextMenu)
def menu(self): m = QtGui.QMenu() a = QtGui.QAction("Or", m) a.setIcon(get_icon('glue_or')) a.triggered.connect(nonpartial(self._paste, OrMode)) m.addAction(a) a = QtGui.QAction("And", m) a.setIcon(get_icon('glue_and')) a.triggered.connect(nonpartial(self._paste, AndMode)) m.addAction(a) a = QtGui.QAction("XOR", m) a.setIcon(get_icon('glue_xor')) a.triggered.connect(nonpartial(self._paste, XorMode)) m.addAction(a) a = QtGui.QAction("Not", m) a.setIcon(get_icon('glue_andnot')) a.triggered.connect(nonpartial(self._paste, AndNotMode)) m.addAction(a) return m
def _setup_toolbar(self): tb = GlueToolbar(self.canvas, self.widget) # disable ProfileViewer mouse processing during mouse modes tb.mode_activated.connect(self.profile.disconnect) tb.mode_deactivated.connect(self.profile.connect) self._menu_toggle_action = QtGui.QAction("Options", tb) self._menu_toggle_action.setCheckable(True) self._menu_toggle_action.toggled.connect(self._toggle_menu) tb.addAction(self._menu_toggle_action) self.widget.addToolBar(tb) return tb
def _init_toolbar(self): self.basedir = os.path.join(matplotlib.rcParams['datapath'], 'images') parent = QtGui.QToolBar.parent(self) a = QtGui.QAction(get_icon('glue_home'), 'Home', parent) a.triggered.connect(nonpartial(self.home)) a.setToolTip('Reset original zoom') a.setShortcut('H') a.setShortcutContext(Qt.WidgetShortcut) parent.addAction(a) self.buttons['HOME'] = a self.addAction(a) a = QtGui.QAction(get_icon('glue_filesave'), 'Save', parent) a.triggered.connect(nonpartial(self.save_figure)) a.setToolTip('Save the figure') a.setShortcut('Ctrl+Shift+S') parent.addAction(a) self.buttons['SAVE'] = a self.addAction(a) a = QtGui.QAction(get_icon('glue_back'), 'Back', parent) a.triggered.connect(nonpartial(self.back)) parent.addAction(a) self.addAction(a) self.buttons['BACK'] = a a.setToolTip('Back to previous view') a = QtGui.QAction(get_icon('glue_forward'), 'Forward', parent) a.triggered.connect(nonpartial(self.forward)) a.setToolTip('Forward to next view') parent.addAction(a) self.buttons['FORWARD'] = a self.addAction(a) a = QtGui.QAction(get_icon('glue_move'), 'Pan', parent) a.triggered.connect(nonpartial(self.pan)) a.setToolTip('Pan axes with left mouse, zoom with right') a.setCheckable(True) a.setShortcut('M') a.setShortcutContext(Qt.WidgetShortcut) parent.addAction(a) self.addAction(a) self.buttons['PAN'] = a a = QtGui.QAction(get_icon('glue_zoom_to_rect'), 'Zoom', parent) a.triggered.connect(nonpartial(self.zoom)) a.setToolTip('Zoom to rectangle') a.setShortcut('Z') a.setShortcutContext(Qt.WidgetShortcut) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.buttons['ZOOM'] = a
def test_glue_action_button(): a = QtGui.QAction(None) a.setToolTip("testtooltip") a.setWhatsThis("testwhatsthis") a.setIcon(QtGui.QIcon("dummy_file")) a.setText('testtext') b = GlueActionButton() b.set_action(a) # assert b.icon() == a.icon() icons are copied, apparently assert b.text() == a.text() assert b.toolTip() == a.toolTip() assert b.whatsThis() == a.whatsThis() #stays in sync a.setText('test2') assert b.text() == 'test2'
def add_mode(self, mode): parent = QtGui.QToolBar.parent(self) def toggle(): self._custom_mode(mode) def enable(): # turn on if not if self._active != mode.mode_id: self._custom_mode(mode) action = QtGui.QAction(mode.icon, mode.action_text, parent) action.triggered.connect(nonpartial(toggle)) parent.addAction(action) self.__signals.extend([toggle, enable]) if mode.shortcut is not None: action.setShortcut(mode.shortcut) action.setShortcutContext(Qt.WidgetShortcut) action.setToolTip(mode.tool_tip) action.setCheckable(True) self.buttons[mode.mode_id] = action menu_actions = mode.menu_actions() if len(menu_actions) > 0: menu = QtGui.QMenu(self) for ma in mode.menu_actions(): ma.setParent(self) menu.addAction(ma) action.setMenu(menu) menu.triggered.connect(nonpartial(enable)) self.addAction(action) # bind action status to mode.enabled def toggle(state): action.setVisible(state) action.setEnabled(state) add_callback(mode, 'enabled', toggle) return action
def __init__(self, vispy_widget=None, parent=None): super(VispyDataViewerToolbar, self).__init__(parent=parent) # Keep a reference to the Vispy Widget and the Vispy Data Viewer self._vispy_widget = vispy_widget self._vispy_data_viewer = parent self._data_collection = parent._data # Set visual preferences self.setIconSize(QtCore.QSize(25, 25)) # Initialize drawing visual self.line_pos = [] self.line = scene.visuals.Line(color=settings.FOREGROUND_COLOR, width=2, method='agg', parent=self._vispy_widget.canvas.scene) # Selection defaults self._scatter = None self.mode = None self.selection_origin = (0, 0) self.selected = [] # Add a timer to control the view rotate self.timer = app.Timer(connect=self.rotate) self.record_timer = app.Timer(connect=self.record) self.writer = None a = QtWidgets.QAction(get_icon('glue_filesave'), 'Save', parent) a.triggered.connect(nonpartial(self.save_figure)) a.setToolTip('Save the figure') a.setShortcut('Ctrl+Shift+S') parent.addAction(a) self.addAction(a) self.save_action = a if IMAGEIO_INSTALLED: a = QtWidgets.QAction(QtGui.QIcon(RECORD_START_ICON), 'Record', parent) a.triggered.connect(nonpartial(self.toggle_record)) a.setToolTip('Start/Stop the record') a.setCheckable(True) parent.addAction(a) self.addAction(a) self.record_action = a a = QtWidgets.QAction(QtGui.QIcon(ROTATE_ICON), 'Rotate View', parent) a.triggered.connect(nonpartial(self.toggle_rotate)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.rotate_action = a # Set up selection actions a = QtWidgets.QAction(get_icon('glue_lasso'), 'Lasso Selection', parent) a.triggered.connect(nonpartial(self.toggle_lasso)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.lasso_action = a a = QtWidgets.QAction(get_icon('glue_square'), 'Rectangle Selection', parent) a.triggered.connect(nonpartial(self.toggle_rectangle)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.rectangle_action = a a = QtWidgets.QAction(get_icon('glue_circle'), 'Ellipse Selection', parent) a.triggered.connect(nonpartial(self.toggle_ellipse)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.ellipse_action = a # TODO: change path to icon once it's in a released version of glue a = QtWidgets.QAction(QtGui.QIcon(POINT_ICON), 'Point Selection', parent) a.triggered.connect(nonpartial(self.toggle_point)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.point_action = a # Connect callback functions to VisPy Canvas self._vispy_widget.canvas.events.mouse_press.connect( self.on_mouse_press) self._vispy_widget.canvas.events.mouse_release.connect( self.on_mouse_release) self._vispy_widget.canvas.events.mouse_move.connect(self.on_mouse_move)
def _create_menu(self): mbar = self.menuBar() menu = QtGui.QMenu(mbar) menu.setTitle("&File") menu.addAction(self._actions['data_new']) if 'data_importers' in self._actions: submenu = menu.addMenu("I&mport data") for a in self._actions['data_importers']: submenu.addAction(a) # menu.addAction(self._actions['data_save']) # XXX add this menu.addAction(self._actions['session_reset']) menu.addAction(self._actions['session_restore']) menu.addAction(self._actions['session_save']) if 'session_export' in self._actions: submenu = menu.addMenu("E&xport") for a in self._actions['session_export']: submenu.addAction(a) menu.addSeparator() menu.addAction("Edit &Settings", self._edit_settings) menu.addAction("&Quit", QtGui.qApp.quit) mbar.addMenu(menu) menu = QtGui.QMenu(mbar) menu.setTitle("&Edit ") menu.addAction(self._actions['undo']) menu.addAction(self._actions['redo']) mbar.addMenu(menu) menu = QtGui.QMenu(mbar) menu.setTitle("&View ") a = QtGui.QAction("&Console Log", menu) a.triggered.connect(self._log._show) menu.addAction(a) mbar.addMenu(menu) menu = QtGui.QMenu(mbar) menu.setTitle("&Canvas") menu.addAction(self._actions['tab_new']) menu.addAction(self._actions['viewer_new']) menu.addSeparator() menu.addAction(self._actions['gather']) menu.addAction(self._actions['tab_rename']) mbar.addMenu(menu) menu = QtGui.QMenu(mbar) menu.setTitle("Data &Manager") menu.addActions(self._layer_widget.actions()) mbar.addMenu(menu) menu = QtGui.QMenu(mbar) menu.setTitle("&Toolbars") tbar = EditSubsetModeToolBar() self._mode_toolbar = tbar self.addToolBar(tbar) tbar.hide() a = QtGui.QAction("Selection Mode &Toolbar", menu) a.setCheckable(True) a.toggled.connect(tbar.setVisible) try: tbar.visibilityChanged.connect(a.setChecked) except AttributeError: # Qt < 4.7. QtCore.Signal not supported pass menu.addAction(a) menu.addActions(tbar.actions()) mbar.addMenu(menu) menu = QtGui.QMenu(mbar) menu.setTitle("&Plugins") menu.addAction(self._actions['plugin_manager']) menu.addSeparator() if 'plugins' in self._actions: for plugin in self._actions['plugins']: menu.addAction(plugin) mbar.addMenu(menu) # trigger inclusion of Mac Native "Help" tool menu = mbar.addMenu("&Help") a = QtGui.QAction("&Online Documentation", menu) a.triggered.connect(nonpartial(webbrowser.open, DOCS_URL)) menu.addAction(a) a = QtGui.QAction("Send &Feedback", menu) a.triggered.connect(nonpartial(submit_feedback)) menu.addAction(a) menu.addSeparator() menu.addAction("Version information", show_glue_info)
def setupUi(self, GlueApplication): GlueApplication.setObjectName("GlueApplication") GlueApplication.resize(1116, 749) self.centralwidget = QtGui.QWidget(GlueApplication) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.centralwidget.sizePolicy().hasHeightForWidth()) self.centralwidget.setSizePolicy(sizePolicy) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget) self.verticalLayout.setContentsMargins(4, 4, 4, 4) self.verticalLayout.setObjectName("verticalLayout") self.main_splitter = QtGui.QSplitter(self.centralwidget) self.main_splitter.setOrientation(QtCore.Qt.Horizontal) self.main_splitter.setObjectName("main_splitter") self.data_plot_splitter = QtGui.QSplitter(self.main_splitter) self.data_plot_splitter.setOrientation(QtCore.Qt.Vertical) self.data_plot_splitter.setObjectName("data_plot_splitter") self.data_layers = QtGui.QGroupBox(self.data_plot_splitter) font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.data_layers.setFont(font) self.data_layers.setLayoutDirection(QtCore.Qt.LeftToRight) self.data_layers.setFlat(False) self.data_layers.setObjectName("data_layers") self.plot_splitter = QtGui.QSplitter(self.data_plot_splitter) self.plot_splitter.setOrientation(QtCore.Qt.Vertical) self.plot_splitter.setObjectName("plot_splitter") self.plot_layers = QtGui.QGroupBox(self.plot_splitter) font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.plot_layers.setFont(font) self.plot_layers.setFlat(False) self.plot_layers.setObjectName("plot_layers") self.plot_options = QtGui.QGroupBox(self.plot_splitter) font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.plot_options.setFont(font) self.plot_options.setFlat(False) self.plot_options.setCheckable(False) self.plot_options.setObjectName("plot_options") self.tabWidget = QtGui.QTabWidget(self.main_splitter) self.tabWidget.setEnabled(True) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.tabWidget.sizePolicy().hasHeightForWidth()) self.tabWidget.setSizePolicy(sizePolicy) self.tabWidget.setMinimumSize(QtCore.QSize(400, 0)) self.tabWidget.setTabShape(QtGui.QTabWidget.Rounded) self.tabWidget.setElideMode(QtCore.Qt.ElideRight) self.tabWidget.setUsesScrollButtons(False) self.tabWidget.setDocumentMode(False) self.tabWidget.setTabsClosable(False) self.tabWidget.setMovable(True) self.tabWidget.setObjectName("tabWidget") self.verticalLayout.addWidget(self.main_splitter) GlueApplication.setCentralWidget(self.centralwidget) self.statusbar = QtGui.QStatusBar(GlueApplication) self.statusbar.setEnabled(True) self.statusbar.setObjectName("statusbar") GlueApplication.setStatusBar(self.statusbar) self.actionSave_session = QtGui.QAction(GlueApplication) self.actionSave_session.setObjectName("actionSave_session") self.actionNew_Session = QtGui.QAction(GlueApplication) self.actionNew_Session.setObjectName("actionNew_Session") self.actionQuit = QtGui.QAction(GlueApplication) self.actionQuit.setObjectName("actionQuit") self.actionLoad_data = QtGui.QAction(GlueApplication) self.actionLoad_data.setObjectName("actionLoad_data") self.actionNew_Subset = QtGui.QAction(GlueApplication) self.actionNew_Subset.setObjectName("actionNew_Subset") self.actionTransfer_Subset = QtGui.QAction(GlueApplication) self.actionTransfer_Subset.setObjectName("actionTransfer_Subset") self.actionSave_Subset = QtGui.QAction(GlueApplication) self.actionSave_Subset.setObjectName("actionSave_Subset") self.actionNew_Tab = QtGui.QAction(GlueApplication) self.actionNew_Tab.setObjectName("actionNew_Tab") self.actionNew_Tab_2 = QtGui.QAction(GlueApplication) self.actionNew_Tab_2.setObjectName("actionNew_Tab_2") self.action1x1 = QtGui.QAction(GlueApplication) self.action1x1.setObjectName("action1x1") self.action2x2 = QtGui.QAction(GlueApplication) self.action2x2.setObjectName("action2x2") self.action2x2_2 = QtGui.QAction(GlueApplication) self.action2x2_2.setObjectName("action2x2_2") self.retranslateUi(GlueApplication) self.tabWidget.setCurrentIndex(-1) QtCore.QMetaObject.connectSlotsByName(GlueApplication)
def menu_actions(self): result = [] a = QtGui.QAction("minmax", None) a.triggered.connect(nonpartial(self.set_clip_percentile, 0, 100)) result.append(a) a = QtGui.QAction("99%", None) a.triggered.connect(nonpartial(self.set_clip_percentile, 1, 99)) result.append(a) a = QtGui.QAction("95%", None) a.triggered.connect(nonpartial(self.set_clip_percentile, 5, 95)) result.append(a) a = QtGui.QAction("90%", None) a.triggered.connect(nonpartial(self.set_clip_percentile, 10, 90)) result.append(a) rng = QtGui.QAction("Set range...", None) rng.triggered.connect(nonpartial(self.choose_vmin_vmax)) result.append(rng) a = QtGui.QAction("", None) a.setSeparator(True) result.append(a) a = QtGui.QAction("linear", None) a.triggered.connect(nonpartial(setattr, self, 'stretch', 'linear')) result.append(a) a = QtGui.QAction("log", None) a.triggered.connect(nonpartial(setattr, self, 'stretch', 'log')) result.append(a) a = QtGui.QAction("power", None) a.triggered.connect(nonpartial(setattr, self, 'stretch', 'power')) result.append(a) a = QtGui.QAction("square root", None) a.triggered.connect(nonpartial(setattr, self, 'stretch', 'sqrt')) result.append(a) a = QtGui.QAction("squared", None) a.triggered.connect(nonpartial(setattr, self, 'stretch', 'squared')) result.append(a) a = QtGui.QAction("asinh", None) a.triggered.connect(nonpartial(setattr, self, 'stretch', 'arcsinh')) result.append(a) for r in result: if r is rng: continue if self._move_callback is not None: r.triggered.connect(nonpartial(self._move_callback, self)) return result
def __init__(self, vispy_widget=None, parent=None): super(VispyDataViewerToolbar, self).__init__(parent=parent) # Keep a reference to the Vispy Widget and the Vispy Data Viewer self._vispy_widget = vispy_widget self._vispy_data_viewer = parent self._data_collection = parent._data # Set visual preferences self.setIconSize(QtCore.QSize(25, 25)) # Initialize drawing visual self.line_pos = [] self.line = scene.visuals.Line(color='white', method='gl', parent=self._vispy_widget.canvas.scene) # Selection defaults self._scatter = None self.mode = None self.selection_origin = (0, 0) self.selected = [] # Set up selection actions a = QtGui.QAction(get_icon('glue_lasso'), 'Lasso Selection', parent) a.triggered.connect(nonpartial(self.toggle_lasso)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.lasso_action = a a = QtGui.QAction(get_icon('glue_square'), 'Rectangle Selection', parent) a.triggered.connect(nonpartial(self.toggle_rectangle)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.rectangle_action = a a = QtGui.QAction(get_icon('glue_circle'), 'Ellipse Selection', parent) a.triggered.connect(nonpartial(self.toggle_ellipse)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.ellipse_action = a # TODO: change path to icon once it's in a released version of glue a = QtGui.QAction(QtGui.QIcon(POINT_ICON), 'Point Selection', parent) a.triggered.connect(nonpartial(self.toggle_point)) a.setCheckable(True) parent.addAction(a) self.addAction(a) self.point_action = a # Connect callback functions to VisPy Canvas self._vispy_widget.canvas.events.mouse_press.connect( self.on_mouse_press) self._vispy_widget.canvas.events.mouse_release.connect( self.on_mouse_release) self._vispy_widget.canvas.events.mouse_move.connect(self.on_mouse_move)