示例#1
0
    def __init__(self, parent=None, name=None, flags=0):

        qt_import.QWidget.__init__(self, parent,
                                   qt_import.Qt.WindowFlags(flags))

        if not name:
            self.setObjectName("RadiationDamageWidgetLayout")

        # Hardware objects ----------------------------------------------------

        # Internal variables --------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.rad_damage_cbx = qt_import.QCheckBox(self)
        _label_widget = qt_import.QWidget(self)
        self.burn_osc_start_label = qt_import.QLabel(_label_widget)
        self.burn_osc_start_ledit = qt_import.QLineEdit(_label_widget)
        self.burn_osc_start_ledit.setMinimumSize(50, 0)
        self.burn_osc_start_ledit.setMaximumSize(50, 32767)

        _value_widget = qt_import.QWidget(self)
        self.burn_osc_interval_label = qt_import.QLabel(_value_widget)
        self.burn_osc_interval_ledit = qt_import.QLineEdit(_value_widget)
        self.burn_osc_interval_ledit.setMinimumSize(50, 0)
        self.burn_osc_interval_ledit.setMaximumSize(50, 32767)

        # Layout --------------------------------------------------------------
        _label_widget_hlayout = qt_import.QHBoxLayout(self)
        _label_widget_hlayout.addWidget(self.burn_osc_start_label)
        _label_widget_hlayout.addWidget(self.burn_osc_start_ledit)
        _label_widget_hlayout.addStretch(0)
        _label_widget_hlayout.setSpacing(0)
        _label_widget_hlayout.setContentsMargins(0, 0, 0, 0)
        _label_widget.setLayout(_label_widget_hlayout)

        _value_hlayout = qt_import.QHBoxLayout(self)
        _value_hlayout.addWidget(self.burn_osc_interval_label)
        _value_hlayout.addWidget(self.burn_osc_interval_ledit)
        _value_hlayout.addStretch(0)
        _value_hlayout.setSpacing(0)
        _value_hlayout.setContentsMargins(0, 0, 0, 0)
        _value_widget.setLayout(_value_hlayout)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.rad_damage_cbx)
        _main_vlayout.addWidget(_label_widget)
        _main_vlayout.addWidget(_value_widget)
        _main_vlayout.addStretch(0)
        _main_vlayout.setSpacing(0)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(_main_vlayout)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------

        # Other ---------------------------------------------------------------
        self.languageChange()
示例#2
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"))
示例#3
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)
示例#4
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)
示例#5
0
    def __init__(self, *args):

        BaseWidget.__init__(self, *args)

        # Properties ----------------------------------------------------------
        self.add_property("mnemonic", "string", "")
        self.add_property("icons", "string", "")
        self.add_property("myTabLabel", "string", "")

        # Signals ------------------------------------------------------------
        self.define_signal("incoming_unread_messages", ())
        self.define_signal("reset_unread_message", ())

        # Slots ---------------------------------------------------------------
        self.define_slot("tabSelected", ())
        self.define_slot("sessionSelected", ())

        # Hardware objects ----------------------------------------------------
        self.instance_server_hwobj = None

        # Internal values -----------------------------------------------------
        self.session_id = None
        self.nickname = ""
        self.role = BaseWidget.INSTANCE_ROLE_UNKNOWN

        # Graphic elements ----------------------------------------------------
        self.conversation_textedit = qt_import.QTextEdit(self)
        self.conversation_textedit.setReadOnly(True)
        _controls_widget = qt_import.QWidget(self)
        _say_label = qt_import.QLabel("Say:", _controls_widget)
        self.message_ledit = qt_import.QLineEdit(_controls_widget)
        self.send_button = qt_import.QPushButton("Send", _controls_widget)
        self.send_button.setEnabled(False)

        # Layout --------------------------------------------------------------
        _controls_widget_hlayout = qt_import.QHBoxLayout(_controls_widget)
        _controls_widget_hlayout.addWidget(_say_label)
        _controls_widget_hlayout.addWidget(self.message_ledit)
        _controls_widget_hlayout.addWidget(self.send_button)
        _controls_widget_hlayout.setSpacing(2)
        _controls_widget_hlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.conversation_textedit)
        _main_vlayout.addWidget(_controls_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # Qt signal/slot connections ------------------------------------------
        self.send_button.clicked.connect(self.send_current_message)
        self.message_ledit.returnPressed.connect(self.send_current_message)
        self.message_ledit.textChanged.connect(self.message_changed)
示例#6
0
    def __init__(self, parent=None, name=None, fl=0):

        qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(fl))
        if name is not None:
            self.setObjectName(name)
        self.selected_element = None
        self.selected_edge = "L3"

        # Signals ------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        if PYMCA_IMPORTED:
            self.periodic_table = CustomPeriodicTable(self)
        else:
            self.periodic_elements_combo = qt_import.QComboBox(self)
            self.periodic_elements_combo.setFixedWidth(100)

        self.edge_widget = qt_import.QWidget(self)
        edge_label = qt_import.QLabel("Edge:", self.edge_widget)
        self.edge_combo = qt_import.QComboBox(self.edge_widget)

        # Layout --------------------------------------------------------------
        _edge_hlayout = qt_import.QHBoxLayout(self.edge_widget)
        if not PYMCA_IMPORTED:
            _edge_hlayout.addWidget(self.periodic_elements_combo)
        _edge_hlayout.addWidget(edge_label)
        _edge_hlayout.addWidget(self.edge_combo)
        _edge_hlayout.addStretch(0)
        _edge_hlayout.setSpacing(2)
        _edge_hlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        if PYMCA_IMPORTED:
            _main_vlayout.addWidget(self.periodic_table, qt_import.Qt.AlignHCenter)
        _main_vlayout.addWidget(self.edge_widget)
        _main_vlayout.addStretch(0)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        if PYMCA_IMPORTED:
            self.periodic_table.edgeSelectedSignal.connect(self.edge_selected)
        else:
            self.periodic_elements_combo.activated.connect(self.element_combo_activated)
        self.edge_combo.addItem("K")
        self.edge_combo.activated.connect(self.edge_combo_activated)
        self.edge_combo.setEnabled(False)
示例#7
0
    def __init__(self, parent=None, name="advanced_parameters_widget"):
        qt_import.QWidget.__init__(self, parent)

        # Internal values -----------------------------------------------------
        self._data_collection = None
        self._tree_view_item = None
        self._acquisition_mib = None

        # Properties ----------------------------------------------------------

        # Signals -------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        _dc_parameters_widget = qt_import.QWidget(self)
        self._data_path_widget = DataPathWidget(_dc_parameters_widget)
        self._acq_widget = AcquisitionWidget(_dc_parameters_widget,
                                             layout="horizontal")

        # Layout --------------------------------------------------------------
        _dc_parameters_widget_layout = qt_import.QVBoxLayout(
            _dc_parameters_widget)
        _dc_parameters_widget_layout.addWidget(self._data_path_widget)
        _dc_parameters_widget_layout.addWidget(self._acq_widget)
        _dc_parameters_widget_layout.setSpacing(2)
        _dc_parameters_widget_layout.addStretch(10)
        _dc_parameters_widget_layout.setContentsMargins(0, 0, 0, 0)

        _main_hlayout = qt_import.QHBoxLayout(self)
        _main_hlayout.addWidget(_dc_parameters_widget)
        _main_hlayout.setSpacing(2)
        _main_hlayout.setContentsMargins(2, 2, 2, 2)
        _main_hlayout.addStretch(0)

        # Qt signal/slot connections ------------------------------------------
        # self._acq_widget.acqParametersChangedSignal.\
        #     connect(self.acq_parameters_changed)
        # self._data_path_widget.pathTemplateChangedSignal.\
        #     connect(self.acq_parameters_changed)
        self._acq_widget.madEnergySelectedSignal.connect(
            self.mad_energy_selected)

        # Ohter ---------------------------------------------------------------
        self._acq_widget.use_osc_start(False)
        self._acq_widget.acq_widget_layout.mad_cbox.hide()
        self._acq_widget.acq_widget_layout.energies_combo.hide()
        self._acq_widget.acq_widget_layout.shutterless_cbx.hide()
示例#8
0
    def __init__(self, *args):

        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------
        self.exporter_client_hwobj = None

        # Internal variables --------------------------------------------------

        # Properties ----------------------------------------------------------
        self.add_property("mnemonic", "string", "")

        # Signals ------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.info_widget = qt_import.QWidget(self)
        self.info_address_ledit = qt_import.QLineEdit(self.info_widget)
        self.info_refresh_button = qt_import.QPushButton(
            "Refresh", self.info_widget)
        self.method_table = qt_import.QTableWidget(self)
        self.property_table = qt_import.QTableWidget(self)

        # Layout --------------------------------------------------------------
        _info_widget_hlayout = qt_import.QHBoxLayout(self.info_widget)
        _info_widget_hlayout.addWidget(self.info_address_ledit)
        _info_widget_hlayout.addWidget(self.info_refresh_button)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.info_widget)
        _main_vlayout.addWidget(self.method_table)
        _main_vlayout.addWidget(self.property_table)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # Qt signal/slot connections ------------------------------------------

        # Other ---------------------------------------------------------------
        self.method_table.setColumnCount(2)
        self.method_table.setHorizontalHeaderLabels(
            ["Type", "Method (Parameters)"])
        self.property_table.setColumnCount(4)
        self.property_table.setHorizontalHeaderLabels(
            ["Type", "Property", "Access", "Value"])
        self.setFixedWidth(600)
示例#9
0
    def __init__(self, parent=None, name=None, flags=0):

        qt_import.QWidget.__init__(self, parent,
                                   qt_import.Qt.WindowFlags(flags))

        if not name:
            self.setObjectName("SADWidgetLayout")

        # Hardware objects ----------------------------------------------------

        # Internal variables --------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.optimised_sad_cbx = qt_import.QCheckBox("Optimised SAD", self)
        self.automatic_resolution_radio = qt_import.QRadioButton(self)
        _optimal_sad_widget = qt_import.QWidget(self)
        self.optimal_sad_radio = qt_import.QRadioButton(
            "Optimal SAD for given resolution:", _optimal_sad_widget)
        self.sad_bgroup = qt_import.QButtonGroup(self)
        self.sad_bgroup.addButton(self.automatic_resolution_radio)
        self.sad_bgroup.addButton(self.optimal_sad_radio)
        self.sad_resolution_ledit = qt_import.QLineEdit(_optimal_sad_widget)
        self.sad_resolution_ledit.setMinimumSize(50, 0)
        self.sad_resolution_ledit.setMaximumSize(50, 32767)

        # Layout --------------------------------------------------------------
        _optimal_sad_widget_hlayout = qt_import.QHBoxLayout(
            _optimal_sad_widget)
        _optimal_sad_widget_hlayout.addWidget(self.optimal_sad_radio)
        _optimal_sad_widget_hlayout.addWidget(self.sad_resolution_ledit)
        _optimal_sad_widget_hlayout.setSpacing(0)
        _optimal_sad_widget_hlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.optimised_sad_cbx)
        _main_vlayout.addWidget(self.automatic_resolution_radio)
        _main_vlayout.addWidget(_optimal_sad_widget)
        _main_vlayout.addStretch(0)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        self.automatic_resolution_radio.setText(
            self.trUtf8(
                "\x52\x65\x73\x6f\x6c\x75\x74\x69\x6f\x6e\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x2c\x20\x72\x6f\x74\x61\x74\x69\x6f\x6e\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x3a\x20\x33\x36\x30\xc2\xb0"
            ))
示例#10
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)
示例#11
0
    def __init__(self,
                 parent,
                 button1="OK",
                 button2="Cancel",
                 button3=None,
                 callback=None,
                 margin=6,
                 spacing=6):
        """Constructor docstring."""
        super(DialogButtonsBar, self).__init__(parent)

        self.callback = callback
        spacer = qt_import.QWidget(self)
        spacer.setSizePolicy(qt_import.QSizePolicy.Expanding,
                             qt_import.QSizePolicy.Fixed)

        # Layout --------------------------------------------------------------
        self._dialog_vlayout = qt_import.QVBoxLayout(self, margin, spacing)
        self._dialog_vlayout.addWidget(spacer)

        if button1 is not None:
            self.button1 = qt_import.QPushButton(button1, self)
            self._dialog_vlayout.addWidget(self.button1)
            self.button1.clicked.connect(self.button1_clicked)

        if button2 is not None:
            self.button2 = qt_import.QPushButton(button1, self)
            self._dialog_vlayout.addWidget(self.button2)
            self.button2.clicked.connect(self.button2_clicked)

        if button3 is not None:
            self.button3 = qt_import.QPushButton(button1, self)
            self._dialog_vlayout.addWidget(self.button3)
            self.button3.clicked.connect(self.button3_clicked)

        self.setSizePolicy(qt_import.QSizePolicy.Minimum,
                           qt_import.QSizePolicy.Fixed)
        self.setLayout(self._dialog_vlayout)
示例#12
0
    def __init__(self, parent=None, name=None, fl=0):

        qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(fl))

        if not name:
            self.setObjectName("ReferenceImageWidget")

        # Hardware objects ----------------------------------------------------

        # Internal variables --------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.group_box = qt_import.QGroupBox("Reference images", self)
        self.tool_box = qt_import.QToolBox(self.group_box)
        self.page_widget = qt_import.QWidget(self.tool_box)
        self.path_widget = DataPathWidget(self.page_widget)
        self.acq_widget = AcquisitionWidget(self.page_widget, "horizontal")
        self.acq_widget.acq_widget_layout.shutterless_cbx.hide()
        # self.acq_widget.acq_widget_layout.setFixedHeight(130)
        self.tool_box.addItem(self.page_widget, "Acquisition parameters")

        # Layout --------------------------------------------------------------
        _page_widget_layout = qt_import.QVBoxLayout(self.page_widget)
        _page_widget_layout.addWidget(self.path_widget)
        _page_widget_layout.addWidget(self.acq_widget)
        _page_widget_layout.addStretch(0)
        _page_widget_layout.setSpacing(0)
        _page_widget_layout.setContentsMargins(0, 0, 0, 0)

        _group_box_vlayout = qt_import.QVBoxLayout(self.group_box)
        _group_box_vlayout.addWidget(self.tool_box)
        _group_box_vlayout.setSpacing(0)
        _group_box_vlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.group_box)
        _main_vlayout.setSpacing(0)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)
示例#13
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)
示例#14
0
    def __init__(self, parent=None, name="char_parameter_widget"):

        qt_import.QWidget.__init__(self, parent)

        if name is not None:
            self.setObjectName(name)

        # Hardware objects ----------------------------------------------------

        # Internal variables --------------------------------------------------
        self._char = None
        self._char_params = queue_model_objects.CharacterisationParameters()
        self._char_params_mib = DataModelInputBinder(self._char_params)
        self._tree_view_item = None
        self.previous_energy = None

        self.add_dc_cb = None

        # Graphic elements ----------------------------------------------------
        main_widget = qt_import.QWidget(self)
        rone_widget = qt_import.QWidget(main_widget)
        self.reference_img_widget = ReferenceImageWidget(rone_widget)
        self.acq_widget = self.reference_img_widget.acq_widget
        self.path_widget = self.reference_img_widget.path_widget
        self.position_widget = qt_import.load_ui_file(
            "snapshot_widget_layout.ui")
        self.position_widget.setMinimumSize(450, 340)

        rtwo_widget = qt_import.QWidget(main_widget)
        self.char_type_widget = CharTypeWidget(rtwo_widget)
        self.routine_dc_widget = self.char_type_widget.routine_dc_page
        self.sad_widget = self.char_type_widget.sad_page
        self.rad_dmg_char_widget = self.char_type_widget.rad_damage_page
        self.opt_parameters_widget = OptimisationParametersWidgetLayout(self)

        rtree_widget = qt_import.QWidget(main_widget)
        self.rad_dmg_widget = qt_import.load_ui_file(
            "radiation_damage_model_widget_layout.ui")
        self.vertical_dimension_widget = qt_import.load_ui_file(
            "vertical_crystal_dimension_widget_layout.ui")

        # Layout --------------------------------------------------------------
        rone_widget_layout = qt_import.QHBoxLayout(rone_widget)
        rone_widget_layout.addWidget(self.reference_img_widget)
        rone_widget_layout.addWidget(self.position_widget)
        # rone_widget_layout.addStretch(0)
        rone_widget_layout.setSpacing(2)
        rone_widget_layout.setContentsMargins(0, 0, 0, 0)

        rtwo_widget_layout = qt_import.QHBoxLayout(rtwo_widget)
        rtwo_widget_layout.addWidget(self.char_type_widget)
        rtwo_widget_layout.addWidget(self.opt_parameters_widget)
        rtwo_widget_layout.addStretch(0)
        rtwo_widget_layout.setSpacing(2)
        rtwo_widget_layout.setContentsMargins(0, 0, 0, 0)

        rtree_widget_layout = qt_import.QHBoxLayout(rtree_widget)
        rtree_widget_layout.addWidget(self.rad_dmg_widget)
        rtree_widget_layout.addWidget(self.vertical_dimension_widget)
        rtree_widget_layout.addStretch(10)
        rtree_widget_layout.setSpacing(2)
        rtree_widget_layout.setContentsMargins(0, 0, 0, 0)

        _main_widget_vlayout = qt_import.QVBoxLayout(main_widget)
        _main_widget_vlayout.addWidget(rone_widget)
        _main_widget_vlayout.addWidget(rtwo_widget)
        _main_widget_vlayout.addWidget(rtree_widget)
        _main_widget_vlayout.addStretch(10)
        _main_widget_vlayout.setSpacing(2)
        _main_widget_vlayout.setContentsMargins(0, 0, 0, 0)

        _main_hlayout = qt_import.QHBoxLayout(self)
        _main_hlayout.addWidget(main_widget)
        _main_hlayout.setSpacing(0)
        _main_hlayout.addStretch(0)
        _main_hlayout.setContentsMargins(0, 0, 0, 0)

        # SizePolicies -------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        self.toggle_permitted_range(
            self.opt_parameters_widget.opt_param_widget.permitted_range_cbx.
            isChecked())

        self.opt_parameters_widget.opt_param_widget.permitted_range_cbx.toggled.connect(
            self.toggle_permitted_range)

        # Other ---------------------------------------------------------------
        self._char_params_mib.bind_value_update(
            "min_dose",
            self.routine_dc_widget.dose_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "min_time",
            self.routine_dc_widget.time_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "use_min_dose", self.routine_dc_widget.min_dose_radio, bool, None)

        self._char_params_mib.bind_value_update(
            "use_min_time", self.routine_dc_widget.min_time_radio, bool, None)

        self._char_params_mib.bind_value_update(
            "account_rad_damage",
            self.routine_dc_widget.radiation_damage_cbx,
            bool,
            None,
        )

        self._char_params_mib.bind_value_update(
            "auto_res", self.sad_widget.automatic_resolution_radio, bool, None)

        self._char_params_mib.bind_value_update(
            "sad_res",
            self.sad_widget.sad_resolution_ledit,
            float,
            qt_import.QDoubleValidator(0.5, 20, 3, self),
        )

        self._char_params_mib.bind_value_update(
            "opt_sad", self.sad_widget.optimised_sad_cbx, bool, None)

        self._char_params_mib.bind_value_update(
            "determine_rad_params", self.rad_dmg_char_widget.rad_damage_cbx,
            bool, None)

        self._char_params_mib.bind_value_update(
            "burn_osc_start",
            self.rad_dmg_char_widget.burn_osc_start_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "burn_osc_interval",
            self.rad_dmg_char_widget.burn_osc_interval_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "use_aimed_resolution",
            self.opt_parameters_widget.opt_param_widget.maximum_res_cbx,
            bool,
            None,
        )

        self._char_params_mib.bind_value_update(
            "use_aimed_multiplicity",
            self.opt_parameters_widget.opt_param_widget.aimed_mult_cbx,
            bool,
            None,
        )

        self._char_params_mib.bind_value_update(
            "aimed_resolution",
            self.opt_parameters_widget.opt_param_widget.maximum_res_ledit,
            float,
            qt_import.QDoubleValidator(0.01, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "aimed_multiplicity",
            self.opt_parameters_widget.opt_param_widget.aimed_mult_ledit,
            float,
            qt_import.QDoubleValidator(0.01, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "aimed_i_sigma",
            self.opt_parameters_widget.opt_param_widget.i_over_sigma_ledit,
            float,
            qt_import.QDoubleValidator(0.01, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "aimed_completness",
            self.opt_parameters_widget.opt_param_widget.aimed_comp_ledit,
            float,
            qt_import.QDoubleValidator(0.01, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "strategy_complexity",
            self.opt_parameters_widget.opt_param_widget.start_comp_cbox,
            int,
            None,
        )

        self._char_params_mib.bind_value_update(
            "use_permitted_rotation",
            self.opt_parameters_widget.opt_param_widget.permitted_range_cbx,
            bool,
            None,
        )

        self._char_params_mib.bind_value_update(
            "permitted_phi_start",
            self.opt_parameters_widget.opt_param_widget.phi_start_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "permitted_phi_end",
            self.opt_parameters_widget.opt_param_widget.phi_end_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "low_res_pass_strat",
            self.opt_parameters_widget.opt_param_widget.low_res_pass_cbx,
            bool,
            None,
        )

        self._char_params_mib.bind_value_update(
            "rad_suscept",
            self.rad_dmg_widget.sensetivity_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "beta",
            self.rad_dmg_widget.beta_over_gray_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "gamma",
            self.rad_dmg_widget.gamma_over_gray_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "max_crystal_vdim",
            self.vertical_dimension_widget.max_vdim_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "min_crystal_vdim",
            self.vertical_dimension_widget.min_vdim_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "min_crystal_vphi",
            self.vertical_dimension_widget.min_vphi_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        self._char_params_mib.bind_value_update(
            "max_crystal_vphi",
            self.vertical_dimension_widget.max_vphi_ledit,
            float,
            qt_import.QDoubleValidator(0.0, 1000, 2, self),
        )

        # self._char_params_mib.bind_value_update('space_group',
        #                                        self.vertical_dimension_widget.space_group_ledit,
        #                                        str,
        #                                        None)

        self.vertical_dimension_widget.space_group_ledit.addItems(
            queue_model_enumerables.XTAL_SPACEGROUPS)

        self.char_type_widget.charact_type_tbox.currentChanged.connect(
            self.update_char_type)
        self.rad_dmg_char_widget.rad_damage_cbx.toggled.connect(
            self.enable_opt_parameters_widget)
        self.opt_parameters_widget.opt_param_widget.maximum_res_cbx.toggled.connect(
            self.enable_maximum_res_ledit)
        self.opt_parameters_widget.opt_param_widget.aimed_mult_cbx.toggled.connect(
            self.enable_aimed_mult_ledit)
        self.path_widget.data_path_layout.prefix_ledit.textChanged.connect(
            self._prefix_ledit_change)
        self.path_widget.data_path_layout.run_number_ledit.textChanged.connect(
            self._run_number_ledit_change)
        self.vertical_dimension_widget.space_group_ledit.activated.connect(
            self._space_group_change)
示例#15
0
    def __init__(self, *args):

        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------

        # Internal values -----------------------------------------------------
        self.axis_camera = None
        self.sc_camera = None

        # Properties ----------------------------------------------------------
        self.add_property("hwobj_axis_camera", "string", "")
        self.add_property("hwobj_sc_camera", "string", "")

        # Signals -------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        status_widget = qt_import.QWidget(self)
        status_label = qt_import.QLabel("Status: ", status_widget)
        self.status_ledit = qt_import.QLineEdit(status_widget)

        self.camera_live_cbx = qt_import.QCheckBox("Live view", self)
        self.camera_live_cbx.setChecked(False)

        self.progress_bar = qt_import.QProgressBar(self)
        self.progress_bar.setMinimum(0)

        camera_widget = qt_import.QWidget(self)

        self.axis_view = qt_import.QGraphicsView(camera_widget)
        axis_scene = qt_import.QGraphicsScene(self.axis_view)
        self.axis_view.setScene(axis_scene)
        self.axis_camera_pixmap_item = qt_import.QGraphicsPixmapItem()
        axis_scene.addItem(self.axis_camera_pixmap_item)

        self.sc_view = qt_import.QGraphicsView(camera_widget)
        sc_scene = qt_import.QGraphicsScene(self.sc_view)
        self.sc_view.setScene(sc_scene)
        self.sc_camera_pixmap_item = qt_import.QGraphicsPixmapItem()
        sc_scene.addItem(self.sc_camera_pixmap_item)

        # Layout --------------------------------------------------------------
        _status_widget_hlayout = qt_import.QHBoxLayout(status_widget)
        _status_widget_hlayout.addWidget(status_label)
        _status_widget_hlayout.addWidget(self.status_ledit)

        _camera_widget_hlayout = qt_import.QHBoxLayout(camera_widget)
        _camera_widget_hlayout.addWidget(self.axis_view)
        _camera_widget_hlayout.addWidget(self.sc_view)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(status_widget)
        _main_vlayout.addWidget(self.camera_live_cbx)
        _main_vlayout.addWidget(camera_widget)
        _main_vlayout.addWidget(self.progress_bar)
        _main_vlayout.setSpacing(0)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        self.camera_live_cbx.stateChanged.connect(
            self.camera_live_state_changed)

        if HWR.beamline.sample_changer is not None:
            self.connect(
                HWR.beamline.sample_changer,
                SampleChanger.STATUS_CHANGED_EVENT,
                self.sample_changer_status_changed,
            )
            self.connect(HWR.beamline.sample_changer, "progressInit",
                         self.init_progress)
            self.connect(HWR.beamline.sample_changer, "progressStep",
                         self.step_progress)
            self.connect(HWR.beamline.sample_changer, "progressStop",
                         self.stop_progress)
示例#16
0
    def __init__(self, *args):

        BaseWidget.__init__(self, *args)

        # Internal variables ------------------------------------------------
        self.sample = queue_model_objects.Sample()
        self.crystal = self.sample.crystals[0]
        self.sample_mib = DataModelInputBinder(self.sample)
        self.crystal_mib = DataModelInputBinder(self.crystal)

        # Signals ------------------------------------------------------------

        # Slots --------------------------------------------------------------
        self.define_slot("populate_sample_details", ({}))

        # Graphic elements ----------------------------------------------------
        _info_widget = qt_import.QWidget(self)
        self.crystal_widget = qt_import.load_ui_file("crystal_widget_layout.ui")
        self.sample_info_widget = qt_import.load_ui_file("sample_info_widget_layout.ui")
        # self.ispyb_sample_info_widget = ISPyBSampleInfoWidget(self)

        # Layout --------------------------------------------------------------
        _info_widget_hlayout = qt_import.QHBoxLayout(_info_widget)
        _info_widget_hlayout.addWidget(self.sample_info_widget)
        _info_widget_hlayout.addWidget(self.crystal_widget)
        _info_widget_hlayout.addStretch(0)
        _info_widget_hlayout.setSpacing(0)
        _info_widget_hlayout.setContentsMargins(2, 2, 2, 2)

        _main_hlayout = qt_import.QVBoxLayout(self)
        _main_hlayout.addWidget(_info_widget)
        # _main_hlayout.addWidget(self.ispyb_sample_info_widget)
        _main_hlayout.addStretch(0)
        _main_hlayout.setSpacing(0)
        _main_hlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------

        # Other ---------------------------------------------------------------
        self.crystal_mib.bind_value_update(
            "space_group", self.crystal_widget.space_group_value_label, str, None
        )

        self.crystal_mib.bind_value_update(
            "protein_acronym",
            self.crystal_widget.protein_acronym_value_label,
            str,
            None,
        )

        self.crystal_mib.bind_value_update(
            "cell_a", self.crystal_widget.a_value_label, str, None
        )

        self.crystal_mib.bind_value_update(
            "cell_alpha", self.crystal_widget.alpha_value_label, str, None
        )

        self.crystal_mib.bind_value_update(
            "cell_b", self.crystal_widget.b_value_label, str, None
        )

        self.crystal_mib.bind_value_update(
            "cell_beta", self.crystal_widget.beta_value_label, str, None
        )

        self.crystal_mib.bind_value_update(
            "cell_c", self.crystal_widget.c_value_label, str, None
        )

        self.crystal_mib.bind_value_update(
            "cell_gamma", self.crystal_widget.gamma_value_label, str, None
        )

        self.sample_mib.bind_value_update(
            "name", self.sample_info_widget.name_value_label, str, None
        )

        self.sample_mib.bind_value_update(
            "code", self.sample_info_widget.data_matrix_value_label, str, None
        )

        self.sample_mib.bind_value_update(
            "holder_length",
            self.sample_info_widget.holder_length_value_label,
            str,
            None,
        )

        self.sample_mib.bind_value_update(
            "lims_sample_location",
            self.sample_info_widget.sample_location_value_label,
            str,
            None,
        )

        self.sample_mib.bind_value_update(
            "lims_container_location",
            self.sample_info_widget.basket_location_value_label,
            str,
            None,
        )
示例#17
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",
        )
示例#18
0
    def __init__(self, *args):

        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------
        self.crl_hwobj = None

        # Internal values -----------------------------------------------------
        self.crl_value = []

        # Properties ----------------------------------------------------------
        self.add_property("lenseCount", "integer", 6)
        self.add_property("mnemonic", "string", "")
        self.add_property("formatString", "formatString", "#.#")
        self.add_property("caption", "string", "")
        self.add_property(
            "style", "combo", ("table", "number"), "table"
        )

        # Signals ------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.main_gbox = qt_import.QGroupBox("CRL", self)
        self.mode_combo = qt_import.QComboBox(self.main_gbox)
        self.set_according_to_energy_button = qt_import.QPushButton(
            "Set", self.main_gbox)
        self.set_out_button = qt_import.QPushButton("Out", self.main_gbox)
        # self.align_beam_button = qt_import.QtGui.QPushButton("Align", self.main_gbox)

        self.crl_widget = qt_import.QWidget(self.main_gbox)
        self.crl_value_table = qt_import.QTableWidget(self.crl_widget)
        self.crl_lense_spinbox = qt_import.QSpinBox(self.crl_widget)
        self.crl_lense_in_button = qt_import.QPushButton("In", self.crl_widget)
        self.crl_lense_out_button = qt_import.QPushButton("Out", self.crl_widget)

        self.move_up_button = qt_import.QPushButton("", self.main_gbox)
        self.move_down_button = qt_import.QPushButton("", self.main_gbox)

        # Layout --------------------------------------------------------------
        _crl_widget_hlayout = qt_import.QHBoxLayout(self.crl_widget)
        _crl_widget_hlayout.addWidget(self.crl_value_table)
        _crl_widget_hlayout.addWidget(self.crl_lense_spinbox)
        _crl_widget_hlayout.addWidget(self.crl_lense_in_button)
        _crl_widget_hlayout.addWidget(self.crl_lense_out_button)
        _crl_widget_hlayout.setSpacing(2)
        _crl_widget_hlayout.setContentsMargins(0, 0, 0, 0)

        _main_gbox_gridlayout = qt_import.QGridLayout(self.main_gbox)
        _main_gbox_gridlayout.addWidget(self.mode_combo, 0, 0)
        _main_gbox_gridlayout.addWidget(self.set_according_to_energy_button, 0, 1)
        _main_gbox_gridlayout.addWidget(self.set_out_button, 1, 1)
        _main_gbox_gridlayout.addWidget(self.crl_widget, 1, 0)
        # _main_gbox_gridlayout.addWidget(self.align_beam_button, 1, 1)
        _main_gbox_gridlayout.addWidget(self.move_up_button, 0, 2)
        _main_gbox_gridlayout.addWidget(self.move_down_button, 1, 2)
        _main_gbox_gridlayout.setSpacing(2)
        _main_gbox_gridlayout.setContentsMargins(2, 2, 2, 2)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.main_gbox)
        _main_vlayout.setSpacing(0)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        self.mode_combo.activated.connect(self.set_crl_mode)
        self.crl_value_table.itemDoubleClicked.connect(
            self.crl_table_item_doubleclicked
        )
        self.set_according_to_energy_button.clicked.connect(
            self.set_according_to_energy
        )
        self.set_out_button.clicked.connect(self.set_out_clicked)
        self.move_up_button.clicked.connect(self.move_up_clicked)
        self.move_down_button.clicked.connect(self.move_down_clicked)

        # Other ---------------------------------------------------------------
        self.mode_combo.setCurrentIndex(1)
        self.crl_value_table.setRowCount(1)
        self.crl_value_table.verticalHeader().hide()
        self.crl_value_table.horizontalHeader().hide()
        self.crl_value_table.setRowHeight(0, 20)
        self.crl_value_table.setFixedHeight(24)
        self.crl_value_table.setShowGrid(True)

        # self.set_according_to_energy_button.setIcon(icons.load_icon("Up2"))
        # self.set_out_button.setIcon(icons.load_icon("Up2"))
        self.move_up_button.setIcon(icons.load_icon("Up2"))
        self.move_up_button.setFixedWidth(25)
        self.move_down_button.setIcon(icons.load_icon("Down2"))
        self.move_down_button.setFixedWidth(25)

        self.set_according_to_energy_button.setFixedWidth(30)
        self.set_out_button.setFixedWidth(30)
        self.crl_lense_in_button.setFixedWidth(30)
        self.crl_lense_out_button.setFixedWidth(30)
示例#19
0
    def __init__(self, configuration):

        qt_import.QDialog.__init__(self, None)

        # Internal values -----------------------------------------------------
        self.has_changed = None
        self.configuration = configuration
        self.signalling_child_dict = {}
        self.receiving_child_dict = {}
        self.connecting_child_dict = {}

        # Signals ------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        main_splitter = qt_import.QSplitter(qt_import.Qt.Vertical, self)
        top_panel = qt_import.QWidget(main_splitter)
        bot_panel = qt_import.QWidget(main_splitter)

        emitter_panel = qt_import.QWidget(top_panel)
        self.emitter_windows_listwidget = qt_import.QListWidget(emitter_panel)
        self.emitter_objects_listwidget = qt_import.QListWidget(emitter_panel)
        self.emitter_signals_listwidget = qt_import.QListWidget(emitter_panel)
        self.emitter_objects_listwidget.setSortingEnabled(True)
        self.emitter_signals_listwidget.setSortingEnabled(True)

        receiver_panel = qt_import.QWidget(top_panel)
        self.receiver_windows_listwidget = qt_import.QListWidget(emitter_panel)
        self.receiver_objects_listwidget = qt_import.QListWidget(emitter_panel)
        self.receiver_slots_listwidget = qt_import.QListWidget(emitter_panel)
        self.receiver_objects_listwidget.setSortingEnabled(True)
        self.receiver_slots_listwidget.setSortingEnabled(True)

        self.add_connection_button = qt_import.QPushButton(
            "Add connection", self)

        self.connections_treewidget = qt_import.QTreeWidget(bot_panel)
        button_panel = qt_import.QWidget(bot_panel)
        self.remove_connection_button = qt_import.QPushButton(
            "Remove connection", button_panel)
        self.ok_button = qt_import.QPushButton("OK", button_panel)
        self.cancel_button = qt_import.QPushButton("Cancel", button_panel)

        # Layout --------------------------------------------------------------
        emitter_panel_layout = qt_import.QGridLayout(emitter_panel)
        emitter_panel_layout.addWidget(
            qt_import.QLabel("<h3>Emitters</h3>", self), 0, 1,
            qt_import.Qt.AlignHCenter)
        emitter_panel_layout.addWidget(qt_import.QLabel("Windows", self), 1, 0)
        emitter_panel_layout.addWidget(qt_import.QLabel("Objects", self), 1, 1)
        emitter_panel_layout.addWidget(qt_import.QLabel("Signals", self), 1, 2)
        emitter_panel_layout.addWidget(self.emitter_windows_listwidget, 2, 0)
        emitter_panel_layout.addWidget(self.emitter_objects_listwidget, 2, 1)
        emitter_panel_layout.addWidget(self.emitter_signals_listwidget, 2, 2)

        receiver_panel_layout = qt_import.QGridLayout(receiver_panel)
        receiver_panel_layout.addWidget(
            qt_import.QLabel("<h3>Receivers</h3>", self), 0, 1,
            qt_import.Qt.AlignHCenter)
        receiver_panel_layout.addWidget(qt_import.QLabel("Windows", self), 1,
                                        0)
        receiver_panel_layout.addWidget(qt_import.QLabel("Objects", self), 1,
                                        1)
        receiver_panel_layout.addWidget(qt_import.QLabel("Slots", self), 1, 2)
        receiver_panel_layout.addWidget(self.receiver_windows_listwidget, 2, 0)
        receiver_panel_layout.addWidget(self.receiver_objects_listwidget, 2, 1)
        receiver_panel_layout.addWidget(self.receiver_slots_listwidget, 2, 2)

        top_panel_layout = qt_import.QHBoxLayout(top_panel)
        top_panel_layout.addWidget(emitter_panel)
        top_panel_layout.addWidget(receiver_panel)
        top_panel_layout.addWidget(self.add_connection_button)
        top_panel_layout.setSpacing(0)
        top_panel_layout.setContentsMargins(0, 0, 0, 0)

        button_panel_layout = qt_import.QHBoxLayout(button_panel)
        button_panel_layout.addWidget(self.remove_connection_button)
        button_panel_layout.addStretch(0)
        button_panel_layout.addWidget(self.ok_button, qt_import.Qt.AlignRight)
        button_panel_layout.addWidget(self.cancel_button,
                                      qt_import.Qt.AlignRight)

        bot_panel_vlayout = qt_import.QVBoxLayout(bot_panel)
        bot_panel_vlayout.addWidget(
            qt_import.QLabel("<h3>Established connections</h3>", bot_panel))
        bot_panel_vlayout.addWidget(self.connections_treewidget)
        bot_panel_vlayout.addWidget(button_panel)

        main_splitter_vbox = qt_import.QVBoxLayout(main_splitter)
        main_splitter_vbox.addWidget(top_panel)
        main_splitter_vbox.addWidget(bot_panel)
        main_splitter_vbox.setSpacing(5)
        main_splitter_vbox.setContentsMargins(2, 2, 2, 2)

        main_layout = qt_import.QVBoxLayout(self)
        main_layout.addWidget(main_splitter)

        # SizePolicies --------------------------------------------------------
        self.add_connection_button.setSizePolicy(qt_import.QSizePolicy.Fixed,
                                                 qt_import.QSizePolicy.Fixed)
        self.remove_connection_button.setSizePolicy(
            qt_import.QSizePolicy.Fixed, qt_import.QSizePolicy.Fixed)
        self.ok_button.setSizePolicy(qt_import.QSizePolicy.Fixed,
                                     qt_import.QSizePolicy.Fixed)
        self.cancel_button.setSizePolicy(qt_import.QSizePolicy.Fixed,
                                         qt_import.QSizePolicy.Fixed)
        self.connections_treewidget.setSizePolicy(
            qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Expanding)

        # Qt signal/slot connections ------------------------------------------
        self.emitter_windows_listwidget.currentItemChanged.connect(
            self.emitter_window_changed)
        self.emitter_objects_listwidget.currentItemChanged.connect(
            self.emitter_object_changed)
        self.receiver_windows_listwidget.currentItemChanged.connect(
            self.receiver_window_changed)
        self.receiver_objects_listwidget.currentItemChanged.connect(
            self.receiver_object_changed)
        self.add_connection_button.clicked.connect(
            self.add_connection_button_clicked)
        self.remove_connection_button.clicked.connect(
            self.remove_connection_button_clicked)
        self.ok_button.clicked.connect(self.ok_button_clicked)
        self.cancel_button.clicked.connect(self.cancel_button_clicked)
        self.connections_treewidget.itemSelectionChanged.connect(
            self.connections_treewidget_selection_changed)

        # Other ---------------------------------------------------------------
        self.connections_treewidget.setColumnCount(7)
        self.connections_treewidget.setHeaderLabels([
            "",
            "Emitter window",
            "Emitter object",
            "Signal",
            "Receiver window",
            "Receiver object",
            "Slot",
        ])
        self.setWindowTitle("Connection Editor")
        self.connections_treewidget.setSortingEnabled(True)
示例#20
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")
示例#21
0
    def __init__(self, *args):

        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------

        # Internal values -----------------------------------------------------
        self.current_chip_config = None
        self.info_dict = {
            "collect_grid_cell": -1,
            "collect_comp_cell": -1,
            "processing_grid_cell": -1,
            "processing_comp_cell": -1
        }
        self.params_dict = None
        self.results = None
        self.collect_frame_num = 0
        self.processing_frame_num = 0
        self.score_type = "score"
        self.score_type_list = ("score", "spots_resolution", "spots_num")
        self.grid_table_item_fixed = False
        self.comp_table_item_fixed = False

        # Properties ----------------------------------------------------------
        self.add_property("cell_size", "integer", 22)

        # Signals ------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.grid_widget = qt_import.QWidget(self)
        self.grid_table = qt_import.QTableWidget(self.grid_widget)
        self.grid_cell_label = qt_import.QLabel("Selected grid cell: A1",
                                                self.grid_widget)
        self.chip_config_combo = qt_import.QComboBox(self)

        self.inverted_rows_cbox = qt_import.QCheckBox("Inverted rows",
                                                      self.grid_widget)
        self.image_tracking_cbox = qt_import.QCheckBox("Live update",
                                                       self.grid_widget)
        self.score_type_combo = qt_import.QComboBox(self.grid_widget)
        self.show_grid_dialog_button = qt_import.QPushButton(
            "Full grid view", self.grid_widget)

        self.comp_widget = qt_import.QWidget(self)
        self.comp_cell_label = qt_import.QLabel(
            "Selected compartment cell: A1", self.comp_widget)
        self.comp_table = qt_import.QTableWidget(self.comp_widget)
        self.hit_map_plot = PlotWidget(self.comp_widget)

        self.grid_dialog = qt_import.QDialog(self)
        self.grid_graphics_view = GraphicsView()
        self.grid_graphics_base = GridViewGraphicsItem()
        self.grid_graphics_overlay = GridViewOverlayItem()
        # self.grid_graphics_view.scene().setSceneRect(0, 0, 2000, 2000)
        self.grid_graphics_view.scene().addItem(self.grid_graphics_base)
        self.grid_graphics_view.scene().addItem(self.grid_graphics_overlay)
        self.save_grid_view_button = qt_import.QPushButton(
            "Save", self.grid_dialog)
        self.save_grid_view_button.setFixedWidth(100)

        # Layout --------------------------------------------------------------
        _grid_vlayout = qt_import.QVBoxLayout(self.grid_widget)
        _grid_vlayout.addWidget(self.grid_cell_label)
        _grid_vlayout.addWidget(self.grid_table)
        _grid_vlayout.addStretch()
        _grid_vlayout.addWidget(self.chip_config_combo)
        _grid_vlayout.addWidget(self.inverted_rows_cbox)
        _grid_vlayout.addWidget(self.image_tracking_cbox)
        _grid_vlayout.addWidget(self.score_type_combo)
        _grid_vlayout.addWidget(self.show_grid_dialog_button)
        _grid_vlayout.setSpacing(2)
        _grid_vlayout.setContentsMargins(2, 2, 2, 2)

        _comp_vlayout = qt_import.QVBoxLayout(self.comp_widget)
        _comp_vlayout.addWidget(self.comp_cell_label)
        _comp_vlayout.addWidget(self.comp_table)
        _comp_vlayout.addWidget(self.hit_map_plot)
        _comp_vlayout.setSpacing(2)
        _comp_vlayout.setContentsMargins(2, 2, 2, 2)

        _main_vlayout = qt_import.QHBoxLayout(self)
        _main_vlayout.addWidget(self.grid_widget)
        _main_vlayout.addWidget(self.comp_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        _main_grid_dialog_vlayout = qt_import.QVBoxLayout(self.grid_dialog)
        _main_grid_dialog_vlayout.addWidget(self.grid_graphics_view)
        _main_grid_dialog_vlayout.addWidget(self.save_grid_view_button)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        self.grid_table.cellClicked.connect(self.grid_cell_clicked)
        self.grid_table.cellEntered.connect(self.grid_cell_entered)

        self.comp_table.cellClicked.connect(self.comp_cell_clicked)
        self.comp_table.cellEntered.connect(self.comp_cell_entered)
        self.chip_config_combo.activated.connect(
            self.grid_properties_combo_changed)
        self.score_type_combo.activated.connect(self.score_type_changed)
        self.show_grid_dialog_button.clicked.connect(self.show_grid_dialog)
        self.hit_map_plot.mouseMovedSignal.connect(self.hit_map_mouse_moved)
        self.grid_graphics_view.mouseMovedSignal.connect(
            self.grid_view_mouse_moved)
        self.save_grid_view_button.clicked.connect(self.save_grid_view)

        # Other ---------------------------------------------------------------
        self.grid_table.setEditTriggers(
            qt_import.QAbstractItemView.NoEditTriggers)
        self.grid_table.setHorizontalScrollBarPolicy(
            qt_import.Qt.ScrollBarAlwaysOff)
        self.grid_table.setVerticalScrollBarPolicy(
            qt_import.Qt.ScrollBarAlwaysOff)
        self.grid_table.setMouseTracking(True)

        self.comp_table.setEditTriggers(
            qt_import.QAbstractItemView.NoEditTriggers)
        self.comp_table.setHorizontalScrollBarPolicy(
            qt_import.Qt.ScrollBarAlwaysOff)
        self.comp_table.setVerticalScrollBarPolicy(
            qt_import.Qt.ScrollBarAlwaysOff)
        self.comp_table.setMouseTracking(True)

        for score_type in ("Score", "Resolution", "Number of spots"):
            self.score_type_combo.addItem(score_type)

        HWR.beamline.online_processing.connect("processingStarted",
                                               self.processing_started)
        HWR.beamline.online_processing.connect("processingFinished",
                                               self.processing_finished)
        HWR.beamline.online_processing.connect("processingFailed",
                                               self.processing_failed)
        HWR.beamline.online_processing.connect("processingFrame",
                                               self.processing_frame_changed)
        self.current_grid_properties = (
            HWR.beamline.online_processing.get_current_grid_properties())

        self.grid_properties_combo.blockSignals(True)
        for prop in HWR.beamline.online_processing.get_available_grid_properties(
        ):
            self.grid_properties_combo.addItem(str(prop))
        self.grid_properties_combo.setCurrentIndex(0)
        self.grid_properties_combo.blockSignals(False)

        self.init_gui()
        self.grid_graphics_base.init_item(self.current_chip_config)
        self.grid_graphics_overlay.init_item(self.current_chip_config)
示例#22
0
    def __init__(self, parent=None, name="task_toolbox"):

        qt_import.QWidget.__init__(self, parent)
        self.setObjectName = name

        # Internal variables --------------------------------------------------
        self.tree_brick = None
        self.previous_page_index = 0
        self.is_running = None
        self.path_conflict = False
        self.acq_conflict = False
        self.enable_collect = False
        self.create_task_widgets = {}

        # Graphic elements ----------------------------------------------------
        self.method_label = qt_import.QLabel("Collection method", self)
        self.method_label.setAlignment(qt_import.Qt.AlignCenter)

        self.tool_box = qt_import.QToolBox(self)
        self.tool_box.setObjectName("tool_box")
        # self.tool_box.setFixedWidth(600)

        self.discrete_page = CreateDiscreteWidget(self.tool_box, "Discrete")
        self.char_page = CreateCharWidget(self.tool_box, "Characterise")
        self.helical_page = CreateHelicalWidget(self.tool_box, "helical_page")
        self.energy_scan_page = CreateEnergyScanWidget(self.tool_box,
                                                       "energy_scan")
        self.xrf_spectrum_page = CreateXRFSpectrumWidget(
            self.tool_box, "xrf_spectrum")
        if HWR.beamline.gphl_workflow is not None:
            self.gphl_workflow_page = CreateGphlWorkflowWidget(
                self.tool_box, "gphl_workflow")
        else:
            self.gphl_workflow_page = None
        self.advanced_page = CreateAdvancedWidget(self.tool_box,
                                                  "advanced_scan")
        self.xray_imaging_page = CreateXrayImagingWidget(
            self.tool_box, "xray_imaging")
        self.ssx_page = CreateSsxWidget(self.tool_box, "ssx")

        self.tool_box.addItem(self.discrete_page, "Standard Collection")
        self.tool_box.addItem(self.char_page, "Characterisation")
        self.tool_box.addItem(self.helical_page, "Helical Collection")
        self.tool_box.addItem(self.energy_scan_page, "Energy Scan")
        self.tool_box.addItem(self.xrf_spectrum_page, "XRF Spectrum")
        if self.gphl_workflow_page is not None:
            self.tool_box.addItem(self.gphl_workflow_page, "GPhL Workflows")
        self.tool_box.addItem(self.advanced_page, "Advanced")
        self.tool_box.addItem(self.xray_imaging_page, "Xray Imaging")
        self.tool_box.addItem(self.ssx_page, "SSX")

        self.button_box = qt_import.QWidget(self)
        self.create_task_button = qt_import.QPushButton(
            "  Add to queue", self.button_box)
        self.create_task_button.setIcon(icons.load_icon("add_row.png"))
        msg = "Add the collection method to the selected sample"
        self.create_task_button.setToolTip(msg)
        self.create_task_button.setEnabled(False)

        self.collect_now_button = qt_import.QPushButton(
            "Collect Now", self.button_box)
        self.collect_now_button.setIcon(icons.load_icon("VCRPlay2.png"))
        self.collect_now_button.setToolTip(
            "Add the collection method to the queue and execute it")
        self.comments_widget = CommentsWidget(self)
        self.comments_widget.setFixedHeight(100)

        # Layout --------------------------------------------------------------
        _button_box_hlayout = qt_import.QHBoxLayout(self.button_box)
        _button_box_hlayout.addWidget(self.collect_now_button)
        _button_box_hlayout.addStretch(0)
        _button_box_hlayout.addWidget(self.create_task_button)
        _button_box_hlayout.setSpacing(0)
        _button_box_hlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.method_label)
        _main_vlayout.addWidget(self.tool_box)
        _main_vlayout.addWidget(self.comments_widget)
        _main_vlayout.addWidget(self.button_box)
        _main_vlayout.setSpacing(0)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)

        # SizePolicies --------------------------------------------------------
        # self.setSizePolicy(QSizePolicy.Expanding,
        #                   QSizePolicy.Expanding)

        # Qt signal/slot connections ------------------------------------------
        self.create_task_button.clicked.connect(self.create_task_button_click)
        self.collect_now_button.clicked.connect(self.collect_now_button_click)
        self.tool_box.currentChanged.connect(self.current_page_changed)

        for i in range(0, self.tool_box.count()):
            self.tool_box.widget(i).acqParametersConflictSignal.connect(
                self.acq_parameters_conflict_changed)
            self.tool_box.widget(i).pathTempleConflictSignal.connect(
                self.path_template_conflict_changed)

        # Other ---------------------------------------------------------------
        in_plate_mode = HWR.beamline.diffractometer.in_plate_mode()

        if (HWR.beamline.energy_scan is None or in_plate_mode
                or not HWR.beamline.tunable_wavelength):
            self.hide_task(self.energy_scan_page)
            logging.getLogger("HWR").info("Energy scan task not available")

        if HWR.beamline.xrf_spectrum is None or in_plate_mode:
            self.hide_task(self.xrf_spectrum_page)
            logging.getLogger("HWR").info("XRF spectrum task not available")

        if not HWR.beamline.imaging or in_plate_mode:
            self.hide_task(self.xray_imaging_page)
            logging.getLogger("HWR").info("Xray Imaging task not available")

        if HWR.beamline.gphl_connection and HWR.beamline.gphl_workflow:
            self.gphl_workflow_page.initialise_workflows()
        else:
            logging.getLogger("HWR").info("GPhL workflow task not available")
示例#23
0
    def __init__(self, parent=None, name=None, fl=0, xray_imaging_params=None):

        qt_import.QWidget.__init__(self, parent, qt_import.Qt.WindowFlags(fl))

        if name is not None:
            self.setObjectName(name)

        # Hardware objects ----------------------------------------------------

        # Internal variables --------------------------------------------------
        self.current_image_num = 0
        self.total_image_num = 0

        # Properties ----------------------------------------------------------

        # Signals -------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        results_gbox = qt_import.QGroupBox("Results", self)
        
        self.graphics_view_widget = qt_import.QWidget(results_gbox)
        self.results_widget = qt_import.load_ui_file(
            "xray_imaging_results_widget_layout.ui"
        )
        tools_widget = qt_import.QGroupBox(self) 
        button_widget = qt_import.QWidget(self)
        self.start_centering_button = qt_import.QPushButton(
            icons.load_icon("VCRPlay2"), "3 Click", tools_widget
        )
        self.start_n_centering_button = qt_import.QPushButton(
            icons.load_icon("VCRPlay"), "n Click", tools_widget
        )
        self.accept_centering_button = qt_import.QPushButton(
            icons.load_icon("ThumbUp"), "Save", tools_widget
        )
        self.histogram_plot = PlotWidget(self)

        self.popup_menu = qt_import.QMenu(self)
        self.popup_menu.menuAction().setIconVisibleInMenu(True)

        self.popup_menu.addAction(
            icons.load_icon("VCRPlay2"),
            "Start 3-click centering",
            start_centering_clicked,
        )
        self.popup_menu.addAction(
            icons.load_icon("VCRPlay"),
            "Start n-click centering",
            start_n_centering_clicked,
        )
        self.popup_menu.addAction(
            icons.load_icon("ThumbUp"),
            "Create centering point",
            self.accept_centering_clicked,
        )

        self.popup_menu.addSeparator()
        self.measure_distance_action = self.popup_menu.addAction(
            icons.load_icon("measure_distance"),
            "Distance and histogram",
            measure_distance_clicked,
        )

        # Layout --------------------------------------------------------------
        self._graphics_view_widget_vlayout = qt_import.QVBoxLayout(
            self.graphics_view_widget
        )
        self._graphics_view_widget_vlayout.setSpacing(0)
        self._graphics_view_widget_vlayout.setContentsMargins(0, 0, 0, 0)

        __button_widget_hlayout = qt_import.QHBoxLayout(button_widget)
        __button_widget_hlayout.addWidget(self.start_centering_button)
        __button_widget_hlayout.addWidget(self.start_n_centering_button)
        __button_widget_hlayout.addWidget(self.accept_centering_button)
        __button_widget_hlayout.addStretch()
        __button_widget_hlayout.setSpacing(2)
        __button_widget_hlayout.setContentsMargins(2, 2, 2, 2)

        __tools_widget_vlayout = qt_import.QVBoxLayout(tools_widget)
        __tools_widget_vlayout.addWidget(button_widget)
        __tools_widget_vlayout.addWidget(self.results_widget)
        __tools_widget_vlayout.addWidget(self.histogram_plot)
        __tools_widget_vlayout.addStretch()
        __tools_widget_vlayout.setSpacing(2)
        __tools_widget_vlayout.setContentsMargins(2, 2, 2, 2)

        __main_hlayout = qt_import.QHBoxLayout(self)
        __main_hlayout.addWidget(self.graphics_view_widget)
        __main_hlayout.addWidget(tools_widget)
        __main_hlayout.setSpacing(0)
        __main_hlayout.setContentsMargins(0, 0, 0, 0)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        self.results_widget.data_browse_button.clicked.connect(
            self.data_browse_button_clicked
        )
        self.results_widget.ff_browse_button.clicked.connect(
            self.ff_browse_button_clicked
        )
        self.results_widget.config_browse_button.clicked.connect(
            self.config_browse_button_clicked
        ) 
        self.results_widget.load_button.clicked.connect(
            self.load_button_clicked
        )
        self.results_widget.first_image_button.clicked.connect(
            first_image_button_clicked
        )
        self.results_widget.prev_image_button.clicked.connect(
            self.prev_image_button_clicked
        )
        self.results_widget.next_image_button.clicked.connect(
            self.next_image_button_clicked
        )
        self.results_widget.last_image_button.clicked.connect(
            self.last_image_button_clicked
        )
        self.results_widget.minus_quarter_button.clicked.connect(
            self.minus_quater_button_clicked
        )
        self.results_widget.plus_quarter_button.clicked.connect(
            plus_quater_button_clicked
        )

        self.results_widget.image_dial.valueChanged.connect(
            dial_value_changed
        )

        self.results_widget.image_spinbox.valueChanged.connect(
            spinbox_value_changed
        )

        self.results_widget.play_button.clicked.connect(self.play_button_clicked)
        self.results_widget.stop_button.clicked.connect(stop_button_clicked)
        self.results_widget.repeat_cbox.stateChanged.connect(repeat_state_changed)
        self.results_widget.ff_apply_cbox.stateChanged.connect(
            ff_apply_state_changed
        )

        self.start_centering_button.clicked.connect(start_centering_clicked)
        self.accept_centering_button.clicked.connect(accept_centering_clicked)

        # Other ---------------------------------------------------------------
        self.results_widget.first_image_button.setIcon(icons.load_icon("VCRRewind"))
        self.results_widget.prev_image_button.setIcon(icons.load_icon("VCRPlay4"))
        self.results_widget.next_image_button.setIcon(icons.load_icon("VCRPlay2"))
        self.results_widget.last_image_button.setIcon(
            icons.load_icon("VCRFastForward2")
        )
        self.results_widget.play_button.setIcon(icons.load_icon("VCRPlay"))
        self.results_widget.stop_button.setIcon(icons.load_icon("Stop2"))

        self.start_centering_button.setFixedSize(70, 50)
        self.start_n_centering_button.setFixedSize(70, 50)
        self.accept_centering_button.setFixedSize(70, 50)

        if HWR.beamline.imaging is not None:
            HWR.beamline.imaging.connect("imageInit", self.image_init)
            HWR.beamline.imaging.connect("imageLoaded", self.image_loaded)
            HWR.beamline.imaging.connect(
                "measureItemChanged", self.measure_item_changed
            )

            self.graphics_view = HWR.beamline.imaging.get_graphics_view()
            self._graphics_view_widget_vlayout.addWidget(self.graphics_view)
            self.graphics_view_widget.setFixedSize(
                self.graphics_view.scene().width(), self.graphics_view.scene().height()
            )

            self.setDisabled(False)
        else:
            self.setDisabled(True)
示例#24
0
    def __init__(self, parent=None):

        qt_import.QWidget.__init__(self, parent)

        self.setObjectName("hit_map_widget")

        # Properties ----------------------------------------------------------

        # Signals -------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Internal values -----------------------------------------------------
        self.__result_types = []
        self.__results_raw = None
        self.__results_aligned = None
        self.__first_result = True
        self.__grid = None
        #self.__is_mesh_scan = False
        self.__data_collection = None
        self.__selected_col = 0
        self.__selected_row = 0
        self.__score_key = None
        self.__max_value = 0
        self.__filter_min_value = 0
        self.__best_pos_list = None
        self.__hitmap_clicked = False
        self.__enable_continues_image_display = False
        #self.__tooltip_text = None
        self.selected_image_serial = None

        # Graphic elements ----------------------------------------------------
        self._hit_map_gbox = qt_import.QGroupBox("Online processing results",
                                                 self)
        hit_maps_widget = qt_import.QWidget(self._hit_map_gbox)
        self._osc_hit_map_plot = PlotWidget(hit_maps_widget)
        self._osc_hit_map_plot.set_plot_type("1D")
        self._grid_hit_map_plot = PlotWidget(hit_maps_widget)
        self._grid_hit_map_plot.set_plot_type("2D")
        self._hit_map_popup_menu = qt_import.QMenu(self._hit_map_gbox)

        hit_map_info_widget = qt_import.QWidget(self._hit_map_gbox)
        score_type_label = qt_import.QLabel("Result: ", hit_map_info_widget)
        self._score_type_cbox = qt_import.QComboBox(hit_map_info_widget)
        self._autoscale_button = qt_import.QPushButton("Auto scale",
                                                       hit_map_info_widget)
        image_display_cbox = qt_import.QCheckBox("Display image in ADxV",
                                                 hit_map_info_widget)
        self._image_info_label = qt_import.QLabel("Image: #, value #",
                                                  hit_map_info_widget)

        self._hit_map_tools_widget = qt_import.QWidget(self._hit_map_gbox)

        _threshold_label = qt_import.QLabel("Threshold: ",
                                            self._hit_map_tools_widget)
        self._threshold_slider = qt_import.QSlider(qt_import.Qt.Horizontal,
                                                   self._hit_map_tools_widget)
        self._relaunch_processing_button = qt_import.QPushButton(
            "Relaunch processing", self._hit_map_tools_widget)
        self._create_points_button = qt_import.QPushButton(
            "Create centring points", self._hit_map_tools_widget)
        """
        self._summary_gbox = qt_import.QGroupBox("Summary", self)
        self._summary_textbrowser = qt_import.QTextBrowser(self._summary_gbox)
        self._best_pos_gbox = qt_import.QGroupBox("Best positions", self)
        self._best_pos_table = qt_import.QTableWidget(self._best_pos_gbox)
        self._best_pos_popup_menu = qt_import.QMenu(self._hit_map_gbox)
        self._best_pos_gbox.setHidden(True)
        """

        # Layout --------------------------------------------------------------
        _hit_map_info_hlayout = qt_import.QHBoxLayout(hit_map_info_widget)
        _hit_map_info_hlayout.addWidget(score_type_label)
        _hit_map_info_hlayout.addWidget(self._score_type_cbox)
        _hit_map_info_hlayout.addWidget(self._autoscale_button)
        _hit_map_info_hlayout.addWidget(image_display_cbox)
        _hit_map_info_hlayout.addStretch(0)
        _hit_map_info_hlayout.addWidget(self._image_info_label)
        _hit_map_info_hlayout.setSpacing(2)
        _hit_map_info_hlayout.setContentsMargins(0, 0, 0, 0)

        _hit_map_tools_hlayout = qt_import.QHBoxLayout(
            self._hit_map_tools_widget)
        _hit_map_tools_hlayout.addWidget(_threshold_label)
        _hit_map_tools_hlayout.addWidget(self._threshold_slider)
        _hit_map_tools_hlayout.addStretch(0)
        _hit_map_tools_hlayout.addWidget(self._relaunch_processing_button)
        _hit_map_tools_hlayout.addWidget(self._create_points_button)
        _hit_map_tools_hlayout.setSpacing(2)
        _hit_map_tools_hlayout.setContentsMargins(0, 0, 0, 0)

        _hit_maps_hlayout = qt_import.QHBoxLayout(hit_maps_widget)
        _hit_maps_hlayout.addWidget(self._osc_hit_map_plot)
        _hit_maps_hlayout.addWidget(self._grid_hit_map_plot)

        _hit_map_gbox_vlayout = qt_import.QVBoxLayout(self._hit_map_gbox)
        _hit_map_gbox_vlayout.addWidget(hit_maps_widget)
        _hit_map_gbox_vlayout.addWidget(hit_map_info_widget)
        _hit_map_gbox_vlayout.addWidget(self._hit_map_tools_widget)
        _hit_map_gbox_vlayout.setSpacing(2)
        _hit_map_gbox_vlayout.setContentsMargins(0, 0, 0, 0)
        """
        _summary_gbox_vlayout = qt_import.QVBoxLayout(self._summary_gbox)
        _summary_gbox_vlayout.addWidget(self._summary_textbrowser)
        _summary_gbox_vlayout.setSpacing(2)
        _summary_gbox_vlayout.setContentsMargins(0, 0, 0, 0)

        _best_postition_gbox_vlayout = qt_import.QVBoxLayout(self._best_pos_gbox)
        _best_postition_gbox_vlayout.addWidget(self._best_pos_table)
        _best_postition_gbox_vlayout.setSpacing(2)
        _best_postition_gbox_vlayout.setContentsMargins(0, 0, 0, 0)
        """

        _main_hlayout = qt_import.QVBoxLayout(self)
        _main_hlayout.addWidget(self._hit_map_gbox)
        #_main_hlayout.addWidget(self._summary_gbox)
        #_main_hlayout.addWidget(self._best_pos_gbox)
        _main_hlayout.setSpacing(2)
        _main_hlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------

        # Qt signals and slots ------------------------------------------------
        image_display_cbox.stateChanged.connect(
            self.enable_image_display_state_changed)
        self._score_type_cbox.activated.connect(self.score_type_changed)
        self._threshold_slider.valueChanged.connect(
            self.filter_min_slider_changed)
        self._relaunch_processing_button.clicked.connect(
            self.relaunch_processing_clicked)
        self._create_points_button.clicked.connect(self.create_points_clicked)
        self._osc_hit_map_plot.mouseMovedSignal.connect(self.mouse_moved)
        self._osc_hit_map_plot.mouseClickedSignal.connect(self.mouse_clicked)
        self._osc_hit_map_plot.mouseDoubleClickedSignal.connect(
            self.move_to_position_clicked)
        self._osc_hit_map_plot.mouseLeftSignal.connect(self.mouse_left_plot)
        self._autoscale_button.clicked.connect(self.autoscale_pressed)

        # Other ---------------------------------------------------------------
        #self.__tooltip_text = (
        #    "Double click to move to the position. " + "Right click to open menu."
        #)
        #self._osc_hit_map_plot.setToolTip(self.__tooltip_text)
        self._hit_map_popup_menu.addSeparator()
        self._hit_map_popup_menu.addAction("Move to position",
                                           self.move_to_position_clicked)
        self._hit_map_popup_menu.addAction("Create centring point",
                                           self.create_centring_point_clicked)

        self._hit_map_popup_menu.addAction("Create helical line",
                                           self.create_helical_line_clicked)
        self._hit_map_popup_menu.addAction(
            "Rotate 90 degrees and create helical line",
            self.rotate_and_create_helical_line_clicked,
        )

        self._hit_map_popup_menu.addSeparator()
        self._hit_map_popup_menu.addAction("Open image in ADXV",
                                           self.display_image_clicked)
        self._hit_map_popup_menu.addSeparator()

        #self._osc_hit_map_plot.contextMenuEvent = self.open_hit_map_popup_menu

        if HWR.beamline.online_processing is not None:
            self.__result_types = HWR.beamline.online_processing.get_result_types(
            )
        for result in self.__result_types:
            self._score_type_cbox.addItem(result["descr"])
        self._score_type_cbox.setMaximumWidth(200)
        self.__score_key = "spots_resolution"

        self._relaunch_processing_button.setVisible(False)

        self._threshold_slider.setRange(0, 100)
        self._threshold_slider.setTickInterval(5)
        self._threshold_slider.setFixedWidth(200)
        self._threshold_slider.setTracking(False)

        #font = self._best_pos_table.font()
        #font.setPointSize(8)
        #self._best_pos_table.setFont(font)
        """
    def __init__(self, parent=None, name="xrf_spectrum_parameters_widget"):
        qt_import.QWidget.__init__(self, parent)

        if name is not None:
            self.setObjectName(name)

        # Internal variables --------------------------------------------------
        self.xrf_spectrum_model = queue_model_objects.XRFSpectrum()
        self._tree_view_item = None

        # Graphic elements ----------------------------------------------------
        _top_widget = qt_import.QWidget(self)
        _parameters_widget = qt_import.QWidget(_top_widget)
        self.data_path_widget = DataPathWidget(_parameters_widget)
        self.other_parameters_gbox = qt_import.QGroupBox(
            "Other parameters", _parameters_widget)
        self.count_time_label = qt_import.QLabel("Count time:",
                                                 self.other_parameters_gbox)
        self.count_time_ledit = qt_import.QLineEdit(self.other_parameters_gbox)
        self.count_time_ledit.setFixedWidth(50)
        self.adjust_transmission_cbox = qt_import.QCheckBox(
            "Adjust transmission", self.other_parameters_gbox)
        self.adjust_transmission_cbox.hide()
        self.mca_spectrum_widget = McaSpectrumWidget(self)
        self.snapshot_widget = SnapshotWidget(self)

        # Layout -------------------------------------------------------------
        _other_parameters_gbox_hlayout = qt_import.QHBoxLayout(
            self.other_parameters_gbox)
        _other_parameters_gbox_hlayout.addWidget(self.count_time_label)
        _other_parameters_gbox_hlayout.addWidget(self.count_time_ledit)
        _other_parameters_gbox_hlayout.addWidget(self.adjust_transmission_cbox)
        _other_parameters_gbox_hlayout.addStretch(0)
        _other_parameters_gbox_hlayout.setSpacing(2)
        _other_parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0)

        _parameters_widget_layout = qt_import.QVBoxLayout(_parameters_widget)
        _parameters_widget_layout.addWidget(self.data_path_widget)
        _parameters_widget_layout.addWidget(self.other_parameters_gbox)
        _parameters_widget_layout.addStretch(0)
        _parameters_widget_layout.setSpacing(2)
        _parameters_widget_layout.setContentsMargins(0, 0, 0, 0)

        _top_widget_layout = qt_import.QHBoxLayout(_top_widget)
        _top_widget_layout.addWidget(_parameters_widget)
        _top_widget_layout.addWidget(self.snapshot_widget)
        _top_widget_layout.setSpacing(2)
        _top_widget_layout.addStretch(0)
        _top_widget_layout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(_top_widget)
        _main_vlayout.addWidget(self.mca_spectrum_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)

        # SizePolicies -------------------------------------------------------
        self.mca_spectrum_widget.setSizePolicy(qt_import.QSizePolicy.Expanding,
                                               qt_import.QSizePolicy.Expanding)
        _top_widget.setSizePolicy(qt_import.QSizePolicy.Expanding,
                                  qt_import.QSizePolicy.Fixed)

        # Qt signal/slot connections ------------------------------------------
        self.data_path_widget.data_path_layout.prefix_ledit.textChanged.connect(
            self._prefix_ledit_change)
        self.data_path_widget.data_path_layout.run_number_ledit.textChanged.connect(
            self._run_number_ledit_change)
        self.count_time_ledit.textChanged.connect(
            self._count_time_ledit_change)

        # Other ---------------------------------------------------------------
        self.data_path_widget.data_path_layout.compression_cbox.setVisible(
            False)

        if HWR.beamline.xrf_spectrum is not None:
            HWR.beamline.xrf_spectrum.connect("xrfSpectrumFinished",
                                              self.spectrum_finished)
示例#26
0
    def __init__(self, *args):
        """MotorBrick constructor

        Arguments:
        :params args: 
        """
        super(MotorBrick, self).__init__(*args)

        # Hardware objects ----------------------------------------------------

        self.motor_hwobj = None  # hardware object
        self.control_dialog = None

        # Graphic elements-----------------------------------------------------

        self.frame = qt_import.QGroupBox()
        self.frame_layout = qt_import.QVBoxLayout()

        self.step_slider_panel = qt_import.QWidget()
        step_slider_panel_layout = qt_import.QHBoxLayout()

        self.move_box = MoveBox()

        self.step_backward = StepEditor(StepEditor.LEFT_LAYOUT, 20, None,
                                        "new step:", "-")

        self.slider = MotorSlider()

        self.step_forward = StepEditor(StepEditor.RIGHT_LAYOUT, 20, None,
                                       "new step:", "+")
        self.motor_position_label = self.slider.current_label
        self.name_position_box = qt_import.QFrame()
        self.name_position_box_layout = qt_import.QHBoxLayout()
        self.motor_name_label = qt_import.QLabel()
        self.position_label = qt_import.QLabel()

        # Layout --------------------------------------------------------------
        step_slider_panel_layout.addWidget(self.step_backward)
        step_slider_panel_layout.addWidget(self.slider)
        step_slider_panel_layout.addWidget(self.step_forward)
        self.step_slider_panel.setLayout(step_slider_panel_layout)

        self.frame_layout.addWidget(self.step_slider_panel)
        self.frame_layout.addWidget(self.move_box, 0, qt_import.Qt.AlignCenter)
        self.frame.setLayout(self.frame_layout)

        self.name_position_box_layout.addWidget(self.motor_name_label)
        self.name_position_box_layout.addWidget(self.position_label)

        self.name_position_box.setLayout(self.name_position_box_layout)

        self.setSizePolicy(qt_import.QSizePolicy.Minimum,
                           qt_import.QSizePolicy.Fixed)
        self.frame.setFlat(False)

        # Hide 'edit step' button associated to step_backward
        self.step_backward.allow_change_value(False)

        self.step_slider_panel.setSizePolicy(qt_import.QSizePolicy.Minimum,
                                             qt_import.QSizePolicy.Fixed)
        self.name_position_box.hide()
        self.name_position_box.setSizePolicy(qt_import.QSizePolicy.Expanding,
                                             qt_import.QSizePolicy.Fixed)
        self.name_position_box.setFrameStyle(qt_import.QFrame.Panel
                                             | qt_import.QFrame.Raised)
        self.name_position_box.setLineWidth(1)
        self.name_position_box.setMidLineWidth(0)
        self.motor_name_label.setAlignment(qt_import.Qt.AlignLeft
                                           | qt_import.Qt.AlignVCenter)
        self.position_label.setAlignment(qt_import.Qt.AlignRight
                                         | qt_import.Qt.AlignVCenter)

        self.main_layout = qt_import.QVBoxLayout()
        self.main_layout.addWidget(self.name_position_box, 0,
                                   qt_import.Qt.AlignTop)
        self.main_layout.addWidget(self.frame, 0, qt_import.Qt.AlignCenter)

        self.setLayout(self.main_layout)

        # Qt signal/slot connections -----------------------------------------
        self.move_box.move_motor_signal.connect(self.move_motor)
        self.move_box.stop_motor_signal.connect(self.stop_motor)
        self.step_forward.clicked_signal.connect(self.step_forward_clicked)
        self.step_forward.value_changed_signal.connect(
            self.step_forward_value_changed)
        self.step_backward.clicked_signal.connect(self.step_backward_clicked)

        # define properties

        self.add_property("appearance", "combo", ("tiny", "normal"), "normal")
        self.add_property("allowConfigure", "boolean", True)
        self.add_property("mnemonic", "string", "")
        self.add_property("allowDoubleClick", "boolean", False)
        self.add_property("formatString", "formatString", "+##.####")  # %+8.4f
        self.add_property("dialogCaption", "string", "", hidden=True)
示例#27
0
    def __init__(self, *args):
        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------
        self.wrapper_hwobj = None

        # Internal values -----------------------------------------------------
        self.__expertMode = False

        # Properties ----------------------------------------------------------
        self.add_property("mnemonic", "string", "")
        self.add_property("forceNoControl", "boolean", False)
        self.add_property("expertModeControlOnly", "boolean", False)
        self.add_property("icons", "string", "")
        self.add_property("in", "string", "in")
        self.add_property("out", "string", "out")
        self.add_property("setin", "string", "Set in")
        self.add_property("setout", "string", "Set out")
        self.add_property("username", "string", "")

        # Signals -------------------------------------------------------------

        # Slots ---------------------------------------------------------------
        self.define_slot("allowControl", ())

        # Graphic elements ----------------------------------------------------
        self.main_gbox = qt_import.QGroupBox("none", self)
        self.main_gbox.setAlignment(qt_import.Qt.AlignCenter)
        self.state_ledit = qt_import.QLineEdit("unknown", self.main_gbox)

        self.buttons_widget = qt_import.QWidget(self.main_gbox)
        self.set_in_button = qt_import.QPushButton("Set in", self.buttons_widget)
        self.set_in_button.setCheckable(True)
        self.set_out_button = qt_import.QPushButton("Set out", self.buttons_widget)
        self.set_out_button.setCheckable(True)

        # Layout --------------------------------------------------------------
        _buttons_widget_hlayout = qt_import.QHBoxLayout(self.buttons_widget)
        _buttons_widget_hlayout.addWidget(self.set_in_button)
        _buttons_widget_hlayout.addWidget(self.set_out_button)
        _buttons_widget_hlayout.setSpacing(0)
        _buttons_widget_hlayout.setContentsMargins(0, 0, 0, 0)

        _main_gbox_vlayout = qt_import.QVBoxLayout(self.main_gbox)
        _main_gbox_vlayout.addWidget(self.state_ledit)
        _main_gbox_vlayout.addWidget(self.buttons_widget)
        _main_gbox_vlayout.setSpacing(2)
        _main_gbox_vlayout.setContentsMargins(4, 4, 4, 4)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.main_gbox)
        _main_vlayout.setSpacing(0)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------
        self.set_in_button.toggled.connect(self.set_in)
        self.set_out_button.toggled.connect(self.set_out)

        # Other ---------------------------------------------------------------
        self.state_ledit.setAlignment(qt_import.Qt.AlignCenter)
        self.state_ledit.setToolTip("Shows the current control state")
        self.state_ledit.setFrame(False)
        bold_font = self.state_ledit.font()
        bold_font.setBold(True)
        self.state_ledit.setFont(bold_font)
        self.state_ledit.setFixedHeight(24)

        self.set_in_button.setToolTip("Changes the control state")
        self.set_out_button.setToolTip("Changes the control state")

        self.instance_synchronize("state_ledit")
示例#28
0
    def __init__(self, *args):
        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------
        self.beamline_test_hwobj = None
        self.unittest_hwobj = None

        # Internal variables --------------------------------------------------
        self.available_tests = None
        self.com_device_list = None

        # Properties ----------------------------------------------------------
        self.add_property("mnemonic", "string", "")
        self.add_property("hwobj_unittest", "string", "")

        # Signals ------------------------------------------------------------

        # Slots ---------------------------------------------------------------

        # Graphic elements ----------------------------------------------------
        self.beamline_test_widget = qt_import.load_ui_file(
            "beamline_test_widget_layout.ui"
        )

        self.test_toolbox = self.beamline_test_widget.test_toolbox
        self.test_queue_page = self.beamline_test_widget.queue_toolbox_page
        self.test_com_page = self.beamline_test_widget.com_toolbox_page
        self.test_focus_page = self.beamline_test_widget.focus_toolbox_page
        self.test_ppu_page = self.beamline_test_widget.ppu_toolbox_page

        self.com_device_table = self.beamline_test_widget.comm_device_table
        # self.current_test_listwidget = self.beamline_test_widget.current_test_listbox
        self.available_tests_listwidget = (
            self.beamline_test_widget.available_tests_listwidget
        )

        _web_view_widget = qt_import.QWidget(self)
        _load_last_test_button = qt_import.QPushButton(
            "View last results", _web_view_widget
        )
        self.test_result_browser = WebViewWidget(_web_view_widget)

        # Layout --------------------------------------------------------------
        _web_view_widget_vlayout = qt_import.QVBoxLayout(_web_view_widget)
        _web_view_widget_vlayout.addWidget(_load_last_test_button)
        _web_view_widget_vlayout.addWidget(self.test_result_browser)
        _web_view_widget_vlayout.setSpacing(2)
        _web_view_widget_vlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QHBoxLayout(self)
        _main_vlayout.addWidget(self.beamline_test_widget)
        _main_vlayout.addWidget(_web_view_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # Qt signal/slot connections ------------------------------------------
        self.beamline_test_widget.execute_all_button.clicked.connect(
            self.execute_all_tests_clicked
        )
        self.beamline_test_widget.test_button.clicked.connect(self.execute_test_clicked)
        self.beamline_test_widget.focus_modes_combo.activated.connect(
            self.set_focus_mode_pressed
        )
        self.available_tests_listwidget.itemDoubleClicked.connect(
            self.available_tests_double_clicked
        )

        _load_last_test_button.clicked.connect(self.load_latest_test_results)
        self.beamline_test_widget.ppu_restart_button.clicked.connect(self.restart_ppu)

        # Other ---------------------------------------------------------------
        # self.beamline_test_widget.setFixedWidth(600)
        self.test_result_browser.setSizePolicy(
            qt_import.QSizePolicy.Expanding, qt_import.QSizePolicy.Expanding
        )
        _load_last_test_button.setFixedWidth(200)

        self.test_toolbox.setCurrentWidget(self.test_queue_page)
        self.beamline_test_widget.setFixedWidth(700)
        self.test_result_browser.navigation_bar.setHidden(True)
示例#29
0
    def __init__(self, *args):
        """
        Proposal brick is used to authentificate current user.
        Brick can be used in two modes defined by ispyb hwobj
         - loginAsUser = True, Brick displays combobox with all
           proposals from ISPyB that are associated to the current user
         - loginAsUser = False. Brick displays combobox to choose proposal
           type and linedits to enter proposal number and password.
           In this case user is authentificated with
           LDAP and proposal from ISPyB is retrieved.
        """
        BaseWidget.__init__(self, *args)

        # Hardware objects ----------------------------------------------------
        self.local_login_hwobj = None

        # Internal values -----------------------------------------------------
        self.login_as_user = None

        self.proposal = None
        self.person = None
        self.laboratory = None
        # self.sessionId=None
        self.inhouseProposal = None
        self.instance_server_hwobj = None
        self.secondary_proposals = []

        # Properties ----------------------------------------------------------
        self.add_property("titlePrefix", "string", "")
        self.add_property("autoSessionUsers", "string", "")
        self.add_property("codes", "string", "fx ifx ih im ix ls mx opid")
        self.add_property("secondaryProposals", "string", "")
        self.add_property("icons", "string", "")
        self.add_property("serverStartDelay", "integer", 500)

        # Signals ------------------------------------------------------------
        self.define_signal("sessionSelected", ())
        self.define_signal("setWindowTitle", ())
        self.define_signal("loggedIn", ())
        self.define_signal("userGroupSaved", ())

        # Slots ---------------------------------------------------------------
        self.define_slot("setButtonEnabled", ())
        self.define_slot("impersonateProposal", ())

        # Graphic elements ----------------------------------------------------
        self.main_gbox = qt_import.QGroupBox("ISPyB proposal", self)

        self.login_as_proposal_widget = qt_import.QWidget(self.main_gbox)
        code_label = qt_import.QLabel("  Code: ", self.login_as_proposal_widget)
        self.proposal_type_combox = qt_import.QComboBox(self.login_as_proposal_widget)
        self.proposal_type_combox.setEditable(True)
        self.proposal_type_combox.setFixedWidth(60)
        dash_label = qt_import.QLabel(" - ", self.login_as_proposal_widget)
        self.proposal_number_ledit = qt_import.QLineEdit(self.login_as_proposal_widget)
        self.proposal_number_ledit.setFixedWidth(60)
        password_label = qt_import.QLabel("   Password: "******"Login", self.login_as_proposal_widget)
        self.login_button.setFixedWidth(70)
        self.logout_button = qt_import.QPushButton("Logout", self.main_gbox)
        self.logout_button.hide()
        self.logout_button.setFixedWidth(70)
        self.login_as_proposal_widget.hide()

        self.login_as_user_widget = qt_import.QWidget(self.main_gbox)
        self.proposal_combo = qt_import.QComboBox(self.login_as_user_widget)

        self.user_group_widget = qt_import.QWidget(self.main_gbox)
        # self.title_label = QtGui.QLabel(self.user_group_widget)
        # self.title_label.setAlignment(QtCore.Qt.AlignCenter)
        self.user_group_label = qt_import.QLabel("  Group: ", self.user_group_widget)
        self.user_group_ledit = qt_import.QLineEdit(self.user_group_widget)
        self.user_group_ledit.setFixedSize(100, 27)
        self.user_group_save_button = qt_import.QToolButton(self.user_group_widget)
        self.user_group_save_button.setText("Set")
        self.user_group_save_button.setFixedHeight(27)
        self.saved_group = True

        # Layout --------------------------------------------------------------
        _user_group_widget_hlayout = qt_import.QHBoxLayout(self.user_group_widget)
        _user_group_widget_hlayout.setSpacing(2)
        # _user_group_widget_hlayout.addWidget(self.title_label)
        _user_group_widget_hlayout.addWidget(self.user_group_label)
        _user_group_widget_hlayout.addWidget(self.user_group_ledit)
        _user_group_widget_hlayout.addWidget(self.user_group_save_button)
        _user_group_widget_hlayout.setContentsMargins(0, 0, 0, 0)
        self.user_group_widget.hide()

        _login_as_proposal_widget_layout = qt_import.QHBoxLayout(
            self.login_as_proposal_widget
        )
        _login_as_proposal_widget_layout.addWidget(code_label)
        _login_as_proposal_widget_layout.addWidget(self.proposal_type_combox)
        _login_as_proposal_widget_layout.addWidget(dash_label)
        _login_as_proposal_widget_layout.addWidget(self.proposal_number_ledit)
        _login_as_proposal_widget_layout.addWidget(password_label)
        _login_as_proposal_widget_layout.addWidget(self.proposal_password_ledit)
        _login_as_proposal_widget_layout.addWidget(self.login_button)
        _login_as_proposal_widget_layout.setSpacing(2)
        _login_as_proposal_widget_layout.setContentsMargins(0, 0, 0, 0)

        _login_as_user_widget_layout = qt_import.QHBoxLayout(self.login_as_user_widget)
        _login_as_user_widget_layout.addWidget(self.proposal_combo)
        _login_as_user_widget_layout.setSpacing(2)
        _login_as_user_widget_layout.setContentsMargins(0, 0, 0, 0)

        _main_gboxlayout = qt_import.QHBoxLayout(self.main_gbox)
        _main_gboxlayout.addWidget(self.login_as_proposal_widget)
        _main_gboxlayout.addWidget(self.logout_button)
        _main_gboxlayout.addWidget(self.login_as_user_widget)
        _main_gboxlayout.addStretch()
        _main_gboxlayout.addWidget(self.user_group_widget)
        _main_gboxlayout.setSpacing(2)
        _main_gboxlayout.setContentsMargins(0, 0, 0, 0)

        _main_vlayout = qt_import.QVBoxLayout(self)
        _main_vlayout.addWidget(self.main_gbox)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------
        #  self.user_group_ledit

        # Qt signal/slot connections ------------------------------------------
        self.proposal_password_ledit.returnPressed.connect(self.login)
        self.login_button.clicked.connect(self.login)
        self.logout_button.clicked.connect(self.logout_clicked)
        self.proposal_combo.activated.connect(self.proposal_combo_activated)
        self.user_group_save_button.clicked.connect(self.save_group)
        self.user_group_ledit.returnPressed.connect(self.save_group)
        self.user_group_ledit.textChanged.connect(self.user_group_changed)

        # Other ---------------------------------------------------------------
        colors.set_widget_color(
            self.proposal_number_ledit, colors.LIGHT_RED, qt_import.QPalette.Base
        )
        colors.set_widget_color(
            self.proposal_password_ledit, colors.LIGHT_RED, qt_import.QPalette.Base
        )