Пример #1
0
    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
Пример #2
0
        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')
Пример #3
0
 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())
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
 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())
Пример #8
0
 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()
Пример #9
0
    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)
Пример #10
0
 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_()
Пример #11
0
    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)