Exemple #1
0
    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
        )
Exemple #2
0
 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"))
Exemple #3
0
    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)
Exemple #4
0
 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)
Exemple #5
0
 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"])
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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)
Exemple #9
0
    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"))
Exemple #10
0
    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)
Exemple #11
0
    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")
Exemple #12
0
    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)
Exemple #13
0
    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))
Exemple #14
0
    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)
Exemple #15
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)
Exemple #16
0
 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
Exemple #17
0
        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"])
Exemple #18
0
    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)
Exemple #19
0
    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)
Exemple #20
0
    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
Exemple #21
0
    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)
Exemple #22
0
    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)
Exemple #23
0
    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()
Exemple #24
0
    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)
Exemple #25
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)
Exemple #26
0
    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")
Exemple #27
0
    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",
        )
Exemple #28
0
    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", ())
Exemple #29
0
    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)
Exemple #30
0
    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")