def itemRightClickedSlot(self, ddict): filename = ddict['file'] name = ddict['name'] if ddict['dtype'].startswith('|S'): #handle a right click on a dataset of string type return self.showInfoWidget(filename, name, False) pass elif ddict['dtype'] == '': #handle a right click on a group return self.showInfoWidget(filename, name, False) elif 0: #should I show the option menu? self.showInfoWidget(filename, name, True) return else: #handle a right click on a numeric dataset _hdf5WidgetDatasetMenu = qt.QMenu(self) _hdf5WidgetDatasetMenu.addAction(QString("Add to selection table"), self._addToSelectionTable) if 0: #these two options can be combined into one for the time being _hdf5WidgetDatasetMenu.addAction(QString("Open"), self._openDataset) _hdf5WidgetDatasetMenu.addAction(QString("Show Properties"), self._showDatasetProperties) else: _hdf5WidgetDatasetMenu.addAction(QString("Show Information"), self._showInfoWidgetSlot) self._lastDatasetDict = ddict _hdf5WidgetDatasetMenu.exec_(qt.QCursor.pos()) self._lastDatasetDict = None return
def __init__(self, parent=None): qt.QWidget.__init__(self, parent) self.l = qt.QVBoxLayout(self) self.table = qt.QTableWidget(self) self.table.setColumnCount(1) self.table.setRowCount(0) item = self.table.horizontalHeaderItem(0) if item is None: item = qt.QTableWidgetItem("No MCA for the selected scan", qt.QTableWidgetItem.Type) self.table.setHorizontalHeaderItem(0, item) self.table.resizeColumnToContents(0) self.table.setEditTriggers(qt.QAbstractItemView.NoEditTriggers) self.table.setSelectionMode(qt.QAbstractItemView.MultiSelection) self.l.addWidget(self.table) #self.connect(self.table, # qt.SIGNAL("cellActivated( int, int)"), # self._cellActivated) self.connect(self.table, qt.SIGNAL("cellClicked(int, int)"), self._cellClicked) self.connect(self.table, qt.SIGNAL("cellDoubleClicked(int, int)"), self._cellDoubleClicked) self.table._hHeader = self.table.horizontalHeader() self.connect(self.table._hHeader, qt.SIGNAL('sectionClicked(int)'), self._horizontalHeaderClicked) self.table._hHeader.menu = qt.QMenu() self.table._hHeader.menu.addAction('ADD Image') self.table._hHeader.menu.addAction('REMOVE Image') self.table._hHeader.menu.addAction('REPLACE Image') self.table._hHeader.menu.addAction('ADD Stack')
def __contextMenu(self, point): if DEBUG: print("__contextMenu",point) item = self.list.itemAt(point) if item is not None: sn= str(item.text(1)) self.menu= qt.QMenu() self.menu.addAction("Show scan header", self.__showScanInfo) self.menu_idx = self.scans.index(sn) self.menu.popup(self.cursor().pos())
def build(self): layout = qt.QVBoxLayout(self) layout.setMargin(0) layout.setSpacing(0) self.calbox = None self.calbut = None calibration = McaCalControlLine(self) self.calbox = calibration.calbox self.calbut = calibration.calbut self.calinfo = McaCalInfoLine(self) if qt.qVersion() < '4.0.0': self.calmenu = qt.QPopupMenu() self.calmenu.insertItem(QString("Edit"), self.__copysignal) self.calmenu.insertItem(QString("Compute"), self.__computesignal) self.calmenu.insertSeparator() self.calmenu.insertItem(QString("Load"), self.__loadsignal) self.calmenu.insertItem(QString("Save"), self.__savesignal) else: self.calmenu = qt.QMenu() self.calmenu.addAction(QString("Edit"), self.__copysignal) self.calmenu.addAction(QString("Compute"), self.__computesignal) self.calmenu.addSeparator() self.calmenu.addAction(QString("Load"), self.__loadsignal) self.calmenu.addAction(QString("Save"), self.__savesignal) layout.addWidget(calibration) layout.addWidget(self.calinfo) # ROI #roibox = qt.QHGroupBox(self) #roibox.setTitle(' ROI ') roibox = qt.QWidget(self) roiboxlayout = qt.QHBoxLayout(roibox) roiboxlayout.setMargin(0) roiboxlayout.setSpacing(0) #roibox.setAlignment(qt.Qt.AlignHCenter) self.roiwidget = McaROIWidget.McaROIWidget(roibox) self.roiwidget.fillfromroidict(roilist=self.roilist, roidict=self.roidict) self.fillfromroidict = self.roiwidget.fillfromroidict self.addroi = self.roiwidget.addroi roiboxlayout.addWidget(self.roiwidget) layout.addWidget(roibox) if qt.qVersion() > '4.0.0': layout.setStretchFactor(roibox, 1)
def __init__(self, *var, **kw): ddict = {} ddict['usetab'] = True ddict.update(kw) ddict['standalonesave'] = False MaskImageWidget.MaskImageWidget.__init__(self, *var, **ddict) self.slider = qt.QSlider(self) self.slider.setOrientation(qt.Qt.Horizontal) self.slider.setMinimum(0) self.slider.setMaximum(0) # The 1D graph self.vectorGraph = ScanWindow.ScanWindow(self) self.mainTab.addTab(self.vectorGraph, "VECTORS") self.mainLayout.addWidget(self.slider) self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self._showImage) self.imageList = None self.imageNames = None self.eigenValues = None self.eigenVectors = None self.vectorNames = None self.vectorGraphTitles = None standalonesave = kw.get("standalonesave", True) if standalonesave: self.connect(self.graphWidget.saveToolButton, qt.SIGNAL("clicked()"), self._saveToolButtonSignal) self._saveMenu = qt.QMenu() self._saveMenu.addAction(qt.QString("Image Data"), self.saveImageList) self._saveMenu.addAction(qt.QString("Standard Graphics"), self.graphWidget._saveIconSignal) if QTVERSION > '4.0.0': if MATPLOTLIB: self._saveMenu.addAction(qt.QString("Matplotlib"), self._saveMatplotlibImage) self.multiplyIcon = qt.QIcon(qt.QPixmap(IconDict["swapsign"])) infotext = "Multiply image by -1" self.multiplyButton = self.graphWidget._addToolButton(\ self.multiplyIcon, self._multiplyIconChecked, infotext, toggle=False, position=12)
def build(self): self.mainLayout = qt.QVBoxLayout(self) self.splitter = qt.QSplitter(self) self.splitter.setOrientation(qt.Qt.Vertical) self.hdf5Widget = HDF5Widget.HDF5Widget(self._defaultModel, self.splitter) self.hdf5Widget.setSelectionMode( qt.QAbstractItemView.ExtendedSelection) self.cntTable = HDF5CounterTable.HDF5CounterTable(self.splitter) self.mainLayout.addWidget(self.splitter) #Enable 3D if ('PyMca.Object3D' in sys.modules) or \ ('Object3D' in sys.modules): self.buttons = Buttons(self, options=['SCAN', 'MCA', '2D', '3D']) self.cntTable.set3DEnabled(True) else: self.buttons = Buttons(self, options=['SCAN', 'MCA', '2D']) self.cntTable.set3DEnabled(False) self.mainLayout.addWidget(self.buttons) self.connect(self.hdf5Widget, qt.SIGNAL('HDF5WidgetSignal'), self.hdf5Slot) self.connect(self.cntTable, qt.SIGNAL('customContextMenuRequested(QPoint)'), self._counterTableCustomMenuSlot) self.connect(self.buttons, qt.SIGNAL('ButtonsSignal'), self.buttonsSlot) # Some convenience functions to customize the table # They could have been included in other class inheriting # this one. self.cntTable.setContextMenuPolicy(qt.Qt.CustomContextMenu) self._cntTableMenu = qt.QMenu(self) self._cntTableMenu.addAction(QString("Load"), self._loadCounterTableConfiguration) self._cntTableMenu.addAction(QString("Merge"), self._mergeCounterTableConfiguration) self._cntTableMenu.addAction(QString("Save"), self._saveCounterTableConfiguration) self._cntTableMenu.addSeparator() self._cntTableMenu.addAction(QString("Delete All"), self._deleteAllCountersFromTable) self._cntTableMenu.addAction(QString("Delete Selected"), self._deleteSelectedCountersFromTable)
def openSpec(self): speclist = sps.getspeclist() if not len(speclist): qt.QMessageBox.information(self, "No SPEC Shared Memory Found", "No shared memory source available") return if QTVERSION < '4.0.0': print("should I keep Qt3 version?") return menu = qt.QMenu() for spec in speclist: if hasattr(qt, "QString"): menu.addAction(qt.QString(spec), lambda i=spec:self.openFile(i, specsession=True)) else: menu.addAction(spec, lambda i=spec:self.openFile(i, specsession=True)) menu.exec_(self.cursor().pos())
def contextMenuEvent(self, event): if event.reason() == event.Mouse: pos = event.globalPos() item = self.itemAt(event.pos()) else: pos = None sel = self.selectedItems() if sel: item = sel[0] else: item = self.currentItem() if item is None: self.invisibleRootItem().child(0) if item is not None: itemrect = self.visualItemRect(item) portrect = self.viewport().rect() itemrect.setLeft(portrect.left()) itemrect.setWidth(portrect.width()) pos = self.mapToGlobal(itemrect.bottomLeft()) if pos is not None: menu = qt.QMenu('Perform..', self) menu.addActions(self.parentWidget().actionList) menu.popup(pos) event.accept()
def initMenuBar(self): if self.options["MenuFile"]: if QTVERSION < '4.0.0': self.menuFile = qt.QPopupMenu(self.menuBar()) idx = self.menuFile.insertItem(self.Icons["fileopen"], QString("&Open"), self.onOpen, qt.Qt.CTRL + qt.Qt.Key_O) self.menuFile.setWhatsThis(idx, HelpDict["fileopen"]) idx = self.menuFile.insertItem(self.Icons["filesave"], "&Save", self.onSave, qt.Qt.CTRL + qt.Qt.Key_S) self.menuFile.setWhatsThis(idx, HelpDict["filesave"]) self.menuFile.insertItem("Save &as", self.onSaveAs) self.menuFile.insertSeparator() idx = self.menuFile.insertItem(self.Icons["fileprint"], "&Print", self.onPrint, qt.Qt.CTRL + qt.Qt.Key_P) self.menuFile.setWhatsThis(idx, HelpDict["fileprint"]) self.menuFile.insertSeparator() self.menuFile.insertItem("&Quit", qt.qApp, qt.SLOT("closeAllWindows()"), qt.Qt.CTRL + qt.Qt.Key_Q) self.menuBar().insertItem('&File', self.menuFile) self.onInitMenuBar(self.menuBar()) else: #self.menubar = qt.QMenuBar(self) self.menuFile = qt.QMenu() self.menuFile.addAction(self.actionOpen) self.menuFile.addAction(self.actionSaveAs) self.menuFile.addAction(self.actionSave) self.menuFile.addSeparator() self.menuFile.addAction(self.actionPrint) self.menuFile.addSeparator() self.menuFile.addAction(self.actionQuit) self.menuFile.setTitle("&File") self.menuBar().addMenu(self.menuFile) self.onInitMenuBar(self.menuBar()) if self.options["MenuTools"]: if QTVERSION < '4.0.0': self.menuTools = qt.QPopupMenu() self.menuTools.setCheckable(1) self.connect(self.menuTools, qt.SIGNAL("aboutToShow()"), self.menuToolsAboutToShow) self.menuBar().insertItem("&Tools", self.menuTools) else: self.menuTools = qt.QMenu() #self.menuTools.setCheckable(1) self.connect(self.menuTools, qt.SIGNAL("aboutToShow()"), self.menuToolsAboutToShow) self.menuTools.setTitle("&Tools") self.menuBar().addMenu(self.menuTools) if self.options["MenuWindow"]: if QTVERSION < '4.0.0': self.menuWindow = qt.QPopupMenu() self.menuWindow.setCheckable(1) self.connect(self.menuWindow, qt.SIGNAL("aboutToShow()"), self.menuWindowAboutToShow) self.menuBar().insertItem("&Window", self.menuWindow) else: self.menuWindow = qt.QMenu() #self.menuWindow.setCheckable(1) self.connect(self.menuWindow, qt.SIGNAL("aboutToShow()"), self.menuWindowAboutToShow) self.menuWindow.setTitle("&Window") self.menuBar().addMenu(self.menuWindow) if self.options["MenuHelp"]: if QTVERSION < '4.0.0': self.menuHelp = qt.QPopupMenu(self) self.menuHelp.insertItem("&About", self.onAbout) self.menuHelp.insertItem("About &Qt", self.onAboutQt) self.menuBar().insertSeparator() self.menuBar().insertItem("&Help", self.menuHelp) else: self.menuHelp = qt.QMenu() self.menuHelp.addAction("&About", self.onAbout) self.menuHelp.addAction("About &Qt", self.onAboutQt) self.menuBar().addSeparator() self.menuHelp.setTitle("&Help") self.menuBar().addMenu(self.menuHelp)
def _pluginClicked(self): actionList = [] menu = qt.QMenu(self) text = qt.QString("Reload") menu.addAction(text) actionList.append(text) menu.addSeparator() callableKeys = ["Dummy"] for m in self.pluginList: if m == "PyMcaPlugins.Plugin1DBase": continue module = sys.modules[m] if hasattr(module, 'MENU_TEXT'): text = qt.QString(module.MENU_TEXT) else: text = os.path.basename(module.__file__) if text.endswith('.pyc'): text = text[:-4] elif text.endswith('.py'): text = text[:-3] text = qt.QString(text) methods = self.pluginInstanceDict[m].getMethods(plottype="SCAN") if not len(methods): continue menu.addAction(text) actionList.append(text) callableKeys.append(m) a = menu.exec_(qt.QCursor.pos()) if a is None: return None idx = actionList.index(a.text()) if idx == 0: n = self.getPlugins() if n < 1: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Information) msg.setText("Problem loading plugins") msg.exec_() return key = callableKeys[idx] methods = self.pluginInstanceDict[key].getMethods(plottype="SCAN") if len(methods) == 1: idx = 0 else: actionList = [] methods.sort() menu = qt.QMenu(self) for method in methods: text = qt.QString(method) pixmap = self.pluginInstanceDict[key].getMethodPixmap(method) tip = qt.QString( self.pluginInstanceDict[key].getMethodToolTip(method)) if pixmap is not None: action = qt.QAction(qt.QIcon(qt.QPixmap(pixmap)), text, self) else: action = qt.QAction(text, self) if tip is not None: action.setToolTip(tip) menu.addAction(action) actionList.append((text, pixmap, tip, action)) qt.QObject.connect(menu, qt.SIGNAL("hovered(QAction *)"), self._actionHovered) a = menu.exec_(qt.QCursor.pos()) if a is None: return None idx = -1 for action in actionList: if a.text() == action[0]: idx = actionList.index(action) try: self.pluginInstanceDict[key].applyMethod(methods[idx]) except: msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) if QTVERSION < '4.0.0': msg.setText("%s" % sys.exc_info()[1]) else: msg.setWindowTitle("Plugin error") msg.setText("An error has occured while executing the plugin:") msg.setInformativeText(str(sys.exc_info()[1])) msg.setDetailedText(traceback.format_exc()) msg.exec_()
def __init__(self, *var, **kw): ddict = {} ddict['usetab'] = False ddict.update(kw) ddict['standalonesave'] = False if 'dynamic' in kw: del ddict['dynamic'] if 'crop' in kw: del ddict['crop'] if 'depthselection' in kw: del ddict['depthselection'] self._depthSelection = kw.get('depthselection', False) MaskImageWidget.MaskImageWidget.__init__(self, *var, **ddict) self.slider = qt.QSlider(self) self.slider.setOrientation(qt.Qt.Horizontal) self.slider.setMinimum(0) self.slider.setMaximum(0) self.mainLayout.addWidget(self.slider) self.connect(self.slider, qt.SIGNAL("valueChanged(int)"), self._showImage) self.imageList = None self._imageDict = None self.imageNames = None self._stack = None standalonesave = kw.get("standalonesave", True) if standalonesave: self.connect(self.graphWidget.saveToolButton, qt.SIGNAL("clicked()"), self._saveToolButtonSignal) self._saveMenu = qt.QMenu() self._saveMenu.addAction(QString("Image Data"), self.saveImageList) self._saveMenu.addAction(QString("Standard Graphics"), self.graphWidget._saveIconSignal) if QTVERSION > '4.0.0': if MATPLOTLIB: self._saveMenu.addAction(QString("Matplotlib"), self._saveMatplotlibImage) dynamic = kw.get("dynamic", False) self._dynamic = dynamic crop = kw.get("crop", True) if crop: self.cropIcon = qt.QIcon(qt.QPixmap(IconDict["crop"])) infotext = "Crop image to the currently zoomed window" cropPosition = 6 #if 'imageicons' in kw: # if not kw['imageicons']: # cropPosition = 6 self.cropButton = self.graphWidget._addToolButton(\ self.cropIcon, self._cropIconChecked, infotext, toggle = False, position = cropPosition) infotext = "Flip image and data, not the scale." self.graphWidget.hFlipToolButton.setToolTip('Flip image') self._flipMenu = qt.QMenu() self._flipMenu.addAction(QString("Flip Image and Vertical Scale"), self.__hFlipIconSignal) self._flipMenu.addAction(QString("Flip Image Left-Right"), self._flipLeftRight) self._flipMenu.addAction(QString("Flip Image Up-Down"), self._flipUpDown) else: self.connect(self.graphWidget.hFlipToolButton, qt.SIGNAL("clicked()"), self.__hFlipIconSignal)