def __init__(self, parent=None, name=None, flags=0): qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(flags)) if not name: self.setObjectName("RadiationDamageWidgetLayout") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- # Graphic elements ---------------------------------------------------- self.rad_damage_cbx = qt_import.QCheckBox(self) _label_widget = qt_import.QWidget(self) self.burn_osc_start_label = qt_import.QLabel(_label_widget) self.burn_osc_start_ledit = qt_import.QLineEdit(_label_widget) self.burn_osc_start_ledit.setMinimumSize(50, 0) self.burn_osc_start_ledit.setMaximumSize(50, 32767) _value_widget = qt_import.QWidget(self) self.burn_osc_interval_label = qt_import.QLabel(_value_widget) self.burn_osc_interval_ledit = qt_import.QLineEdit(_value_widget) self.burn_osc_interval_ledit.setMinimumSize(50, 0) self.burn_osc_interval_ledit.setMaximumSize(50, 32767) # Layout -------------------------------------------------------------- _label_widget_hlayout = qt_import.QHBoxLayout(self) _label_widget_hlayout.addWidget(self.burn_osc_start_label) _label_widget_hlayout.addWidget(self.burn_osc_start_ledit) _label_widget_hlayout.addStretch(0) _label_widget_hlayout.setSpacing(0) _label_widget_hlayout.setContentsMargins(0, 0, 0, 0) _label_widget.setLayout(_label_widget_hlayout) _value_hlayout = qt_import.QHBoxLayout(self) _value_hlayout.addWidget(self.burn_osc_interval_label) _value_hlayout.addWidget(self.burn_osc_interval_ledit) _value_hlayout.addStretch(0) _value_hlayout.setSpacing(0) _value_hlayout.setContentsMargins(0, 0, 0, 0) _value_widget.setLayout(_value_hlayout) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.rad_damage_cbx) _main_vlayout.addWidget(_label_widget) _main_vlayout.addWidget(_value_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0) self.setLayout(_main_vlayout) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ # Other --------------------------------------------------------------- self.languageChange()
def __init__(self, parent): qt_import.QDialog.__init__(self, parent) # Graphic elements----------------------------------------------------- # self.main_gbox = QtGui.QGroupBox('Motor step', self) # box2 = QtGui.QWidget(self) self.grid = qt_import.QWidget(self) label1 = qt_import.QLabel("Current:", self) self.current_step = qt_import.QLineEdit(self) self.current_step.setEnabled(False) label2 = qt_import.QLabel("Set to:", self) self.new_step = qt_import.QLineEdit(self) self.new_step.setAlignment(qt_import.Qt.AlignRight) self.new_step.setValidator(qt_import.QDoubleValidator(self)) self.button_box = qt_import.QWidget(self) self.apply_button = qt_import.QPushButton("Apply", self.button_box) self.close_button = qt_import.QPushButton("Dismiss", self.button_box) # Layout -------------------------------------------------------------- self.button_box_layout = qt_import.QHBoxLayout(self.button_box) self.button_box_layout.addWidget(self.apply_button) self.button_box_layout.addWidget(self.close_button) self.grid_layout = qt_import.QGridLayout(self.grid) self.grid_layout.addWidget(label1, 0, 0) self.grid_layout.addWidget(self.current_step, 0, 1) self.grid_layout.addWidget(label2, 1, 0) self.grid_layout.addWidget(self.new_step, 1, 1) self.main_layout = qt_import.QVBoxLayout(self) self.main_layout.addWidget(self.grid) self.main_layout.addWidget(self.button_box) self.main_layout.setSpacing(0) self.main_layout.setContentsMargins(0, 0, 0, 0) # Qt signal/slot connections ----------------------------------------- self.new_step.returnPressed.connect(self.apply_clicked) self.apply_button.clicked.connect(self.apply_clicked) self.close_button.clicked.connect(self.accept) # SizePolicies -------------------------------------------------------- self.close_button.setSizePolicy(qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed) self.setSizePolicy(qt_import.QSizePolicy.Minimum, qt_import.QSizePolicy.Minimum) # Other --------------------------------------------------------------- self.setWindowTitle("Motor step editor") self.apply_button.setIcon(icons.load_icon("Check")) self.close_button.setIcon(icons.load_icon("Delete"))
def __init__(self, *args): qt_import.QWidget.__init__(self, *args) self.value_plot = None self.title_label = qt_import.QLabel(self) self.value_widget = qt_import.QWidget(self) self.value_label = qt_import.QLabel(self.value_widget) self.value_label.setAlignment(qt_import.Qt.AlignCenter) self.history_button = qt_import.QPushButton( icons.load_icon("LineGraph"), "", self.value_widget) self.history_button.hide() self.history_button.setFixedWidth(22) self.history_button.setFixedHeight(22) _value_widget_hlayout = qt_import.QHBoxLayout(self.value_widget) _value_widget_hlayout.addWidget(self.value_label) _value_widget_hlayout.addWidget(self.history_button) _value_widget_hlayout.setSpacing(2) _value_widget_hlayout.setContentsMargins(0, 0, 0, 0) self.main_vlayout = qt_import.QVBoxLayout(self) self.main_vlayout.addWidget(self.title_label) self.main_vlayout.addWidget(self.value_widget) self.main_vlayout.setSpacing(1) self.main_vlayout.setContentsMargins(0, 0, 0, 0) self.history_button.clicked.connect(self.open_history_view)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Properties ---------------------------------------------------------- self.add_property("title", "string", "Shutter") self.add_property("hwobj_shutter", "string", "") # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- # Hardware objects ---------------------------------------------------- self.shutter_hwobj = None # Internal values ----------------------------------------------------- # Graphic elements ---------------------------------------------------- self.main_groupbox = qt_import.QGroupBox("Shutter", self) self.main_groupbox.setAlignment(qt_import.Qt.AlignCenter) self.state_label = qt_import.QLabel("<b>unknown</b>", self.main_groupbox) self.state_label.setAlignment(qt_import.Qt.AlignCenter) self.state_label.setFixedHeight(24) colors.set_widget_color(self.state_label, colors.LIGHT_GRAY) _button_widget = qt_import.QWidget(self.main_groupbox) self.open_button = qt_import.QPushButton( icons.load_icon("ShutterOpen"), "Open", _button_widget) self.close_button = qt_import.QPushButton( icons.load_icon("ShutterClose"), "Close", _button_widget) # Layout -------------------------------------------------------------- _button_widget_hlayout = qt_import.QHBoxLayout(_button_widget) _button_widget_hlayout.addWidget(self.open_button) _button_widget_hlayout.addWidget(self.close_button) _button_widget_hlayout.setSpacing(2) _button_widget_hlayout.setContentsMargins(0, 0, 0, 0) _main_gbox_vlayout = qt_import.QVBoxLayout(self.main_groupbox) _main_gbox_vlayout.addWidget(self.state_label) _main_gbox_vlayout.addWidget(_button_widget) _main_gbox_vlayout.setSpacing(2) _main_gbox_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.main_groupbox) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.open_button.clicked.connect(self.open_button_clicked) self.close_button.clicked.connect(self.close_button_clicked)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Properties ---------------------------------------------------------- self.add_property("mnemonic", "string", "") self.add_property("icons", "string", "") self.add_property("myTabLabel", "string", "") # Signals ------------------------------------------------------------ self.define_signal("incoming_unread_messages", ()) self.define_signal("reset_unread_message", ()) # Slots --------------------------------------------------------------- self.define_slot("tabSelected", ()) self.define_slot("sessionSelected", ()) # Hardware objects ---------------------------------------------------- self.instance_server_hwobj = None # Internal values ----------------------------------------------------- self.session_id = None self.nickname = "" self.role = BaseWidget.INSTANCE_ROLE_UNKNOWN # Graphic elements ---------------------------------------------------- self.conversation_textedit = qt_import.QTextEdit(self) self.conversation_textedit.setReadOnly(True) _controls_widget = qt_import.QWidget(self) _say_label = qt_import.QLabel("Say:", _controls_widget) self.message_ledit = qt_import.QLineEdit(_controls_widget) self.send_button = qt_import.QPushButton("Send", _controls_widget) self.send_button.setEnabled(False) # Layout -------------------------------------------------------------- _controls_widget_hlayout = qt_import.QHBoxLayout(_controls_widget) _controls_widget_hlayout.addWidget(_say_label) _controls_widget_hlayout.addWidget(self.message_ledit) _controls_widget_hlayout.addWidget(self.send_button) _controls_widget_hlayout.setSpacing(2) _controls_widget_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.conversation_textedit) _main_vlayout.addWidget(_controls_widget) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) # Qt signal/slot connections ------------------------------------------ self.send_button.clicked.connect(self.send_current_message) self.message_ledit.returnPressed.connect(self.send_current_message) self.message_ledit.textChanged.connect(self.message_changed)
def __init__(self, parent=None, name=None, fl=0): qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(fl)) if name is not None: self.setObjectName(name) self.selected_element = None self.selected_edge = "L3" # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- if PYMCA_IMPORTED: self.periodic_table = CustomPeriodicTable(self) else: self.periodic_elements_combo = qt_import.QComboBox(self) self.periodic_elements_combo.setFixedWidth(100) self.edge_widget = qt_import.QWidget(self) edge_label = qt_import.QLabel("Edge:", self.edge_widget) self.edge_combo = qt_import.QComboBox(self.edge_widget) # Layout -------------------------------------------------------------- _edge_hlayout = qt_import.QHBoxLayout(self.edge_widget) if not PYMCA_IMPORTED: _edge_hlayout.addWidget(self.periodic_elements_combo) _edge_hlayout.addWidget(edge_label) _edge_hlayout.addWidget(self.edge_combo) _edge_hlayout.addStretch(0) _edge_hlayout.setSpacing(2) _edge_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) if PYMCA_IMPORTED: _main_vlayout.addWidget(self.periodic_table, qt_import.Qt.AlignHCenter) _main_vlayout.addWidget(self.edge_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ if PYMCA_IMPORTED: self.periodic_table.edgeSelectedSignal.connect(self.edge_selected) else: self.periodic_elements_combo.activated.connect(self.element_combo_activated) self.edge_combo.addItem("K") self.edge_combo.activated.connect(self.edge_combo_activated) self.edge_combo.setEnabled(False)
def __init__(self, parent=None, name="advanced_parameters_widget"): qt_import.QWidget.__init__(self, parent) # Internal values ----------------------------------------------------- self._data_collection = None self._tree_view_item = None self._acquisition_mib = None # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- _dc_parameters_widget = qt_import.QWidget(self) self._data_path_widget = DataPathWidget(_dc_parameters_widget) self._acq_widget = AcquisitionWidget(_dc_parameters_widget, layout="horizontal") # Layout -------------------------------------------------------------- _dc_parameters_widget_layout = qt_import.QVBoxLayout( _dc_parameters_widget) _dc_parameters_widget_layout.addWidget(self._data_path_widget) _dc_parameters_widget_layout.addWidget(self._acq_widget) _dc_parameters_widget_layout.setSpacing(2) _dc_parameters_widget_layout.addStretch(10) _dc_parameters_widget_layout.setContentsMargins(0, 0, 0, 0) _main_hlayout = qt_import.QHBoxLayout(self) _main_hlayout.addWidget(_dc_parameters_widget) _main_hlayout.setSpacing(2) _main_hlayout.setContentsMargins(2, 2, 2, 2) _main_hlayout.addStretch(0) # Qt signal/slot connections ------------------------------------------ # self._acq_widget.acqParametersChangedSignal.\ # connect(self.acq_parameters_changed) # self._data_path_widget.pathTemplateChangedSignal.\ # connect(self.acq_parameters_changed) self._acq_widget.madEnergySelectedSignal.connect( self.mad_energy_selected) # Ohter --------------------------------------------------------------- self._acq_widget.use_osc_start(False) self._acq_widget.acq_widget_layout.mad_cbox.hide() self._acq_widget.acq_widget_layout.energies_combo.hide() self._acq_widget.acq_widget_layout.shutterless_cbx.hide()
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.exporter_client_hwobj = None # Internal variables -------------------------------------------------- # Properties ---------------------------------------------------------- self.add_property("mnemonic", "string", "") # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- self.info_widget = qt_import.QWidget(self) self.info_address_ledit = qt_import.QLineEdit(self.info_widget) self.info_refresh_button = qt_import.QPushButton( "Refresh", self.info_widget) self.method_table = qt_import.QTableWidget(self) self.property_table = qt_import.QTableWidget(self) # Layout -------------------------------------------------------------- _info_widget_hlayout = qt_import.QHBoxLayout(self.info_widget) _info_widget_hlayout.addWidget(self.info_address_ledit) _info_widget_hlayout.addWidget(self.info_refresh_button) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.info_widget) _main_vlayout.addWidget(self.method_table) _main_vlayout.addWidget(self.property_table) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) # Qt signal/slot connections ------------------------------------------ # Other --------------------------------------------------------------- self.method_table.setColumnCount(2) self.method_table.setHorizontalHeaderLabels( ["Type", "Method (Parameters)"]) self.property_table.setColumnCount(4) self.property_table.setHorizontalHeaderLabels( ["Type", "Property", "Access", "Value"]) self.setFixedWidth(600)
def __init__(self, parent=None, name=None, flags=0): qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(flags)) if not name: self.setObjectName("SADWidgetLayout") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- # Graphic elements ---------------------------------------------------- self.optimised_sad_cbx = qt_import.QCheckBox("Optimised SAD", self) self.automatic_resolution_radio = qt_import.QRadioButton(self) _optimal_sad_widget = qt_import.QWidget(self) self.optimal_sad_radio = qt_import.QRadioButton( "Optimal SAD for given resolution:", _optimal_sad_widget) self.sad_bgroup = qt_import.QButtonGroup(self) self.sad_bgroup.addButton(self.automatic_resolution_radio) self.sad_bgroup.addButton(self.optimal_sad_radio) self.sad_resolution_ledit = qt_import.QLineEdit(_optimal_sad_widget) self.sad_resolution_ledit.setMinimumSize(50, 0) self.sad_resolution_ledit.setMaximumSize(50, 32767) # Layout -------------------------------------------------------------- _optimal_sad_widget_hlayout = qt_import.QHBoxLayout( _optimal_sad_widget) _optimal_sad_widget_hlayout.addWidget(self.optimal_sad_radio) _optimal_sad_widget_hlayout.addWidget(self.sad_resolution_ledit) _optimal_sad_widget_hlayout.setSpacing(0) _optimal_sad_widget_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.optimised_sad_cbx) _main_vlayout.addWidget(self.automatic_resolution_radio) _main_vlayout.addWidget(_optimal_sad_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) self.automatic_resolution_radio.setText( self.trUtf8( "\x52\x65\x73\x6f\x6c\x75\x74\x69\x6f\x6e\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x2c\x20\x72\x6f\x74\x61\x74\x69\x6f\x6e\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x3a\x20\x33\x36\x30\xc2\xb0" ))
def __init__(self, parent): qt_import.QWidget.__init__(self, parent) self.home_url = None self.navigation_bar = qt_import.QWidget(self) self.url_ledit = qt_import.QLineEdit(self.navigation_bar) self.url_ledit.setReadOnly(True) self.home_button = qt_import.QPushButton(self.navigation_bar) self.back_button = qt_import.QPushButton(self.navigation_bar) self.forward_button = qt_import.QPushButton(self.navigation_bar) self.home_button.setIcon(icons.load_icon("Home2")) self.back_button.setIcon(icons.load_icon("Left2")) self.forward_button.setIcon(icons.load_icon("Right2")) #if QWEBVIEW_AVAILABLE: # self.web_page_viewer = qt_import.QWebView(self) # self.web_page_viewer.settings().setObjectCacheCapacities(0, 0, 0) #else: self.web_page_viewer = qt_import.QTextBrowser(self) _navigation_bar_hlayout = qt_import.QHBoxLayout(self.navigation_bar) _navigation_bar_hlayout.addWidget(self.home_button) _navigation_bar_hlayout.addWidget(self.back_button) _navigation_bar_hlayout.addWidget(self.forward_button) _navigation_bar_hlayout.addWidget(self.url_ledit) _navigation_bar_hlayout.setSpacing(2) _navigation_bar_hlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.navigation_bar) _main_vlayout.addWidget(self.web_page_viewer) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) self.web_page_viewer.setSizePolicy(qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Expanding) self.home_button.clicked.connect(self.go_to_home_page) self.back_button.clicked.connect(self.go_back) self.forward_button.clicked.connect(self.go_forward)
def __init__(self, parent, button1="OK", button2="Cancel", button3=None, callback=None, margin=6, spacing=6): """Constructor docstring.""" super(DialogButtonsBar, self).__init__(parent) self.callback = callback spacer = qt_import.QWidget(self) spacer.setSizePolicy(qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed) # Layout -------------------------------------------------------------- self._dialog_vlayout = qt_import.QVBoxLayout(self, margin, spacing) self._dialog_vlayout.addWidget(spacer) if button1 is not None: self.button1 = qt_import.QPushButton(button1, self) self._dialog_vlayout.addWidget(self.button1) self.button1.clicked.connect(self.button1_clicked) if button2 is not None: self.button2 = qt_import.QPushButton(button1, self) self._dialog_vlayout.addWidget(self.button2) self.button2.clicked.connect(self.button2_clicked) if button3 is not None: self.button3 = qt_import.QPushButton(button1, self) self._dialog_vlayout.addWidget(self.button3) self.button3.clicked.connect(self.button3_clicked) self.setSizePolicy(qt_import.QSizePolicy.Minimum, qt_import.QSizePolicy.Fixed) self.setLayout(self._dialog_vlayout)
def __init__(self, parent=None, name=None, fl=0): qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(fl)) if not name: self.setObjectName("ReferenceImageWidget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- # Graphic elements ---------------------------------------------------- self.group_box = qt_import.QGroupBox("Reference images", self) self.tool_box = qt_import.QToolBox(self.group_box) self.page_widget = qt_import.QWidget(self.tool_box) self.path_widget = DataPathWidget(self.page_widget) self.acq_widget = AcquisitionWidget(self.page_widget, "horizontal") self.acq_widget.acq_widget_layout.shutterless_cbx.hide() # self.acq_widget.acq_widget_layout.setFixedHeight(130) self.tool_box.addItem(self.page_widget, "Acquisition parameters") # Layout -------------------------------------------------------------- _page_widget_layout = qt_import.QVBoxLayout(self.page_widget) _page_widget_layout.addWidget(self.path_widget) _page_widget_layout.addWidget(self.acq_widget) _page_widget_layout.addStretch(0) _page_widget_layout.setSpacing(0) _page_widget_layout.setContentsMargins(0, 0, 0, 0) _group_box_vlayout = qt_import.QVBoxLayout(self.group_box) _group_box_vlayout.addWidget(self.tool_box) _group_box_vlayout.setSpacing(0) _group_box_vlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.group_box) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.graphics_manager_hwobj = None # Internal values ----------------------------------------------------- self.graphics_scene_size = None self.graphics_scene_fixed_size = None self.graphics_view = None # self.graphics_camera_frame = None self.fixed_size = None self.display_beam = None self.display_scale = None self.image_scale_list = [] # Properties ---------------------------------------------------------- self.add_property("mnemonic", "string", "/graphics") self.add_property("fixedSize", "string", "") self.add_property("displayBeam", "boolean", True) self.add_property("displayScale", "boolean", True) self.add_property("displayOmegaAxis", "boolean", True) self.add_property("beamDefiner", "boolean", False) self.add_property("cameraControls", "boolean", False) # Graphic elements----------------------------------------------------- self.info_widget = qt_import.QWidget(self) self.display_beam_size_cbox = qt_import.QCheckBox("Display beam size", self) self.display_beam_size_cbox.setHidden(False) self.coord_label = qt_import.QLabel(":", self) self.info_label = qt_import.QLabel(self) self.camera_control_dialog = CameraControlDialog(self) self.popup_menu = qt_import.QMenu(self) self.popup_menu.menuAction().setIconVisibleInMenu(True) create_menu = self.popup_menu.addMenu("Create") create_menu.menuAction().setIconVisibleInMenu(True) temp_action = create_menu.addAction( icons.load_icon("VCRPlay2"), "Centring point with 3 clicks", self.create_point_click_clicked, ) temp_action.setShortcut("Ctrl+1") temp_action = create_menu.addAction( icons.load_icon("ThumbUp"), "Centring point on current position", self.create_point_current_clicked, ) temp_action.setShortcut("Ctrl+2") temp_action.setIcon(icons.load_icon("ThumbUp")) create_menu.addAction( icons.load_icon("ThumbUp"), "Centring points with one click", self.create_points_one_click_clicked, ) temp_action = create_menu.addAction( icons.load_icon("Line.png"), "Helical line", self.create_line_clicked ) temp_action.setShortcut("Ctrl+3") temp_action = create_menu.addAction( icons.load_icon("Line.png"), "Automatic helical line", self.create_auto_line_clicked, ) temp_action = create_menu.addAction( icons.load_icon("Grid"), "Grid", self.create_grid ) temp_action.setShortcut("Ctrl+4") temp_action = create_menu.addAction( icons.load_icon("AutoGrid"), "Auto Grid", self.create_auto_grid ) measure_menu = self.popup_menu.addMenu("Measure") self.measure_distance_action = measure_menu.addAction( icons.load_icon("measure_distance"), "Distance", self.measure_distance_clicked, ) self.measure_angle_action = measure_menu.addAction( icons.load_icon("measure_angle"), "Angle", self.measure_angle_clicked ) self.measure_area_action = measure_menu.addAction( icons.load_icon("measure_area"), "Area", self.measure_area_clicked ) beam_mark_menu = self.popup_menu.addMenu("Beam mark") self.move_beam_mark_manual_action = beam_mark_menu.addAction( "Set position manually", self.move_beam_mark_manual ) # self.move_beam_mark_manual_action.setEnabled(False) self.move_beam_mark_auto_action = beam_mark_menu.addAction( "Set position automaticaly", self.move_beam_mark_auto ) # self.move_beam_mark_auto_action.setEnabled(False) self.display_beam_size_action = beam_mark_menu.addAction( "Display size", self.display_beam_size_toggled ) self.display_beam_size_action.setCheckable(True) self.define_beam_action = self.popup_menu.addAction( icons.load_icon("Draw"), "Define beam size with slits", self.define_beam_size, ) self.define_beam_action.setEnabled(False) self.popup_menu.addSeparator() temp_action = self.popup_menu.addAction( "Select all centring points", self.select_all_points_clicked ) temp_action.setShortcut("Ctrl+A") temp_action = self.popup_menu.addAction( "Deselect all items", self.deselect_all_items_clicked ) temp_action.setShortcut("Ctrl+D") temp_action = self.popup_menu.addAction( icons.load_icon("Delete"), "Clear all items", self.clear_all_items_clicked ) temp_action.setShortcut("Ctrl+X") self.popup_menu.addSeparator() tools_menu = self.popup_menu.addMenu("Tools") self.display_grid_action = tools_menu.addAction( icons.load_icon("Grid"), "Display grid", self.display_grid_toggled ) self.display_grid_action.setCheckable(True) self.display_histogram_action = tools_menu.addAction( icons.load_icon("Grid"), "Display historgram", self.display_histogram_toggled, ) self.display_histogram_action.setCheckable(True) self.magnification_action = tools_menu.addAction( icons.load_icon("Magnify2"), "Magnification tool", self.start_magnification_tool, ) # self.magnification_action.setCheckable(True) # self.display_histogram_action = self.popup_menu.addAction(\ # "Display histogram", self.display_histogram_toggled) # self.define_histogram_action = self.popup_menu.addAction(\ # "Define histogram", self.define_histogram_clicked) # self.display_histogram_action.setEnabled(False) # self.define_histogram_action.setEnabled(False) self.image_scale_menu = self.popup_menu.addMenu( icons.load_icon("DocumentMag2"), "Image scale" ) self.image_scale_menu.setEnabled(False) self.image_scale_menu.triggered.connect(self.image_scale_triggered) self.camera_control_action = self.popup_menu.addAction( "Camera control", self.open_camera_control_dialog ) self.camera_control_action.setEnabled(False) # Layout -------------------------------------------------------------- _info_widget_hlayout = qt_import.QHBoxLayout(self.info_widget) _info_widget_hlayout.addWidget(self.display_beam_size_cbox) _info_widget_hlayout.addWidget(self.coord_label) _info_widget_hlayout.addStretch(0) _info_widget_hlayout.addWidget(self.info_label) _info_widget_hlayout.setSpacing(0) _info_widget_hlayout.setContentsMargins(0, 0, 0, 0) self.info_widget.setLayout(_info_widget_hlayout) self.main_layout = qt_import.QVBoxLayout(self) self.main_layout.setSpacing(0) self.main_layout.setContentsMargins(0, 0, 0, 0) # Qt signal/slot connections ----------------------------------------- self.display_beam_size_cbox.stateChanged.connect(self.display_beam_size_toggled) # SizePolicies -------------------------------------------------------- self.info_widget.setSizePolicy( qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed ) # Scene elements ------------------------------------------------------ self.setMouseTracking(True)
def __init__(self, parent=None, name="char_parameter_widget"): qt_import.QWidget.__init__(self, parent) if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._char = None self._char_params = queue_model_objects.CharacterisationParameters() self._char_params_mib = DataModelInputBinder(self._char_params) self._tree_view_item = None self.previous_energy = None self.add_dc_cb = None # Graphic elements ---------------------------------------------------- main_widget = qt_import.QWidget(self) rone_widget = qt_import.QWidget(main_widget) self.reference_img_widget = ReferenceImageWidget(rone_widget) self.acq_widget = self.reference_img_widget.acq_widget self.path_widget = self.reference_img_widget.path_widget self.position_widget = qt_import.load_ui_file( "snapshot_widget_layout.ui") self.position_widget.setMinimumSize(450, 340) rtwo_widget = qt_import.QWidget(main_widget) self.char_type_widget = CharTypeWidget(rtwo_widget) self.routine_dc_widget = self.char_type_widget.routine_dc_page self.sad_widget = self.char_type_widget.sad_page self.rad_dmg_char_widget = self.char_type_widget.rad_damage_page self.opt_parameters_widget = OptimisationParametersWidgetLayout(self) rtree_widget = qt_import.QWidget(main_widget) self.rad_dmg_widget = qt_import.load_ui_file( "radiation_damage_model_widget_layout.ui") self.vertical_dimension_widget = qt_import.load_ui_file( "vertical_crystal_dimension_widget_layout.ui") # Layout -------------------------------------------------------------- rone_widget_layout = qt_import.QHBoxLayout(rone_widget) rone_widget_layout.addWidget(self.reference_img_widget) rone_widget_layout.addWidget(self.position_widget) # rone_widget_layout.addStretch(0) rone_widget_layout.setSpacing(2) rone_widget_layout.setContentsMargins(0, 0, 0, 0) rtwo_widget_layout = qt_import.QHBoxLayout(rtwo_widget) rtwo_widget_layout.addWidget(self.char_type_widget) rtwo_widget_layout.addWidget(self.opt_parameters_widget) rtwo_widget_layout.addStretch(0) rtwo_widget_layout.setSpacing(2) rtwo_widget_layout.setContentsMargins(0, 0, 0, 0) rtree_widget_layout = qt_import.QHBoxLayout(rtree_widget) rtree_widget_layout.addWidget(self.rad_dmg_widget) rtree_widget_layout.addWidget(self.vertical_dimension_widget) rtree_widget_layout.addStretch(10) rtree_widget_layout.setSpacing(2) rtree_widget_layout.setContentsMargins(0, 0, 0, 0) _main_widget_vlayout = qt_import.QVBoxLayout(main_widget) _main_widget_vlayout.addWidget(rone_widget) _main_widget_vlayout.addWidget(rtwo_widget) _main_widget_vlayout.addWidget(rtree_widget) _main_widget_vlayout.addStretch(10) _main_widget_vlayout.setSpacing(2) _main_widget_vlayout.setContentsMargins(0, 0, 0, 0) _main_hlayout = qt_import.QHBoxLayout(self) _main_hlayout.addWidget(main_widget) _main_hlayout.setSpacing(0) _main_hlayout.addStretch(0) _main_hlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies ------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.toggle_permitted_range( self.opt_parameters_widget.opt_param_widget.permitted_range_cbx. isChecked()) self.opt_parameters_widget.opt_param_widget.permitted_range_cbx.toggled.connect( self.toggle_permitted_range) # Other --------------------------------------------------------------- self._char_params_mib.bind_value_update( "min_dose", self.routine_dc_widget.dose_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "min_time", self.routine_dc_widget.time_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "use_min_dose", self.routine_dc_widget.min_dose_radio, bool, None) self._char_params_mib.bind_value_update( "use_min_time", self.routine_dc_widget.min_time_radio, bool, None) self._char_params_mib.bind_value_update( "account_rad_damage", self.routine_dc_widget.radiation_damage_cbx, bool, None, ) self._char_params_mib.bind_value_update( "auto_res", self.sad_widget.automatic_resolution_radio, bool, None) self._char_params_mib.bind_value_update( "sad_res", self.sad_widget.sad_resolution_ledit, float, qt_import.QDoubleValidator(0.5, 20, 3, self), ) self._char_params_mib.bind_value_update( "opt_sad", self.sad_widget.optimised_sad_cbx, bool, None) self._char_params_mib.bind_value_update( "determine_rad_params", self.rad_dmg_char_widget.rad_damage_cbx, bool, None) self._char_params_mib.bind_value_update( "burn_osc_start", self.rad_dmg_char_widget.burn_osc_start_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "burn_osc_interval", self.rad_dmg_char_widget.burn_osc_interval_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "use_aimed_resolution", self.opt_parameters_widget.opt_param_widget.maximum_res_cbx, bool, None, ) self._char_params_mib.bind_value_update( "use_aimed_multiplicity", self.opt_parameters_widget.opt_param_widget.aimed_mult_cbx, bool, None, ) self._char_params_mib.bind_value_update( "aimed_resolution", self.opt_parameters_widget.opt_param_widget.maximum_res_ledit, float, qt_import.QDoubleValidator(0.01, 1000, 2, self), ) self._char_params_mib.bind_value_update( "aimed_multiplicity", self.opt_parameters_widget.opt_param_widget.aimed_mult_ledit, float, qt_import.QDoubleValidator(0.01, 1000, 2, self), ) self._char_params_mib.bind_value_update( "aimed_i_sigma", self.opt_parameters_widget.opt_param_widget.i_over_sigma_ledit, float, qt_import.QDoubleValidator(0.01, 1000, 2, self), ) self._char_params_mib.bind_value_update( "aimed_completness", self.opt_parameters_widget.opt_param_widget.aimed_comp_ledit, float, qt_import.QDoubleValidator(0.01, 1000, 2, self), ) self._char_params_mib.bind_value_update( "strategy_complexity", self.opt_parameters_widget.opt_param_widget.start_comp_cbox, int, None, ) self._char_params_mib.bind_value_update( "use_permitted_rotation", self.opt_parameters_widget.opt_param_widget.permitted_range_cbx, bool, None, ) self._char_params_mib.bind_value_update( "permitted_phi_start", self.opt_parameters_widget.opt_param_widget.phi_start_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "permitted_phi_end", self.opt_parameters_widget.opt_param_widget.phi_end_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "low_res_pass_strat", self.opt_parameters_widget.opt_param_widget.low_res_pass_cbx, bool, None, ) self._char_params_mib.bind_value_update( "rad_suscept", self.rad_dmg_widget.sensetivity_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "beta", self.rad_dmg_widget.beta_over_gray_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "gamma", self.rad_dmg_widget.gamma_over_gray_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "max_crystal_vdim", self.vertical_dimension_widget.max_vdim_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "min_crystal_vdim", self.vertical_dimension_widget.min_vdim_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "min_crystal_vphi", self.vertical_dimension_widget.min_vphi_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) self._char_params_mib.bind_value_update( "max_crystal_vphi", self.vertical_dimension_widget.max_vphi_ledit, float, qt_import.QDoubleValidator(0.0, 1000, 2, self), ) # self._char_params_mib.bind_value_update('space_group', # self.vertical_dimension_widget.space_group_ledit, # str, # None) self.vertical_dimension_widget.space_group_ledit.addItems( queue_model_enumerables.XTAL_SPACEGROUPS) self.char_type_widget.charact_type_tbox.currentChanged.connect( self.update_char_type) self.rad_dmg_char_widget.rad_damage_cbx.toggled.connect( self.enable_opt_parameters_widget) self.opt_parameters_widget.opt_param_widget.maximum_res_cbx.toggled.connect( self.enable_maximum_res_ledit) self.opt_parameters_widget.opt_param_widget.aimed_mult_cbx.toggled.connect( self.enable_aimed_mult_ledit) self.path_widget.data_path_layout.prefix_ledit.textChanged.connect( self._prefix_ledit_change) self.path_widget.data_path_layout.run_number_ledit.textChanged.connect( self._run_number_ledit_change) self.vertical_dimension_widget.space_group_ledit.activated.connect( self._space_group_change)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- # Internal values ----------------------------------------------------- self.axis_camera = None self.sc_camera = None # Properties ---------------------------------------------------------- self.add_property("hwobj_axis_camera", "string", "") self.add_property("hwobj_sc_camera", "string", "") # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- status_widget = qt_import.QWidget(self) status_label = qt_import.QLabel("Status: ", status_widget) self.status_ledit = qt_import.QLineEdit(status_widget) self.camera_live_cbx = qt_import.QCheckBox("Live view", self) self.camera_live_cbx.setChecked(False) self.progress_bar = qt_import.QProgressBar(self) self.progress_bar.setMinimum(0) camera_widget = qt_import.QWidget(self) self.axis_view = qt_import.QGraphicsView(camera_widget) axis_scene = qt_import.QGraphicsScene(self.axis_view) self.axis_view.setScene(axis_scene) self.axis_camera_pixmap_item = qt_import.QGraphicsPixmapItem() axis_scene.addItem(self.axis_camera_pixmap_item) self.sc_view = qt_import.QGraphicsView(camera_widget) sc_scene = qt_import.QGraphicsScene(self.sc_view) self.sc_view.setScene(sc_scene) self.sc_camera_pixmap_item = qt_import.QGraphicsPixmapItem() sc_scene.addItem(self.sc_camera_pixmap_item) # Layout -------------------------------------------------------------- _status_widget_hlayout = qt_import.QHBoxLayout(status_widget) _status_widget_hlayout.addWidget(status_label) _status_widget_hlayout.addWidget(self.status_ledit) _camera_widget_hlayout = qt_import.QHBoxLayout(camera_widget) _camera_widget_hlayout.addWidget(self.axis_view) _camera_widget_hlayout.addWidget(self.sc_view) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(status_widget) _main_vlayout.addWidget(self.camera_live_cbx) _main_vlayout.addWidget(camera_widget) _main_vlayout.addWidget(self.progress_bar) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.camera_live_cbx.stateChanged.connect( self.camera_live_state_changed) if HWR.beamline.sample_changer is not None: self.connect( HWR.beamline.sample_changer, SampleChanger.STATUS_CHANGED_EVENT, self.sample_changer_status_changed, ) self.connect(HWR.beamline.sample_changer, "progressInit", self.init_progress) self.connect(HWR.beamline.sample_changer, "progressStep", self.step_progress) self.connect(HWR.beamline.sample_changer, "progressStop", self.stop_progress)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Internal variables ------------------------------------------------ self.sample = queue_model_objects.Sample() self.crystal = self.sample.crystals[0] self.sample_mib = DataModelInputBinder(self.sample) self.crystal_mib = DataModelInputBinder(self.crystal) # Signals ------------------------------------------------------------ # Slots -------------------------------------------------------------- self.define_slot("populate_sample_details", ({})) # Graphic elements ---------------------------------------------------- _info_widget = qt_import.QWidget(self) self.crystal_widget = qt_import.load_ui_file("crystal_widget_layout.ui") self.sample_info_widget = qt_import.load_ui_file("sample_info_widget_layout.ui") # self.ispyb_sample_info_widget = ISPyBSampleInfoWidget(self) # Layout -------------------------------------------------------------- _info_widget_hlayout = qt_import.QHBoxLayout(_info_widget) _info_widget_hlayout.addWidget(self.sample_info_widget) _info_widget_hlayout.addWidget(self.crystal_widget) _info_widget_hlayout.addStretch(0) _info_widget_hlayout.setSpacing(0) _info_widget_hlayout.setContentsMargins(2, 2, 2, 2) _main_hlayout = qt_import.QVBoxLayout(self) _main_hlayout.addWidget(_info_widget) # _main_hlayout.addWidget(self.ispyb_sample_info_widget) _main_hlayout.addStretch(0) _main_hlayout.setSpacing(0) _main_hlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ # Other --------------------------------------------------------------- self.crystal_mib.bind_value_update( "space_group", self.crystal_widget.space_group_value_label, str, None ) self.crystal_mib.bind_value_update( "protein_acronym", self.crystal_widget.protein_acronym_value_label, str, None, ) self.crystal_mib.bind_value_update( "cell_a", self.crystal_widget.a_value_label, str, None ) self.crystal_mib.bind_value_update( "cell_alpha", self.crystal_widget.alpha_value_label, str, None ) self.crystal_mib.bind_value_update( "cell_b", self.crystal_widget.b_value_label, str, None ) self.crystal_mib.bind_value_update( "cell_beta", self.crystal_widget.beta_value_label, str, None ) self.crystal_mib.bind_value_update( "cell_c", self.crystal_widget.c_value_label, str, None ) self.crystal_mib.bind_value_update( "cell_gamma", self.crystal_widget.gamma_value_label, str, None ) self.sample_mib.bind_value_update( "name", self.sample_info_widget.name_value_label, str, None ) self.sample_mib.bind_value_update( "code", self.sample_info_widget.data_matrix_value_label, str, None ) self.sample_mib.bind_value_update( "holder_length", self.sample_info_widget.holder_length_value_label, str, None, ) self.sample_mib.bind_value_update( "lims_sample_location", self.sample_info_widget.sample_location_value_label, str, None, ) self.sample_mib.bind_value_update( "lims_container_location", self.sample_info_widget.basket_location_value_label, str, None, )
def __init__(self, *args): BaseWidget.__init__(self, *args) # Internal values ----------------------------------------------------- self.resolution_limits = None self.detector_distance_limits = None self.door_interlocked = True # Properties ---------------------------------------------------------- self.add_property("defaultMode", "combo", ("Ang", "mm"), "Ang") self.add_property("mmFormatString", "formatString", "###.##") self.add_property("angFormatString", "formatString", "##.###") self.group_box = qt_import.QGroupBox("Resolution", self) current_label = qt_import.QLabel("Current:", self.group_box) current_label.setFixedWidth(75) self.resolution_ledit = qt_import.QLineEdit(self.group_box) self.resolution_ledit.setReadOnly(True) self.detector_distance_ledit = qt_import.QLineEdit(self.group_box) self.detector_distance_ledit.setReadOnly(True) _new_value_widget = qt_import.QWidget(self) set_to_label = qt_import.QLabel("Set to:", self.group_box) self.new_value_ledit = qt_import.QLineEdit(self.group_box) self.units_combobox = qt_import.QComboBox(_new_value_widget) self.stop_button = qt_import.QPushButton(_new_value_widget) self.stop_button.setIcon(icons.load_icon("Stop2")) self.stop_button.setEnabled(False) self.stop_button.setFixedWidth(25) # Layout -------------------------------------------------------------- _new_value_widget_hlayout = qt_import.QHBoxLayout(_new_value_widget) _new_value_widget_hlayout.addWidget(self.new_value_ledit) _new_value_widget_hlayout.addWidget(self.units_combobox) _new_value_widget_hlayout.addWidget(self.stop_button) _new_value_widget_hlayout.setSpacing(0) _new_value_widget_hlayout.setContentsMargins(0, 0, 0, 0) _group_box_gridlayout = qt_import.QGridLayout(self.group_box) _group_box_gridlayout.addWidget(current_label, 0, 0, 2, 1) _group_box_gridlayout.addWidget(self.resolution_ledit, 0, 1) _group_box_gridlayout.addWidget(self.detector_distance_ledit, 1, 1) _group_box_gridlayout.addWidget(set_to_label, 2, 0) _group_box_gridlayout.addWidget(_new_value_widget, 2, 1) _group_box_gridlayout.setSpacing(0) _group_box_gridlayout.setContentsMargins(1, 1, 1, 1) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 2, 2) _main_vlayout.addWidget(self.group_box) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.new_value_ledit.returnPressed.connect(self.current_value_changed) self.new_value_ledit.textChanged.connect(self.input_field_changed) self.units_combobox.activated.connect(self.unit_changed) self.stop_button.clicked.connect(self.stop_clicked) # Other --------------------------------------------------------------- colors.set_widget_color(self.new_value_ledit, colors.LINE_EDIT_ACTIVE, qt_import.QPalette.Base) self.new_value_validator = qt_import.QDoubleValidator( 0, 15, 4, self.new_value_ledit) self.units_combobox.addItem(chr(197)) self.units_combobox.addItem("mm") self.instance_synchronize( "group_box", "resolution_ledit", "detector_distance_ledit", "new_value_ledit", "units_combobox", )
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.crl_hwobj = None # Internal values ----------------------------------------------------- self.crl_value = [] # Properties ---------------------------------------------------------- self.add_property("lenseCount", "integer", 6) self.add_property("mnemonic", "string", "") self.add_property("formatString", "formatString", "#.#") self.add_property("caption", "string", "") self.add_property( "style", "combo", ("table", "number"), "table" ) # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- self.main_gbox = qt_import.QGroupBox("CRL", self) self.mode_combo = qt_import.QComboBox(self.main_gbox) self.set_according_to_energy_button = qt_import.QPushButton( "Set", self.main_gbox) self.set_out_button = qt_import.QPushButton("Out", self.main_gbox) # self.align_beam_button = qt_import.QtGui.QPushButton("Align", self.main_gbox) self.crl_widget = qt_import.QWidget(self.main_gbox) self.crl_value_table = qt_import.QTableWidget(self.crl_widget) self.crl_lense_spinbox = qt_import.QSpinBox(self.crl_widget) self.crl_lense_in_button = qt_import.QPushButton("In", self.crl_widget) self.crl_lense_out_button = qt_import.QPushButton("Out", self.crl_widget) self.move_up_button = qt_import.QPushButton("", self.main_gbox) self.move_down_button = qt_import.QPushButton("", self.main_gbox) # Layout -------------------------------------------------------------- _crl_widget_hlayout = qt_import.QHBoxLayout(self.crl_widget) _crl_widget_hlayout.addWidget(self.crl_value_table) _crl_widget_hlayout.addWidget(self.crl_lense_spinbox) _crl_widget_hlayout.addWidget(self.crl_lense_in_button) _crl_widget_hlayout.addWidget(self.crl_lense_out_button) _crl_widget_hlayout.setSpacing(2) _crl_widget_hlayout.setContentsMargins(0, 0, 0, 0) _main_gbox_gridlayout = qt_import.QGridLayout(self.main_gbox) _main_gbox_gridlayout.addWidget(self.mode_combo, 0, 0) _main_gbox_gridlayout.addWidget(self.set_according_to_energy_button, 0, 1) _main_gbox_gridlayout.addWidget(self.set_out_button, 1, 1) _main_gbox_gridlayout.addWidget(self.crl_widget, 1, 0) # _main_gbox_gridlayout.addWidget(self.align_beam_button, 1, 1) _main_gbox_gridlayout.addWidget(self.move_up_button, 0, 2) _main_gbox_gridlayout.addWidget(self.move_down_button, 1, 2) _main_gbox_gridlayout.setSpacing(2) _main_gbox_gridlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.main_gbox) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.mode_combo.activated.connect(self.set_crl_mode) self.crl_value_table.itemDoubleClicked.connect( self.crl_table_item_doubleclicked ) self.set_according_to_energy_button.clicked.connect( self.set_according_to_energy ) self.set_out_button.clicked.connect(self.set_out_clicked) self.move_up_button.clicked.connect(self.move_up_clicked) self.move_down_button.clicked.connect(self.move_down_clicked) # Other --------------------------------------------------------------- self.mode_combo.setCurrentIndex(1) self.crl_value_table.setRowCount(1) self.crl_value_table.verticalHeader().hide() self.crl_value_table.horizontalHeader().hide() self.crl_value_table.setRowHeight(0, 20) self.crl_value_table.setFixedHeight(24) self.crl_value_table.setShowGrid(True) # self.set_according_to_energy_button.setIcon(icons.load_icon("Up2")) # self.set_out_button.setIcon(icons.load_icon("Up2")) self.move_up_button.setIcon(icons.load_icon("Up2")) self.move_up_button.setFixedWidth(25) self.move_down_button.setIcon(icons.load_icon("Down2")) self.move_down_button.setFixedWidth(25) self.set_according_to_energy_button.setFixedWidth(30) self.set_out_button.setFixedWidth(30) self.crl_lense_in_button.setFixedWidth(30) self.crl_lense_out_button.setFixedWidth(30)
def __init__(self, configuration): qt_import.QDialog.__init__(self, None) # Internal values ----------------------------------------------------- self.has_changed = None self.configuration = configuration self.signalling_child_dict = {} self.receiving_child_dict = {} self.connecting_child_dict = {} # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- main_splitter = qt_import.QSplitter(qt_import.Qt.Vertical, self) top_panel = qt_import.QWidget(main_splitter) bot_panel = qt_import.QWidget(main_splitter) emitter_panel = qt_import.QWidget(top_panel) self.emitter_windows_listwidget = qt_import.QListWidget(emitter_panel) self.emitter_objects_listwidget = qt_import.QListWidget(emitter_panel) self.emitter_signals_listwidget = qt_import.QListWidget(emitter_panel) self.emitter_objects_listwidget.setSortingEnabled(True) self.emitter_signals_listwidget.setSortingEnabled(True) receiver_panel = qt_import.QWidget(top_panel) self.receiver_windows_listwidget = qt_import.QListWidget(emitter_panel) self.receiver_objects_listwidget = qt_import.QListWidget(emitter_panel) self.receiver_slots_listwidget = qt_import.QListWidget(emitter_panel) self.receiver_objects_listwidget.setSortingEnabled(True) self.receiver_slots_listwidget.setSortingEnabled(True) self.add_connection_button = qt_import.QPushButton( "Add connection", self) self.connections_treewidget = qt_import.QTreeWidget(bot_panel) button_panel = qt_import.QWidget(bot_panel) self.remove_connection_button = qt_import.QPushButton( "Remove connection", button_panel) self.ok_button = qt_import.QPushButton("OK", button_panel) self.cancel_button = qt_import.QPushButton("Cancel", button_panel) # Layout -------------------------------------------------------------- emitter_panel_layout = qt_import.QGridLayout(emitter_panel) emitter_panel_layout.addWidget( qt_import.QLabel("<h3>Emitters</h3>", self), 0, 1, qt_import.Qt.AlignHCenter) emitter_panel_layout.addWidget(qt_import.QLabel("Windows", self), 1, 0) emitter_panel_layout.addWidget(qt_import.QLabel("Objects", self), 1, 1) emitter_panel_layout.addWidget(qt_import.QLabel("Signals", self), 1, 2) emitter_panel_layout.addWidget(self.emitter_windows_listwidget, 2, 0) emitter_panel_layout.addWidget(self.emitter_objects_listwidget, 2, 1) emitter_panel_layout.addWidget(self.emitter_signals_listwidget, 2, 2) receiver_panel_layout = qt_import.QGridLayout(receiver_panel) receiver_panel_layout.addWidget( qt_import.QLabel("<h3>Receivers</h3>", self), 0, 1, qt_import.Qt.AlignHCenter) receiver_panel_layout.addWidget(qt_import.QLabel("Windows", self), 1, 0) receiver_panel_layout.addWidget(qt_import.QLabel("Objects", self), 1, 1) receiver_panel_layout.addWidget(qt_import.QLabel("Slots", self), 1, 2) receiver_panel_layout.addWidget(self.receiver_windows_listwidget, 2, 0) receiver_panel_layout.addWidget(self.receiver_objects_listwidget, 2, 1) receiver_panel_layout.addWidget(self.receiver_slots_listwidget, 2, 2) top_panel_layout = qt_import.QHBoxLayout(top_panel) top_panel_layout.addWidget(emitter_panel) top_panel_layout.addWidget(receiver_panel) top_panel_layout.addWidget(self.add_connection_button) top_panel_layout.setSpacing(0) top_panel_layout.setContentsMargins(0, 0, 0, 0) button_panel_layout = qt_import.QHBoxLayout(button_panel) button_panel_layout.addWidget(self.remove_connection_button) button_panel_layout.addStretch(0) button_panel_layout.addWidget(self.ok_button, qt_import.Qt.AlignRight) button_panel_layout.addWidget(self.cancel_button, qt_import.Qt.AlignRight) bot_panel_vlayout = qt_import.QVBoxLayout(bot_panel) bot_panel_vlayout.addWidget( qt_import.QLabel("<h3>Established connections</h3>", bot_panel)) bot_panel_vlayout.addWidget(self.connections_treewidget) bot_panel_vlayout.addWidget(button_panel) main_splitter_vbox = qt_import.QVBoxLayout(main_splitter) main_splitter_vbox.addWidget(top_panel) main_splitter_vbox.addWidget(bot_panel) main_splitter_vbox.setSpacing(5) main_splitter_vbox.setContentsMargins(2, 2, 2, 2) main_layout = qt_import.QVBoxLayout(self) main_layout.addWidget(main_splitter) # SizePolicies -------------------------------------------------------- self.add_connection_button.setSizePolicy(qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed) self.remove_connection_button.setSizePolicy( qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed) self.ok_button.setSizePolicy(qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed) self.cancel_button.setSizePolicy(qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed) self.connections_treewidget.setSizePolicy( qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Expanding) # Qt signal/slot connections ------------------------------------------ self.emitter_windows_listwidget.currentItemChanged.connect( self.emitter_window_changed) self.emitter_objects_listwidget.currentItemChanged.connect( self.emitter_object_changed) self.receiver_windows_listwidget.currentItemChanged.connect( self.receiver_window_changed) self.receiver_objects_listwidget.currentItemChanged.connect( self.receiver_object_changed) self.add_connection_button.clicked.connect( self.add_connection_button_clicked) self.remove_connection_button.clicked.connect( self.remove_connection_button_clicked) self.ok_button.clicked.connect(self.ok_button_clicked) self.cancel_button.clicked.connect(self.cancel_button_clicked) self.connections_treewidget.itemSelectionChanged.connect( self.connections_treewidget_selection_changed) # Other --------------------------------------------------------------- self.connections_treewidget.setColumnCount(7) self.connections_treewidget.setHeaderLabels([ "", "Emitter window", "Emitter object", "Signal", "Receiver window", "Receiver object", "Slot", ]) self.setWindowTitle("Connection Editor") self.connections_treewidget.setSortingEnabled(True)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Properties ---------------------------------------------------------- self.add_property("defaultMode", "combo", ("keV", "Ang"), "keV") self.add_property("kevFormatString", "formatString", "##.####") self.add_property("angFormatString", "formatString", "##.####") self.add_property("displayStatus", "boolean", False) self.add_property("doBeamAlignment", "boolean", False) # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Hardware objects ---------------------------------------------------- # Internal values ----------------------------------------------------- # Graphic elements ---------------------------------------------------- self.group_box = qt_import.QGroupBox("Energy", self) energy_label = qt_import.QLabel("Current:", self.group_box) energy_label.setFixedWidth(75) wavelength_label = qt_import.QLabel("Wavelength: ", self.group_box) self.energy_ledit = qt_import.QLineEdit(self.group_box) self.energy_ledit.setReadOnly(True) self.wavelength_ledit = qt_import.QLineEdit(self.group_box) self.wavelength_ledit.setReadOnly(True) self.status_label = qt_import.QLabel("Status:", self.group_box) self.status_label.setEnabled(False) self.status_ledit = qt_import.QLineEdit(self.group_box) self.status_ledit.setEnabled(False) self.new_value_widget = qt_import.QWidget(self) self.set_to_label = qt_import.QLabel("Set to: ", self) self.new_value_ledit = qt_import.QLineEdit(self.new_value_widget) # self.new_value_ledit.setMaximumWidth(60) self.units_combobox = qt_import.QComboBox(self.new_value_widget) self.units_combobox.addItems(["keV", u"\u212B"]) self.stop_button = qt_import.QPushButton(self.new_value_widget) self.stop_button.setIcon(icons.load_icon("Stop2")) self.stop_button.setEnabled(False) self.stop_button.setFixedWidth(25) self.beam_align_cbox = qt_import.QCheckBox( "Center beam after energy change", self) # Layout -------------------------------------------------------------- _new_value_widget_hlayout = qt_import.QHBoxLayout( self.new_value_widget) _new_value_widget_hlayout.addWidget(self.new_value_ledit) _new_value_widget_hlayout.addWidget(self.units_combobox) _new_value_widget_hlayout.addWidget(self.stop_button) _new_value_widget_hlayout.setSpacing(0) _new_value_widget_hlayout.setContentsMargins(0, 0, 0, 0) _group_box_gridlayout = qt_import.QGridLayout(self.group_box) _group_box_gridlayout.addWidget(energy_label, 0, 0) _group_box_gridlayout.addWidget(self.energy_ledit, 0, 1) _group_box_gridlayout.addWidget(wavelength_label, 1, 0) _group_box_gridlayout.addWidget(self.wavelength_ledit, 1, 1) _group_box_gridlayout.addWidget(self.status_label, 2, 0) _group_box_gridlayout.addWidget(self.status_ledit, 2, 1) _group_box_gridlayout.addWidget(self.set_to_label, 3, 0) _group_box_gridlayout.addWidget(self.new_value_widget, 3, 1) _group_box_gridlayout.addWidget(self.beam_align_cbox, 4, 0, 1, 2) _group_box_gridlayout.setSpacing(0) _group_box_gridlayout.setContentsMargins(1, 1, 1, 1) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 2, 2) _main_vlayout.addWidget(self.group_box) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.new_value_ledit.returnPressed.connect(self.current_value_changed) self.new_value_ledit.textChanged.connect(self.input_field_changed) self.units_combobox.activated.connect(self.units_changed) self.stop_button.clicked.connect(self.stop_clicked) self.beam_align_cbox.stateChanged.connect(self.do_beam_align_changed) # Other --------------------------------------------------------------- # self.group_box.setCheckable(True) # self.group_box.setChecked(True) self.new_value_validator = qt_import.QDoubleValidator( 0, 15, 4, self.new_value_ledit) self.status_ledit.setEnabled(False) self.set_new_value_limits() self.connect(HWR.beamline.energy, "energyChanged", self.energy_changed) self.connect(HWR.beamline.energy, "stateChanged", self.state_changed) self.connect(HWR.beamline.energy, "statusInfoChanged", self.status_info_changed) if hasattr(HWR.beamline.energy, "set_do_beam_alignment"): HWR.beamline.energy.set_do_beam_alignment(self["doBeamAlignment"]) if HWR.beamline.energy.is_ready(): tunable_energy = HWR.beamline.energy.is_tunable if tunable_energy is None: tunable_energy = False self.set_to_label.setEnabled(tunable_energy) self.new_value_ledit.setEnabled(tunable_energy) self.units_combobox.setEnabled(tunable_energy) if tunable_energy: colors.set_widget_color(self.new_value_ledit, colors.LINE_EDIT_ACTIVE, qt_import.QPalette.Base) else: self.setEnabled(False) self.instance_synchronize("energy_ledit", "new_value_ledit")
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- # Internal values ----------------------------------------------------- self.current_chip_config = None self.info_dict = { "collect_grid_cell": -1, "collect_comp_cell": -1, "processing_grid_cell": -1, "processing_comp_cell": -1 } self.params_dict = None self.results = None self.collect_frame_num = 0 self.processing_frame_num = 0 self.score_type = "score" self.score_type_list = ("score", "spots_resolution", "spots_num") self.grid_table_item_fixed = False self.comp_table_item_fixed = False # Properties ---------------------------------------------------------- self.add_property("cell_size", "integer", 22) # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- self.grid_widget = qt_import.QWidget(self) self.grid_table = qt_import.QTableWidget(self.grid_widget) self.grid_cell_label = qt_import.QLabel("Selected grid cell: A1", self.grid_widget) self.chip_config_combo = qt_import.QComboBox(self) self.inverted_rows_cbox = qt_import.QCheckBox("Inverted rows", self.grid_widget) self.image_tracking_cbox = qt_import.QCheckBox("Live update", self.grid_widget) self.score_type_combo = qt_import.QComboBox(self.grid_widget) self.show_grid_dialog_button = qt_import.QPushButton( "Full grid view", self.grid_widget) self.comp_widget = qt_import.QWidget(self) self.comp_cell_label = qt_import.QLabel( "Selected compartment cell: A1", self.comp_widget) self.comp_table = qt_import.QTableWidget(self.comp_widget) self.hit_map_plot = PlotWidget(self.comp_widget) self.grid_dialog = qt_import.QDialog(self) self.grid_graphics_view = GraphicsView() self.grid_graphics_base = GridViewGraphicsItem() self.grid_graphics_overlay = GridViewOverlayItem() # self.grid_graphics_view.scene().setSceneRect(0, 0, 2000, 2000) self.grid_graphics_view.scene().addItem(self.grid_graphics_base) self.grid_graphics_view.scene().addItem(self.grid_graphics_overlay) self.save_grid_view_button = qt_import.QPushButton( "Save", self.grid_dialog) self.save_grid_view_button.setFixedWidth(100) # Layout -------------------------------------------------------------- _grid_vlayout = qt_import.QVBoxLayout(self.grid_widget) _grid_vlayout.addWidget(self.grid_cell_label) _grid_vlayout.addWidget(self.grid_table) _grid_vlayout.addStretch() _grid_vlayout.addWidget(self.chip_config_combo) _grid_vlayout.addWidget(self.inverted_rows_cbox) _grid_vlayout.addWidget(self.image_tracking_cbox) _grid_vlayout.addWidget(self.score_type_combo) _grid_vlayout.addWidget(self.show_grid_dialog_button) _grid_vlayout.setSpacing(2) _grid_vlayout.setContentsMargins(2, 2, 2, 2) _comp_vlayout = qt_import.QVBoxLayout(self.comp_widget) _comp_vlayout.addWidget(self.comp_cell_label) _comp_vlayout.addWidget(self.comp_table) _comp_vlayout.addWidget(self.hit_map_plot) _comp_vlayout.setSpacing(2) _comp_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout = qt_import.QHBoxLayout(self) _main_vlayout.addWidget(self.grid_widget) _main_vlayout.addWidget(self.comp_widget) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_grid_dialog_vlayout = qt_import.QVBoxLayout(self.grid_dialog) _main_grid_dialog_vlayout.addWidget(self.grid_graphics_view) _main_grid_dialog_vlayout.addWidget(self.save_grid_view_button) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.grid_table.cellClicked.connect(self.grid_cell_clicked) self.grid_table.cellEntered.connect(self.grid_cell_entered) self.comp_table.cellClicked.connect(self.comp_cell_clicked) self.comp_table.cellEntered.connect(self.comp_cell_entered) self.chip_config_combo.activated.connect( self.grid_properties_combo_changed) self.score_type_combo.activated.connect(self.score_type_changed) self.show_grid_dialog_button.clicked.connect(self.show_grid_dialog) self.hit_map_plot.mouseMovedSignal.connect(self.hit_map_mouse_moved) self.grid_graphics_view.mouseMovedSignal.connect( self.grid_view_mouse_moved) self.save_grid_view_button.clicked.connect(self.save_grid_view) # Other --------------------------------------------------------------- self.grid_table.setEditTriggers( qt_import.QAbstractItemView.NoEditTriggers) self.grid_table.setHorizontalScrollBarPolicy( qt_import.Qt.ScrollBarAlwaysOff) self.grid_table.setVerticalScrollBarPolicy( qt_import.Qt.ScrollBarAlwaysOff) self.grid_table.setMouseTracking(True) self.comp_table.setEditTriggers( qt_import.QAbstractItemView.NoEditTriggers) self.comp_table.setHorizontalScrollBarPolicy( qt_import.Qt.ScrollBarAlwaysOff) self.comp_table.setVerticalScrollBarPolicy( qt_import.Qt.ScrollBarAlwaysOff) self.comp_table.setMouseTracking(True) for score_type in ("Score", "Resolution", "Number of spots"): self.score_type_combo.addItem(score_type) HWR.beamline.online_processing.connect("processingStarted", self.processing_started) HWR.beamline.online_processing.connect("processingFinished", self.processing_finished) HWR.beamline.online_processing.connect("processingFailed", self.processing_failed) HWR.beamline.online_processing.connect("processingFrame", self.processing_frame_changed) self.current_grid_properties = ( HWR.beamline.online_processing.get_current_grid_properties()) self.grid_properties_combo.blockSignals(True) for prop in HWR.beamline.online_processing.get_available_grid_properties( ): self.grid_properties_combo.addItem(str(prop)) self.grid_properties_combo.setCurrentIndex(0) self.grid_properties_combo.blockSignals(False) self.init_gui() self.grid_graphics_base.init_item(self.current_chip_config) self.grid_graphics_overlay.init_item(self.current_chip_config)
def __init__(self, parent=None, name="task_toolbox"): qt_import.QWidget.__init__(self, parent) self.setObjectName = name # Internal variables -------------------------------------------------- self.tree_brick = None self.previous_page_index = 0 self.is_running = None self.path_conflict = False self.acq_conflict = False self.enable_collect = False self.create_task_widgets = {} # Graphic elements ---------------------------------------------------- self.method_label = qt_import.QLabel("Collection method", self) self.method_label.setAlignment(qt_import.Qt.AlignCenter) self.tool_box = qt_import.QToolBox(self) self.tool_box.setObjectName("tool_box") # self.tool_box.setFixedWidth(600) self.discrete_page = CreateDiscreteWidget(self.tool_box, "Discrete") self.char_page = CreateCharWidget(self.tool_box, "Characterise") self.helical_page = CreateHelicalWidget(self.tool_box, "helical_page") self.energy_scan_page = CreateEnergyScanWidget(self.tool_box, "energy_scan") self.xrf_spectrum_page = CreateXRFSpectrumWidget( self.tool_box, "xrf_spectrum") if HWR.beamline.gphl_workflow is not None: self.gphl_workflow_page = CreateGphlWorkflowWidget( self.tool_box, "gphl_workflow") else: self.gphl_workflow_page = None self.advanced_page = CreateAdvancedWidget(self.tool_box, "advanced_scan") self.xray_imaging_page = CreateXrayImagingWidget( self.tool_box, "xray_imaging") self.ssx_page = CreateSsxWidget(self.tool_box, "ssx") self.tool_box.addItem(self.discrete_page, "Standard Collection") self.tool_box.addItem(self.char_page, "Characterisation") self.tool_box.addItem(self.helical_page, "Helical Collection") self.tool_box.addItem(self.energy_scan_page, "Energy Scan") self.tool_box.addItem(self.xrf_spectrum_page, "XRF Spectrum") if self.gphl_workflow_page is not None: self.tool_box.addItem(self.gphl_workflow_page, "GPhL Workflows") self.tool_box.addItem(self.advanced_page, "Advanced") self.tool_box.addItem(self.xray_imaging_page, "Xray Imaging") self.tool_box.addItem(self.ssx_page, "SSX") self.button_box = qt_import.QWidget(self) self.create_task_button = qt_import.QPushButton( " Add to queue", self.button_box) self.create_task_button.setIcon(icons.load_icon("add_row.png")) msg = "Add the collection method to the selected sample" self.create_task_button.setToolTip(msg) self.create_task_button.setEnabled(False) self.collect_now_button = qt_import.QPushButton( "Collect Now", self.button_box) self.collect_now_button.setIcon(icons.load_icon("VCRPlay2.png")) self.collect_now_button.setToolTip( "Add the collection method to the queue and execute it") self.comments_widget = CommentsWidget(self) self.comments_widget.setFixedHeight(100) # Layout -------------------------------------------------------------- _button_box_hlayout = qt_import.QHBoxLayout(self.button_box) _button_box_hlayout.addWidget(self.collect_now_button) _button_box_hlayout.addStretch(0) _button_box_hlayout.addWidget(self.create_task_button) _button_box_hlayout.setSpacing(0) _button_box_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.method_label) _main_vlayout.addWidget(self.tool_box) _main_vlayout.addWidget(self.comments_widget) _main_vlayout.addWidget(self.button_box) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # self.setSizePolicy(QSizePolicy.Expanding, # QSizePolicy.Expanding) # Qt signal/slot connections ------------------------------------------ self.create_task_button.clicked.connect(self.create_task_button_click) self.collect_now_button.clicked.connect(self.collect_now_button_click) self.tool_box.currentChanged.connect(self.current_page_changed) for i in range(0, self.tool_box.count()): self.tool_box.widget(i).acqParametersConflictSignal.connect( self.acq_parameters_conflict_changed) self.tool_box.widget(i).pathTempleConflictSignal.connect( self.path_template_conflict_changed) # Other --------------------------------------------------------------- in_plate_mode = HWR.beamline.diffractometer.in_plate_mode() if (HWR.beamline.energy_scan is None or in_plate_mode or not HWR.beamline.tunable_wavelength): self.hide_task(self.energy_scan_page) logging.getLogger("HWR").info("Energy scan task not available") if HWR.beamline.xrf_spectrum is None or in_plate_mode: self.hide_task(self.xrf_spectrum_page) logging.getLogger("HWR").info("XRF spectrum task not available") if not HWR.beamline.imaging or in_plate_mode: self.hide_task(self.xray_imaging_page) logging.getLogger("HWR").info("Xray Imaging task not available") if HWR.beamline.gphl_connection and HWR.beamline.gphl_workflow: self.gphl_workflow_page.initialise_workflows() else: logging.getLogger("HWR").info("GPhL workflow task not available")
def __init__(self, parent=None, name=None, fl=0, xray_imaging_params=None): qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(fl)) if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.current_image_num = 0 self.total_image_num = 0 # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- results_gbox = qt_import.QGroupBox("Results", self) self.graphics_view_widget = qt_import.QWidget(results_gbox) self.results_widget = qt_import.load_ui_file( "xray_imaging_results_widget_layout.ui" ) tools_widget = qt_import.QGroupBox(self) button_widget = qt_import.QWidget(self) self.start_centering_button = qt_import.QPushButton( icons.load_icon("VCRPlay2"), "3 Click", tools_widget ) self.start_n_centering_button = qt_import.QPushButton( icons.load_icon("VCRPlay"), "n Click", tools_widget ) self.accept_centering_button = qt_import.QPushButton( icons.load_icon("ThumbUp"), "Save", tools_widget ) self.histogram_plot = PlotWidget(self) self.popup_menu = qt_import.QMenu(self) self.popup_menu.menuAction().setIconVisibleInMenu(True) self.popup_menu.addAction( icons.load_icon("VCRPlay2"), "Start 3-click centering", start_centering_clicked, ) self.popup_menu.addAction( icons.load_icon("VCRPlay"), "Start n-click centering", start_n_centering_clicked, ) self.popup_menu.addAction( icons.load_icon("ThumbUp"), "Create centering point", self.accept_centering_clicked, ) self.popup_menu.addSeparator() self.measure_distance_action = self.popup_menu.addAction( icons.load_icon("measure_distance"), "Distance and histogram", measure_distance_clicked, ) # Layout -------------------------------------------------------------- self._graphics_view_widget_vlayout = qt_import.QVBoxLayout( self.graphics_view_widget ) self._graphics_view_widget_vlayout.setSpacing(0) self._graphics_view_widget_vlayout.setContentsMargins(0, 0, 0, 0) __button_widget_hlayout = qt_import.QHBoxLayout(button_widget) __button_widget_hlayout.addWidget(self.start_centering_button) __button_widget_hlayout.addWidget(self.start_n_centering_button) __button_widget_hlayout.addWidget(self.accept_centering_button) __button_widget_hlayout.addStretch() __button_widget_hlayout.setSpacing(2) __button_widget_hlayout.setContentsMargins(2, 2, 2, 2) __tools_widget_vlayout = qt_import.QVBoxLayout(tools_widget) __tools_widget_vlayout.addWidget(button_widget) __tools_widget_vlayout.addWidget(self.results_widget) __tools_widget_vlayout.addWidget(self.histogram_plot) __tools_widget_vlayout.addStretch() __tools_widget_vlayout.setSpacing(2) __tools_widget_vlayout.setContentsMargins(2, 2, 2, 2) __main_hlayout = qt_import.QHBoxLayout(self) __main_hlayout.addWidget(self.graphics_view_widget) __main_hlayout.addWidget(tools_widget) __main_hlayout.setSpacing(0) __main_hlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.results_widget.data_browse_button.clicked.connect( self.data_browse_button_clicked ) self.results_widget.ff_browse_button.clicked.connect( self.ff_browse_button_clicked ) self.results_widget.config_browse_button.clicked.connect( self.config_browse_button_clicked ) self.results_widget.load_button.clicked.connect( self.load_button_clicked ) self.results_widget.first_image_button.clicked.connect( first_image_button_clicked ) self.results_widget.prev_image_button.clicked.connect( self.prev_image_button_clicked ) self.results_widget.next_image_button.clicked.connect( self.next_image_button_clicked ) self.results_widget.last_image_button.clicked.connect( self.last_image_button_clicked ) self.results_widget.minus_quarter_button.clicked.connect( self.minus_quater_button_clicked ) self.results_widget.plus_quarter_button.clicked.connect( plus_quater_button_clicked ) self.results_widget.image_dial.valueChanged.connect( dial_value_changed ) self.results_widget.image_spinbox.valueChanged.connect( spinbox_value_changed ) self.results_widget.play_button.clicked.connect(self.play_button_clicked) self.results_widget.stop_button.clicked.connect(stop_button_clicked) self.results_widget.repeat_cbox.stateChanged.connect(repeat_state_changed) self.results_widget.ff_apply_cbox.stateChanged.connect( ff_apply_state_changed ) self.start_centering_button.clicked.connect(start_centering_clicked) self.accept_centering_button.clicked.connect(accept_centering_clicked) # Other --------------------------------------------------------------- self.results_widget.first_image_button.setIcon(icons.load_icon("VCRRewind")) self.results_widget.prev_image_button.setIcon(icons.load_icon("VCRPlay4")) self.results_widget.next_image_button.setIcon(icons.load_icon("VCRPlay2")) self.results_widget.last_image_button.setIcon( icons.load_icon("VCRFastForward2") ) self.results_widget.play_button.setIcon(icons.load_icon("VCRPlay")) self.results_widget.stop_button.setIcon(icons.load_icon("Stop2")) self.start_centering_button.setFixedSize(70, 50) self.start_n_centering_button.setFixedSize(70, 50) self.accept_centering_button.setFixedSize(70, 50) if HWR.beamline.imaging is not None: HWR.beamline.imaging.connect("imageInit", self.image_init) HWR.beamline.imaging.connect("imageLoaded", self.image_loaded) HWR.beamline.imaging.connect( "measureItemChanged", self.measure_item_changed ) self.graphics_view = HWR.beamline.imaging.get_graphics_view() self._graphics_view_widget_vlayout.addWidget(self.graphics_view) self.graphics_view_widget.setFixedSize( self.graphics_view.scene().width(), self.graphics_view.scene().height() ) self.setDisabled(False) else: self.setDisabled(True)
def __init__(self, parent=None): qt_import.QWidget.__init__(self, parent) self.setObjectName("hit_map_widget") # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- # Internal values ----------------------------------------------------- self.__result_types = [] self.__results_raw = None self.__results_aligned = None self.__first_result = True self.__grid = None #self.__is_mesh_scan = False self.__data_collection = None self.__selected_col = 0 self.__selected_row = 0 self.__score_key = None self.__max_value = 0 self.__filter_min_value = 0 self.__best_pos_list = None self.__hitmap_clicked = False self.__enable_continues_image_display = False #self.__tooltip_text = None self.selected_image_serial = None # Graphic elements ---------------------------------------------------- self._hit_map_gbox = qt_import.QGroupBox("Online processing results", self) hit_maps_widget = qt_import.QWidget(self._hit_map_gbox) self._osc_hit_map_plot = PlotWidget(hit_maps_widget) self._osc_hit_map_plot.set_plot_type("1D") self._grid_hit_map_plot = PlotWidget(hit_maps_widget) self._grid_hit_map_plot.set_plot_type("2D") self._hit_map_popup_menu = qt_import.QMenu(self._hit_map_gbox) hit_map_info_widget = qt_import.QWidget(self._hit_map_gbox) score_type_label = qt_import.QLabel("Result: ", hit_map_info_widget) self._score_type_cbox = qt_import.QComboBox(hit_map_info_widget) self._autoscale_button = qt_import.QPushButton("Auto scale", hit_map_info_widget) image_display_cbox = qt_import.QCheckBox("Display image in ADxV", hit_map_info_widget) self._image_info_label = qt_import.QLabel("Image: #, value #", hit_map_info_widget) self._hit_map_tools_widget = qt_import.QWidget(self._hit_map_gbox) _threshold_label = qt_import.QLabel("Threshold: ", self._hit_map_tools_widget) self._threshold_slider = qt_import.QSlider(qt_import.Qt.Horizontal, self._hit_map_tools_widget) self._relaunch_processing_button = qt_import.QPushButton( "Relaunch processing", self._hit_map_tools_widget) self._create_points_button = qt_import.QPushButton( "Create centring points", self._hit_map_tools_widget) """ self._summary_gbox = qt_import.QGroupBox("Summary", self) self._summary_textbrowser = qt_import.QTextBrowser(self._summary_gbox) self._best_pos_gbox = qt_import.QGroupBox("Best positions", self) self._best_pos_table = qt_import.QTableWidget(self._best_pos_gbox) self._best_pos_popup_menu = qt_import.QMenu(self._hit_map_gbox) self._best_pos_gbox.setHidden(True) """ # Layout -------------------------------------------------------------- _hit_map_info_hlayout = qt_import.QHBoxLayout(hit_map_info_widget) _hit_map_info_hlayout.addWidget(score_type_label) _hit_map_info_hlayout.addWidget(self._score_type_cbox) _hit_map_info_hlayout.addWidget(self._autoscale_button) _hit_map_info_hlayout.addWidget(image_display_cbox) _hit_map_info_hlayout.addStretch(0) _hit_map_info_hlayout.addWidget(self._image_info_label) _hit_map_info_hlayout.setSpacing(2) _hit_map_info_hlayout.setContentsMargins(0, 0, 0, 0) _hit_map_tools_hlayout = qt_import.QHBoxLayout( self._hit_map_tools_widget) _hit_map_tools_hlayout.addWidget(_threshold_label) _hit_map_tools_hlayout.addWidget(self._threshold_slider) _hit_map_tools_hlayout.addStretch(0) _hit_map_tools_hlayout.addWidget(self._relaunch_processing_button) _hit_map_tools_hlayout.addWidget(self._create_points_button) _hit_map_tools_hlayout.setSpacing(2) _hit_map_tools_hlayout.setContentsMargins(0, 0, 0, 0) _hit_maps_hlayout = qt_import.QHBoxLayout(hit_maps_widget) _hit_maps_hlayout.addWidget(self._osc_hit_map_plot) _hit_maps_hlayout.addWidget(self._grid_hit_map_plot) _hit_map_gbox_vlayout = qt_import.QVBoxLayout(self._hit_map_gbox) _hit_map_gbox_vlayout.addWidget(hit_maps_widget) _hit_map_gbox_vlayout.addWidget(hit_map_info_widget) _hit_map_gbox_vlayout.addWidget(self._hit_map_tools_widget) _hit_map_gbox_vlayout.setSpacing(2) _hit_map_gbox_vlayout.setContentsMargins(0, 0, 0, 0) """ _summary_gbox_vlayout = qt_import.QVBoxLayout(self._summary_gbox) _summary_gbox_vlayout.addWidget(self._summary_textbrowser) _summary_gbox_vlayout.setSpacing(2) _summary_gbox_vlayout.setContentsMargins(0, 0, 0, 0) _best_postition_gbox_vlayout = qt_import.QVBoxLayout(self._best_pos_gbox) _best_postition_gbox_vlayout.addWidget(self._best_pos_table) _best_postition_gbox_vlayout.setSpacing(2) _best_postition_gbox_vlayout.setContentsMargins(0, 0, 0, 0) """ _main_hlayout = qt_import.QVBoxLayout(self) _main_hlayout.addWidget(self._hit_map_gbox) #_main_hlayout.addWidget(self._summary_gbox) #_main_hlayout.addWidget(self._best_pos_gbox) _main_hlayout.setSpacing(2) _main_hlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signals and slots ------------------------------------------------ image_display_cbox.stateChanged.connect( self.enable_image_display_state_changed) self._score_type_cbox.activated.connect(self.score_type_changed) self._threshold_slider.valueChanged.connect( self.filter_min_slider_changed) self._relaunch_processing_button.clicked.connect( self.relaunch_processing_clicked) self._create_points_button.clicked.connect(self.create_points_clicked) self._osc_hit_map_plot.mouseMovedSignal.connect(self.mouse_moved) self._osc_hit_map_plot.mouseClickedSignal.connect(self.mouse_clicked) self._osc_hit_map_plot.mouseDoubleClickedSignal.connect( self.move_to_position_clicked) self._osc_hit_map_plot.mouseLeftSignal.connect(self.mouse_left_plot) self._autoscale_button.clicked.connect(self.autoscale_pressed) # Other --------------------------------------------------------------- #self.__tooltip_text = ( # "Double click to move to the position. " + "Right click to open menu." #) #self._osc_hit_map_plot.setToolTip(self.__tooltip_text) self._hit_map_popup_menu.addSeparator() self._hit_map_popup_menu.addAction("Move to position", self.move_to_position_clicked) self._hit_map_popup_menu.addAction("Create centring point", self.create_centring_point_clicked) self._hit_map_popup_menu.addAction("Create helical line", self.create_helical_line_clicked) self._hit_map_popup_menu.addAction( "Rotate 90 degrees and create helical line", self.rotate_and_create_helical_line_clicked, ) self._hit_map_popup_menu.addSeparator() self._hit_map_popup_menu.addAction("Open image in ADXV", self.display_image_clicked) self._hit_map_popup_menu.addSeparator() #self._osc_hit_map_plot.contextMenuEvent = self.open_hit_map_popup_menu if HWR.beamline.online_processing is not None: self.__result_types = HWR.beamline.online_processing.get_result_types( ) for result in self.__result_types: self._score_type_cbox.addItem(result["descr"]) self._score_type_cbox.setMaximumWidth(200) self.__score_key = "spots_resolution" self._relaunch_processing_button.setVisible(False) self._threshold_slider.setRange(0, 100) self._threshold_slider.setTickInterval(5) self._threshold_slider.setFixedWidth(200) self._threshold_slider.setTracking(False) #font = self._best_pos_table.font() #font.setPointSize(8) #self._best_pos_table.setFont(font) """
def __init__(self, parent=None, name="xrf_spectrum_parameters_widget"): qt_import.QWidget.__init__(self, parent) if name is not None: self.setObjectName(name) # Internal variables -------------------------------------------------- self.xrf_spectrum_model = queue_model_objects.XRFSpectrum() self._tree_view_item = None # Graphic elements ---------------------------------------------------- _top_widget = qt_import.QWidget(self) _parameters_widget = qt_import.QWidget(_top_widget) self.data_path_widget = DataPathWidget(_parameters_widget) self.other_parameters_gbox = qt_import.QGroupBox( "Other parameters", _parameters_widget) self.count_time_label = qt_import.QLabel("Count time:", self.other_parameters_gbox) self.count_time_ledit = qt_import.QLineEdit(self.other_parameters_gbox) self.count_time_ledit.setFixedWidth(50) self.adjust_transmission_cbox = qt_import.QCheckBox( "Adjust transmission", self.other_parameters_gbox) self.adjust_transmission_cbox.hide() self.mca_spectrum_widget = McaSpectrumWidget(self) self.snapshot_widget = SnapshotWidget(self) # Layout ------------------------------------------------------------- _other_parameters_gbox_hlayout = qt_import.QHBoxLayout( self.other_parameters_gbox) _other_parameters_gbox_hlayout.addWidget(self.count_time_label) _other_parameters_gbox_hlayout.addWidget(self.count_time_ledit) _other_parameters_gbox_hlayout.addWidget(self.adjust_transmission_cbox) _other_parameters_gbox_hlayout.addStretch(0) _other_parameters_gbox_hlayout.setSpacing(2) _other_parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0) _parameters_widget_layout = qt_import.QVBoxLayout(_parameters_widget) _parameters_widget_layout.addWidget(self.data_path_widget) _parameters_widget_layout.addWidget(self.other_parameters_gbox) _parameters_widget_layout.addStretch(0) _parameters_widget_layout.setSpacing(2) _parameters_widget_layout.setContentsMargins(0, 0, 0, 0) _top_widget_layout = qt_import.QHBoxLayout(_top_widget) _top_widget_layout.addWidget(_parameters_widget) _top_widget_layout.addWidget(self.snapshot_widget) _top_widget_layout.setSpacing(2) _top_widget_layout.addStretch(0) _top_widget_layout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(_top_widget) _main_vlayout.addWidget(self.mca_spectrum_widget) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies ------------------------------------------------------- self.mca_spectrum_widget.setSizePolicy(qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Expanding) _top_widget.setSizePolicy(qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed) # Qt signal/slot connections ------------------------------------------ self.data_path_widget.data_path_layout.prefix_ledit.textChanged.connect( self._prefix_ledit_change) self.data_path_widget.data_path_layout.run_number_ledit.textChanged.connect( self._run_number_ledit_change) self.count_time_ledit.textChanged.connect( self._count_time_ledit_change) # Other --------------------------------------------------------------- self.data_path_widget.data_path_layout.compression_cbox.setVisible( False) if HWR.beamline.xrf_spectrum is not None: HWR.beamline.xrf_spectrum.connect("xrfSpectrumFinished", self.spectrum_finished)
def __init__(self, *args): """MotorBrick constructor Arguments: :params args: """ super(MotorBrick, self).__init__(*args) # Hardware objects ---------------------------------------------------- self.motor_hwobj = None # hardware object self.control_dialog = None # Graphic elements----------------------------------------------------- self.frame = qt_import.QGroupBox() self.frame_layout = qt_import.QVBoxLayout() self.step_slider_panel = qt_import.QWidget() step_slider_panel_layout = qt_import.QHBoxLayout() self.move_box = MoveBox() self.step_backward = StepEditor(StepEditor.LEFT_LAYOUT, 20, None, "new step:", "-") self.slider = MotorSlider() self.step_forward = StepEditor(StepEditor.RIGHT_LAYOUT, 20, None, "new step:", "+") self.motor_position_label = self.slider.current_label self.name_position_box = qt_import.QFrame() self.name_position_box_layout = qt_import.QHBoxLayout() self.motor_name_label = qt_import.QLabel() self.position_label = qt_import.QLabel() # Layout -------------------------------------------------------------- step_slider_panel_layout.addWidget(self.step_backward) step_slider_panel_layout.addWidget(self.slider) step_slider_panel_layout.addWidget(self.step_forward) self.step_slider_panel.setLayout(step_slider_panel_layout) self.frame_layout.addWidget(self.step_slider_panel) self.frame_layout.addWidget(self.move_box, 0, qt_import.Qt.AlignCenter) self.frame.setLayout(self.frame_layout) self.name_position_box_layout.addWidget(self.motor_name_label) self.name_position_box_layout.addWidget(self.position_label) self.name_position_box.setLayout(self.name_position_box_layout) self.setSizePolicy(qt_import.QSizePolicy.Minimum, qt_import.QSizePolicy.Fixed) self.frame.setFlat(False) # Hide 'edit step' button associated to step_backward self.step_backward.allow_change_value(False) self.step_slider_panel.setSizePolicy(qt_import.QSizePolicy.Minimum, qt_import.QSizePolicy.Fixed) self.name_position_box.hide() self.name_position_box.setSizePolicy(qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed) self.name_position_box.setFrameStyle(qt_import.QFrame.Panel | qt_import.QFrame.Raised) self.name_position_box.setLineWidth(1) self.name_position_box.setMidLineWidth(0) self.motor_name_label.setAlignment(qt_import.Qt.AlignLeft | qt_import.Qt.AlignVCenter) self.position_label.setAlignment(qt_import.Qt.AlignRight | qt_import.Qt.AlignVCenter) self.main_layout = qt_import.QVBoxLayout() self.main_layout.addWidget(self.name_position_box, 0, qt_import.Qt.AlignTop) self.main_layout.addWidget(self.frame, 0, qt_import.Qt.AlignCenter) self.setLayout(self.main_layout) # Qt signal/slot connections ----------------------------------------- self.move_box.move_motor_signal.connect(self.move_motor) self.move_box.stop_motor_signal.connect(self.stop_motor) self.step_forward.clicked_signal.connect(self.step_forward_clicked) self.step_forward.value_changed_signal.connect( self.step_forward_value_changed) self.step_backward.clicked_signal.connect(self.step_backward_clicked) # define properties self.add_property("appearance", "combo", ("tiny", "normal"), "normal") self.add_property("allowConfigure", "boolean", True) self.add_property("mnemonic", "string", "") self.add_property("allowDoubleClick", "boolean", False) self.add_property("formatString", "formatString", "+##.####") # %+8.4f self.add_property("dialogCaption", "string", "", hidden=True)
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.wrapper_hwobj = None # Internal values ----------------------------------------------------- self.__expertMode = False # Properties ---------------------------------------------------------- self.add_property("mnemonic", "string", "") self.add_property("forceNoControl", "boolean", False) self.add_property("expertModeControlOnly", "boolean", False) self.add_property("icons", "string", "") self.add_property("in", "string", "in") self.add_property("out", "string", "out") self.add_property("setin", "string", "Set in") self.add_property("setout", "string", "Set out") self.add_property("username", "string", "") # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- self.define_slot("allowControl", ()) # Graphic elements ---------------------------------------------------- self.main_gbox = qt_import.QGroupBox("none", self) self.main_gbox.setAlignment(qt_import.Qt.AlignCenter) self.state_ledit = qt_import.QLineEdit("unknown", self.main_gbox) self.buttons_widget = qt_import.QWidget(self.main_gbox) self.set_in_button = qt_import.QPushButton("Set in", self.buttons_widget) self.set_in_button.setCheckable(True) self.set_out_button = qt_import.QPushButton("Set out", self.buttons_widget) self.set_out_button.setCheckable(True) # Layout -------------------------------------------------------------- _buttons_widget_hlayout = qt_import.QHBoxLayout(self.buttons_widget) _buttons_widget_hlayout.addWidget(self.set_in_button) _buttons_widget_hlayout.addWidget(self.set_out_button) _buttons_widget_hlayout.setSpacing(0) _buttons_widget_hlayout.setContentsMargins(0, 0, 0, 0) _main_gbox_vlayout = qt_import.QVBoxLayout(self.main_gbox) _main_gbox_vlayout.addWidget(self.state_ledit) _main_gbox_vlayout.addWidget(self.buttons_widget) _main_gbox_vlayout.setSpacing(2) _main_gbox_vlayout.setContentsMargins(4, 4, 4, 4) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.main_gbox) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.set_in_button.toggled.connect(self.set_in) self.set_out_button.toggled.connect(self.set_out) # Other --------------------------------------------------------------- self.state_ledit.setAlignment(qt_import.Qt.AlignCenter) self.state_ledit.setToolTip("Shows the current control state") self.state_ledit.setFrame(False) bold_font = self.state_ledit.font() bold_font.setBold(True) self.state_ledit.setFont(bold_font) self.state_ledit.setFixedHeight(24) self.set_in_button.setToolTip("Changes the control state") self.set_out_button.setToolTip("Changes the control state") self.instance_synchronize("state_ledit")
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.beamline_test_hwobj = None self.unittest_hwobj = None # Internal variables -------------------------------------------------- self.available_tests = None self.com_device_list = None # Properties ---------------------------------------------------------- self.add_property("mnemonic", "string", "") self.add_property("hwobj_unittest", "string", "") # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- self.beamline_test_widget = qt_import.load_ui_file( "beamline_test_widget_layout.ui" ) self.test_toolbox = self.beamline_test_widget.test_toolbox self.test_queue_page = self.beamline_test_widget.queue_toolbox_page self.test_com_page = self.beamline_test_widget.com_toolbox_page self.test_focus_page = self.beamline_test_widget.focus_toolbox_page self.test_ppu_page = self.beamline_test_widget.ppu_toolbox_page self.com_device_table = self.beamline_test_widget.comm_device_table # self.current_test_listwidget = self.beamline_test_widget.current_test_listbox self.available_tests_listwidget = ( self.beamline_test_widget.available_tests_listwidget ) _web_view_widget = qt_import.QWidget(self) _load_last_test_button = qt_import.QPushButton( "View last results", _web_view_widget ) self.test_result_browser = WebViewWidget(_web_view_widget) # Layout -------------------------------------------------------------- _web_view_widget_vlayout = qt_import.QVBoxLayout(_web_view_widget) _web_view_widget_vlayout.addWidget(_load_last_test_button) _web_view_widget_vlayout.addWidget(self.test_result_browser) _web_view_widget_vlayout.setSpacing(2) _web_view_widget_vlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QHBoxLayout(self) _main_vlayout.addWidget(self.beamline_test_widget) _main_vlayout.addWidget(_web_view_widget) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) # Qt signal/slot connections ------------------------------------------ self.beamline_test_widget.execute_all_button.clicked.connect( self.execute_all_tests_clicked ) self.beamline_test_widget.test_button.clicked.connect(self.execute_test_clicked) self.beamline_test_widget.focus_modes_combo.activated.connect( self.set_focus_mode_pressed ) self.available_tests_listwidget.itemDoubleClicked.connect( self.available_tests_double_clicked ) _load_last_test_button.clicked.connect(self.load_latest_test_results) self.beamline_test_widget.ppu_restart_button.clicked.connect(self.restart_ppu) # Other --------------------------------------------------------------- # self.beamline_test_widget.setFixedWidth(600) self.test_result_browser.setSizePolicy( qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Expanding ) _load_last_test_button.setFixedWidth(200) self.test_toolbox.setCurrentWidget(self.test_queue_page) self.beamline_test_widget.setFixedWidth(700) self.test_result_browser.navigation_bar.setHidden(True)
def __init__(self, *args): """ Proposal brick is used to authentificate current user. Brick can be used in two modes defined by ispyb hwobj - loginAsUser = True, Brick displays combobox with all proposals from ISPyB that are associated to the current user - loginAsUser = False. Brick displays combobox to choose proposal type and linedits to enter proposal number and password. In this case user is authentificated with LDAP and proposal from ISPyB is retrieved. """ BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.local_login_hwobj = None # Internal values ----------------------------------------------------- self.login_as_user = None self.proposal = None self.person = None self.laboratory = None # self.sessionId=None self.inhouseProposal = None self.instance_server_hwobj = None self.secondary_proposals = [] # Properties ---------------------------------------------------------- self.add_property("titlePrefix", "string", "") self.add_property("autoSessionUsers", "string", "") self.add_property("codes", "string", "fx ifx ih im ix ls mx opid") self.add_property("secondaryProposals", "string", "") self.add_property("icons", "string", "") self.add_property("serverStartDelay", "integer", 500) # Signals ------------------------------------------------------------ self.define_signal("sessionSelected", ()) self.define_signal("setWindowTitle", ()) self.define_signal("loggedIn", ()) self.define_signal("userGroupSaved", ()) # Slots --------------------------------------------------------------- self.define_slot("setButtonEnabled", ()) self.define_slot("impersonateProposal", ()) # Graphic elements ---------------------------------------------------- self.main_gbox = qt_import.QGroupBox("ISPyB proposal", self) self.login_as_proposal_widget = qt_import.QWidget(self.main_gbox) code_label = qt_import.QLabel(" Code: ", self.login_as_proposal_widget) self.proposal_type_combox = qt_import.QComboBox(self.login_as_proposal_widget) self.proposal_type_combox.setEditable(True) self.proposal_type_combox.setFixedWidth(60) dash_label = qt_import.QLabel(" - ", self.login_as_proposal_widget) self.proposal_number_ledit = qt_import.QLineEdit(self.login_as_proposal_widget) self.proposal_number_ledit.setFixedWidth(60) password_label = qt_import.QLabel(" Password: "******"Login", self.login_as_proposal_widget) self.login_button.setFixedWidth(70) self.logout_button = qt_import.QPushButton("Logout", self.main_gbox) self.logout_button.hide() self.logout_button.setFixedWidth(70) self.login_as_proposal_widget.hide() self.login_as_user_widget = qt_import.QWidget(self.main_gbox) self.proposal_combo = qt_import.QComboBox(self.login_as_user_widget) self.user_group_widget = qt_import.QWidget(self.main_gbox) # self.title_label = QtGui.QLabel(self.user_group_widget) # self.title_label.setAlignment(QtCore.Qt.AlignCenter) self.user_group_label = qt_import.QLabel(" Group: ", self.user_group_widget) self.user_group_ledit = qt_import.QLineEdit(self.user_group_widget) self.user_group_ledit.setFixedSize(100, 27) self.user_group_save_button = qt_import.QToolButton(self.user_group_widget) self.user_group_save_button.setText("Set") self.user_group_save_button.setFixedHeight(27) self.saved_group = True # Layout -------------------------------------------------------------- _user_group_widget_hlayout = qt_import.QHBoxLayout(self.user_group_widget) _user_group_widget_hlayout.setSpacing(2) # _user_group_widget_hlayout.addWidget(self.title_label) _user_group_widget_hlayout.addWidget(self.user_group_label) _user_group_widget_hlayout.addWidget(self.user_group_ledit) _user_group_widget_hlayout.addWidget(self.user_group_save_button) _user_group_widget_hlayout.setContentsMargins(0, 0, 0, 0) self.user_group_widget.hide() _login_as_proposal_widget_layout = qt_import.QHBoxLayout( self.login_as_proposal_widget ) _login_as_proposal_widget_layout.addWidget(code_label) _login_as_proposal_widget_layout.addWidget(self.proposal_type_combox) _login_as_proposal_widget_layout.addWidget(dash_label) _login_as_proposal_widget_layout.addWidget(self.proposal_number_ledit) _login_as_proposal_widget_layout.addWidget(password_label) _login_as_proposal_widget_layout.addWidget(self.proposal_password_ledit) _login_as_proposal_widget_layout.addWidget(self.login_button) _login_as_proposal_widget_layout.setSpacing(2) _login_as_proposal_widget_layout.setContentsMargins(0, 0, 0, 0) _login_as_user_widget_layout = qt_import.QHBoxLayout(self.login_as_user_widget) _login_as_user_widget_layout.addWidget(self.proposal_combo) _login_as_user_widget_layout.setSpacing(2) _login_as_user_widget_layout.setContentsMargins(0, 0, 0, 0) _main_gboxlayout = qt_import.QHBoxLayout(self.main_gbox) _main_gboxlayout.addWidget(self.login_as_proposal_widget) _main_gboxlayout.addWidget(self.logout_button) _main_gboxlayout.addWidget(self.login_as_user_widget) _main_gboxlayout.addStretch() _main_gboxlayout.addWidget(self.user_group_widget) _main_gboxlayout.setSpacing(2) _main_gboxlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.main_gbox) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # self.user_group_ledit # Qt signal/slot connections ------------------------------------------ self.proposal_password_ledit.returnPressed.connect(self.login) self.login_button.clicked.connect(self.login) self.logout_button.clicked.connect(self.logout_clicked) self.proposal_combo.activated.connect(self.proposal_combo_activated) self.user_group_save_button.clicked.connect(self.save_group) self.user_group_ledit.returnPressed.connect(self.save_group) self.user_group_ledit.textChanged.connect(self.user_group_changed) # Other --------------------------------------------------------------- colors.set_widget_color( self.proposal_number_ledit, colors.LIGHT_RED, qt_import.QPalette.Base ) colors.set_widget_color( self.proposal_password_ledit, colors.LIGHT_RED, qt_import.QPalette.Base )