def __init__(self, *args): MotorSpinboxBrick.__init__(self, *args) self.light_actuator_hwo = None self.light_saved_pos = None self.light_off_button = qt_import.QPushButton(self.main_gbox) self.light_off_button.setIcon(icons.load_icon("BulbDelete")) self.light_off_button.setFixedSize(27, 27) self.light_on_button = qt_import.QPushButton(self.main_gbox) self.light_on_button.setIcon(icons.load_icon("BulbCheck")) self.light_on_button.setFixedSize(27, 27) self.light_off_button.clicked.connect(self.light_button_off_clicked) self.light_on_button.clicked.connect(self.light_button_on_clicked) self._gbox_hbox_layout.addWidget(self.light_off_button) self._gbox_hbox_layout.addWidget(self.light_on_button) self.light_off_button.setToolTip( "Switches off the light and sets the intensity to zero" ) self.light_on_button.setToolTip( "Switches on the light and sets the intensity back to the previous setting" ) self.light_off_button.setSizePolicy( qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Minimum ) self.light_on_button.setSizePolicy( qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Minimum )
def centring_in_progress_changed(self, centring_in_progress): if centring_in_progress: self.manager_widget.create_point_start_button.setIcon( icons.load_icon("Delete")) else: self.manager_widget.create_point_start_button.setIcon( icons.load_icon("VCRPlay2"))
def property_changed(self, property_name, old_value, new_value): if property_name == "label": if new_value == "" and self.motor_hwobj is not None: self.label.setText("<i>" + self.motor_hwobj.username + ":</i>") else: self.label.setText(new_value) elif property_name == "mnemonic": if self.motor_hwobj is not None: self.disconnect(self.motor_hwobj, "stateChanged", self.motor_state_changed) self.disconnect( self.motor_hwobj, "valueChanged", self.predefined_position_changed, ) self.motor_hwobj = self.get_hardware_object(new_value) if self.motor_hwobj is not None: self.fill_positions() self.connect(self.motor_hwobj, "stateChanged", self.motor_state_changed) self.connect( self.motor_hwobj, "valueChanged", self.predefined_position_changed, ) #if self.motor_hwobj.is_ready(): # self.predefined_position_changed( # self.motor_hwobj.get_value() # ) if self["label"] == "": lbl = self.motor_hwobj.user_name self.label.setText("<i>" + lbl + ":</i>") colors.set_widget_color( self.positions_combo, colors.LIGHT_YELLOW, qt_import.QPalette.Button, ) self.motor_state_changed(self.motor_hwobj.get_state()) elif property_name == "showMoveButtons": if new_value: self.previous_position_button.show() self.next_position_button.show() else: self.previous_position_button.hide() self.next_position_button.hide() elif property_name == "icons": icons_list = new_value.split() try: self.previous_position_button.setIcon( icons.load_icon(icons_list[0])) self.next_position_button.setIcon( icons.load_icon(icons_list[1])) except BaseException: pass else: BaseWidget.property_changed(self, property_name, old_value, new_value)
def set_icons(self, icon_run, icon_stop): self.run_icon = icons.load_icon(icon_run) self.stop_icon = icons.load_icon(icon_stop) if self.executing: self.setIcon(self.stop_icon) else: self.setIcon(self.run_icon)
def set_icons(self, icons): icons = icons.split(",") if len(icons) == 2: self.icons = { "on": icons.load_icon(icons[0]), "off": icons.load_icon(icons[1]), } self.widget.button.setIcon(self.icons["on"])
def __init__(self, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.motor_hwobj = None # Internal values ----------------------------------------------------- self.positions = None # Properties ---------------------------------------------------------- self.add_property("label", "string", "") self.add_property("mnemonic", "string", "") self.add_property("icons", "string", "") self.add_property("showMoveButtons", "boolean", True) # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- self.define_slot("setEnabled", ()) # Graphic elements ---------------------------------------------------- _main_gbox = qt_import.QGroupBox(self) self.label = qt_import.QLabel("motor:", _main_gbox) self.positions_combo = qt_import.QComboBox(self) self.previous_position_button = qt_import.QPushButton(_main_gbox) self.next_position_button = qt_import.QPushButton(_main_gbox) # Layout -------------------------------------------------------------- _main_gbox_hlayout = qt_import.QHBoxLayout(_main_gbox) _main_gbox_hlayout.addWidget(self.label) _main_gbox_hlayout.addWidget(self.positions_combo) _main_gbox_hlayout.addWidget(self.previous_position_button) _main_gbox_hlayout.addWidget(self.next_position_button) _main_gbox_hlayout.setSpacing(2) _main_gbox_hlayout.setContentsMargins(2, 2, 2, 2) _main_hlayout = qt_import.QHBoxLayout(self) _main_hlayout.addWidget(_main_gbox) _main_hlayout.setSpacing(0) _main_hlayout.setContentsMargins(0, 0, 0, 0) # Size Policy --------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.positions_combo.activated.connect(self.position_selected) self.previous_position_button.clicked.connect( self.select_previous_position) self.next_position_button.clicked.connect(self.select_next_position) # Other --------------------------------------------------------------- self.positions_combo.setFixedHeight(27) self.positions_combo.setToolTip( "Moves the motor to a predefined position") self.previous_position_button.setIcon(icons.load_icon("Minus2")) self.previous_position_button.setFixedSize(27, 27) self.next_position_button.setIcon(icons.load_icon("Plus2")) self.next_position_button.setFixedSize(27, 27)
def __init__(self, parent=None): """" Constructor of MoveBox :param parent: MoveBox parent widget """ super(MoveBox, self).__init__(parent) self.old_positions = [] # history of motor positions self.label_move = qt_import.QLabel("go to ", self) self.text_move = qt_import.QLineEdit("", self) self.cmd_move = qt_import.QPushButton("", self) self.cmd_move.setCheckable(True) self.cmd_go_back = qt_import.QPushButton("", self) self.cmd_stop = qt_import.QPushButton("", self) self.text_move.setFixedWidth( self.text_move.fontMetrics().width("8888.8888")) self.cmd_move.setCheckable(True) self.cmd_stop.setIcon(icons.load_icon("stop_small")) self.cmd_stop.setEnabled(False) self.cmd_go_back.setIcon(icons.load_icon("goback_small")) self.cmd_move.setIcon(icons.load_icon("move_small")) self.cmd_go_back.setEnabled(False) # connections self.text_move.textChanged.connect(self.text_move_text_changed) self.cmd_move.clicked.connect(self.move_clicked) self.cmd_stop.clicked.connect(self.stop_motor_signal) self.text_move.returnPressed.connect(self.text_move_return_pressed) self.cmd_go_back.clicked.connect(self.go_back_clicked) # layout hboxlayout = qt_import.QHBoxLayout(self) hboxlayout.insertSpacerItem( 0, qt_import.QSpacerItem(0, 0, qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed)) hboxlayout.addWidget(self.label_move) hboxlayout.addWidget(self.text_move) hboxlayout.addWidget(self.cmd_move) hboxlayout.addWidget(self.cmd_go_back) hboxlayout.addWidget(self.cmd_stop) hboxlayout.insertSpacerItem( 0, qt_import.QSpacerItem(0, 0, qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed)) self.setLayout(hboxlayout)
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, 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, parent, email_addresses, tab_label): qt_import.QWidget.__init__(self, parent) # Hardware objects ---------------------------------------------------- # Internal values ----------------------------------------------------- self.tab_label = tab_label self.unread_messages = 0 self.email_addresses = email_addresses self.from_email_address = None msg = [ "Feel free to report any comment about this software;", " an email will be sent to the people concerned.", "Do not forget to put your name or email address if you require an answer.", ] # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- __label = qt_import.QLabel("<b>%s</b>" % "\n".join(msg), self) __msg_label = qt_import.QLabel("Message:", self) self.submit_button = qt_import.QToolButton(self) self.message_textedit = qt_import.QTextEdit(self) # Layout -------------------------------------------------------------- _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(__label) _main_vlayout.addWidget(__msg_label) _main_vlayout.addWidget(self.message_textedit) _main_vlayout.addWidget(self.submit_button) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.submit_button.clicked.connect(self.submit_message) # Other --------------------------------------------------------------- self.message_textedit.setToolTip( "Write here your comments or feedback") self.submit_button.setText("Submit") # if hasattr(self.submit_button, "setUsesTextLabel"): # self.submit_button.setUsesTextLabel(True) # elif hasattr(self.submit_button, "setToolButtonStyle"): # self.submit_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) self.submit_button.setToolButtonStyle(True) self.submit_button.setIcon(icons.load_icon("Envelope")) self.submit_button.setToolTip("Click here to send your feedback " + "to the authors of this software")
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, caption=None, icon=None): qt_import.QToolButton.__init__(self, parent) self.setSizePolicy(qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Fixed) self.setToolButtonStyle(qt_import.Qt.ToolButtonTextUnderIcon) if caption: self.setText(caption) self.setWindowIconText(caption) if icon: self.setIcon(icons.load_icon(icon))
def __init__(self, parent=None): qt_import.QWidget.__init__(self, parent) self.ok_button = qt_import.QToolButton(parent) self.ok_button.setAutoRaise(True) self.ok_button.setIcon(icons.load_icon("button_ok_small")) self.cancel_button = qt_import.QToolButton(parent) self.cancel_button.setAutoRaise(True) self.cancel_button.setIcon(icons.load_icon("button_cancel_small")) self.reset_button = qt_import.QToolButton(parent) self.reset_button.setIcon(icons.load_icon("button_default_small")) self.reset_button.setAutoRaise(True) self.setEnabled(False) _main_layout = qt_import.QHBoxLayout(self) _main_layout.addWidget(self.ok_button) _main_layout.addWidget(self.cancel_button) _main_layout.addWidget(self.reset_button) _main_layout.setSpacing(0) _main_layout.setContentsMargins(0, 0, 0, 0)
def property_changed(self, property_name, old_value, new_value): if property_name == "codes": self.set_codes(new_value) elif property_name == "localLogin": self.local_login_hwobj = self.get_hardware_object(new_value, optional=True) elif property_name == "instanceServer": if self.instance_server_hwobj is not None: self.disconnect( self.instance_server_hwobj, "passControl", self.pass_control ) self.disconnect( self.instance_server_hwobj, "haveControl", self.have_control ) self.instance_server_hwobj = self.get_hardware_object( new_value, optional=True ) if self.instance_server_hwobj is not None: self.connect( self.instance_server_hwobj, "passControl", self.pass_control ) self.connect( self.instance_server_hwobj, "haveControl", self.have_control ) elif property_name == "icons": icons_list = new_value.split() try: self.login_button.setIcon(icons.load_icon(icons_list[0])) except IndexError: pass try: self.logout_button.setIcon(icons.load_icon(icons_list[1])) except IndexError: pass elif property_name == "secondaryProposals": self.secondary_proposals = new_value.split() else: BaseWidget.property_changed(self, property_name, old_value, new_value)
def init_tools(self): """Gets available methods and populates menubar with methods If icon name exists then adds icon """ self.tools_list = self.tools_hwobj.get_tools_list() for tool in self.tools_list: if tool == "separator": self.tools_menu.addSeparator() elif hasattr(tool["hwobj"], tool["method"]): temp_action = self.tools_menu.addAction( tool["display"], self.execute_tool) if tool.get("icon"): temp_action.setIcon(icons.load_icon(tool["icon"])) temp_action.setDisabled(tool.get("expertMode", False)) self.action_dict[temp_action] = tool
def __add_connection(sender_window, sender, connection): """Adds connection""" new_item = qt_import.QTreeWidgetItem(self.connections_treewidget) window_name = sender_window["name"] new_item.setText(1, window_name) if sender != sender_window: new_item.setText(2, sender["name"]) new_item.setText(4, connection["receiverWindow"]) try: receiver_window = self.configuration.windows[ connection["receiverWindow"]] except KeyError: receiver_window = {} result = False else: result = True if len(connection["receiver"]): # *-object new_item.setText(5, connection["receiver"]) result = result and __receiver_in_window( connection["receiver"], receiver_window) if result: new_item.setIcon(0, icons.load_icon("button_ok_small")) else: new_item.setIcon(0, icons.load_icon("button_cancel_small")) new_item.setText(3, connection["signal"]) new_item.setText(6, connection["slot"])
def __init__(self, *args): BaseWidget.__init__(self, *args) # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Hardware objects ---------------------------------------------------- # Internal values ----------------------------------------------------- # Graphic elements ---------------------------------------------------- self.main_groupbox = qt_import.QGroupBox("Door interlock", self) self.main_groupbox.setAlignment(qt_import.Qt.AlignCenter) self.state_label = qt_import.QLabel("<b>unknown</b>", self.main_groupbox) colors.set_widget_color(self.state_label, self.STATES["unknown"]) self.state_label.setAlignment(qt_import.Qt.AlignCenter) self.state_label.setFixedHeight(24) self.unlock_door_button = qt_import.QPushButton( icons.load_icon("EnterHutch"), "Unlock", self.main_groupbox) # Layout -------------------------------------------------------------- _main_gbox_vlayout = qt_import.QVBoxLayout(self.main_groupbox) _main_gbox_vlayout.addWidget(self.state_label) _main_gbox_vlayout.addWidget(self.unlock_door_button) _main_gbox_vlayout.setSpacing(2) _main_gbox_vlayout.setContentsMargins(4, 4, 4, 4) _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.unlock_door_button.clicked.connect(self.unlock_doors) # Other --------------------------------------------------------------- self.state_label.setToolTip("Shows the current door state") self.unlock_door_button.setToolTip("Unlocks the doors") self.connect(HWR.beamline.hutch_interlock, "valueChanged", self.value_changed)
def add_pending_connection(self, connection_dict): """Adds pendinf connection""" parameter_list = ( "", connection_dict["senderWindow"], connection_dict["senderObject"], connection_dict["signal"], connection_dict["receiverWindow"], connection_dict["receiverObject"], connection_dict["slot"], ) new_item = qt_import.QTreeWidgetItem(self.connections_treewidget, parameter_list) new_item.setIcon(0, icons.load_icon("button_ok_small")) self.connections_treewidget.addTopLevelItem(new_item)
def refresh_plate_location(self): new_location = HWR.beamline.plate_manipulator.get_plate_location() self.plate_navigator_cell.setEnabled(True) if new_location: row = new_location[0] col = new_location[1] pos_x = new_location[2] pos_y = new_location[3] self.navigation_item.set_navigation_pos(pos_x, pos_y) self.plate_navigator_cell.update() if self.__current_location != new_location: empty_item = qt_import.QTableWidgetItem(qt_import.QIcon(), "") self.plate_navigator_table.setItem(self.__current_location[0], self.__current_location[1], empty_item) new_item = qt_import.QTableWidgetItem( icons.load_icon("sample_axis"), "") self.plate_navigator_table.setItem(row, col, new_item) self.__current_location = new_location
def property_changed(self, property_name, old_value, new_value): if property_name == "mnemonic": if self.instance_server_hwobj is not None: self.disconnect( self.instance_server_hwobj, "chatMessageReceived", self.message_arrived, ) self.disconnect(self.instance_server_hwobj, "newClient", self.new_client) self.disconnect( self.instance_server_hwobj, "serverInitialized", self.server_initialized, ) self.disconnect( self.instance_server_hwobj, "clientInitialized", self.client_initialized, ) self.disconnect(self.instance_server_hwobj, "serverClosed", self.client_closed) self.disconnect(self.instance_server_hwobj, "wantsControl", self.wants_control) self.disconnect(self.instance_server_hwobj, "haveControl", self.have_control) self.disconnect(self.instance_server_hwobj, "passControl", self.pass_control) self.disconnect(self.instance_server_hwobj, "clientClosed", self.client_closed) self.disconnect(self.instance_server_hwobj, "clientChanged", self.client_changed) self.instance_server_hwobj = self.get_hardware_object(new_value) if self.instance_server_hwobj is not None: self.connect( self.instance_server_hwobj, "chatMessageReceived", self.message_arrived, ) self.connect(self.instance_server_hwobj, "newClient", self.new_client) self.connect( self.instance_server_hwobj, "serverInitialized", self.server_initialized, ) self.connect( self.instance_server_hwobj, "clientInitialized", self.client_initialized, ) self.connect(self.instance_server_hwobj, "serverClosed", self.client_closed) self.connect(self.instance_server_hwobj, "wantsControl", self.wants_control) self.connect(self.instance_server_hwobj, "haveControl", self.have_control) self.connect(self.instance_server_hwobj, "passControl", self.pass_control) self.connect(self.instance_server_hwobj, "clientClosed", self.client_closed) self.connect(self.instance_server_hwobj, "clientChanged", self.client_changed) elif property_name == "icons": icons_list = new_value.split() try: self.send_button.setIcon(icons.load_icon(icons_list[0])) except IndexError: pass else: BaseWidget.property_changed(self, property_name, old_value, new_value)
def __init__(self, layout, initial_value, parent=None, title="", prefix=""): """" Constructor of StepEditor :param layout: select step value edit widget position :param initial_value: set motor initial position :param parent: parent widget :param title: step value edit widget's title :param prefix: + / - symbol fordward/backward step buttons """ super(StepEditor, self).__init__(parent) self.prefix = prefix self.value = initial_value # Graphic elements----------------------------------------------------- self.title_label = qt_import.QLabel(title) self.selection_box = qt_import.QFrame() self.edition_box = qt_import.QFrame() self.txt_new_value = qt_import.QLineEdit() self.cmd_ok = qt_import.QPushButton() self.cmd_ok.setIcon(icons.load_icon("button_ok_small")) self.cmd_ok.setFixedWidth(20) self.cmd_cancel = qt_import.QPushButton() self.cmd_cancel.setIcon(icons.load_icon("button_cancel_small")) self.cmd_cancel.setFixedWidth(20) self.edition_box.hide() self.title_label.hide() self.edition_box.setSizePolicy(qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed) self.double_validator = qt_import.QDoubleValidator(self.txt_new_value) self.double_validator.setNotation( qt_import.QDoubleValidator.StandardNotation) self.txt_new_value.setValidator(self.double_validator) # Layout -------------------------------------------------------------- self.main_vertical_layout = qt_import.QVBoxLayout() self.selection_box_layout = qt_import.QHBoxLayout() self.edition_box_layout = qt_import.QHBoxLayout() # widget's addition order defines their position self.edition_box_layout.addWidget(self.txt_new_value) self.edition_box_layout.addWidget(self.cmd_ok) self.edition_box_layout.addWidget(self.cmd_cancel) self.edition_box.setLayout(self.edition_box_layout) self.selection_box_layout.addWidget(self.edition_box) if layout == StepEditor.RIGHT_LAYOUT: self.cmd_select_value = qt_import.QPushButton(prefix + str(initial_value)) self.cmd_edit_value = qt_import.QPushButton("...") self.selection_box_layout.addWidget(self.cmd_select_value) self.selection_box_layout.addWidget(self.cmd_edit_value) else: self.cmd_edit_value = qt_import.QPushButton("...") self.cmd_select_value = qt_import.QPushButton(prefix + str(initial_value)) self.selection_box_layout.addWidget(self.cmd_edit_value) self.selection_box_layout.addWidget(self.cmd_select_value) self.selection_box.setLayout(self.selection_box_layout) self.main_vertical_layout.addWidget(self.title_label) self.main_vertical_layout.addWidget(self.selection_box) self.setLayout(self.main_vertical_layout) self.cmd_select_value.setAutoDefault(False) # Qt signal/slot connections ----------------------------------------- self.cmd_select_value.clicked.connect(self.cmd_select_value_clicked) self.cmd_edit_value.clicked.connect(self.cmd_edit_values_clicked) self.txt_new_value.returnPressed.connect(self.validate_new_value) self.cmd_ok.clicked.connect(self.validate_new_value) self.cmd_cancel.clicked.connect(self.end_edit)
def __init__(self, *args): """ Based on BaseWidget :param args: """ BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- # Internal values ----------------------------------------------------- self.unf_hor_motor = None self.unf_ver_motor = None self.double_hor_motor = None self.double_ver_motor = None self.motor_widget_list = [] self.focus_mode = None self.is_beam_location_phase = False # Properties ---------------------------------------------------------- self.add_property("hwobj_motors_list", "string", "") self.add_property("icon_list", "string", "") self.add_property("defaultSteps", "string", "") self.add_property("defaultDeltas", "string", "") self.add_property("defaultDecimals", "string", "") self.add_property("enableCenterBeam", "boolean", True) self.add_property("enableMeasureFlux", "boolean", True) self.add_property("compactView", "boolean", False) self.add_property("alwaysEnableBeamPositioning", "boolean", False) # Signals ------------------------------------------------------------- # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- self.main_group_box = qt_import.QGroupBox(self) self.unf_hor_motor_brick = MotorSpinboxBrick(self.main_group_box) self.unf_ver_motor_brick = MotorSpinboxBrick(self.main_group_box) self.double_hor_motor_brick = MotorSpinboxBrick(self.main_group_box) self.double_ver_motor_brick = MotorSpinboxBrick(self.main_group_box) self.motor_widget_list = ( self.unf_hor_motor_brick, self.unf_ver_motor_brick, self.double_hor_motor_brick, self.double_ver_motor_brick, ) self.center_beam_button = qt_import.QPushButton(self.main_group_box) self.center_beam_button.setFixedSize(27, 27) self.measure_flux_button = qt_import.QPushButton(self.main_group_box) self.measure_flux_button.setFixedSize(27, 27) # Layout -------------------------------------------------------------- _gbox_grid_layout = qt_import.QGridLayout(self.main_group_box) _gbox_grid_layout.addWidget(self.unf_hor_motor_brick, 0, 0) _gbox_grid_layout.addWidget(self.unf_ver_motor_brick, 1, 0) _gbox_grid_layout.addWidget(self.double_hor_motor_brick, 0, 1) _gbox_grid_layout.addWidget(self.double_ver_motor_brick, 1, 1) _gbox_grid_layout.addWidget(self.center_beam_button, 0, 2) _gbox_grid_layout.addWidget(self.measure_flux_button, 1, 2) _gbox_grid_layout.setSpacing(2) _gbox_grid_layout.setContentsMargins(2, 2, 2, 2) _main_hlayout = qt_import.QHBoxLayout(self) _main_hlayout.addWidget(self.main_group_box) _main_hlayout.setSpacing(0) _main_hlayout.setContentsMargins(0, 0, 0, 0) # Size Policy --------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self.center_beam_button.clicked.connect(self.center_beam_clicked) self.measure_flux_button.clicked.connect(self.measure_flux_clicked) # Other --------------------------------------------------------------- self.unf_hor_motor_brick.set_label("Horizontal") self.unf_ver_motor_brick.set_label("Vertical") self.double_hor_motor_brick.set_label("Horizontal") self.double_ver_motor_brick.set_label("Vertical") self.unf_hor_motor_brick.setEnabled(False) self.unf_ver_motor_brick.setEnabled(False) self.double_hor_motor_brick.setEnabled(False) self.double_ver_motor_brick.setEnabled(False) self.double_hor_motor_brick.setVisible(False) self.double_ver_motor_brick.setVisible(False) self.center_beam_button.setToolTip("Start center beam procedure") self.center_beam_button.setIcon(icons.load_icon("QuickRealign")) self.measure_flux_button.setToolTip("Measure flux") self.measure_flux_button.setIcon(icons.load_icon("Sun")) self.connect(HWR.beamline.diffractometer, "minidiffPhaseChanged", self.phase_changed) if HWR.beamline.beam.definer is not None: self.connect( HWR.beamline.beam.definer, "focusingModeChanged", self.focus_mode_changed, ) mode, beam_size = HWR.beamline.beam.definer.get_active_focus_mode() self.focus_mode_changed(mode, beam_size) self.update_gui()
def property_changed(self, property_name, old_value, new_value): """ Defines the behaviour :param property_name: str :param old_value: value :param new_value: value :return: """ if property_name == "hwobj_motors_list": hwobj_names_list = new_value.split() default_delta_list = self["defaultDeltas"].split() default_decimal_list = self["defaultDecimals"].split() default_step_list = self["defaultSteps"].split() icon_list = self["icon_list"].split() for index, hwobj_name in enumerate(hwobj_names_list): temp_motor_hwobj = self.get_hardware_object(hwobj_name) if temp_motor_hwobj is not None: temp_motor_widget = self.motor_widget_list[index] temp_motor_widget.set_motor(temp_motor_hwobj, hwobj_name) temp_motor_widget.move_left_button.setVisible(True) temp_motor_widget.move_right_button.setVisible(True) temp_motor_widget.position_slider.setVisible(False) temp_motor_widget.step_button.setVisible(False) # temp_motor_widget.stop_button.setVisible(False) try: temp_motor_widget.set_line_step( default_step_list[index]) temp_motor_widget["defaultStep"] = default_step_list[ index] except BaseException: temp_motor_widget.set_line_step(0.001) temp_motor_widget["defaultStep"] = 0.001 try: temp_motor_widget["delta"] = default_delta_list[index] except BaseException: temp_motor_widget["delta"] = 0.001 try: temp_motor_widget.set_decimals( float(default_decimal_list[index])) except BaseException: pass try: temp_motor_widget.move_left_button.setIcon( icons.load_icon(icon_list[index * 2])) temp_motor_widget.move_right_button.setIcon( icons.load_icon(icon_list[index * 2 + 1])) except BaseException: temp_motor_widget.move_left_button.setIcon( icons.load_icon("Right2")) temp_motor_widget.move_right_button.setIcon( icons.load_icon("Left2")) temp_motor_widget.step_changed(None) temp_motor_hwobj.force_emit_signals() temp_motor_widget.update_gui() elif property_name == "enableCenterBeam": self.center_beam_button.setVisible(new_value) elif property_name == "enableMeasureFlux": self.measure_flux_button.setVisible(new_value) elif property_name == "compactView": for widget in self.motor_widget_list: widget.position_spinbox.setHidden(new_value) widget.position_slider.setHidden(new_value) widget.step_button.setHidden(new_value) else: BaseWidget.property_changed(self, property_name, old_value, new_value)
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, *args): BaseWidget.__init__(self, *args) # Hardware objects ---------------------------------------------------- self.slitbox_hwobj = None # Internal values ----------------------------------------------------- # Properties ---------------------------------------------------------- self.add_property("mnemonic", "string", "") self.add_property("formatString", "formatString", "###") # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- # Graphic elements ---------------------------------------------------- self.main_gbox = qt_import.QGroupBox("Slits", self) # h hor_label = qt_import.QLabel("Horizontal:", self.main_gbox) self.current_hor_pos_ledit = qt_import.QLineEdit(self.main_gbox) self.current_hor_pos_ledit.setAlignment(qt_import.Qt.AlignRight) boldFont = self.current_hor_pos_ledit.font() boldFont.setBold(True) self.current_hor_pos_ledit.setFont(boldFont) self.current_hor_pos_ledit.setMaximumWidth(120) self.current_hor_pos_ledit.setEnabled(False) self.hor_pos_dspinbox = qt_import.QSpinBox(self.main_gbox) # self.hor_pos_dspinbox.setMaximumWidth(120) # self.hor_pos_dspinbox.setEnabled(False) self.set_hor_gap_button = qt_import.QPushButton( icons.load_icon("Draw"), "", self.main_gbox) # self.set_hor_gap_button.setEnabled(False) self.set_hor_gap_button.setFixedSize(27, 27) self.stop_hor_button = qt_import.QPushButton(icons.load_icon("Stop2"), "", self.main_gbox) self.stop_hor_button.setEnabled(False) self.stop_hor_button.setFixedSize(27, 27) # Vertical gap ver_label = qt_import.QLabel("Vertical:", self.main_gbox) self.current_ver_pos_ledit = qt_import.QLineEdit(self.main_gbox) self.current_ver_pos_ledit.setAlignment(qt_import.Qt.AlignRight) self.current_ver_pos_ledit.setFont(boldFont) self.current_ver_pos_ledit.setMaximumWidth(120) self.current_ver_pos_ledit.setEnabled(False) self.ver_pos_dspinbox = qt_import.QSpinBox(self.main_gbox) # self.ver_pos_dspinbox.setMaximumWidth(70) # self.ver_pos_dspinbox.setEnabled(False) self.set_ver_gap_button = qt_import.QPushButton( icons.load_icon("Draw"), "", self.main_gbox) # self.set_ver_gap_button.setEnabled(False) self.set_ver_gap_button.setFixedSize(27, 27) self.stop_ver_button = qt_import.QPushButton(icons.load_icon("Stop2"), "", self.main_gbox) self.stop_ver_button.setEnabled(False) self.stop_ver_button.setFixedSize(27, 27) self.test_button = qt_import.QPushButton("Test", self.main_gbox) self.test_button.hide() # Layout -------------------------------------------------------------- _main_gbox_gridlayout = qt_import.QGridLayout(self.main_gbox) _main_gbox_gridlayout.addWidget(hor_label, 0, 0) _main_gbox_gridlayout.addWidget(self.current_hor_pos_ledit, 0, 1) _main_gbox_gridlayout.addWidget(self.hor_pos_dspinbox, 0, 2) _main_gbox_gridlayout.addWidget(self.set_hor_gap_button, 0, 3) _main_gbox_gridlayout.addWidget(self.stop_hor_button, 0, 4) _main_gbox_gridlayout.addWidget(ver_label, 1, 0) _main_gbox_gridlayout.addWidget(self.current_ver_pos_ledit, 1, 1) _main_gbox_gridlayout.addWidget(self.ver_pos_dspinbox, 1, 2) _main_gbox_gridlayout.addWidget(self.set_ver_gap_button, 1, 3) _main_gbox_gridlayout.addWidget(self.stop_ver_button, 1, 4) _main_gbox_gridlayout.setSpacing(2) _main_gbox_gridlayout.setContentsMargins(0, 0, 0, 0) _main_gbox_gridlayout.addWidget(self.test_button, 0, 5) _main_vlayout = qt_import.QVBoxLayout(self) _main_vlayout.addWidget(self.main_gbox) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(2, 2, 2, 2) # Qt signal/slot connections ------------------------------------------ hor_spinbox_event = SpinBoxEvent(self.hor_pos_dspinbox) self.hor_pos_dspinbox.installEventFilter(hor_spinbox_event) hor_spinbox_event.returnPressedSignal.connect(self.change_hor_gap) self.hor_pos_dspinbox.lineEdit().textChanged.connect( self.hor_gap_edited) self.set_hor_gap_button.clicked.connect(self.change_hor_gap) self.stop_hor_button.clicked.connect(self.stop_hor_clicked) ver_spinbox_event = SpinBoxEvent(self.ver_pos_dspinbox) self.ver_pos_dspinbox.installEventFilter(ver_spinbox_event) ver_spinbox_event.returnPressedSignal.connect(self.change_ver_gap) self.ver_pos_dspinbox.lineEdit().textChanged.connect( self.ver_gap_edited) self.ver_pos_dspinbox.lineEdit().returnPressed.connect( self.change_ver_gap) self.set_ver_gap_button.clicked.connect(self.change_ver_gap) self.stop_ver_button.clicked.connect(self.stop_ver_clicked) self.test_button.clicked.connect(self.test_clicked) # SizePolicies -------------------------------------------------------- # Other --------------------------------------------------------------- self.current_hor_pos_ledit.setToolTip("Current horizontal gap size") self.set_hor_gap_button.setToolTip("Set new horizontal gap size") self.stop_hor_button.setToolTip("Stop horizontal slits movements") self.current_ver_pos_ledit.setToolTip("Current vertical gap size") self.set_ver_gap_button.setToolTip("Set new vertical gap size") self.stop_ver_button.setToolTip("Stop vertical slits movements")
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): """VolpiBrick constructor Arguments: :params args: """ super(VolpiBrick, self).__init__(*args) # Hardware objects ---------------------------------------------------- self.volpi_hwobj = None # hardware object # Graphic elements----------------------------------------------------- self.frame = qt_import.QGroupBox() self.frame_layout = qt_import.QVBoxLayout() self.power_bar = PowerBar([ "#5e4fa2", "#3288bd", "#66c2a5", "#abdda4", "#e6f598", "#ffffbf", "#fee08b", "#fdae61", "#f46d43", "#d53e4f", "#9e0142", "#006837", "#1a9850", "#66bd63", "#a6d96a", "#d9ef8b", "#ffffbf", "#fee08b", "#fdae61", "#f46d43", "#d73027", "#a50026" ]) self.power_bar.setMinimum(0) self.power_bar.setMaximum(100) self.power_bar.setSingleStep(1) self.power_bar.setNotchesVisible(True) self.position_spinbox = qt_import.QSpinBox() self.position_spinbox.setMinimum(0) self.position_spinbox.setMaximum(100) self.position_spinbox.setFixedSize(75, 27) self.step_button = qt_import.QPushButton() self.step_button_icon = icons.load_icon("TileCascade2") self.step_button.setIcon(self.step_button_icon) self.step_button.setToolTip("Changes the volpi step") self.step_button.setFixedSize(27, 27) # Layout -------------------------------------------------------------- self.frame_layout.addWidget(self.power_bar) self.frame.setLayout(self.frame_layout) self.main_layout = qt_import.QHBoxLayout() self.main_layout.addWidget(self.frame, 0, qt_import.Qt.AlignCenter) self.main_layout.addWidget(self.position_spinbox) self.main_layout.addWidget(self.step_button) self.setLayout(self.main_layout) # Qt signal/slot connections ----------------------------------------- self.power_bar.value_changed.connect(self.value_changed) self.position_spinbox.valueChanged.connect(self.value_changed) self.step_button.clicked.connect(self.open_step_editor) # define properties self.add_property("mnemonic", "string", "") self.add_property("showBar", "boolean", False) self.add_property("showDial", "boolean", False) self.add_property("showStep", "boolean", True) self.add_property("stepValue", "string", 5) # Internal values ----------------------------------------------------- self.step_editor = None self.move_step = 1 # slots ------------------------------------------- self.define_slot("zoom_changed", ())
def property_changed(self, property_name, old_value, new_value): if property_name == "mnemonic": if self.wrapper_hwobj is not None: self.wrapper_hwobj.duoStateChangedSignal.disconnect(self.stateChanged) h_obj = self.get_hardware_object(new_value) if h_obj is not None: self.wrapper_hwobj = WrapperHO(h_obj) self.main_gbox.show() if self["username"] == "": self["username"] = self.wrapper_hwobj.username help_text = self["setin"] + " the " + self["username"].lower() self.set_in_button.setToolTip(help_text) help_text = self["setout"] + " the " + self["username"].lower() self.set_out_button.setToolTip(help_text) self.main_gbox.setTitle(self["username"]) self.wrapper_hwobj.duoStateChangedSignal.connect(self.stateChanged) self.wrapper_hwobj.get_state() else: self.wrapper_hwobj = None # self.main_gbox.hide() elif property_name == "expertModeControlOnly": if new_value: if self.__expertMode: self.buttons_widget.show() else: self.buttons_widget.hide() else: self.buttons_widget.show() elif property_name == "forceNoControl": if new_value: self.buttons_widget.hide() else: self.buttons_widget.show() elif property_name == "icons": #w = self.fontMetrics().width("Set out") icons_list = new_value.split() try: self.set_in_button.setIcon(icons.load_icon(icons_list[0])) except IndexError: self.set_in_button.setText(self["setin"]) # self.set_in_button.setMinimumWidth(w) try: self.set_out_button.setIcon(icons.load_icon(icons_list[1])) except IndexError: self.set_out_button.setText(self["setout"]) # self.set_out_button.setMinimumWidth(w) # elif property_name=='in': # if self.wrapper_hwobj is not None: # self.stateChanged(self.wrapper_hwobj.get_state()) # elif property_name=='out': # if self.wrapper_hwobj is not None: # self.stateChanged(self.wrapper_hwobj.get_state()) elif property_name == "setin": # w=self.fontMetrics().width("Set out") icons_list = self["icons"] try: i = icons_list[0] except IndexError: self.set_in_button.setText(new_value) # self.set_in_button.setMinimumWidth(w) help_text = new_value + " the " + self["username"].lower() self.set_in_button.setToolTip(help_text) self.set_in_button.setText(self["setin"]) elif property_name == "setout": # w=self.fontMetrics().width("Set out") icons_list = self["icons"].split() try: i = icons_list[1] except IndexError: self.set_out_button.setText(new_value) # self.set_out_button.setMinimumWidth(w) help_text = new_value + " the " + self["username"].lower() self.set_out_button.setToolTip(help_text) self.set_out_button.setText(self["setout"]) elif property_name == "username": if new_value == "": if self.wrapper_hwobj is not None: name = self.wrapper_hwobj.username if name != "": self["username"] = name return help_text = self["setin"] + " the " + new_value.lower() self.set_in_button.setToolTip(help_text) help_text = self["setout"] + " the " + new_value.lower() self.set_out_button.setToolTip(help_text) self.main_gbox.setTitle(self["username"]) else: BaseWidget.property_changed(self, property_name, old_value, new_value)
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")