def __createTreeWindow(self, treeView): toolbar = qt.QToolBar(self) toolbar.setIconSize(qt.QSize(16, 16)) toolbar.setStyleSheet("QToolBar { border: 0px }") action = qt.QAction(toolbar) action.setIcon(icons.getQIcon("view-refresh")) action.setText("Refresh") action.setToolTip("Refresh all selected items") action.triggered.connect(self.__refreshSelected) action.setShortcut(qt.QKeySequence(qt.Qt.Key_F5)) toolbar.addAction(action) treeView.addAction(action) self.__refreshAction = action # Another shortcut for refresh action = qt.QAction(toolbar) action.setShortcut(qt.QKeySequence(qt.Qt.ControlModifier + qt.Qt.Key_R)) treeView.addAction(action) action.triggered.connect(self.__refreshSelected) action = qt.QAction(toolbar) # action.setIcon(icons.getQIcon("view-refresh")) action.setText("Close") action.setToolTip("Close selected item") action.triggered.connect(self.__removeSelected) action.setShortcut(qt.QKeySequence(qt.Qt.Key_Delete)) treeView.addAction(action) self.__closeAction = action toolbar.addSeparator() action = qt.QAction(toolbar) action.setIcon(icons.getQIcon("tree-expand-all")) action.setText("Expand all") action.setToolTip("Expand all selected items") action.triggered.connect(self.__expandAllSelected) action.setShortcut(qt.QKeySequence(qt.Qt.ControlModifier + qt.Qt.Key_Plus)) toolbar.addAction(action) treeView.addAction(action) self.__expandAllAction = action action = qt.QAction(toolbar) action.setIcon(icons.getQIcon("tree-collapse-all")) action.setText("Collapse all") action.setToolTip("Collapse all selected items") action.triggered.connect(self.__collapseAllSelected) action.setShortcut(qt.QKeySequence(qt.Qt.ControlModifier + qt.Qt.Key_Minus)) toolbar.addAction(action) treeView.addAction(action) self.__collapseAllAction = action widget = qt.QWidget(self) layout = qt.QVBoxLayout(widget) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.addWidget(toolbar) layout.addWidget(treeView) return widget
def _addAction(self, menu, text, slot, shortcut=None): action = qt.QAction(text, self) action.triggered.connect(slot) if shortcut: action.setShortcut(qt.QKeySequence(shortcut)) action.setShortcutContext(qt.Qt.WidgetWithChildrenShortcut) menu.addAction(action) return action
def createActions(self): action = qt.QAction("E&xit", self) action.setShortcuts(qt.QKeySequence.Quit) action.setStatusTip("Exit the application") action.triggered.connect(self.close) self._exitAction = action action = qt.QAction("&Open...", self) action.setStatusTip("Open a file") action.triggered.connect(self.open) self._openAction = action action = qt.QAction("Open Recent", self) action.setStatusTip("Open a recently openned file") action.triggered.connect(self.open) self._openRecentAction = action action = qt.QAction("&About", self) action.setStatusTip("Show the application's About box") action.triggered.connect(self.about) self._aboutAction = action action = qt.QAction("&Documentation", self) action.setStatusTip("Show the Silx library's documentation") action.triggered.connect(self.showDocumentation) self._documentationAction = action # Plot backend action = qt.QAction("Plot rendering backend", self) action.setStatusTip("Select plot rendering backend") self._plotBackendSelection = action menu = qt.QMenu() action.setMenu(menu) group = qt.QActionGroup(self) group.setExclusive(True) action = qt.QAction("matplotlib", self) action.setStatusTip("Plot will be rendered using matplotlib") action.setCheckable(True) action.triggered.connect(self.__forceMatplotlibBackend) group.addAction(action) menu.addAction(action) self._usePlotWithMatplotlib = action action = qt.QAction("OpenGL", self) action.setStatusTip("Plot will be rendered using OpenGL") action.setCheckable(True) action.triggered.connect(self.__forceOpenglBackend) group.addAction(action) menu.addAction(action) self._usePlotWithOpengl = action # Plot image orientation action = qt.QAction("Default plot image y-axis orientation", self) action.setStatusTip("Select the default y-axis orientation used by plot displaying images") self._plotImageOrientation = action menu = qt.QMenu() action.setMenu(menu) group = qt.QActionGroup(self) group.setExclusive(True) action = qt.QAction("Downward, origin on top", self) action.setIcon(self._iconDownward) action.setStatusTip("Plot images will use a downward Y-axis orientation") action.setCheckable(True) action.triggered.connect(self.__forcePlotImageDownward) group.addAction(action) menu.addAction(action) self._useYAxisOrientationDownward = action action = qt.QAction("Upward, origin on bottom", self) action.setIcon(self._iconUpward) action.setStatusTip("Plot images will use a upward Y-axis orientation") action.setCheckable(True) action.triggered.connect(self.__forcePlotImageUpward) group.addAction(action) menu.addAction(action) self._useYAxisOrientationUpward = action # Windows action = qt.QAction("Show custom NXdata selector", self) action.setStatusTip("Show a widget which allow to create plot by selecting data and axes") action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_F5)) action.toggled.connect(self.__toggleCustomNxdataWindow) self._displayCustomNxdataWindow = action
def _initDrawGroupBox(self): """Init drawing tools widgets""" layout = qt.QVBoxLayout() self.browseAction = PanModeAction(self.plot, self.plot) self.addAction(self.browseAction) # Draw tools self.rectAction = qt.QAction(icons.getQIcon('shape-rectangle'), 'Rectangle selection', None) self.rectAction.setToolTip( 'Rectangle selection tool: (Un)Mask a rectangular region <b>R</b>') self.rectAction.setShortcut(qt.QKeySequence(qt.Qt.Key_R)) self.rectAction.setCheckable(True) self.rectAction.triggered.connect(self._activeRectMode) self.addAction(self.rectAction) self.ellipseAction = qt.QAction(icons.getQIcon('shape-ellipse'), 'Circle selection', None) self.ellipseAction.setToolTip( 'Rectangle selection tool: (Un)Mask a circle region <b>R</b>') self.ellipseAction.setShortcut(qt.QKeySequence(qt.Qt.Key_R)) self.ellipseAction.setCheckable(True) self.ellipseAction.triggered.connect(self._activeEllipseMode) self.addAction(self.ellipseAction) self.polygonAction = qt.QAction(icons.getQIcon('shape-polygon'), 'Polygon selection', None) self.polygonAction.setShortcut(qt.QKeySequence(qt.Qt.Key_S)) self.polygonAction.setToolTip( 'Polygon selection tool: (Un)Mask a polygonal region <b>S</b><br>' 'Left-click to place new polygon corners<br>' 'Left-click on first corner to close the polygon') self.polygonAction.setCheckable(True) self.polygonAction.triggered.connect(self._activePolygonMode) self.addAction(self.polygonAction) self.pencilAction = qt.QAction(icons.getQIcon('draw-pencil'), 'Pencil tool', None) self.pencilAction.setShortcut(qt.QKeySequence(qt.Qt.Key_P)) self.pencilAction.setToolTip( 'Pencil tool: (Un)Mask using a pencil <b>P</b>') self.pencilAction.setCheckable(True) self.pencilAction.triggered.connect(self._activePencilMode) self.addAction(self.pencilAction) self.drawActionGroup = qt.QActionGroup(self) self.drawActionGroup.setExclusive(True) self.drawActionGroup.addAction(self.rectAction) self.drawActionGroup.addAction(self.ellipseAction) self.drawActionGroup.addAction(self.polygonAction) self.drawActionGroup.addAction(self.pencilAction) actions = (self.browseAction, self.rectAction, self.ellipseAction, self.polygonAction, self.pencilAction) drawButtons = [] for action in actions: btn = qt.QToolButton() btn.setDefaultAction(action) drawButtons.append(btn) container = self._hboxWidget(*drawButtons) layout.addWidget(container) # Mask/Unmask radio buttons maskRadioBtn = qt.QRadioButton('Mask') maskRadioBtn.setToolTip( 'Drawing masks with current level. Press <b>Ctrl</b> to unmask') maskRadioBtn.setChecked(True) unmaskRadioBtn = qt.QRadioButton('Unmask') unmaskRadioBtn.setToolTip( 'Drawing unmasks with current level. Press <b>Ctrl</b> to mask') self.maskStateGroup = qt.QButtonGroup() self.maskStateGroup.addButton(maskRadioBtn, 1) self.maskStateGroup.addButton(unmaskRadioBtn, 0) self.maskStateWidget = self._hboxWidget(maskRadioBtn, unmaskRadioBtn) layout.addWidget(self.maskStateWidget) self.maskStateWidget.setHidden(True) # Pencil settings self.pencilSetting = self._createPencilSettings(None) self.pencilSetting.setVisible(False) layout.addWidget(self.pencilSetting) layout.addStretch(1) drawGroup = qt.QGroupBox('Draw tools') drawGroup.setLayout(layout) return drawGroup
def __init__(self, parent=None): qt.QToolBar.__init__(self, parent) self.__compareWidget = None menu = qt.QMenu(self) self.__visualizationAction = qt.QAction(self) self.__visualizationAction.setMenu(menu) self.__visualizationAction.setCheckable(False) self.addAction(self.__visualizationAction) self.__visualizationGroup = qt.QActionGroup(self) self.__visualizationGroup.setExclusive(True) self.__visualizationGroup.triggered.connect( self.__visualizationModeChanged) icon = icons.getQIcon("compare-mode-a") action = qt.QAction(icon, "Display the first image only", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_A)) action.setProperty("mode", VisualizationMode.ONLY_A) menu.addAction(action) self.__aModeAction = action self.__visualizationGroup.addAction(action) icon = icons.getQIcon("compare-mode-b") action = qt.QAction(icon, "Display the second image only", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_B)) action.setProperty("mode", VisualizationMode.ONLY_B) menu.addAction(action) self.__bModeAction = action self.__visualizationGroup.addAction(action) icon = icons.getQIcon("compare-mode-vline") action = qt.QAction(icon, "Vertical compare mode", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_V)) action.setProperty("mode", VisualizationMode.VERTICAL_LINE) menu.addAction(action) self.__vlineModeAction = action self.__visualizationGroup.addAction(action) icon = icons.getQIcon("compare-mode-hline") action = qt.QAction(icon, "Horizontal compare mode", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_H)) action.setProperty("mode", VisualizationMode.HORIZONTAL_LINE) menu.addAction(action) self.__hlineModeAction = action self.__visualizationGroup.addAction(action) icon = icons.getQIcon("compare-mode-rb-channel") action = qt.QAction(icon, "Blue/red compare mode (additive mode)", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_C)) action.setProperty("mode", VisualizationMode.COMPOSITE_RED_BLUE_GRAY) menu.addAction(action) self.__brChannelModeAction = action self.__visualizationGroup.addAction(action) icon = icons.getQIcon("compare-mode-rbneg-channel") action = qt.QAction(icon, "Yellow/cyan compare mode (subtractive mode)", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_W)) action.setProperty("mode", VisualizationMode.COMPOSITE_RED_BLUE_GRAY_NEG) menu.addAction(action) self.__ycChannelModeAction = action self.__visualizationGroup.addAction(action) icon = icons.getQIcon("compare-mode-a-minus-b") action = qt.QAction(icon, "Raw A minus B compare mode", self) action.setIconVisibleInMenu(True) action.setCheckable(True) action.setShortcut(qt.QKeySequence(qt.Qt.Key_W)) action.setProperty("mode", VisualizationMode.COMPOSITE_A_MINUS_B) menu.addAction(action) self.__ycChannelModeAction = action self.__visualizationGroup.addAction(action) menu = qt.QMenu(self) self.__alignmentAction = qt.QAction(self) self.__alignmentAction.setMenu(menu) self.__alignmentAction.setIconVisibleInMenu(True) self.addAction(self.__alignmentAction) self.__alignmentGroup = qt.QActionGroup(self) self.__alignmentGroup.setExclusive(True) self.__alignmentGroup.triggered.connect(self.__alignmentModeChanged) icon = icons.getQIcon("compare-align-origin") action = qt.QAction(icon, "Align images on their upper-left pixel", self) action.setProperty("mode", AlignmentMode.ORIGIN) action.setIconVisibleInMenu(True) action.setCheckable(True) self.__originAlignAction = action menu.addAction(action) self.__alignmentGroup.addAction(action) icon = icons.getQIcon("compare-align-center") action = qt.QAction(icon, "Center images", self) action.setProperty("mode", AlignmentMode.CENTER) action.setIconVisibleInMenu(True) action.setCheckable(True) self.__centerAlignAction = action menu.addAction(action) self.__alignmentGroup.addAction(action) icon = icons.getQIcon("compare-align-stretch") action = qt.QAction(icon, "Stretch the second image on the first one", self) action.setProperty("mode", AlignmentMode.STRETCH) action.setIconVisibleInMenu(True) action.setCheckable(True) self.__stretchAlignAction = action menu.addAction(action) self.__alignmentGroup.addAction(action) icon = icons.getQIcon("compare-align-auto") action = qt.QAction(icon, "Auto-alignment of the second image", self) action.setProperty("mode", AlignmentMode.AUTO) action.setIconVisibleInMenu(True) action.setCheckable(True) self.__autoAlignAction = action menu.addAction(action) if sift is None: action.setEnabled(False) action.setToolTip("Sift module is not available") self.__alignmentGroup.addAction(action) icon = icons.getQIcon("compare-keypoints") action = qt.QAction(icon, "Display/hide alignment keypoints", self) action.setCheckable(True) action.triggered.connect(self.__keypointVisibilityChanged) self.addAction(action) self.__displayKeypoints = action