Ejemplo n.º 1
0
 def create_frame(self, layout):
     # container widget
     display_container_widget = QtWidgets.QWidget()
     display_container_widget.setLayout(QtWidgets.QVBoxLayout())
     display_layout = display_container_widget.layout()
     display_layout.setMargin(0)
     layout.addWidget(display_container_widget)
     # plot
     self.plot_widget = pw.Plot1D()
     self.plot_scatter = self.plot_widget.add_scatter()
     display_layout.addWidget(self.plot_widget)
     # vertical line
     line = pw.line("V")
     layout.addWidget(line)
     # settings area
     settings_container_widget = QtWidgets.QWidget()
     settings_scroll_area = pw.scroll_area(130)
     settings_scroll_area.setWidget(settings_container_widget)
     settings_scroll_area.setMinimumWidth(300)
     settings_scroll_area.setMaximumWidth(300)
     settings_container_widget.setLayout(QtWidgets.QVBoxLayout())
     settings_layout = settings_container_widget.layout()
     settings_layout.setMargin(5)
     layout.addWidget(settings_scroll_area)
     # input table
     input_table = pw.InputTable()
     input_table.add("Display", None)
     self.display_combobox = pc.Combo()
     self.display_combobox.updated.connect(self.update_display)
     input_table.add("Hardware", self.display_combobox)
     input_table.add("Settings", None)
     self.use_bool = pc.Bool()
     self.use_bool.updated.connect(self.on_toggle_use)
     g.queue_control.disable_when_true(self.use_bool)
     input_table.add("Use", self.use_bool)
     input_table.add("Current Offset", self.hardware.offset)
     settings_layout.addWidget(input_table)
     # add button
     self.add_button = pw.SetButton("ADD FILE", color="go")
     self.add_button.clicked.connect(self.on_add_file)
     g.queue_control.disable_when_true(self.add_button)
     settings_layout.addWidget(self.add_button)
     # table
     self.table = pw.TableWidget()
     self.table.verticalHeader().hide()
     self.table.insertColumn(0)
     self.table.insertColumn(1)
     self.table.insertColumn(2)
     self.table.setHorizontalHeaderLabels(["Hardware", "File Name", ""])
     self.table.setColumnWidth(0, 100)
     self.table.setColumnWidth(1, 100)
     self.table.horizontalHeader().setStretchLastSection(True)
     settings_layout.addWidget(self.table)
Ejemplo n.º 2
0
 def create_frame(self):
     self.main_widget = g.main_window.read().plot_widget
     # create main daq tab
     main_widget = self.main_widget
     layout = QtWidgets.QHBoxLayout()
     layout.setContentsMargins(0, 10, 0, 0)
     main_widget.setLayout(layout)
     # display
     # container widget
     display_container_widget = pw.ExpandingWidget()
     display_container_widget.setLayout(QtWidgets.QVBoxLayout())
     display_layout = display_container_widget.layout()
     display_layout.setMargin(0)
     layout.addWidget(display_container_widget)
     # big number
     big_number_container_widget = QtWidgets.QWidget()
     big_number_container_widget.setLayout(QtWidgets.QHBoxLayout())
     big_number_container_layout = big_number_container_widget.layout()
     big_number_container_layout.setMargin(0)
     self.big_display = pw.SpinboxAsDisplay(font_size=100)
     self.big_channel = pw.Label("channel", font_size=72)
     big_number_container_layout.addWidget(self.big_channel)
     big_number_container_layout.addStretch(1)
     big_number_container_layout.addWidget(self.big_display)
     display_layout.addWidget(big_number_container_widget)
     # plot
     self.plot_widget = pw.Plot1D()
     self.plot_scatter = self.plot_widget.add_scatter()
     self.plot_line = self.plot_widget.add_line()
     display_layout.addWidget(self.plot_widget)
     # vertical line
     line = pw.line("V")
     layout.addWidget(line)
     # settings
     settings_container_widget = QtWidgets.QWidget()
     settings_scroll_area = pw.scroll_area()
     settings_scroll_area.setWidget(settings_container_widget)
     settings_scroll_area.setMinimumWidth(300)
     settings_scroll_area.setMaximumWidth(300)
     settings_container_widget.setLayout(QtWidgets.QVBoxLayout())
     self.settings_layout = settings_container_widget.layout()
     self.settings_layout.setMargin(5)
     layout.addWidget(settings_scroll_area)
     g.shutdown.read().connect(self.on_shutdown)
Ejemplo n.º 3
0
 def create_frame(self, layout):
     """
     Runs before initialize.
     """
     # layout
     layout.setMargin(5)
     self.layout = layout
     # scroll area
     scroll_container_widget = QtWidgets.QWidget()
     self.scroll_area = pw.scroll_area(show_bar=False)
     self.scroll_area.setWidget(scroll_container_widget)
     self.scroll_area.setMinimumWidth(300)
     self.scroll_area.setMaximumWidth(300)
     scroll_container_widget.setLayout(QtWidgets.QVBoxLayout())
     self.scroll_layout = scroll_container_widget.layout()
     self.scroll_layout.setMargin(5)
     # attributes table
     self.attributes_table = pw.InputTable()
     self.attributes_table.add("Attributes", None)
     name = pc.String(self.hardware.name, display=True)
     self.attributes_table.add("Name", name)
     model = pc.String(self.hardware.model, display=True)
     self.attributes_table.add("Model", model)
     serial = pc.String(self.hardware.serial, display=True)
     self.attributes_table.add("Serial", serial)
     self.position = self.hardware.position.associate()
     self.hardware.position.updated.connect(self.on_position_updated)
     self.attributes_table.add("Label", self.hardware.driver.label)
     self.attributes_table.add("Position", self.position)
     self.offset = self.hardware.offset.associate()
     self.hardware.offset.updated.connect(self.on_offset_updated)
     self.attributes_table.add("Offset", self.offset)
     # initialization
     if self.hardware.initialized.read():
         self.initialize()
     else:
         self.hardware.initialized_signal.connect(self.initialize)
Ejemplo n.º 4
0
 def initialize(self):
     arr = self.driver.get_arrangement()
     # self.hardware.driver.initialize()
     # container widget
     display_container_widget = QtWidgets.QWidget()
     display_container_widget.setLayout(QtWidgets.QVBoxLayout())
     display_layout = display_container_widget.layout()
     display_layout.setMargin(0)
     self.layout.addWidget(display_container_widget)
     # plot
     self.plot_widget = pw.Plot1D()
     self.plot_widget.plot_object.setMouseEnabled(False, False)
     self.plot_curve = self.plot_widget.add_scatter()
     self.plot_h_line = self.plot_widget.add_infinite_line(angle=0, hide=False)
     self.plot_v_line = self.plot_widget.add_infinite_line(angle=90, hide=False)
     display_layout.addWidget(self.plot_widget)
     # vertical line
     line = pw.line("V")
     self.layout.addWidget(line)
     # container widget / scroll area
     settings_container_widget = QtWidgets.QWidget()
     settings_scroll_area = pw.scroll_area()
     settings_scroll_area.setWidget(settings_container_widget)
     settings_scroll_area.setMinimumWidth(300)
     settings_scroll_area.setMaximumWidth(300)
     settings_container_widget.setLayout(QtWidgets.QVBoxLayout())
     settings_layout = settings_container_widget.layout()
     settings_layout.setMargin(5)
     self.layout.addWidget(settings_scroll_area)
     # opa properties
     input_table = pw.InputTable()
     settings_layout.addWidget(input_table)
     # plot control
     input_table = pw.InputTable()
     input_table.add("Display", None)
     self.plot_motor = pc.Combo(allowed_values=self.driver.curve.arrangements[arr].keys())
     self.plot_motor.updated.connect(self.update_plot)
     input_table.add("Motor", self.plot_motor)
     allowed_values = list(wt.units.energy.keys())
     self.plot_units = pc.Combo(
         initial_value=self.driver.native_units, allowed_values=allowed_values
     )
     self.plot_units.updated.connect(self.update_plot)
     input_table.add("Units", self.plot_units)
     settings_layout.addWidget(input_table)
     # curves
     input_table = pw.InputTable()
     # input_table.add("Curves", None)
     self.arrangement_combo = pc.Combo(allowed_values=self.driver.curve.arrangements.keys())
     self.arrangement_combo.write(arr)
     self.arrangement_combo.updated.connect(self.on_arrangement_updated)
     input_table.add("Arrangement", self.arrangement_combo)
     # limits
     limits = pc.NumberLimits()  # units None
     self.low_energy_limit_display = pc.Number(
         units=self.driver.native_units, display=True, limits=limits
     )
     input_table.add("Low Energy Limit", self.low_energy_limit_display)
     self.high_energy_limit_display = pc.Number(
         units=self.driver.native_units, display=True, limits=limits
     )
     input_table.add("High Energy Limit", self.high_energy_limit_display)
     settings_layout.addWidget(input_table)
     self.driver.limits.updated.connect(self.on_limits_updated)
     # motors
     input_table = pw.InputTable()
     input_table.add("Setable", None)
     settings_layout.addWidget(input_table)
     for motor_name, motor_mutex in self.driver.motor_positions.items():
         settings_layout.addWidget(MotorControlGUI(motor_name, motor_mutex, self.driver))
     self.home_all_button = pw.SetButton("HOME ALL", "advanced")
     settings_layout.addWidget(self.home_all_button)
     self.home_all_button.clicked.connect(self.on_home_all)
     g.queue_control.disable_when_true(self.home_all_button)
     # stretch
     settings_layout.addStretch(1)
     # signals and slots
     self.arrangement_combo.updated.connect(self.update_plot)
     self.driver.update_ui.connect(self.update)
     # finish
     self.update()
     self.update_plot()
     self.on_limits_updated()