def __init__(self,
                 parent=None,
                 name="data_collect",
                 selection_changed=None):
        """
        Descript. :
        """

        QtGui.QWidget.__init__(self, parent)

        self.setObjectName(name)

        # Hardware objects ----------------------------------------------------
        self.queue_hwobj = None
        self.queue_model_hwobj = None
        self.beamline_setup_hwobj = None

        # Internal values -----------------------------------------------------
        self.enable_collect_condition = True
        self.collecting = False
        self.sample_mount_method = 0
        self.centring_method = 0
        self.sample_centring_result = gevent.event.AsyncResult()
        self.tree_brick = self.parent()
        self.sample_item_list = []
        self.collect_tree_task = None
        self.user_stopped = False
        self.last_added_item = None

        self.selection_changed_cb = None
        self.collect_stop_cb = None
        #self.clear_centred_positions_cb = None
        self.run_cb = None

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

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

        # Graphic elements ----------------------------------------------------
        self.confirm_dialog = ConfirmDialog(self, 'Confirm Dialog')
        self.confirm_dialog.setModal(True)

        self.pin_icon = Qt4_Icons.load_icon("sample_axis.png")
        self.task_icon = Qt4_Icons.load_icon("task.png")
        self.play_icon = Qt4_Icons.load_icon("VCRPlay.png")
        self.stop_icon = Qt4_Icons.load_icon("Stop.png")
        self.ispyb_icon = Qt4_Icons.load_icon("SampleChanger2.png")
        self.caution_icon = Qt4_Icons.load_icon("Caution2.png")

        self.button_widget = QtGui.QWidget(self)
        self.up_button = QtGui.QPushButton(self.button_widget)
        self.up_button.setIcon(Qt4_Icons.load_icon("Up2.png"))
        self.up_button.setFixedHeight(25)
        self.down_button = QtGui.QPushButton(self.button_widget)
        self.down_button.setIcon(Qt4_Icons.load_icon("Down2.png"))
        self.down_button.setFixedHeight(25)

        self.copy_button = QtGui.QPushButton(self.button_widget)
        self.copy_button.setIcon(Qt4_Icons.load_icon("copy.png"))
        self.copy_button.setDisabled(True)
        self.copy_button.setToolTip("Copy highlighted queue entries")

        self.delete_button = QtGui.QPushButton(self.button_widget)
        self.delete_button.setIcon(Qt4_Icons.load_icon("bin_small.png"))
        self.delete_button.setDisabled(True)
        self.delete_button.setToolTip("Delete highlighted queue entries")

        self.collect_button = QtGui.QPushButton(self.button_widget)
        self.collect_button.setText("Collect Queue")
        self.collect_button.setFixedWidth(125)
        self.collect_button.setIcon(self.play_icon)
        self.collect_button.setDisabled(True)
        Qt4_widget_colors.set_widget_color(self.collect_button,
                                           Qt4_widget_colors.LIGHT_GREEN,
                                           QtGui.QPalette.Button)

        self.continue_button = QtGui.QPushButton(self.button_widget)
        self.continue_button.setText('Pause')
        self.continue_button.setDisabled(True)
        self.continue_button.setToolTip("Pause after current data collection")

        self.sample_tree_widget = QtGui.QTreeWidget(self)

        # Layout --------------------------------------------------------------
        button_widget_grid_layout = QtGui.QGridLayout(self.button_widget)
        button_widget_grid_layout.addWidget(self.up_button, 0, 0)
        button_widget_grid_layout.addWidget(self.down_button, 0, 1)
        button_widget_grid_layout.addWidget(self.collect_button, 1, 0, 1, 2)
        button_widget_grid_layout.addWidget(self.copy_button, 0, 3)
        button_widget_grid_layout.addWidget(self.delete_button, 0, 4)
        button_widget_grid_layout.addWidget(self.continue_button, 1, 3, 1, 2)
        button_widget_grid_layout.setColumnStretch(2, 1)
        button_widget_grid_layout.setContentsMargins(0, 0, 0, 0)
        button_widget_grid_layout.setSpacing(1)

        main_layout = QtGui.QVBoxLayout(self)
        main_layout.addWidget(self.sample_tree_widget)
        main_layout.addWidget(self.button_widget)
        main_layout.setContentsMargins(2, 2, 2, 2)
        main_layout.setSpacing(1)

        # SizePolicies --------------------------------------------------------
        self.sample_tree_widget.setSizePolicy(QtGui.QSizePolicy(\
             QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding))

        # Qt signal/slot connections ------------------------------------------
        self.up_button.clicked.connect(self.up_click)
        self.down_button.clicked.connect(self.down_click)
        self.copy_button.clicked.connect(self.copy_click)
        self.delete_button.clicked.connect(self.delete_click)
        self.collect_button.clicked.connect(self.collect_stop_toggle)
        self.sample_tree_widget.itemSelectionChanged.\
             connect(self.sample_tree_widget_selection)
        self.sample_tree_widget.contextMenuEvent = self.show_context_menu
        self.sample_tree_widget.itemDoubleClicked.connect(
            self.item_double_click)
        self.sample_tree_widget.itemClicked.connect(self.item_click)
        self.sample_tree_widget.itemChanged.connect(self.item_changed)

        self.confirm_dialog.continueClickedSignal.connect(self.collect_items)
        self.continue_button.clicked.connect(self.continue_button_click)

        # Other ---------------------------------------------------------------
        self.sample_tree_widget.setColumnCount(2)
        # LNLS
        self.sample_tree_widget.header().setResizeMode(
            0, QtGui.QHeaderView.Interactive)
        #self.sample_tree_widget.setColumnWidth(0, 130)
        self.sample_tree_widget.setColumnWidth(1, 150)
        self.sample_tree_widget.header().setDefaultSectionSize(250)
        self.sample_tree_widget.header().hide()
        self.sample_tree_widget.setRootIsDecorated(1)
        self.sample_tree_widget.setCurrentItem(
            self.sample_tree_widget.topLevelItem(0))
        self.sample_tree_widget.setSelectionMode(
            QtGui.QAbstractItemView.ExtendedSelection)
        self.setAttribute(QtCore.Qt.WA_WState_Polished)
        self.sample_tree_widget.viewport().installEventFilter(self)
Example #2
0
    def __init__(self,
                 parent=None,
                 name="data_collect",
                 selection_changed=None):
        """
        Descript. :
        """

        QtGui.QWidget.__init__(self, parent)

        self.setObjectName(name)

        # Hardware objects ----------------------------------------------------
        self.queue_hwobj = None
        self.queue_model_hwobj = None
        self.beamline_setup_hwobj = None
        self.sample_changer_hwobj = None
        self.hl_motor_hwobj = None

        # Internal values -----------------------------------------------------
        self.collecting = False
        self.centring_method = 0
        self.sample_centring_result = gevent.event.AsyncResult()
        self.tree_brick = self.parent()
        self.sample_item_list = []
        self.collect_tree_task = None
        self.user_stopped = False

        self.selection_changed_cb = None
        self.collect_stop_cb = None
        #self.clear_centred_positions_cb = None
        self.run_cb = None

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

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

        # Graphic elements ----------------------------------------------------
        self.confirm_dialog = ConfirmDialog(self, 'Confirm Dialog')
        self.confirm_dialog.setModal(True)

        self.pin_pixmap = Qt4_Icons.load("sample_axis.png")
        self.task_pixmap = Qt4_Icons.load("task.png")
        self.play_pixmap = Qt4_Icons.load("VCRPlay.png")
        self.stop_pixmap = Qt4_Icons.load("Stop.png")
        self.up_pixmap = Qt4_Icons.load("Up2.png")
        self.down_pixmap = Qt4_Icons.load("Down2.png")
        self.delete_pixmap = Qt4_Icons.load("bin_small.png")
        self.ispyb_pixmap = Qt4_Icons.load("SampleChanger2.png")
        self.caution_pixmap = Qt4_Icons.load("Caution2.png")

        self.button_widget = QtGui.QWidget(self)
        self.up_button = QtGui.QPushButton(self.button_widget)
        self.up_button.setIcon(QtGui.QIcon(self.up_pixmap))
        self.up_button.setFixedHeight(25)
        self.down_button = QtGui.QPushButton(self.button_widget)
        self.down_button.setIcon(QtGui.QIcon(self.down_pixmap))
        self.down_button.setFixedHeight(25)

        self.delete_button = QtGui.QPushButton(self.button_widget)
        self.delete_button.setIcon(QtGui.QIcon(self.delete_pixmap))
        self.delete_button.setDisabled(True)
        self.delete_button.setToolTip("Delete highlighted queue entries")

        self.collect_button = QtGui.QPushButton(self.button_widget)
        self.collect_button.setText("Collect Queue")
        self.collect_button.setFixedWidth(125)
        self.collect_button.setIcon(QtGui.QIcon(self.play_pixmap))
        Qt4_widget_colors.set_widget_color(self.collect_button,
                                           Qt4_widget_colors.LIGHT_GREEN)

        self.continue_button = QtGui.QPushButton(self.button_widget)
        self.continue_button.setText('Pause')
        self.continue_button.setEnabled(True)
        self.continue_button.setFixedWidth(75)
        self.continue_button.setToolTip("Pause after current data collection")

        self.sample_tree_widget = QtGui.QTreeWidget(self)

        # Layout --------------------------------------------------------------
        button_widget_grid_layout = QtGui.QGridLayout(self)
        button_widget_grid_layout.addWidget(self.up_button, 0, 0)
        button_widget_grid_layout.addWidget(self.down_button, 0, 1)
        button_widget_grid_layout.addWidget(self.collect_button, 1, 0, 1, 2)
        button_widget_grid_layout.addWidget(self.delete_button, 0, 3)
        button_widget_grid_layout.addWidget(self.continue_button, 1, 3)
        button_widget_grid_layout.setColumnStretch(2, 1)
        button_widget_grid_layout.setContentsMargins(0, 0, 0, 0)
        button_widget_grid_layout.setSpacing(1)
        self.button_widget.setLayout(button_widget_grid_layout)

        main_layout = QtGui.QVBoxLayout(self)
        main_layout.addWidget(self.sample_tree_widget)
        main_layout.addWidget(self.button_widget)
        main_layout.setContentsMargins(2, 2, 2, 2)
        main_layout.setSpacing(1)
        self.setLayout(main_layout)

        # SizePolicies --------------------------------------------------------
        #self.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
        #                                     QtGui.QSizePolicy.Expanding))
        self.sample_tree_widget.setSizePolicy(
            QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                              QtGui.QSizePolicy.Expanding))

        # Qt signal/slot connections ------------------------------------------
        self.up_button.clicked.connect(self.up_click)

        self.down_button.clicked.connect(self.down_click)

        self.delete_button.clicked.connect(self.delete_click)

        self.collect_button.clicked.connect(self.collect_stop_toggle)

        self.sample_tree_widget.itemSelectionChanged.\
             connect(self.sample_tree_widget_selection)

        self.connect(
            self.sample_tree_widget,
            QtCore.SIGNAL("customContextMenuRequested (const QPoint & pos)"),
            self.show_context_menu)
        #tCore.QObject.connect(self.sample_tree_widget,
        #                      QtCore.SIGNAL("itemRenamed(QListViewItem *, int , const QString& )"),
        #                      self.item_renamed)
        self.sample_tree_widget.itemDoubleClicked.connect(
            self.item_double_click)

        self.sample_tree_widget.itemClicked.connect(self.item_click)

        self.connect(self.confirm_dialog, QtCore.SIGNAL("continue_clicked"),
                     self.collect_items)

        self.continue_button.clicked.connect(self.continue_button_click)

        # Other ---------------------------------------------------------------
        self.sample_tree_widget.setColumnCount(2)
        self.sample_tree_widget.setColumnWidth(0, 200)
        self.sample_tree_widget.setColumnWidth(1, 200)
        self.sample_tree_widget.header().hide()
        self.sample_tree_widget.setRootIsDecorated(1)
        self.sample_tree_widget.setCurrentItem(
            self.sample_tree_widget.topLevelItem(0))
        self.setAttribute(QtCore.Qt.WA_WState_Polished)
        self.sample_tree_widget.viewport().installEventFilter(self)
        #self.setFixedWidth(315)

        self.collect_button.setDisabled(True)
        self.setWindowTitle("Data collect")