Пример #1
0
    def _setup_ui(self):
        self.log_widget = LogWidget()
        self.log.addHandler(
            self.log_widget.handler)  # needs to be in Qt context?
        log.info("ManagedWindow connected to logging")

        self.queue_button = QtGui.QPushButton('Queue', self)
        self.queue_button.clicked.connect(self.queue)

        self.abort_button = QtGui.QPushButton('Abort', self)
        self.abort_button.setEnabled(False)
        self.abort_button.clicked.connect(self.abort)

        #self.queue_button = QtGui.QPushButton('Set', self)
        #self.queue_button.clicked.connect(self.procedure.refresh_parameters())

        self.plot_widget = PlotWidget(self.procedure_class.DATA_COLUMNS,
                                      self.x_axis, self.y_axis)
        self.plot = self.plot_widget.plot

        self.browser_widget = BrowserWidget(self.procedure_class,
                                            self.displays,
                                            [self.x_axis, self.y_axis],
                                            parent=self)
        self.browser_widget.show_button.clicked.connect(self.show_experiments)
        self.browser_widget.hide_button.clicked.connect(self.hide_experiments)
        self.browser_widget.clear_button.clicked.connect(
            self.clear_experiments)
        self.browser_widget.open_button.clicked.connect(self.open_experiment)
        self.browser = self.browser_widget.browser

        self.browser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.browser.customContextMenuRequested.connect(self.browser_item_menu)
        self.browser.itemChanged.connect(self.browser_item_changed)

        self.inputs = InputsWidget(self.procedure_class,
                                   self.inputs,
                                   parent=self)

        self.manager = Manager(self.plot,
                               self.browser,
                               log_level=self.log_level,
                               parent=self)
        self.manager.abort_returned.connect(self.abort_returned)
        self.manager.queued.connect(self.queued)
        self.manager.running.connect(self.running)
        self.manager.finished.connect(self.finished)
        self.manager.log.connect(self.log.handle)
Пример #2
0
    def _setup_ui(self):
        """
        Loads custom QT UI for center calibration
        """
        super()._setup_ui()
        self.stop_button = QtGui.QPushButton('Stop', self)
        self.queue_button.clicked.connect(self.stop)

        self.inputs.hide()
        self.run_directory = os.path.dirname(os.path.realpath(__file__))
        self.inputs = fromUi(os.path.join(self.run_directory,
                                          'temp_control_gui.ui'))
Пример #3
0
    def add_tab(self, name, instrument):
        vbox = QtGui.QVBoxLayout()
        for label, method, arguments in instrument.CONTROL:
            hbox = QtGui.QHBoxLayout()
            label_widget = QtGui.QLabel(label + ":")
            hbox.addWidget(label_widget)
            hbox.addStretch()
            inputs = []
            for argument in arguments:
                if argument[0] is not float:
                    raise ValueError(
                        "Non-float arguments are not implemented yet.")
                inputs.append(QtGui.QDoubleSpinBox())
                if len(argument) > 1 and argument[1]:
                    inputs[-1].setPrefix(argument[1])
                if len(argument) > 2 and argument[2]:
                    inputs[-1].setSuffix(argument[2])
                if len(argument) > 3 and (argument[3] or argument[3] == 0):
                    inputs[-1].setDecimals(argument[3])
                if len(argument) > 4 and (argument[4] or argument[4] == 0):
                    inputs[-1].setMaximum(argument[4])
                if len(argument) > 5 and (argument[5] or argument[5] == 0):
                    inputs[-1].setMinimum(argument[5])
                hbox.addWidget(inputs[-1])

            def evaluate(inst, func, values):
                def run():
                    try:
                        getattr(inst, func)(*[v.value() for v in values])
                    except Exception as error:
                        logging.exception(error)
                        raise error

                thread = threading.Thread(target=run)
                thread.start()

            write = QtGui.QPushButton()
            write.setText("Send Command")
            write.clicked.connect(partial(evaluate, instrument, method,
                                          inputs))
            hbox.addWidget(write)
            vbox.addLayout(hbox)
        vbox.addStretch()
        tab_widget = QtGui.QWidget()
        tab_widget.setLayout(vbox)
        self.tab.addTab(tab_widget, name)
Пример #4
0
    def __init__(self, parameter, parent=None, **kwargs):
        self.button = QtGui.QPushButton("Find")
        self.button.clicked.connect(self.get_file)
        self.line_edit = QtGui.QLineEdit()
        self.label = QtGui.QLabel()

        if qt_min_version(5):
            super().__init__(parameter=parameter, parent=parent, **kwargs)
        else:
            QtGui.QWidget.__init__(self, parent=parent, **kwargs)
            inputs.Input.__init__(self, parameter)
        vbox = QtGui.QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        if parameter.name:
            self.label.setText(self.parameter.name + ":")
            vbox.addWidget(self.label)
        hbox = QtGui.QHBoxLayout()
        hbox.addWidget(self.button)
        hbox.addWidget(self.line_edit)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
Пример #5
0
    def _setup_ui(self):
        main_menu = self.menuBar()
        file_menu = main_menu.addMenu('Options')

        load_configuration = QtGui.QAction("Load Configuration", self)
        load_configuration.triggered.connect(self.load_config)
        file_menu.addAction(load_configuration)

        save_as_default = QtGui.QAction("Save Current Settings as Default",
                                        self)
        save_as_default.triggered.connect(self.save_as_default)
        file_menu.addAction(save_as_default)

        if self.HAS_DAQ:
            instrument_control = QtGui.QAction("Instrument Control", self)
            instrument_control.triggered.connect(self.open_instrument_control)
            file_menu.addAction(instrument_control)

        self.log_widget = LogWidget()
        self.log.addHandler(
            self.log_widget.handler)  # needs to be in Qt context?
        log.info("ManagedWindow connected to logging")

        self.queue_button = QtGui.QPushButton('Queue', self)
        self.queue_button.clicked.connect(self.queue)

        self.abort_button = QtGui.QPushButton('Abort', self)
        self.abort_button.setEnabled(False)
        self.abort_button.clicked.connect(self.abort)

        self.abort_all_button = QtGui.QPushButton('Abort All', self)
        self.abort_all_button.setEnabled(False)
        self.abort_all_button.clicked.connect(self.abort_all)

        self.plot_widget = []
        self.plot = []
        for index, plot_widget in enumerate(self.plot_widget_classes):
            self.plot_widget.append(
                plot_widget(self.procedure_class.DATA_COLUMNS,
                            x_axes=self.x_axes[index],
                            y_axes=self.y_axes[index],
                            x_label=self.x_labels[index],
                            y_label=self.y_labels[index],
                            legend_text=self.legend_text[index],
                            color_cycle=self.color_cycle))
            self.plot.append(self.plot_widget[-1].plot)

        measured_quantities = [
            item for x_axis in self.x_axes for item in x_axis
        ]
        measured_quantities.extend(
            [item for y_axis in self.y_axes for item in y_axis])
        quantities = []
        for item in measured_quantities:
            if isinstance(item, (list, tuple)):
                quantities.extend(item)
            else:
                quantities.append(item)
        self.browser_widget = BrowserWidget(self.procedure_class,
                                            self.displays,
                                            quantities,
                                            parent=self)
        self.browser_widget.show_button.clicked.connect(self.show_experiments)
        self.browser_widget.hide_button.clicked.connect(self.hide_experiments)
        self.browser_widget.clear_button.clicked.connect(
            self.clear_experiments)
        self.browser_widget.open_button.clicked.connect(self.open_experiment)

        self.browser = self.browser_widget.browser
        self.browser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.browser.customContextMenuRequested.connect(self.browser_item_menu)
        self.browser.itemChanged.connect(self.browser_item_changed)

        self.inputs = InputsWidget(self.procedure_class,
                                   self.inputs,
                                   parent=self)
        self.manager = Manager(self.plot,
                               self.browser,
                               log_level=self.log_level,
                               parent=self)
        self.manager.abort_returned.connect(self.abort_returned)
        self.manager.queued.connect(self.queued)
        self.manager.running.connect(self.running)
        self.manager.finished.connect(self.finished)
        self.manager.failed.connect(self.failed)
        self.manager.log.connect(self.log.handle)

        self.indicators = IndicatorsWidget(self.procedure_class)