def create_controls(self): """ Create UI controls. """ vbox = QtGui.QVBoxLayout() form = QtGui.QFormLayout() self.num_sigma = QtGui.QDoubleSpinBox() self.num_sigma.setValue(1.0) self.num_sigma.setMinimum(0.0) self.num_sigma.setSingleStep(0.1) self.num_sigma.setMaximum(1e3) self.num_sigma.setDecimals(2) form.addRow(tr("Sigma:"), self.num_sigma) vbox.addLayout(form) self.chk_preview = QtGui.QCheckBox(tr("Preview")) self.chk_preview.setCheckable(True) self.chk_preview.setChecked(False) vbox.addWidget(self.chk_preview) self.chk_preview.toggled[bool].connect(self.set_preview) self.gbo_output = QtGui.QGroupBox(tr("Output")) self.opt_new = QtGui.QRadioButton(tr("New signal")) self.opt_replace = QtGui.QRadioButton(tr("In place")) self.opt_new.setChecked(True) gbo_vbox2 = QtGui.QVBoxLayout() gbo_vbox2.addWidget(self.opt_new) gbo_vbox2.addWidget(self.opt_replace) self.gbo_output.setLayout(gbo_vbox2) vbox.addWidget(self.gbo_output) self.btn_ok = QtGui.QPushButton(tr("&OK")) self.btn_ok.setDefault(True) self.btn_ok.clicked.connect(self.accept) self.btn_cancel = QtGui.QPushButton(tr("&Cancel")) self.btn_cancel.clicked.connect(self.reject) hbox = QtGui.QHBoxLayout() hbox.addWidget(self.btn_ok) hbox.addWidget(self.btn_cancel) vbox.addLayout(hbox) vbox.addStretch(1) self.setLayout(vbox)
def __init__(self, topics=None, terms=None, addr=None, uiTemplate=None, parent=None, **kwargs): super().__init__(parent) self.node = kwargs.get('node', None) self.units = kwargs.get('units', {}) self.fetcher = None if addr: self.fetcher = AsyncFetcher(topics, terms, addr, parent=self) self.fetcher.start() self.plot_view = self.addPlot() if self.node: # node is passed in on subprocess self.viewbox_proxy = pg.SignalProxy( self.plot_view.vb.sigRangeChangedManually, delay=0.5, slot=lambda args: self.node.sigStateChanged.emit(self.node)) self.plot_view.autoBtn.clicked.connect( lambda args: self.node.sigStateChanged.emit(self.node)) self.plot_view.showGrid(True, True) ax = self.plot_view.getAxis('bottom') ax.enableAutoSIPrefix(enable=bool(self.units)) ax.setZValue(100) ay = self.plot_view.getAxis('left') ay.enableAutoSIPrefix(enable=bool(self.units)) ay.setZValue(100) self.plot_view.setMenuEnabled(False) self.configure_btn = pg.ButtonItem(pg.pixmaps.getPixmap('ctrl'), 14, parentItem=self.plot_view) self.configure_btn.clicked.connect(self.configure_plot) self.configure_btn.show() self.plot = {} # { name : PlotDataItem } self.trace_ids = {} # { trace_idx : name } self.trace_attrs = {} self.legend_editors = {} self.annotation_editors = {} self.annotation_traces = {} self.terms = terms self.last_updated = pg.LabelItem(parent=self.plot_view) self.pixel_value = pg.LabelItem(parent=self.plot_view) self.hover_proxy = pg.SignalProxy(self.sceneObj.sigMouseMoved, rateLimit=30, slot=self.cursor_hover_evt) if uiTemplate is None: uiTemplate = [ ('Title', 'text'), ('Show Grid', 'check', { 'checked': True }), # ('Auto Range', 'check', {'checked': True}), # x axis ('Label', 'text', { 'group': 'X Axis' }), ('Log Scale', 'check', { 'group': 'X Axis', 'checked': False }), # y axis ('Label', 'text', { 'group': 'Y Axis' }), ('Log Scale', 'check', { 'group': 'Y Axis', 'checked': False }) ] self.uiTemplate = uiTemplate self.ui, self.stateGroup, self.ctrls, self.plot_attrs = generateUi( self.uiTemplate) if self.stateGroup: self.stateGroup.sigChanged.connect(self.state_changed) ctrl_layout = self.ui.layout() self.legend = None if kwargs.get('legend', True): self.legend = self.plot_view.addLegend() self.legend_layout = QtGui.QFormLayout() self.legend_groupbox = QtWidgets.QGroupBox() self.legend_groupbox.setTitle("Legend") self.legend_groupbox.setLayout(self.legend_layout) ctrl_layout.addWidget(self.legend_groupbox) self.ctrls["Legend"] = self.legend_groupbox self.annotation_layout = QtGui.QFormLayout() self.annotation_groupbox = QtWidgets.QGroupBox() self.annotation_groupbox.setTitle("Annotations") self.annotation_groupbox.setLayout(self.annotation_layout) ctrl_layout.addWidget(self.annotation_groupbox) self.ctrls["Annotations"] = self.annotation_groupbox self.annotation_type = QtGui.QComboBox(parent=self.annotation_groupbox) self.annotation_type.addItem("Line", LineEditor) self.annotation_type.addItem("Circle", CircleEditor) self.annotation_type.addItem("Rect", RectEditor) self.annotation_layout.addWidget(self.annotation_type) self.add_annotation_btn = QtWidgets.QPushButton( "Add", self.annotation_groupbox) self.add_annotation_btn.clicked.connect(self.add_annotation) self.annotation_layout.addWidget(self.add_annotation_btn) self.apply_btn = QtWidgets.QPushButton("Apply", self.ui) self.apply_btn.clicked.connect(self.apply_clicked) ctrl_layout.addWidget(self.apply_btn) self.win = QtGui.QMainWindow() scrollArea = QtWidgets.QScrollArea(parent=self.win) scrollArea.setWidgetResizable(True) scrollArea.setWidget(self.ui) self.win.setCentralWidget(scrollArea) if self.node: self.win.setWindowTitle(self.node.name() + ' configuration')