コード例 #1
0
ファイル: hdftreewidget.py プロジェクト: whigg/h5browse
 def createActions(self):
     self.insertDatasetAction = QtGui.QAction(QtGui.QIcon(), 'Insert dataset', self,
                                        statusTip='Create and insert a dataset under currently selected group',
                                        triggered=self.insertDataset)
     self.insertGroupAction  = QtGui.QAction(QtGui.QIcon(), 'Insert group', self,
                                        statusTip='Create and insert a group under currently selected group',
                                        triggered=self.insertGroup)
     self.deleteNodeAction = QtGui.QAction(QtGui.QIcon(), 'Delete node', self,
                                     statusTip='Delete the currently selected node.',
                                     triggered=self.deleteNode)        
コード例 #2
0
 def addAction(text, parentMenu, triggered, insertBefore=None):
     action = QtGui.QAction(text, parentMenu)
     action.triggered.connect(triggered)
     if insertBefore:
         parentMenu.insertAction(insertBefore, action)
     else:
         parentMenu.addAction(action)
コード例 #3
0
 def createActions(self):
     self.openFileReadOnlyAction = QtGui.QAction(
         QtGui.QIcon(),
         'Open file(s) readonly',
         self,
         shortcut=QtGui.QKeySequence.Open,
         statusTip='Open an HDF5 file for reading',
         triggered=self.openFilesReadOnly)
     self.openFileReadWriteAction = QtGui.QAction(
         QtGui.QIcon(),
         '&Open file(s) read/write',
         self,
         # shortcut=QtGui.QKeySequence.Open,
         statusTip='Open an HDF5 file for editing',
         triggered=self.openFilesReadWrite)
     self.openFileOverwriteAction = QtGui.QAction(
         QtGui.QIcon(),
         'Overwrite file',
         self,
         # shortcut=QtGui.QKeySequence.Open,
         statusTip='Open an HDF5 file for writing (overwrite existing)',
         triggered=self.openFileOverwrite)
     self.createFileAction = QtGui.QAction(
         QtGui.QIcon(),
         '&New file',
         self,
         shortcut=QtGui.QKeySequence.New,
         statusTip='Create a new HDF5 file',
         triggered=self.createFile)
     self.closeFileAction = QtGui.QAction(
         QtGui.QIcon(),
         '&Close file(s)',
         self,
         shortcut=QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_K),
         statusTip='Close selected files',
         triggered=self.sigCloseFiles)
     self.quitAction = QtGui.QAction(QtGui.QIcon(),
                                     '&Quit',
                                     self,
                                     shortcut=QtGui.QKeySequence.Quit,
                                     statusTip='Quit dataviz',
                                     triggered=self.doQuit)
     self.showAttributesAction = QtGui.QAction(
         QtGui.QIcon(),
         'Show attributes',
         self,
         shortcut=QtGui.QKeySequence(QtCore.Qt.Key_Return),
         statusTip='Show attributes',
         triggered=self.sigShowAttributes)
     self.showDatasetAction = QtGui.QAction(
         QtGui.QIcon(),
         'Show dataset',
         self,
         shortcut=QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_Return),
         statusTip='Show dataset',
         triggered=self.sigShowDataset)
     self.plotDatasetAction = QtGui.QAction(
         QtGui.QIcon(),
         'Plot dataset',
         self,
         shortcut=QtGui.QKeySequence(QtCore.Qt.ALT + QtCore.Qt.Key_P),
         statusTip='Plot dataset',
         triggered=self.sigPlotDataset)
コード例 #4
0
    def initUI(self):

        exitAction = QtGui.QAction('Exit', self)
        exitAction.triggered.connect(self.close)
        exitAction.setShortcut('Ctrl+Q')

        closeAction = QtGui.QAction('Quit', self)
        closeAction.triggered.connect(sys.exit)
        closeAction.setShortcut('Ctrl+X')

        openFileAction = QtGui.QAction('Open File', self)
        openFileAction.triggered.connect(self.openfile)

        selectElementAction = QtGui.QAction('Select Element', self)
        selectElementAction.triggered.connect(self.selectElement)

        selectFilesAction = QtGui.QAction('Select Files', self)
        selectFilesAction.triggered.connect(self.selectFilesShow)

        xCorAction = QtGui.QAction("Cross Correlation", self)
        xCorAction.triggered.connect(self.CrossCorrelation_test)

        phaseXCorAction = QtGui.QAction("Phase Correlation", self)
        phaseXCorAction.triggered.connect(self.CrossCorrelation_test)

        runCenterOfMassAction = QtGui.QAction("run center of mass action",
                                              self)
        runCenterOfMassAction.triggered.connect(self.centerOfMassWindow)

        matcherAction = QtGui.QAction("match template", self)
        matcherAction.triggered.connect(self.match_window)

        selectBeamlineAction = QtGui.QAction("select beamline", self)
        selectBeamlineAction.triggered.connect(self.selectBeamline)

        openTiffFolderAction = QtGui.QAction("Open Tiff Folder", self)
        # openTiffFolderAction.triggered.connect(self.openTiffFolder)
        sinogramAction = QtGui.QAction('Sinogram', self)
        # sinogramAction.triggered.connect(self.sinogram)
        saveImageAction = QtGui.QAction('Save Projections', self)
        # saveImageAction.triggered.connect(self.saveImage)
        saveThetaTxtAction = QtGui.QAction("Save Theta Postion as txt", self)
        # saveThetaTxtAction.triggered.connect(self.saveThetaTxt)
        convertAction = QtGui.QAction('Save data in memory', self)
        # convertAction.triggered.connect(self.convert)
        saveSinogramAction = QtGui.QAction('Save Sinogram', self)
        # saveSinogramAction.triggered.connect(self.saveSinogram)
        runReconstructAction = QtGui.QAction("Reconstruction", self)
        # runReconstructAction.triggered.connect(self.runReconstruct)
        selectImageTagAction = QtGui.QAction("Select Image Tag", self)
        # selectImageTagAction.triggered.connect(self.selectImageTag)
        alignFromTextAction = QtGui.QAction("Alignment from Text", self)
        # alignFromTextAction.triggered.connect(self.alignFromText)
        alignFromText2Action = QtGui.QAction("Alignment from Text2", self)
        # alignFromText2Action.triggered.connect(self.alignFromText2)
        saveAlignToTextAction = QtGui.QAction(
            "Save Alignment information to text", self)
        # saveAlignToTextAction.triggered.connect(self.saveAlignToText)
        restoreAction = QtGui.QAction("Restore", self)
        # restoreAction.triggered.connect(self.restore)
        alignCenterOfMassAction = QtGui.QAction(
            "Align by fitting center of mass position into sine curve", self)
        # alignCenterOfMassAction.triggered.connect(self.alignCenterOfMass)
        exportDataAction = QtGui.QAction("export data", self)
        # exportDataAction.triggered.connect(self.export_data)
        runTransRecAction = QtGui.QAction("Transmission Recon", self)
        # runTransRecAction.triggered.connect(self.runTransReconstruct)
        saveHotSpotPosAction = QtGui.QAction("Save Hot Spot Pos", self)
        # saveHotSpotPosAction.triggered.connect(self.saveHotSpotPos)
        alignHotSpotPosAction = QtGui.QAction("Align Hot Spot pos", self)
        # alignHotSpotPosAction.triggered.connect(self.alignHotSpotPos1)
        reorderAction = QtGui.QAction("Reorder", self)
        # reorderAction.triggered.connect(self.reorder_matrix)
        wienerAction = QtGui.QAction("Wiener", self)
        # wienerAction.triggered.connect(self.ipWiener)
        reorderAction = QtGui.QAction("Reorder", self)
        # reorderAction.triggered.connect(self.reorder_matrix)
        externalImageRegAction = QtGui.QAction("External Image Registaration",
                                               self)
        # externalImageRegAction.triggered.connect(self.externalImageReg)

        self.frame = QtGui.QFrame()
        self.vl = QtGui.QVBoxLayout()

        self.tab_widget = QtGui.QTabWidget()
        self.tab_widget.addTab(self.createImageProcessWidget(),
                               unicode("Image Process"))
        self.tab_widget.addTab(self.createSaveHotspotWidget(),
                               unicode("Alignment"))
        self.tab_widget.addTab(self.createSinoWidget(), unicode("Sinogram"))
        self.tab_widget.addTab(self.createReconWidget(),
                               unicode("Reconstruction"))
        self.tab_widget.currentChanged.connect(self.tab1manual)

        self.vl.addWidget(self.tab_widget)
        self.vl.addWidget(self.createMessageWidget())

        self.frame.setLayout(self.vl)
        self.setCentralWidget(self.frame)
        self.tab_widget.setDisabled(False)

        ## Top menu bar [file   Convert Option    Alignment   After saving in memory]
        menubar = self.menuBar()
        self.fileMenu = menubar.addMenu('&File')
        self.fileMenu.addAction(
            selectBeamlineAction)  #to replace readconfiguration Action
        self.fileMenu.addAction(openFileAction)
        self.fileMenu.addAction(openTiffFolderAction)
        self.fileMenu.addAction(exitAction)
        self.fileMenu.addAction(closeAction)

        self.optionMenu = menubar.addMenu('Convert Option')
        self.optionMenu.addAction(selectFilesAction)
        self.optionMenu.addAction(selectImageTagAction)
        self.optionMenu.addAction(selectElementAction)
        self.optionMenu.addAction(convertAction)
        self.optionMenu.setDisabled(False)

        self.alignmentMenu = menubar.addMenu("Alignment")
        self.alignmentMenu.addAction(saveAlignToTextAction)
        self.alignmentMenu.addAction(runCenterOfMassAction)
        self.alignmentMenu.addAction(alignCenterOfMassAction)
        self.alignmentMenu.addAction(xCorAction)
        self.alignmentMenu.addAction(phaseXCorAction)
        self.alignmentMenu.addAction(matcherAction)
        self.alignmentMenu.addAction(alignFromTextAction)
        self.alignmentMenu.addAction(alignFromText2Action)
        self.alignmentMenu.addAction(saveHotSpotPosAction)
        self.alignmentMenu.addAction(alignHotSpotPosAction)
        self.alignmentMenu.addAction(externalImageRegAction)
        self.alignmentMenu.addAction(restoreAction)
        self.alignmentMenu.setDisabled(False)

        self.afterConversionMenu = menubar.addMenu(
            'After saving data in memory')
        self.afterConversionMenu.addAction(saveImageAction)
        self.afterConversionMenu.addAction(saveThetaTxtAction)
        self.afterConversionMenu.addAction(saveSinogramAction)
        self.afterConversionMenu.addAction(reorderAction)
        self.afterConversionMenu.setDisabled(False)

        add = 0
        if platform == "win32":
            add = 50
        self.setGeometry(add, add, 1100 + add, 500 + add)
        self.setWindowTitle('Maps_To_Tomopy')
        self.show()
コード例 #5
0
ファイル: gui.py プロジェクト: zacsimile/shampoo
    def __init__(self, **kwargs):
        """
        Parameters
        ----------
        debug : bool, optional
            If True, extra options are available as a debug tool. Default is False.
        """
        super(App, self).__init__(**kwargs)

        self._controller_thread = QtCore.QThread()
        self.controller = ShampooController()
        self.controller.moveToThread(self._controller_thread)
        self._controller_thread.start()

        self.data_viewer = HologramViewer(parent=self)
        self.reconstructed_viewer = ReconstructedHologramViewer(parent=self)

        self.time_series_controls = TimeSeriesControls(parent=self)
        self.time_series_controls.hide()
        self.controller.time_series_metadata_signal.connect(
            lambda d: self.time_series_controls.show())
        self.controller.time_series_metadata_signal.connect(
            self.time_series_controls.update_metadata)
        self.time_series_controls.time_point_request_signal.connect(
            self.controller.data_from_time_series)

        self.controller.reconstructed_hologram_signal.connect(
            self.reconstructed_viewer.display)
        self.controller.raw_data_signal.connect(self.data_viewer.display)

        self.file_dialog = QtGui.QFileDialog(parent=self)
        self.menubar = self.menuBar()

        # Assemble menu from previously-defined actions
        self.file_menu = self.menubar.addMenu('&File')

        raw_data_layout = QtGui.QVBoxLayout()
        raw_data_layout.addWidget(self.data_viewer)
        raw_data_layout.addWidget(self.time_series_controls)

        reconstructed_layout = QtGui.QVBoxLayout()
        reconstructed_layout.addWidget(self.reconstructed_viewer)

        self.error_window = QtGui.QErrorMessage(parent=self)
        self.error_message_signal.connect(self.error_window.showMessage)
        self.controller.error_message_signal.connect(
            self.error_window.showMessage)

        self.layout = QtGui.QHBoxLayout()
        self.layout.addLayout(raw_data_layout)
        self.layout.addLayout(reconstructed_layout)

        self.central_widget = QtGui.QWidget()
        self.central_widget.setLayout(self.layout)
        self.setCentralWidget(self.central_widget)

        self.setGeometry(500, 500, 800, 800)
        self.setWindowTitle('SHAMPOO')
        self._center_window()
        self.showMaximized()

        self.load_time_series_action = QtGui.QAction('&Load time-series', self)
        self.load_time_series_action.triggered.connect(self.load_time_series)
        self.file_menu.addAction(self.load_time_series_action)

        self.file_menu.addSeparator()

        self.time_series_creator_action = QtGui.QAction(
            '&Create hologram times-eries', self)
        self.time_series_creator_action.triggered.connect(
            self.launch_time_series_creator)
        self.file_menu.addAction(self.time_series_creator_action)

        self.time_series_reconstruct_action = QtGui.QAction(
            '&Reconstruct a hologram time-series', self)
        self.time_series_reconstruct_action.triggered.connect(
            self.launch_time_series_reconstruction)
        self.file_menu.addAction(self.time_series_reconstruct_action)
コード例 #6
0
 def addSeperator():
     action = QtGui.QAction('', self.menu)
     action.setSeparator(True)
     self.menu.insertAction(insertBefore, action)
コード例 #7
0
    def __init__(self, *args, **kwds):
        pg.ViewBox.__init__(self, *args, **kwds)

        def addAction(text, parentMenu, triggered, insertBefore=None):
            action = QtGui.QAction(text, parentMenu)
            action.triggered.connect(triggered)
            if insertBefore:
                parentMenu.insertAction(insertBefore, action)
            else:
                parentMenu.addAction(action)

        insertBefore = self.menu.actions()[0]
        insertBefore.setText(
            'View &All')  # Add keyboard shortcut to the View All option

        def addSeperator():
            action = QtGui.QAction('', self.menu)
            action.setSeparator(True)
            self.menu.insertAction(insertBefore, action)

        self.menuSearch = QtGui.QMenu('&Search Markets', self.menu)
        self.menu.insertMenu(insertBefore, self.menuSearch)

        action = QtGui.QAction('&All', self.menuSearch)
        action.triggered.connect(lambda _: self.cg.openSearchMenu(None))
        self.menuSearch.addAction(action)
        for exchange in sorted(exchanges.EXCHANGES, key=lambda e: e.name):
            if exchange.__class__.__base__ != exchanges.ExchangeWithSearch:
                continue
            addAction(exchange.nameWithShortcut,
                      self.menuSearch,
                      lambda _, e=exchange: self.cg.openSearchMenu(e))

        def openWatchlist():
            watchlist = self.cg.watchlist = watchlists.WatchlistWindow(self.cg)
            # Default position of watchlist at top right or parent chart window
            geo = watchlist.geometry()
            parentGeo = self.cg.window.geometry().topRight()
            geo.moveTo(parentGeo)
            watchlist.setGeometry(geo)
            watchlist.show()
            watchlist.startWatchlist()

        addAction('Open Watch&list', self.menu, openWatchlist, insertBefore)

        addSeperator()

        # Add interval submenu to context menu
        timeframeMenu = QtGui.QMenu('&Timeframe', self.menu)

        # Create the interval options depending on what chart group we are looking at.
        def onTimeframeMenuShow():
            timeframeMenu.clear()
            data = self.cg.data
            if not data.count():
                return
            intervals = data.exchange.intervals
            sortedBySeconds = sorted(intervals,
                                     key=lambda i: intervalSeconds(i))
            lastIntervalLetter = ''
            for timeframe in sortedBySeconds:
                interval = timeframe
                if interval == '5m':
                    interval = '&5m'
                elif interval[-1] != lastIntervalLetter:
                    lastIntervalLetter = interval[-1]
                    interval = interval[:-1] + '&' + lastIntervalLetter
                addAction(interval,
                          timeframeMenu,
                          lambda _, timeframe=timeframe: self.cg.
                          changeTimeInterval(timeframe))

        timeframeMenu.aboutToShow.connect(onTimeframeMenuShow)
        self.menu.insertMenu(insertBefore, timeframeMenu)

        # Add links submenu to context menu
        linksMenu = QtGui.QMenu('Links', self.menu)

        def onLinksMenuShow():
            linksMenu.clear()
            for desc, url in sorted(self.cg.links.items()):
                addAction(desc,
                          linksMenu,
                          lambda _, url=url: QtGui.QDesktopServices.openUrl(
                              QtCore.QUrl(url)))

        linksMenu.aboutToShow.connect(onLinksMenuShow)
        self.menu.insertMenu(insertBefore, linksMenu)

        # Add resample submenu to context menu
        resampleMenu = QtGui.QMenu('R&esample Time', self.menu)

        def onResampleMenuShow():
            resampleMenu.clear()
            data = self.cg.data
            if not data.count():
                return

            resampleTable = {
                '4&h': ['m', 'h'],
                '1&w': ['d'],
                '1&M': ['d'],
                '1&d': ['h']
            }
            for toTime, fromTime in resampleTable.items():
                if data.timeframe[-1] in fromTime:
                    addAction(toTime,
                              resampleMenu,
                              lambda _, toTime=toTime: self.cg.resampleData(
                                  toTime.replace('&', '')))

        resampleMenu.aboutToShow.connect(onResampleMenuShow)
        self.menu.insertMenu(insertBefore, resampleMenu)

        optionsMenu = QtGui.QMenu('Chart &Options', self.menu)
        self.menu.insertMenu(insertBefore, optionsMenu)

        def addToggle(showMember, text):
            def toggle(cg, showMember):
                showVar = 'show' + showMember
                value = not getattr(cg, showVar)
                setattr(cg, showVar, value)
                gSettings.setValue(showVar, value)
                if value and showMember == 'Orderwall':
                    # Toggling the orderwall requires downloading the orderbook
                    cg.downloadNewData()
                else:
                    cg.reAddPlotItems()

            addAction(text, optionsMenu, lambda: toggle(self.cg, showMember))

        for var, desc in SHOW_OPTIONS:
            addToggle(var, desc)

        addAction('&Refresh Chart', self.menu,
                  lambda: self.cg.downloadNewData(), insertBefore)

        addSeperator()

        def newChart(cg, incRowOrCol):
            newCoord = [cg.coord[0], cg.coord[1]]
            newCoord[incRowOrCol] += 1
            cg.window.setChartAt(None, newCoord)

        addAction('New Chart &Horizontally', self.menu,
                  lambda: newChart(self.cg, COL), insertBefore)
        addAction('New Chart &Vertically', self.menu,
                  lambda: newChart(self.cg, ROW), insertBefore)

        addAction('Co&py Chart', self.menu,
                  lambda: self.cg.copyMarketToAdjacentChart(None),
                  insertBefore)
        addAction('&Close Chart', self.menu,
                  lambda: self.cg.window.removeChart(self.cg), insertBefore)

        addSeperator()