def _create_map_window(self, item): window = MapWindow(wintitle=item.measurement.param.filename, icon="thoth.png", toolbar=True) compute_menu = window.menuBar().addMenu(_("&Compute")) compute_actions = [] compute_actions.append(create_action(self, _("&Fourier transform"), triggered=item.compute_fft, tip=_("Compute the Fourier transfom of the curve."))) compute_actions.append(create_action(self, _("&Inverse Fourier transfom"), triggered=item.compute_ifft, tip=_("Compute the inverse Fourier transfom of the curve."))) compute_actions.append(create_action(self, _("&Apply Wiener filter"), triggered=item.compute_wiener, tip=_("Smooth the map slicewise with a Wiener filter."))) compute_actions.append(create_action(self, _("&Apply Gauss filter"), triggered=item.compute_gaussian, tip=_("Smooth the map slicewise with a Gaussian filter."))) compute_actions.append(create_action(self, _("&Apply Savitzky-Golay"), triggered=item.compute_savitzky, tip=_("Compute a smoothig or a derivative spectrum wise according to Savitzky-Golay algorithm."))) add_actions(compute_menu, compute_actions) plot = window.get_plot() xunit = item.measurement.param.axis1.unit yunit = item.measurement.param.axis2.unit zunit = item.measurement.param.unit plot.set_titles(title=None, xlabel=None, ylabel=None, xunit=xunit, yunit=(yunit,zunit)) plot.set_axis_direction('left', False) plot.add_item(item) window.set_map(item) window.create_slice_dock() return window
def setup_actions(self): CrossSectionWidget.setup_actions(self) self.peritem_ac = create_action( self, _("Per image cross-section"), icon=get_icon("csperimage.png"), toggled=self.cs_plot.toggle_perimage_mode, tip=_( "Enable the per-image cross-section mode, " "which works directly on image rows/columns.\n" "That is the fastest method to compute " "cross-section curves but it ignores " "image transformations (e.g. rotation)" ), ) self.applylut_ac = create_action( self, _("Apply LUT\n(contrast settings)"), icon=get_icon("csapplylut.png"), toggled=self.cs_plot.toggle_apply_lut, tip=_( "Apply LUT (Look-Up Table) contrast settings.\n" "This is the easiest way to compare images " "which have slightly different level ranges.\n\n" "Note: LUT is coded over 1024 levels (0...1023)" ), ) self.peritem_ac.setChecked(True) self.applylut_ac.setChecked(False)
def create_menus(self): file_menu = self.menuBar().addMenu(_("&File")) open_file_action = create_action(self, _("&Open File"), shortcut="Ctrl+O", triggered=self.thoth.open, tip=_("Open a measurement file")) #save_plot_action = create_action(self,"&Save all the plots", #shortcut="Ctrl+S", triggered=self.save_plots, #tip="Save all the plots") quit_action = create_action(self, _("&Quit"), triggered=self.close, shortcut="Ctrl+Q", tip=_("Close the application")) add_actions(file_menu, (open_file_action, None, quit_action)) help_menu = self.menuBar().addMenu("&Help") about_action = create_action(self, _("&About"), shortcut='F1', triggered=self.about, tip=_('About Thoth')) add_actions(help_menu, (about_action, ))
def setup(self): file_menu = self.menuBar().addMenu(_("File")) open_action = create_action(self, _("Open..."), shortcut="Ctrl+O", icon=get_icon('fileopen.png'), tip=_("Open an acquisition directory"), triggered=self.open) #apply_action = create_action(self, _("Apply"), # shortcut="Ctrl+A", # icon=get_icon('fileopen.png'), # tip=_("Open an acquisition directory"), # triggered=self.apply) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) add_actions(file_menu, (open_action, None, quit_action)) 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, (open_action, )) self.toolbar = self.addToolBar("Image")
def setup_actions(self): self.export_ac = self.export_tool.action self.lockscales_ac = create_action( self, _("Lock scales"), icon=get_icon('axes.png'), toggled=self.cs_plot.toggle_lockscales, tip=_("Lock scales to main plot axes")) self.lockscales_ac.setChecked(self.cs_plot.lockscales) self.autoscale_ac = create_action( self, _("Auto-scale"), icon=get_icon('csautoscale.png'), toggled=self.cs_plot.toggle_autoscale) self.autoscale_ac.toggled.connect(self.lockscales_ac.setDisabled) self.autoscale_ac.setChecked(self.cs_plot.autoscale_mode) self.refresh_ac = create_action( self, _("Refresh"), icon=get_icon('refresh.png'), triggered=lambda: self.cs_plot.update_plot()) self.autorefresh_ac = create_action( self, _("Auto-refresh"), icon=get_icon('autorefresh.png'), toggled=self.cs_plot.toggle_autorefresh) self.autorefresh_ac.setChecked(self.cs_plot.autorefresh_mode)
def setup(self): """Setup window parameters""" self.setWindowIcon(get_icon("python.png")) self.setWindowTitle(APP_NAME) self.resize(QSize(600, 800)) # 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"), triggered=self.new_image, ) open_action = create_action( self, _("Open..."), shortcut="Ctrl+O", icon=get_icon("fileopen.png"), tip=_("Open an image"), triggered=self.open_image, ) quit_action = create_action( self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), 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("Image") self.mainwidget = CentralWidget(self, toolbar) self.setCentralWidget(self.mainwidget)
def setup(self, start_freq, bandwidth, numpts, max_hold): """Setup window parameters""" self.setWindowIcon(get_icon('python.png')) self.setWindowTitle(APP_NAME) #dt = QDesktopWidget() #print dt.numScreens(), dt.screenGeometry() #sz = dt.screenGeometry() #self.resize(QSize(sz.width()*9/10, sz.height()*9/10)) # Welcome message in statusbar: status = self.statusBar() status.showMessage(_("Welcome to the Signal Generator application!"), 5000) # File menu file_menu = self.menuBar().addMenu(_("File")) open_action = create_action(self, _("Save"), shortcut="Ctrl+S", icon=get_std_icon("FileIcon"), tip=_("Save a File"), triggered=self.saveFileDialog) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) add_actions(file_menu, (open_action, None, quit_action)) # Help menu - prolly should just say "you're on your own..."!! help_menu = self.menuBar().addMenu("Help") 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") # Calibration action? add_actions(main_toolbar, (open_action, )) # Set central widget: toolbar = self.addToolBar("Image") self.setCentralWidget(self.mainwidget) if max_hold: self.do_max_hold()
def _create_curve_window(self, item): window = ThothCurveWindow(wintitle=item.measurement.param.filename, icon="curve.png", toolbar=True) compute_menu = window.menuBar().addMenu(_("&Compute")) compute_actions = [] compute_actions.append(create_action(self, _("Scale"), triggered=item.compute_scale, tip=_("Scale the curve."))) compute_actions.append(create_action(self,_("Shift"), triggered=item.compute_shift, tip=_("Shift the curve"))) compute_actions.append(create_action(self, _("&Derivative"), triggered=item.compute_derivative, tip=_("Compute point wise derivative of the curve."))) compute_actions.append(create_action(self, _("&Spline derivative"), triggered=item.compute_spline_derivative, tip=_("""Compute the first derivative with spline interpolation."""))) compute_actions.append(create_action(self, _("&Fourier transform"), triggered=item.compute_fft, tip=_("Compute the Fourier transfom of the curve."))) compute_actions.append(create_action(self, _("&Inverse Fourier transfom"), triggered=item.compute_ifft, tip=_("Compute the inverse Fourier transfom of the curve."))) compute_actions.append(create_action(self, _("&Apply Wiener filter"), triggered=item.compute_wiener, tip=_("Smooth the curve with a Wiener filter."))) compute_actions.append(create_action(self, _("&Apply Gauss filter"), triggered=item.compute_gaussian, tip=_("Smooth the curve with a Gaussian filter."))) compute_actions.append(create_action(self, _("&Apply Savitzky-Golay"), triggered=item.compute_savitzky, tip=_("Compute a smoothig or a derivative of the curve according to Savitzky-Golay algorithm."))) compute_actions.append(create_action(self, _("Fit BCS"), triggered=item.fit_bcs)) add_actions(compute_menu, compute_actions) plot = window.get_plot() plot.set_antialiasing(True) t = item.measurement.param.type if 'ivcurve' == t: xlabel = _('Voltage') ylabel = _('Current') elif 'didvcurve'== t: xlabel = _('Energy') ylabel = _('Density of state') else: xlabel = _('Unknown') ylabel = _('Unknown') xunit = item.measurement.param.axis1.unit yunit = item.measurement.param.unit plot.set_titles(title=None, xlabel=xlabel, ylabel=ylabel, xunit=xunit, yunit=yunit) plot.add_item(item) return window
def setup(self): """Setup window parameters""" self.setWindowIcon(get_icon('python.png')) self.setWindowTitle(APP_NAME) self.resize(QSize(600, 800)) # Welcome message in statusbar: status = self.statusBar() status.showMessage(_("Welcome to guiqwt application example!"), 5000) self.setupMainWidget() # 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"), triggered=self.new_image) open_action = create_action(self, _("Open..."), shortcut="Ctrl+O", icon=get_icon('fileopen.png'), tip=_("Open an image"), triggered=self.open_image) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) add_actions(file_menu, (new_action, open_action, None, quit_action)) processing_menu = self.menuBar().addMenu(_("Processing")) autoscale_action = create_action(self, _("Autoscale"), shortcut="Ctrl+W", tip=_("Autoscale Graph"), triggered=self.plotWidget.autoScale) add_actions(processing_menu, (autoscale_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, )) self.curFIFOVal = 0 self.rdb = r.Redis('localhost') # self.setShortcuts() # self.setCentralWidget(self.plotWidget) self.setCentralWidget(self.main_dock)
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(get_icon("python.png")) self.setWindowTitle("Application example") # Instantiate dataset-related widgets: self.groupbox1 = DataSetShowGroupBox("Activable dataset", ExampleDataSet, comment="") self.groupbox2 = DataSetShowGroupBox("Standard dataset", AnotherDataSet, comment="") self.groupbox3 = DataSetEditGroupBox("Standard dataset", OtherDataSet, comment="") self.groupbox4 = DataSetEditGroupBox("Standard dataset", ExampleMultiGroupDataSet, comment="") self.groupbox3.SIG_APPLY_BUTTON_CLICKED.connect(self.update_window) self.update_groupboxes() splitter = QSplitter(self) splitter.addWidget(self.groupbox1) splitter.addWidget(self.groupbox2) splitter.addWidget(self.groupbox3) splitter.addWidget(self.groupbox4) self.setCentralWidget(splitter) self.setContentsMargins(10, 5, 10, 5) # File menu file_menu = self.menuBar().addMenu("File") quit_action = create_action( self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close, ) add_actions(file_menu, (quit_action, )) # Edit menu edit_menu = self.menuBar().addMenu("Edit") editparam1_action = create_action(self, "Edit dataset 1", triggered=self.edit_dataset1) editparam2_action = create_action(self, "Edit dataset 2", triggered=self.edit_dataset2) editparam4_action = create_action(self, "Edit dataset 4", triggered=self.edit_dataset4) add_actions(edit_menu, (editparam1_action, editparam2_action, editparam4_action))
def _constructEditMenu(self): """ """ edit_menu = self.menuBar().addMenu("Edit") editparam1_action = create_action(self, "Import dataset", shortcut ="Ctrl+A", tip ="Import data from matlab structure", triggered=self.add_newData) deleteNode_action = create_action(self, "Delete neuron", tip ="Delete neuron from database", triggered=self.delete_Neuron) add_actions(edit_menu, (editparam1_action, deleteNode_action))
def _create_map_window(self, item): window = MapWindow(wintitle=item.measurement.param.filename, icon="thoth.png", toolbar=True) compute_menu = window.menuBar().addMenu(_("&Compute")) compute_actions = [] compute_actions.append( create_action(self, _("&Fourier transform"), triggered=item.compute_fft, tip=_("Compute the Fourier transfom of the curve."))) compute_actions.append( create_action( self, _("&Inverse Fourier transfom"), triggered=item.compute_ifft, tip=_("Compute the inverse Fourier transfom of the curve."))) compute_actions.append( create_action( self, _("&Apply Wiener filter"), triggered=item.compute_wiener, tip=_("Smooth the map slicewise with a Wiener filter."))) compute_actions.append( create_action( self, _("&Apply Gauss filter"), triggered=item.compute_gaussian, tip=_("Smooth the map slicewise with a Gaussian filter."))) compute_actions.append( create_action( self, _("&Apply Savitzky-Golay"), triggered=item.compute_savitzky, tip= _("Compute a smoothig or a derivative spectrum wise according to Savitzky-Golay algorithm." ))) add_actions(compute_menu, compute_actions) plot = window.get_plot() xunit = item.measurement.param.axis1.unit yunit = item.measurement.param.axis2.unit zunit = item.measurement.param.unit plot.set_titles(title=None, xlabel=None, ylabel=None, xunit=xunit, yunit=(yunit, zunit)) plot.set_axis_direction('left', False) plot.add_item(item) window.set_map(item) window.create_slice_dock() return window
def setup_actions(self): fullrange_ac = create_action(self, _("Full range"), icon=get_icon("full_range.png"), triggered=self.histogram.set_full_range, tip=_("Scale the image's display range " "according to data range") ) autorange_ac = create_action(self, _("Eliminate outliers"), icon=get_icon("eliminate_outliers.png"), triggered=self.eliminate_outliers, tip=_("Eliminate levels histogram " "outliers and scale the image's " "display range accordingly") ) add_actions(self.toolbar, [fullrange_ac, autorange_ac])
def setup_actions(self): self.export_ac = self.export_tool.action self.autoscale_ac = create_action(self, _("Auto-scale"), icon=get_icon('csautoscale.png'), toggled=self.cs_plot.toggle_autoscale) self.autoscale_ac.setChecked(self.cs_plot.autoscale_mode) self.refresh_ac = create_action(self, _("Refresh"), icon=get_icon('refresh.png'), triggered=lambda: self.cs_plot.update_plot()) self.autorefresh_ac = create_action(self, _("Auto-refresh"), icon=get_icon('autorefresh.png'), toggled=self.cs_plot.toggle_autorefresh) self.autorefresh_ac.setChecked(self.cs_plot.autorefresh_mode)
def __init__(self, parent, toolbar): QSplitter.__init__(self, parent) self.data_ref = None self.setContentsMargins(10, 10, 10, 10) self.setOrientation(Qt.Vertical) dsinfo = DSInfo(self) self.addWidget(dsinfo) dsproperties = DSProperties(self) self.addWidget(dsproperties) imagelistwithproperties = ImageListWithProperties(self) self.addWidget(imagelistwithproperties) self.imagelist = imagelistwithproperties.imagelist self.imagelist.currentRowChanged.connect(self.current_item_changed) self.imagelist.itemSelectionChanged.connect(self.selection_changed) self.ds = dsproperties.datas self.info = dsinfo.datas self.ds.SIG_APPLY_BUTTON_CLICKED.connect(self.properties_changed) self.properties = imagelistwithproperties.properties self.properties.SIG_APPLY_BUTTON_CLICKED.connect( self.properties_changed) self.imagewidget = CurveWidget(self) self.item = None self.flagitem = None self.flagname = "" self.imagewidget.add_toolbar(toolbar, "default") self.imagewidget.register_standard_tools() flag = create_action(self, _("Get preflag from file..."), icon=get_icon('eraser.png'), tip=_("Get a preflag from file"), triggered=self.preflag) fit = create_action(self, _("Open fit window..."), icon=get_icon('polyline.png'), tip=_("Open fit window"), triggered=self.fit_win) #apply = create_action(self, _("Apply fit file..."), # icon=get_icon('export.png'), tip=_("Apply fit file"), # triggered=self.apply_fit) add_actions(toolbar, [None, flag, fit]) self.addWidget(self.imagewidget) self.images = [] self.setStretchFactor(0, 0) self.setStretchFactor(1, 1) self.setHandleWidth(10) self.setSizes([50, 100, 200, 600])
def create_action( self, title, triggered=None, toggled=None, shortcut=None, icon=None, tip=None, checkable=None, context=Qt.WindowShortcut, enabled=None, ): """ Create a new QAction """ return create_action( self.main, title, triggered=triggered, toggled=toggled, shortcut=shortcut, icon=icon, tip=tip, checkable=checkable, context=context, enabled=enabled, )
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 )
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(get_icon('python.png')) self.setWindowTitle("Application example") # Instantiate dataset-related widgets: self.groupbox1 = DataSetShowGroupBox("Activable dataset", ExampleDataSet, comment='') self.groupbox2 = DataSetShowGroupBox("Standard dataset", AnotherDataSet, comment='') self.groupbox3 = DataSetEditGroupBox("Standard dataset", OtherDataSet, comment='') self.groupbox4 = DataSetEditGroupBox("Standard dataset", ExampleMultiGroupDataSet, comment='') self.connect(self.groupbox3, SIGNAL("apply_button_clicked()"), self.update_window) self.update_groupboxes() splitter = QSplitter(self) splitter.addWidget(self.groupbox1) splitter.addWidget(self.groupbox2) splitter.addWidget(self.groupbox3) splitter.addWidget(self.groupbox4) self.setCentralWidget(splitter) self.setContentsMargins(10, 5, 10, 5) # File menu file_menu = self.menuBar().addMenu("File") quit_action = create_action(self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close) add_actions(file_menu, (quit_action, )) # Edit menu edit_menu = self.menuBar().addMenu("Edit") editparam1_action = create_action(self, "Edit dataset 1", triggered=self.edit_dataset1) editparam2_action = create_action(self, "Edit dataset 2", triggered=self.edit_dataset2) editparam4_action = create_action(self, "Edit dataset 4", triggered=self.edit_dataset4) add_actions(edit_menu, (editparam1_action, editparam2_action, editparam4_action))
def setup(self): """Setup window parameters""" self.setWindowIcon(get_icon('python.png')) self.setWindowTitle(APP_NAME) self.resize(QSize(600, 800)) # 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"), triggered=self.new_image) open_action = create_action(self, _("Open..."), shortcut="Ctrl+O", icon=get_icon('fileopen.png'), tip=_("Open an image"), triggered=self.open_image) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), 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("Image") self.mainwidget = CentralWidget(self, toolbar) self.setCentralWidget(self.mainwidget)
def initUI(self): self.setWindowTitle(APPNAME) file_menu = self.menuBar().addMenu('File') new_proj_action = create_action(self, 'New Project', self.new_project) open_proj_action = create_action(self, 'Open Project', self.open_project) import_orosMat_action = create_action(self, 'Import Oros Mat', self.import_orosMat) quit_action = create_action(self, 'Quit', self.quit) add_actions(file_menu, (new_proj_action, open_proj_action, None, import_orosMat_action, None, quit_action)) progress_bar = QProgressBar(self) progress_bar.setFixedWidth(200) progress_bar.setTextVisible(False) progress_bar.setVisible(False) self.progress_bar = progress_bar self.statusBar().addPermanentWidget(progress_bar) self.toolBar = self.addToolBar('Curves') main_widget = QWidget(self) main_layout = QGridLayout(main_widget) side_layout = QGridLayout() plot_widget = PlotWidget(main_widget) self.plot_widget = plot_widget list_widget = ListWidget() prop_widget = PropertyWidget() list_widget.registerPropertyWindow(prop_widget) side_layout.addWidget(list_widget, 0, 0) side_layout.addWidget(prop_widget, 1, 0) side_layout.setRowStretch(0, 2) side_layout.setRowStretch(1, 1) self.list_widget = list_widget main_layout.addLayout(side_layout, 0, 0) main_layout.addWidget(plot_widget, 0, 1) main_layout.setColumnStretch(0, 1) main_layout.setColumnStretch(1, 3) self.setCentralWidget(main_widget)
def _create_image_window(self, item): window = ImageWindow(wintitle=item.measurement.param.filename, icon="image.png", toolbar=True) compute_menu = window.menuBar().addMenu(_("&Compute")) compute_actions = [] compute_actions.append( create_action(self, _("&Line correction"), triggered=item.compute_line_detrend, tip=_("Apply a linewise slope correction."))) compute_actions.append( create_action(self, _("&Fourier transform"), triggered=item.compute_fft, tip=_("Compute the Fourier transfom of the curve."))) compute_actions.append( create_action( self, _("&Inverse Fourier transfom"), triggered=item.compute_ifft, tip=_("Compute the inverse Fourier transfom of the curve."))) compute_actions.append( create_action(self, _("&Apply Wiener filter"), triggered=item.compute_wiener, tip=_("Smooth the curve with a Wiener filter."))) compute_actions.append( create_action(self, _("&Apply Gauss filter"), triggered=item.compute_gaussian, tip=_("Smooth the curve with a Gaussian filter."))) compute_actions.append( create_action( self, _("&Apply Savitzky-Golay"), triggered=item.compute_savitzky, tip= _("Compute a smoothig or a derivative of the curve according to Savitzky-Golay algorithm." ))) compute_actions.append( create_action(self, _("&Zeroes"), triggered=item.compute_zeroes, tip=_("Set the minimum of the data to zero."))) add_actions(compute_menu, compute_actions) plot = window.get_plot() xunit = item.measurement.param.axis1.unit yunit = item.measurement.param.axis2.unit zunit = item.measurement.param.unit plot.set_titles(title=None, xlabel=None, ylabel=None, xunit=xunit, yunit=(yunit, zunit)) plot.set_axis_direction('left', False) plot.add_item(item) return window
def create_action(self, title, triggered=None, toggled=None, shortcut=None, icon=None, tip=None, checkable=None, context=Qt.WindowShortcut, enabled=None): """ Create a new QAction """ return create_action(self.main, title, triggered=triggered, toggled=toggled, shortcut=shortcut, icon=icon, tip=tip, checkable=checkable, context=context, enabled=enabled)
def setup_actions(self): self.export_ac = self.export_tool.action self.autoscale_ac = create_action( self, _("Auto-scale"), icon=get_icon('csautoscale.png'), toggled=self.cs_plot.toggle_autoscale) self.autoscale_ac.setChecked(self.cs_plot.autoscale_mode) self.refresh_ac = create_action( self, _("Refresh"), icon=get_icon('refresh.png'), triggered=lambda: self.cs_plot.update_plot()) self.autorefresh_ac = create_action( self, _("Auto-refresh"), icon=get_icon('autorefresh.png'), toggled=self.cs_plot.toggle_autorefresh) self.autorefresh_ac.setChecked(self.cs_plot.autorefresh_mode)
def setup(self): 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, )) self.toolbar = self.addToolBar("Image") self.setup_central_widget(FitWidget, self.toolbar) self.mainwidget.open_setup(self.data, self.begin, self.end)
def create_menus(self): file_menu = self.menuBar().addMenu(_("&File")) open_file_action = create_action(self, _("&Open File"), shortcut="Ctrl+O", triggered=self.thoth.open, tip=_("Open a measurement file")) #save_plot_action = create_action(self,"&Save all the plots", #shortcut="Ctrl+S", triggered=self.save_plots, #tip="Save all the plots") quit_action = create_action(self, _("&Quit"), triggered=self.close, shortcut="Ctrl+Q", tip=_("Close the application")) add_actions(file_menu, (open_file_action, None, quit_action)) help_menu = self.menuBar().addMenu("&Help") about_action = create_action(self, _("&About"), shortcut='F1', triggered=self.about, tip=_('About Thoth')) add_actions(help_menu, (about_action,))
def setup_actions(self): self.export_ac = self.export_tool.action self.lockscales_ac = create_action( self, _("Lock scales"), icon=get_icon("axes.png"), toggled=self.cs_plot.toggle_lockscales, tip=_("Lock scales to main plot axes"), ) self.lockscales_ac.setChecked(self.cs_plot.lockscales) self.autoscale_ac = create_action( self, _("Auto-scale"), icon=get_icon("csautoscale.png"), toggled=self.cs_plot.toggle_autoscale ) self.autoscale_ac.toggled.connect(self.lockscales_ac.setDisabled) self.autoscale_ac.setChecked(self.cs_plot.autoscale_mode) self.refresh_ac = create_action( self, _("Refresh"), icon=get_icon("refresh.png"), triggered=lambda: self.cs_plot.update_plot() ) self.autorefresh_ac = create_action( self, _("Auto-refresh"), icon=get_icon("autorefresh.png"), toggled=self.cs_plot.toggle_autorefresh ) self.autorefresh_ac.setChecked(self.cs_plot.autorefresh_mode)
def create_action(self, title, triggered=None, toggled=None, shortcut=None, icon=None, tip=None): return create_action(self.main, title, triggered=triggered, toggled=toggled, shortcut=shortcut, icon=icon, tip=tip)
def setup(self): '''Setup window parameters ''' self.setWindowIcon(get_icon('python.png')) self.setWindowTitle('LM cone ratios') self.resize(QSize(400, 600)) # File menu file_menu = self.menuBar().addMenu(("File")) quit_action = create_action(self, ("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=("Quit application"), triggered=self.close) add_actions(file_menu, (quit_action,)) change_dir_action = create_action(self, ("Change save dir"), triggered=self.change_save_dir) add_actions(file_menu, (change_dir_action,)) # Set central widget: self.mainwidget = CentralWidget(self) self.setCentralWidget(self.mainwidget)
def _constructFileMenu(self): """ """ file_menu = self.menuBar().addMenu("File") quit_action = create_action(self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close) openDB_action = create_action(self, "Open database", shortcut ="Ctrl+D", tip ="Open an existing database into scroll area", triggered=self.open_Database) createDB_action = create_action(self,"New database", shortcut ="Ctrl+N", tip ="Create a new database", triggered=self.create_Database) closeDB_action = create_action(self,"Close database", shortcut ="Ctrl+W", tip = "Close an open database", triggered=self.close_Database) add_actions(file_menu, (quit_action, openDB_action, createDB_action, closeDB_action))
def contextMenu(self, position): items = self.selectedItems() if len(items) > 0: boundObject = items[0].data(0, 33) if boundObject is None: return moduleClassName = boundObject.ModuleName moduleClass = gl.moduleManager.getModule(moduleClassName) if moduleClass is None: return menu = QtGui.QMenu() actions = (create_action( menu, action['title'], functools.partial(getattr(moduleClass, action['action']), boundObject)) for action in moduleClass.ContextMenu) add_actions(menu, actions) menu.exec_(self.viewport().mapToGlobal(position))
def __init__(self): QMainWindow.__init__(self) self.setWindowTitle("Application example") file_menu = self.menuBar().addMenu("File") quit_action = create_action(self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close) add_actions(file_menu, (quit_action,)) edit_menu = self.menuBar().addMenu("Edit") self.groupbox = DataSetEditGroupBox("Standard dataset", OtherDataSet, comment='') self.groupbox.SIG_APPLY_BUTTON_CLICKED.connect(self.update_window) self.display = DataSetEditGroupBox("Read-only dataset", OtherDataSet, comment='') splitter = QSplitter(self) splitter.addWidget(self.groupbox) self.setCentralWidget(splitter) self.setContentsMargins(10, 5, 10, 5)
def __init__(self, parent, toolbar): QSplitter.__init__(self, parent) self.data_ref = None self.setContentsMargins(10, 10, 10, 10) self.setOrientation(Qt.Vertical) fitproperties = FitProperties(self) self.addWidget(fitproperties) self.fit_t = fitproperties.datas self.fit_t.SIG_APPLY_BUTTON_CLICKED.connect(self.properties_changed) self.imagewidget = CurveWidget2(self) #self.reswidget = CurveWidget(self) print self.imagewidget.synchronized_plots self.item = None self.fitem = None self.ritem = None self.flagitem = None self.imagewidget.add_toolbar(toolbar, "default") self.imagewidget.register_standard_tools() self.imagewidget.add_tool(RectZoomToolsig) self.imagewidget.plot.SIG_PLOT_AXIS_CHANGED.connect(self.sync_zoom) fitfile = create_action(self, _("Update fit file..."), icon=get_icon('fileopen.png'), tip=_("Update fit file"), triggered=self.fitfile) add_actions(toolbar, [fitfile]) self.addWidget(self.imagewidget) #self.addWidget(self.reswidget) self.fitc = None self.setStretchFactor(0, 0) self.setStretchFactor(1, 1) self.setHandleWidth(10) self.setSizes([100, 600, 100])
def _create_image_window(self, item): window = ImageWindow(wintitle=item.measurement.param.filename, icon="image.png", toolbar=True) compute_menu = window.menuBar().addMenu(_("&Compute")) compute_actions = [] compute_actions.append(create_action(self, _("&Line correction"), triggered=item.compute_line_detrend, tip=_("Apply a linewise slope correction."))) compute_actions.append(create_action(self, _("&Fourier transform"), triggered=item.compute_fft, tip=_("Compute the Fourier transfom of the curve."))) compute_actions.append(create_action(self, _("&Inverse Fourier transfom"), triggered=item.compute_ifft, tip=_("Compute the inverse Fourier transfom of the curve."))) compute_actions.append(create_action(self, _("&Apply Wiener filter"), triggered=item.compute_wiener, tip=_("Smooth the curve with a Wiener filter."))) compute_actions.append(create_action(self, _("&Apply Gauss filter"), triggered=item.compute_gaussian, tip=_("Smooth the curve with a Gaussian filter."))) compute_actions.append(create_action(self, _("&Apply Savitzky-Golay"), triggered=item.compute_savitzky, tip=_("Compute a smoothig or a derivative of the curve according to Savitzky-Golay algorithm."))) compute_actions.append(create_action(self, _("&Zeroes"), triggered=item.compute_zeroes, tip=_("Set the minimum of the data to zero."))) add_actions(compute_menu, compute_actions) plot = window.get_plot() xunit = item.measurement.param.axis1.unit yunit = item.measurement.param.axis2.unit zunit = item.measurement.param.unit plot.set_titles(title=None, xlabel=None, ylabel=None, xunit=xunit, yunit=(yunit,zunit)) plot.set_axis_direction('left', False) plot.add_item(item) return window
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()
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(get_icon('python.png')) self.setWindowTitle("PV Loop Simulation") pal = QtGui.QPalette() role = QtGui.QPalette.Background pal.setColor(role, QtGui.QColor(255, 255, 255)) self.setPalette(pal) self.textEdit = QtGui.QLabel('None') self.loadButton = QtGui.QPushButton("Load") self.loadButton.clicked.connect(self.on_click) self.buttonSave = QtGui.QPushButton('Clear Plot', self) self.buttonSave.clicked.connect(self.clearPlots) #self.connect(self.smoothGB, SIGNAL("apply_button_clicked()"), #self.update_window) self.table1 = QtGui.QTableWidget() self.table2 = QtGui.QTableWidget() self.fileName = '' self.lastClicked = [] self.number_plots = 0 self.pw1 = PG.PlotWidget(name='VTC') self.pw1.setLabel('left', 'Volume', units='mL') self.pw1.setLabel('bottom', 'Time', units='s') self.pw1.setBackground((255, 255, 255)) self.pw2 = PG.PlotWidget(name='VTC') self.pw2.setBackground((255, 255, 255)) self.pw2.setLabel('left', 'Pressure', units='mmHg') self.pw2.setLabel('bottom', 'Time', units='s') self.pw3 = PG.PlotWidget(name='PV') self.pw3.setBackground((255, 255, 255)) self.pw3.setLabel('left', 'Pressure', units='mmHg') self.pw3.setLabel('bottom', 'Volume', units='ml') #horizontalLayout = QtGui.QHBoxLayout(self) splitter = QSplitter(QtCore.Qt.Vertical) splitter2 = QSplitter(QtCore.Qt.Vertical) splitterH = QSplitter(QtCore.Qt.Horizontal) splitter.addWidget(self.loadButton) splitter.addWidget(self.pw1) splitter.addWidget(self.pw2) splitter.addWidget(self.pw3) splitter2.addWidget(self.table1) splitter2.addWidget(self.table2) splitter2.addWidget(self.buttonSave) splitterH.addWidget(splitter) splitterH.addWidget(splitter2) self.table1.setRowCount(5) self.table1.setColumnCount(2) self.table2.setRowCount(8) self.table2.setColumnCount(2) self.table1.setItem(0, 0, QtGui.QTableWidgetItem("Number of Loops [-]")) self.table1.setItem(0, 1, QtGui.QTableWidgetItem("4")) self.table1.setItem(1, 0, QtGui.QTableWidgetItem("HR [bpm]")) self.table1.setItem(1, 1, QtGui.QTableWidgetItem("70")) self.table1.setItem(2, 0, QtGui.QTableWidgetItem("V (LV) start [ml]")) self.table1.setItem(2, 1, QtGui.QTableWidgetItem("135")) self.table1.setItem(3, 0, QtGui.QTableWidgetItem("Pa start [mmHg]")) self.table1.setItem(3, 1, QtGui.QTableWidgetItem("96")) self.table1.setItem(4, 0, QtGui.QTableWidgetItem("Pv start [mmHg]")) self.table1.setItem(4, 1, QtGui.QTableWidgetItem("6")) self.table2.setItem(0, 0, QtGui.QTableWidgetItem("Rp")) self.table2.setItem(0, 1, QtGui.QTableWidgetItem("1.3")) self.table2.setItem(1, 0, QtGui.QTableWidgetItem("Ra")) self.table2.setItem(1, 1, QtGui.QTableWidgetItem("0.1")) self.table2.setItem(2, 0, QtGui.QTableWidgetItem("Rin")) self.table2.setItem(2, 1, QtGui.QTableWidgetItem("0.08782")) self.table2.setItem(3, 0, QtGui.QTableWidgetItem("Ca")) self.table2.setItem(3, 1, QtGui.QTableWidgetItem("1.601")) self.table2.setItem(4, 0, QtGui.QTableWidgetItem("Cv")) self.table2.setItem(4, 1, QtGui.QTableWidgetItem("1.894")) self.table2.setItem(5, 0, QtGui.QTableWidgetItem("Vd")) self.table2.setItem(5, 1, QtGui.QTableWidgetItem("1.123")) self.table2.setItem(6, 0, QtGui.QTableWidgetItem("Emax")) self.table2.setItem(6, 1, QtGui.QTableWidgetItem("1.5")) self.table2.setItem(7, 0, QtGui.QTableWidgetItem("Emin")) self.table2.setItem(7, 1, QtGui.QTableWidgetItem("0.037")) self.setCentralWidget(splitterH) self.setContentsMargins(10, 5, 10, 5) self.setGeometry(100, 100, 1000, 800) # File menu file_menu = self.menuBar().addMenu("File") quit_action = create_action(self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close) add_actions(file_menu, (quit_action, ))
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()
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(get_icon('python.png')) self.setWindowTitle("Electric motor simulator") # Dataset for editing motor parameters self.groupbox1 = DataSetShowGroupBox("Motor parameters", ExampleDataSet, comment='') self.groupbox2 = DataSetShowGroupBox("Controller parameters", AnotherDataSet, comment='') self.groupbox3 = DataSetEditGroupBox("Standard dataset", OtherDataSet, comment='') self.groupbox4 = DataSetEditGroupBox("Standard dataset", ExampleMultiGroupDataSet, comment='') #self.groupbox3.SIG_APPLY_BUTTON_CLICKED.connect(self.update_window) self.update_groupboxes() splitter = QSplitter(self) splitter.addWidget(self.groupbox1) splitter.addWidget(self.groupbox2) #splitter.addWidget(self.groupbox3) #splitter.addWidget(self.groupbox4) self.setCentralWidget(splitter) self.setContentsMargins(10, 5, 10, 5) # File menu file_menu = self.menuBar().addMenu("File") quit_action = create_action(self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close) add_actions(file_menu, (quit_action, )) # Edit menu edit_menu = self.menuBar().addMenu("Edit") editparam1_action = create_action(self, "Edit dataset 1", triggered=self.edit_dataset1) editparam2_action = create_action(self, "Edit dataset 2", triggered=self.edit_dataset2) editparam4_action = create_action(self, "Edit dataset 4", triggered=self.edit_dataset4) add_actions(edit_menu, (editparam1_action, editparam2_action, editparam4_action)) # Toolbar tb = self.addToolBar("Tools") reset = QAction("Reset", self) tb.addAction(reset) pause = QAction("Pause", self) tb.addAction(pause) step = QAction("Step", self) tb.addAction(step) go = QAction("Go", self) tb.addAction(go)
def setup(self, start_freq, bandwidth, numpts, max_hold): """Setup window parameters""" self.setWindowIcon(get_icon('python.png')) self.setWindowTitle(APP_NAME + ' ' + VERS + ' Running on ' + self.dev) dt = QDesktopWidget() print dt.numScreens(), dt.screenGeometry() sz = dt.screenGeometry() self.resize(QSize(sz.width() * 9 / 10, sz.height() * 9 / 10)) # Welcome message in statusbar: status = self.statusBar() status.showMessage(_("Welcome to the NetworkAnalyser application!"), 5000) # File menu file_menu = self.menuBar().addMenu(_("File")) open_action = create_action(self, _("Save"), shortcut="Ctrl+S", icon=get_std_icon("DialogSaveButton"), tip=_("Save a Cal File"), triggered=self.saveFileDialog) load_action = create_action(self, _("Load"), shortcut="Ctrl+L", icon=get_std_icon("FileIcon"), tip=_("Load a cal File"), triggered=self.loadFileDialog) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close) add_actions(file_menu, (open_action, load_action, None, quit_action)) # Help menu - prolly should just say "you're on your own..."!! help_menu = self.menuBar().addMenu("Help") 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, )) rescan_action = create_action( self, _("Rescan"), shortcut="Ctrl+R", icon=get_std_icon("BrowserReload"), tip=_("Rescan the current frequency selection"), checkable=False, triggered=self.do_scan) max_hold_action = create_action( self, _("Max Hold"), shortcut="Ctrl+M", icon=get_std_icon("ArrowUp"), tip=_("Display the maximum value encountered"), checkable=True, triggered=self.do_max_hold) log_lin_action = create_action(self, _("Log/Lin"), shortcut="Ctrl+L", icon=get_std_icon("ArrowRight"), tip=_("Use linear power receive mode"), checkable=True, triggered=self.do_log_lin) new_plot_action = create_action(self, _("New Plot"), shortcut="Ctrl+N", icon=get_std_icon("ArrowLeft"), tip=_("Creates a new labeled plot"), checkable=False, triggered=self.do_new_plot) if max_hold is None: max_hold = self.settings.value('gui/max_hold', False) print 'Got max_hold', max_hold if type(max_hold) != bool: if max_hold in ['y', 'Y', 'T', 'True', 'true', '1']: max_hold = True else: max_hold = False max_hold_action.setChecked(max_hold) # Calibration action? add_actions(main_toolbar, (open_action, load_action, rescan_action, max_hold_action, log_lin_action, new_plot_action)) # Set central widget: toolbar = self.addToolBar("Image") self.mainwidget = CentralWidget(self, self.settings, toolbar, start_freq, bandwidth, numpts, self.dev) self.setCentralWidget(self.mainwidget) if max_hold: self.do_max_hold()
def _create_curve_window(self, item): window = ThothCurveWindow(wintitle=item.measurement.param.filename, icon="curve.png", toolbar=True) compute_menu = window.menuBar().addMenu(_("&Compute")) compute_actions = [] compute_actions.append( create_action(self, _("Scale"), triggered=item.compute_scale, tip=_("Scale the curve."))) compute_actions.append( create_action(self, _("Shift"), triggered=item.compute_shift, tip=_("Shift the curve"))) compute_actions.append( create_action( self, _("&Derivative"), triggered=item.compute_derivative, tip=_("Compute point wise derivative of the curve."))) compute_actions.append( create_action(self, _("&Spline derivative"), triggered=item.compute_spline_derivative, tip=_("""Compute the first derivative with spline interpolation."""))) compute_actions.append( create_action(self, _("&Fourier transform"), triggered=item.compute_fft, tip=_("Compute the Fourier transfom of the curve."))) compute_actions.append( create_action( self, _("&Inverse Fourier transfom"), triggered=item.compute_ifft, tip=_("Compute the inverse Fourier transfom of the curve."))) compute_actions.append( create_action(self, _("&Apply Wiener filter"), triggered=item.compute_wiener, tip=_("Smooth the curve with a Wiener filter."))) compute_actions.append( create_action(self, _("&Apply Gauss filter"), triggered=item.compute_gaussian, tip=_("Smooth the curve with a Gaussian filter."))) compute_actions.append( create_action( self, _("&Apply Savitzky-Golay"), triggered=item.compute_savitzky, tip= _("Compute a smoothig or a derivative of the curve according to Savitzky-Golay algorithm." ))) compute_actions.append( create_action(self, _("Fit BCS"), triggered=item.fit_bcs)) add_actions(compute_menu, compute_actions) plot = window.get_plot() plot.set_antialiasing(True) t = item.measurement.param.type if 'ivcurve' == t: xlabel = _('Voltage') ylabel = _('Current') elif 'didvcurve' == t: xlabel = _('Energy') ylabel = _('Density of state') else: xlabel = _('Unknown') ylabel = _('Unknown') xunit = item.measurement.param.axis1.unit yunit = item.measurement.param.unit plot.set_titles(title=None, xlabel=xlabel, ylabel=ylabel, xunit=xunit, yunit=yunit) plot.add_item(item) return window
def set_menu(self): """Build the menu""" file_menu = self.menuBar().addMenu(_("File")) open_action = create_action(self, _("Open file..."), shortcut="Ctrl+O", icon=get_icon('fileopen.png'), tip=_("Open a data file"), triggered=self.open_file) close_action = create_action(self, _("Close..."), shortcut="Ctrl+C", icon=get_icon('fileclose.png'), tip=_("Close a data file"), triggered=self.close_file) quit_action = create_action(self, _("Quit"), shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip=_("Quit application"), triggered=self.close_dw) add_actions(file_menu, (open_action, None, close_action, None, quit_action)) #Tools menu Tool_menu = self.menuBar().addMenu(_("Tools")) # RFI1_action = create_action(self, _("RFI flag algorithm 1"), # shortcut="Ctrl+1", # icon=get_icon(''), # tip=_("Detect RFI - alg 1"), # triggered=self.not_implemented) Ipython_action = create_action(self, _("Ipython console"), shortcut="Ctrl+I", icon=get_icon('python.png'), tip=_("Launch Ipython console"), triggered=self.embed_ipython) bpc_action = create_action( self, _("Band pass correction tool"), shortcut="Ctrl+B", icon=get_icon('sticks.png'), tip=("Launch the tool for the band pass correction"), triggered=self.bpcexec) bpc_open_file = create_action( self, _("Open a correction file"), shortcut="Ctrl+N", icon=get_icon('fileopen.png'), tip=("Open a file generated by the bandpass correction tool"), triggered=self.open_corr_file) bpc_toggle = create_action(self, _("Apply/Unapply correction"), shortcut="Ctrl+M", icon=get_icon('fileimport.png'), tip=("Toggle use of correction on data"), triggered=self.toggle_corr) freq_off_action = create_action(self, _("Set freq scale offset"), shortcut="Ctrl+0", icon=get_icon('vcursor.png'), tip=_("Set freq scale offset"), triggered=self.freq_off) mir_x_action = create_action(self, _("Mirror x axis"), shortcut="Ctrl+X", icon=get_icon('axes.png'), tip=_("Mirror x axis"), triggered=self.mir_x) #rplot_time_action = create_action(self, _("Recurrence plot (time)"), # icon=get_icon(''), # tip=_("Recurrence plot widget"), # triggered=self.rplot_widget_time) #rplot_freqs_action = create_action(self, _("Recurrence plot (frequencies)"), # icon=get_icon(''), # tip=_("Recurrence plot widget"), # triggered=self.rplot_widget_freqs) add_actions( Tool_menu, (None, Ipython_action, None, bpc_action, bpc_open_file, bpc_toggle) ) #, None, freq_off_action, mir_x_action))#, None, rplot_time_action, rplot_freqs_action)) #RFI flag menu flag_menu = self.menuBar().addMenu(_("Flagging")) self.flag_action = create_action(self, _("Flag..."), shortcut="Ctrl+F", icon=get_icon(self.icon_path + 'flag_ok.png'), tip=_("Flag..."), triggered=self.checked_items_to_flag) self.deflag_isect_action = create_action( self, _("Deflag intersected"), shortcut="Ctrl+G", icon=get_icon(self.icon_path + 'flag_sel_del.png'), tip=_("Remove flags intersected by element"), triggered=self.deflag_intersected) deflag_action = create_action( self, _("Deflag..."), shortcut="Ctrl+Shift+F", # icon=get_icon('fileopen.png'), tip=_("Deflag..."), triggered=self.deflag_selected_flag_image_items) merge_flag_action = create_action( self, _("Merge selected"), # shortcut="Ctrl+F", # icon=get_icon('fileopen.png'), tip=_("Flag..."), triggered=self.merge_selected_flag_image_items) del_flag_action = create_action( self, _("Delete selected"), # shortcut="Ctrl+F", icon=get_icon(self.icon_path + 'flag_del.png'), tip=_("Delete selected flagging matrices"), triggered=self.del_selected_flag_image_item) flag_widget_action = create_action(self, _("Manual Flag Widget"), icon=get_icon(self.icon_path + 'flag.png'), tip=_("Open a flagging widget"), triggered=self.flag_widget) propag_flag_action = create_action( self, _("Propagate flag table to files"), icon=get_icon(self.icon_path + 'flag_copy.png'), tip=("Propagate the file table to other files"), triggered=self.propag_flag_table) propag_feeds_action = create_action( self, _("Propagate flag feed -> feed"), icon=get_icon(self.icon_path + 'flag_copy.png'), tip=("Propagate a flag feed to feed"), triggered=self.propag_feeds) auto_flag_action = create_action(self, _("Auto RFI detection"), tip=_("Run auto RFI detection"), triggered=self.rfi_dect_action) add_actions( flag_menu, ( self.flag_action, self.deflag_isect_action, # deflag_action, merge_flag_action, del_flag_action, flag_widget_action, None, propag_flag_action, propag_feeds_action, None, auto_flag_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, (open_action, ))
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(get_icon('python.png')) self.setWindowTitle("Stroke Work Estimation") pal = QtGui.QPalette() role = QtGui.QPalette.Background pal.setColor(role, QtGui.QColor(255, 255, 255)) self.setPalette(pal) self.textEdit = QtGui.QLabel('None') self.loadButton = QtGui.QPushButton("Compute") self.loadButton.clicked.connect(self.on_click) self.buttonSave = QtGui.QPushButton('Clear Plot', self) self.buttonSave.clicked.connect(self.clearPlots) self.dropDownMenu = QtGui.QComboBox() self.dropDownMenu.addItems( ["Vao", "Vvc", "Vpa", "Vpu", "Vlv", "Vrv", "all"]) self.table1 = QtGui.QTableWidget() self.table2 = QtGui.QTableWidget() self.fileName = '' self.lastClicked = [] self.number_plots = 0 self.pw1 = PG.PlotWidget(name='VTC') self.pw1.setLabel('left', 'Pressure', units='mmHg') self.pw1.setLabel('bottom', 'Volume', units='mL') self.pw1.setBackground((255, 255, 255)) self.pw2 = PG.PlotWidget(name='VTC') self.pw2.setBackground((255, 255, 255)) self.pw2.setLabel('left', 'Pressure', units='mmHg') self.pw2.setLabel('bottom', 'Time', units='s') self.pw3 = PG.PlotWidget(name='PV') self.pw3.setBackground((255, 255, 255)) self.pw3.setLabel('left', 'Pressure', units='mmHg') self.pw3.setLabel('bottom', 'Volume', units='ml') #horizontalLayout = QtGui.QHBoxLayout(self) splitter = QSplitter(QtCore.Qt.Vertical) splitter2 = QSplitter(QtCore.Qt.Vertical) splitterH = QSplitter(QtCore.Qt.Horizontal) #splitter.addWidget(self.dropDownMenu) splitter.addWidget(self.loadButton) splitter.addWidget(self.pw1) splitter.addWidget(self.pw2) # splitter.addWidget(self.pw3) splitter2.addWidget(self.table1) splitter2.addWidget(self.table2) splitter2.addWidget(self.buttonSave) splitterH.addWidget(splitter) splitterH.addWidget(splitter2) self.table1.setRowCount(9) self.table1.setColumnCount(2) self.table2.setRowCount(11) self.table2.setColumnCount(2) self.table1.setItem(0, 0, QtGui.QTableWidgetItem("Eao")) self.table1.setItem(0, 1, QtGui.QTableWidgetItem("1.0")) self.table1.setItem(1, 0, QtGui.QTableWidgetItem("Evc")) self.table1.setItem(1, 1, QtGui.QTableWidgetItem("1.0")) self.table1.setItem(2, 0, QtGui.QTableWidgetItem("Rmt")) self.table1.setItem(2, 1, QtGui.QTableWidgetItem("0.1")) self.table1.setItem(3, 0, QtGui.QTableWidgetItem("Rao")) self.table1.setItem(3, 1, QtGui.QTableWidgetItem("0.1")) self.table1.setItem(5, 0, QtGui.QTableWidgetItem("P max")) self.table1.setItem(5, 1, QtGui.QTableWidgetItem("100")) self.table1.setItem(6, 0, QtGui.QTableWidgetItem("V max")) self.table1.setItem(6, 1, QtGui.QTableWidgetItem("100")) self.table1.setItem(7, 0, QtGui.QTableWidgetItem("V min")) self.table1.setItem(7, 1, QtGui.QTableWidgetItem("70")) self.table1.setItem(8, 0, QtGui.QTableWidgetItem("T")) self.table1.setItem(8, 1, QtGui.QTableWidgetItem("0.5")) #### self.table2.setItem(0, 0, QtGui.QTableWidgetItem("SW 1")) self.table2.setItem(0, 1, QtGui.QTableWidgetItem("-")) self.table2.setItem(1, 0, QtGui.QTableWidgetItem("SW 2")) self.table2.setItem(1, 1, QtGui.QTableWidgetItem("-")) self.table2.setItem(2, 0, QtGui.QTableWidgetItem("SW 3")) self.table2.setItem(2, 1, QtGui.QTableWidgetItem("-")) self.table2.setItem(4, 0, QtGui.QTableWidgetItem("Elv")) self.table2.setItem(4, 1, QtGui.QTableWidgetItem("-")) self.table2.setItem(5, 0, QtGui.QTableWidgetItem("Rsys")) self.table2.setItem(5, 1, QtGui.QTableWidgetItem("-")) self.table2.setItem(6, 0, QtGui.QTableWidgetItem("SBV")) self.table2.setItem(6, 1, QtGui.QTableWidgetItem("-")) self.table2.setItem(8, 0, QtGui.QTableWidgetItem("error")) self.table2.setItem(8, 1, QtGui.QTableWidgetItem("-")) self.setCentralWidget(splitterH) self.setContentsMargins(10, 5, 10, 5) self.setGeometry(100, 100, 1000, 800) # File menu file_menu = self.menuBar().addMenu("File") quit_action = create_action(self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close) add_actions(file_menu, (quit_action, ))