Example #1
0
 def _toggle_connect_button(self):
     if self.zephyr_connect.connected is True:
         self.connectAction.setIcon(QIcon('common/connected.png'))
         self.connectAction.setToolTip("Disconnect")
         self.connectAction.triggered.disconnect( self.connect_button )
         self.connectAction.triggered.connect( self.disconnect_button )
         self.playAction.setEnabled( True )
         self.timedAction.setEnabled( True )
     else:
         self.connectAction.setIcon(QIcon('common/disconnected.png'))
         self.connectAction.setToolTip("Connect")
         self.connectAction.triggered.disconnect( self.disconnect_button )
         self.connectAction.triggered.connect( self.connect_button )
         self.playAction.setEnabled( False )
         self.timedAction.setEnabled( False )
Example #2
0
 def initialize_widget(self):
     if self.is_radio:
         for button in self._buttons:
             button.toggled.disconnect(self.index_changed)
             self.vbox.removeWidget(button)
             button.deleteLater()
         self._buttons = []
     else:
         self.combobox.blockSignals(True)
         while self.combobox.count():
             self.combobox.removeItem(0)
     _choices = self.item.get_prop_value("data", "choices")
     for key, lbl, img in _choices:
         if self.is_radio:
             button = QRadioButton(lbl, self.group)
         if img:
             if is_text_string(img):
                 if not osp.isfile(img):
                     img = get_image_file_path(img)
                 img = QIcon(img)
             elif isinstance(img, collections.Callable):
                 img = img(key)
             if self.is_radio:
                 button.setIcon(img)
             else:
                 self.combobox.addItem(img, lbl)
         elif not self.is_radio:
             self.combobox.addItem(lbl)
         if self.is_radio:
             self._buttons.append(button)
             self.vbox.addWidget(button)
             button.toggled.connect(self.index_changed)
     if not self.is_radio:
         self.combobox.blockSignals(False)
Example #3
0
    def _setup_menu(self):
        # File menu
        file_menu = self.menuBar().addMenu(_("File"))
        settings_action = create_action(self, _("Settings"),
                                   icon=get_icon('settings.png'),
                                   tip=_("Settings"),
                                   triggered=self.edit_settings)
        quit_action = create_action(self, _("Quit"),
                                    shortcut="Ctrl+Q",
                                    icon=get_std_icon("DialogCloseButton"),
                                    tip=_("Quit application"),
                                    triggered=self.close)
        add_actions(file_menu, (settings_action, None, quit_action))

        # View menu
        view_menu = self.createPopupMenu()
        view_menu.setTitle(_(u"&View"))
        self.menuBar().addMenu(view_menu)

        # Help menu
        help_menu = self.menuBar().addMenu("?")
        about_action = create_action(self, _("About..."),
                                     icon=get_std_icon('MessageBoxInformation'),
                                     triggered=self.about)
        add_actions(help_menu, (about_action,))

        # Base toolbar
        self.connectAction = QAction(QIcon('common/disconnected.png'), 'Connect', self)
        self.connectAction.triggered.connect( self.connect_button )
        self.playAction = QAction(QIcon('common/play.png'), 'Play free', self)
        self.playAction.triggered.connect( self.start_free_session_button )
        self.stopAction = QAction(QIcon('common/stop.png'), 'Stop', self)
        self.stopAction.triggered.connect( self.stop_button )
        self.timedAction = QAction(QIcon('common/timed.png'), 'Start', self)
        self.timedAction.triggered.connect( self.start_timed_session_button )

        self.toolbar = self.addToolBar('Controls')
        self.toolbar.addAction( self.connectAction )
        self.toolbar.addAction( self.playAction )
        self.toolbar.addAction( self.stopAction )
        self.toolbar.addAction( self.timedAction )
        self.toolbar.setObjectName('Controls')

        # Time toolbar
        self.timer = Timer( self )
        self.connect( self.timer, SIGNAL( 'SessionStop' ), self.session_stop )
Example #4
0
    def __init__(self, icondir=None):
        if icondir is None:
            icondir = os.path.dirname(__file__) + "/icons/"

        icons = [f for f in os.listdir(icondir) if f.find('.png') > -1]
        self._icons = {
            f.replace('.png', ''): QIcon(icondir + f)
            for f in icons
        }
Example #5
0
def build_icon_from_cmap(cmap, width=32, height=32):
    """
    Builds an icon representing the colormap
    """
    data = zeros((width, height), uint8)
    line = linspace(0, 255, width)
    data[:, :] = line[:, newaxis]
    img = toQImage(data)
    img.setColorTable(cmap.colorTable(FULLRANGE))
    return QIcon(QPixmap.fromImage(img))
Example #6
0
 def update(self, value):
     """Reimplement LineEditWidget method"""
     LineEditWidget.update(self, value)
     color = text_to_qcolor(value)
     if color.isValid():
         bitmap = QPixmap(16, 16)
         bitmap.fill(color)
         icon = QIcon(bitmap)
     else:
         icon = get_icon("not_found")
     self.button.setIcon(icon)
Example #7
0
def get_std_icon(name, size=None):
    """
    Get standard platform icon
    Call 'show_std_icons()' for details
    """
    if not name.startswith('SP_'):
        name = 'SP_' + name
    icon = QWidget().style().standardIcon(getattr(QStyle, name))
    if size is None:
        return icon
    else:
        return QIcon(icon.pixmap(size, size))
Example #8
0
    def setup(self):
        """Setup window parameters"""
        self.setWindowIcon(QIcon("Chicken.png"))
        self.setWindowTitle(APP_NAME)
        self.resize(QSize(800, 600))

        # Welcome message in statusbar:
        status = self.statusBar()
        status.showMessage(
            _("Welcome to guiqwt application example! 有人注意到這邊有字嗎"), 5000)

        # File menu
        file_menu = self.menuBar().addMenu(_("File"))
        new_action = create_action(self,
                                   _("New..."),
                                   shortcut="Ctrl+N",
                                   icon=get_icon('filenew.png'),
                                   tip=_("Create a new image, Ctrl+N"),
                                   triggered=self.new_csv)
        open_action = create_action(self,
                                    _("Open..."),
                                    shortcut="Ctrl+O",
                                    icon=get_icon('fileopen.png'),
                                    tip=_("Open a CSV file, Ctrl+O"),
                                    triggered=self.open_csv)
        quit_action = create_action(self,
                                    _("Quit"),
                                    shortcut="Ctrl+Q",
                                    icon=get_std_icon("DialogCloseButton"),
                                    tip=_("Quit application, Ctrl+Q"),
                                    triggered=self.close)
        add_actions(file_menu, (new_action, open_action, None, quit_action))  #

        # Help menu
        help_menu = self.menuBar().addMenu("?")
        about_action = create_action(
            self,
            _("About..."),
            icon=get_std_icon('MessageBoxInformation'),
            triggered=self.about)
        add_actions(help_menu, (about_action, ))

        main_toolbar = self.addToolBar("Main")
        add_actions(main_toolbar, (
            new_action,
            open_action,
        ))  #

        # Set central widget:
        toolbar = self.addToolBar("default")  # Image toolbar: Image
        self.mainwidget = CentralWidget(self, toolbar)
        self.setCentralWidget(self.mainwidget)
Example #9
0
 def fill_combo(self):
     self.combobox.blockSignals(True)
     while self.combobox.count():
         self.combobox.removeItem(0)
     _choices = self.item.get_prop_value("data", "choices")
     for key, lbl, img in _choices:
         if img:
             if is_text_string(img):
                 if not osp.isfile(img):
                     img = get_image_file_path(img)
                 img = QIcon(img)
             elif isinstance(img, collections.Callable):
                 img = img(key)
             self.combobox.addItem(img, lbl)
         else:
             self.combobox.addItem(lbl)
     self.combobox.blockSignals(False)
Example #10
0
    def setup(self, TestGUI):
        icondir = os.path.dirname(os.path.abspath("__file__")) + "/icons/"
        icons = [f for f in os.listdir(icondir) if f.find('.png') > -1]
        self.Icons = {f[0:f.find('.png')]: QIcon(icondir + f) for f in icons}

        self.setWindowTitle('IRAM GUI')
        self.resize(QSize(1200, 800))
        self.setWindowIcon(self.Icons['Jupiter'])

        #		self.measurements=measurements(sweep=False)
        self.measurements = None

        self.mainwidget = CentralWidget(self)
        self.setCentralWidget(self.mainwidget)

        self.controlpanel = self.mainwidget.controlpanel
        self.HKvalues = self.controlpanel.HKvalues
        self.Controlvalues = self.controlpanel.Controlvalues
        self.statusbar = self.mainwidget.statusbar

        self.autoYlim = True

        self.TestGUI = TestGUI

        self.init = False
        self.running = False

        self.measureThread = measure(self)

        self.timer = QTimer()
        self.timer.timeout.connect(self.updateTimer)
        self.timer.start(100)

        self.time = localtime()

        self.closeEvent = self.closeApp
Example #11
0
    def __init__(self):
        QMainWindow.__init__(self)

        self.stage = None
        self.stopOsci = False
        self.stopMeasure = False
        
        self.setWindowTitle(APP_NAME)

        ###############
        # Osci live
        curveplot_toolbar = self.addToolBar(_("Curve Plotting Toolbar"))
        self.osciCurveWidget = DockablePlotWidget(self, CurveWidget,
                                              curveplot_toolbar)
        self.osciCurveWidget.calcFun.addFun('s', lambda x: x,
                                                 lambda x: x)
        self.osciCurveWidget.calcFun.addFun('ms', lambda x: x*1e3,
                                                  lambda x: x*1e-3)
        self.osciCurveWidget.calcFun.addFun('µs', lambda x: x*1e6,
                                                  lambda x: x*1e-6)
        osciPlot = self.osciCurveWidget.get_plot()
        #osciPlot.set_axis_title('bottom', 'Time (s)')
        #osciplot.add_item(make.legend("TR"))
        self.osciSignal = SignalFT(self, plot=osciPlot)
        self.osciSignal.addHCursor(0)
        self.osciSignal.addBounds()
        
        ##############
        # Time domain plot
        self.tdWidget = DockablePlotWidget(self, CurveWidget,
                                              curveplot_toolbar)
        self.tdWidget.calcFun.addFun('fs', lambda x: x,
                                           lambda x: x)
        self.tdWidget.calcFun.addFun('µm', lambda x: x*fsDelay*1e3,
                                           lambda x: x/fsDelay*1e-3)
        self.tdWidget.calcFun.addFun('mm', lambda x: x*fsDelay,
                                           lambda x: x/fsDelay)
        tdPlot = self.tdWidget.get_plot()
        #tdPlot.add_item(make.legend("TR"))
        self.tdSignal  = SignalFT(self, plot=tdPlot)
        self.tdSignal.addVCursor(0)

        ##################
        # Frequency domain plot
        self.fdWidget = DockablePlotWidget(self, CurveWidget,
                                              curveplot_toolbar)
        self.fdWidget.calcFun.addFun('PHz', lambda x: x,
                                            lambda x: x)
        self.fdWidget.calcFun.addFun('THz', lambda x: x*1e3,
                                            lambda x: x*1e-3)
        # x = PHz -> 1e15, µm = 1e-6
        self.fdWidget.calcFun.addFun('µm', lambda x: c0/x*1e-9,
                                           lambda x: c0/x*1e-9)
        self.fdWidget.calcFun.addFun('eV', lambda x: x,
                                           lambda x: x)
        fdplot = self.fdWidget.get_plot()
        #fqdplot.add_item(make.legend("TR"))
        self.fdSignal  = SignalFT(self, plot=fdplot)

        ##############
        # Main window widgets
        self.tabwidget = DockableTabWidget(self)
        #self.tabwidget.setMaximumWidth(500)
        self.tiepieUi = TiePieUi(self)
        self.piUi = PiStageUi(self)
        #self.stage = self.piUi.stage
        self.tabwidget.addTab(self.tiepieUi, QIcon('icons/Handyscope_HS4.png'),
                              _("Osci"))
        self.tabwidget.addTab(self.piUi, QIcon('icons/piController.png'),
                              _("Stage"))
        self.add_dockwidget(self.tabwidget, _("Inst. sett."))
#        self.setCentralWidget(self.tabwidget)
        self.osci_dock = self.add_dockwidget(self.osciCurveWidget,
                                              title=_("Osciloscope"))
        self.td_dock = self.add_dockwidget(self.tdWidget,
                                              title=_("Time Domain"))
        self.fd_dock = self.add_dockwidget(self.fdWidget,
                                              title=_("Frequency Domain"))

        ################
        # connect signals
        self.piUi.startScanBtn.released.connect(self.startMeasureThr)
        self.piUi.stopScanBtn.released.connect(self.stopMeasureThr)
        self.piUi.xAxeChanged.connect(self.tdSignal.updateXAxe)
        self.piUi.xAxeChanged.connect(self.fdSignal.updateXAxe)
        self.piUi.niceBtn.released.connect(self.showMakeNicerWidget)
        self.tiepieUi.scpConnected.connect(self.startOsciThr)
        self.tiepieUi.xAxeChanged.connect(self.osciSignal.updateXAxe)
        self.tiepieUi.yAxeChanged.connect(self.osciSignal.updateYAxe)
        self.tiepieUi.triggLevelChanged.connect(self.osciSignal.setHCursor)
        #self.piUi.centerBtn.released.connect(
        #    lambda x=None: self.piUi.setCenter(self.tdSignal.getVCursor()))
        self.tdSignal.plot.SIG_MARKER_CHANGED.connect(
            lambda x=None: self.piUi.newOffset(self.tdSignal.getVCursor()))

        self.osciCurveWidget.calcFun.idxChanged.connect(self.osciSignal.funChanged)
        self.tdWidget.calcFun.idxChanged.connect(self.tdSignal.funChanged)
        self.fdWidget.calcFun.idxChanged.connect(self.fdSignal.funChanged)

        self.updateOsciPlot.connect(self.osciSignal.updatePlot)
        self.updateTdPlot.connect(self.tdSignal.updatePlot)
        self.updateFdPlot.connect(lambda data:
            self.fdSignal.updatePlot(self.fdSignal.computeFFT(data)))
        
        ################
        # create threads
        #self.osciThr = GenericThread(self.getOsciData)
        self.osciThr = QThread()
        self.osciThr.start()
        self.osciWorker = GenericWorker(self.getOsciData)
        self.osciWorker.moveToThread(self.osciThr)
        
        #self.measureThr = GenericThread(self.getMeasureData)
        self.measureThr = QThread()
        self.measureThr.start()
        self.measureWorker = GenericWorker(self.getMeasureData)
        self.measureWorker.moveToThread(self.measureThr)        
        
        ################
        # File menu
        file_menu = self.menuBar().addMenu(_("File"))
        self.quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q",
                                    icon=get_std_icon("DialogCloseButton"),
                                    tip=_("Quit application"),
                                    triggered=self.close)
        saveData = create_action(self, _("Save"), shortcut="Ctrl+S",
                                    icon=get_std_icon("DialogSaveButton"),
                                    tip=_("Save data"),
                                    triggered=self.saveData)
        triggerTest_action = create_action(self, _("Stop Osci"),
                                    shortcut="Ctrl+O",
                                    icon=get_icon('fileopen.png'),
                                    tip=_("Open an image"),
                                    triggered=self.stopOsciThr)
        add_actions(file_menu, (triggerTest_action, saveData, None, self.quit_action))
        
        ##############
        # Eventually add an internal console (requires 'spyderlib')
        self.sift_proxy = SiftProxy(self)
        if DockableConsole is None:
            self.console = None
        else:
            import time, scipy.signal as sps, scipy.ndimage as spi
            ns = {'ftir': self.sift_proxy,
                  'np': np, 'sps': sps, 'spi': spi,
                  'os': os, 'sys': sys, 'osp': osp, 'time': time}
            msg = "Example: ftir.s[0] returns signal object #0\n"\
                  "Modules imported at startup: "\
                  "os, sys, os.path as osp, time, "\
                  "numpy as np, scipy.signal as sps, scipy.ndimage as spi"
            self.console = DockableConsole(self, namespace=ns, message=msg)
            self.add_dockwidget(self.console, _("Console"))
            '''
            try:
                self.console.interpreter.widget_proxy.sig_new_prompt.connect(
                                            lambda txt: self.refresh_lists())
            except AttributeError:
                print('sift: spyderlib is outdated', file=sys.stderr)
            '''

        # Show main window and raise the signal plot panel
        self.show()
Example #12
0
def get_icon(name, default="not_found.png"):
    """
    Construct a QIcon from the file with specified name
    name, default: filenames with extensions
    """
    return QIcon(get_image_file_path(name, default))
Example #13
0
 def icon(self):
     if icon is not None:
         return get_icon(icon)
     else:
         return QIcon()
Example #14
0
    def __init__(self):
        QMainWindow.__init__(self)

        self.stage = None
        self.stopOsci = False
        self.stopMeasure = False

        self.setWindowTitle(APP_NAME)

        ###############
        # Powermeter record
        curveplot_toolbar = self.addToolBar(_("Curve Plotting Toolbar"))
        self.curveWidget1 = DockablePlotWidget(self, CurveWidget,
                                               curveplot_toolbar)
        self.curveWidget1.calcFun.addFun('s', lambda x: x, lambda x: x)
        self.curveWidget1.calcFun.addFun('min', lambda x: x / 60,
                                         lambda x: x * 60)
        self.curveWidget1.calcFun.addFun('hour', lambda x: x / 3600,
                                         lambda x: x * 3600)
        plot1 = self.curveWidget1.get_plot()
        self.signal1 = SignalFT(self, plot=plot1)

        ##############
        # Main window widgets
        self.tabwidget = DockableTabWidget(self)
        #self.tabwidget.setMaximumWidth(500)
        self.maestroUi = MaestroUi(self)
        self.fileUi = FileUi(self)
        self.tabwidget.addTab(self.maestroUi,
                              QIcon('icons/Handyscope_HS4.png'), _("Maestro"))
        self.tabwidget.addTab(self.fileUi, get_icon('filesave.png'), _('File'))
        self.add_dockwidget(self.tabwidget, _("Inst. sett."))
        #        self.setCentralWidget(self.tabwidget)
        self.dock1 = self.add_dockwidget(self.curveWidget1,
                                         title=_("Powermeter"))

        ################
        # connect signals
        self.maestroUi.newPlotData.connect(self.signal1.updatePlot)
        self.curveWidget1.calcFun.idxChanged.connect(self.signal1.funChanged)
        self.fileUi.saveTxtBtn.released.connect(self.saveDataTxt)
        self.fileUi.saveHdfBtn.released.connect(self.saveDataHDF5)
        '''
        self.piUi.startScanBtn.released.connect(self.startMeasureThr)
        self.piUi.stopScanBtn.released.connect(self.stopMeasureThr)
        self.piUi.xAxeChanged.connect(self.tdSignal.updateXAxe)
        self.piUi.xAxeChanged.connect(self.fdSignal.updateXAxe)
        self.piUi.niceBtn.released.connect(self.showMakeNicerWidget)
        self.tiepieUi.scpConnected.connect(self.startOsciThr)
        self.tiepieUi.xAxeChanged.connect(self.osciSignal.updateXAxe)
        self.tiepieUi.yAxeChanged.connect(self.osciSignal.updateYAxe)
        self.tiepieUi.triggLevelChanged.connect(self.osciSignal.setHCursor)
        #self.piUi.centerBtn.released.connect(
        #    lambda x=None: self.piUi.setCenter(self.tdSignal.getVCursor()))
        self.tdSignal.plot.SIG_MARKER_CHANGED.connect(
            lambda x=None: self.piUi.newOffset(self.tdSignal.getVCursor()))

        
        self.tdWidget.calcFun.idxChanged.connect(self.tdSignal.funChanged)
        self.fdWidget.calcFun.idxChanged.connect(self.fdSignal.funChanged)

        self.updateOsciPlot.connect(self.osciSignal.updatePlot)
        self.updateTdPlot.connect(self.tdSignal.updatePlot)
        self.updateFdPlot.connect(lambda data:
            self.fdSignal.updatePlot(self.fdSignal.computeFFT(data)))
        '''
        ################
        # create threads
        #self.osciThr = GenericThread(self.getOsciData)
        '''
        self.osciThr = QThread()
        self.osciThr.start()
        self.osciWorker = GenericWorker(self.getOsciData)
        self.osciWorker.moveToThread(self.osciThr)
        
        #self.measureThr = GenericThread(self.getMeasureData)
        self.measureThr = QThread()
        self.measureThr.start()
        self.measureWorker = GenericWorker(self.getMeasureData)
        self.measureWorker.moveToThread(self.measureThr)
        '''

        ################
        # File menu
        file_menu = self.menuBar().addMenu(_("File"))
        self.quit_action = create_action(
            self,
            _("Quit"),
            shortcut="Ctrl+Q",
            icon=get_std_icon("DialogCloseButton"),
            tip=_("Quit application"),
            triggered=self.close)
        saveData = create_action(self,
                                 _("Save"),
                                 shortcut="Ctrl+S",
                                 icon=get_std_icon("DialogSaveButton"),
                                 tip=_("Save data"),
                                 triggered=self.saveDataHDF5)
        #add_actions(file_menu, (triggerTest_action, saveData, None, self.quit_action))

        ##############
        # Eventually add an internal console (requires 'spyderlib')
        self.sift_proxy = SiftProxy(self)
        if DockableConsole is None:
            self.console = None
        else:
            import time, scipy.signal as sps, scipy.ndimage as spi
            ns = {
                'ftir': self.sift_proxy,
                'np': np,
                'sps': sps,
                'spi': spi,
                'os': os,
                'sys': sys,
                'osp': osp,
                'time': time
            }
            msg = "Example: ftir.s[0] returns signal object #0\n"\
                  "Modules imported at startup: "\
                  "os, sys, os.path as osp, time, "\
                  "numpy as np, scipy.signal as sps, scipy.ndimage as spi"
            self.console = DockableConsole(self, namespace=ns, message=msg)
            self.add_dockwidget(self.console, _("Console"))
            '''
            try:
                self.console.interpreter.widget_proxy.sig_new_prompt.connect(
                                            lambda txt: self.refresh_lists())
            except AttributeError:
                print('sift: spyderlib is outdated', file=sys.stderr)
            '''

        # Show main window and raise the signal plot panel
        self.show()