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

        QtGui.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 ----------------------------------------------------
        rone_widget = QtGui.QWidget(self)
        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 = uic.loadUi(os.path.join(os.path.dirname(__file__),
                                          'ui_files/Qt4_snapshot_widget_layout.ui'))
        self.position_widget.setMinimumSize(450, 340)

        rtwo_widget = QtGui.QWidget(self)
        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 = QtGui.QWidget(self)
        self.rad_dmg_widget = uic.loadUi(os.path.join(os.path.dirname(__file__),
             'ui_files/Qt4_radiation_damage_model_widget_layout.ui'))
        self.vertical_dimension_widget = uic.loadUi(os.path.join(os.path.dirname(__file__),
             'ui_files/Qt4_vertical_crystal_dimension_widget_layout.ui'))

        # Layout --------------------------------------------------------------
        rone_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rone_widget.setLayout(rone_widget_layout)

        rtwo_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rtwo_widget.setLayout(rtwo_widget_layout)

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

        _main_vlayout = QtGui.QVBoxLayout(self)
        _main_vlayout.addWidget(rone_widget)
        _main_vlayout.addWidget(rtwo_widget)
        _main_vlayout.addWidget(rtree_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(_main_vlayout)

        # 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,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('min_time',
                                                 self.routine_dc_widget.time_ledit,
                                                 float,
                                                 QtGui.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,
                                                 QtGui.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,
                                                 QtGui.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,
                                                 QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('beta',
                                                 self.rad_dmg_widget.beta_over_gray_ledit,
                                                 float,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('gamma',
                                                 self.rad_dmg_widget.gamma_over_gray_ledit,
                                                 float,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('max_crystal_vdim',
                                                self.vertical_dimension_widget.max_vdim_ledit,
                                                float,
                                                QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('min_crystal_vdim',
                                                self.vertical_dimension_widget.min_vdim_ledit,
                                                float,
                                                QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('min_crystal_vphi',
                                                self.vertical_dimension_widget.min_vphi_ledit,
                                                float,
                                                QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('max_crystal_vphi',
                                                self.vertical_dimension_widget.max_vphi_ledit,
                                                float,
                                                QtGui.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)
Exemple #2
0
    def __init__(self, parent=None, name="parameter_widget"):
        """
        Descript. :
        """

        QtGui.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 ----------------------------------------------------
        rone_widget = QtGui.QWidget(self)
        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 = uic.loadUi(
            os.path.join(os.path.dirname(__file__),
                         'ui_files/Qt4_snapshot_widget_layout.ui'))
        self.position_widget.setMinimumSize(450, 340)

        rtwo_widget = QtGui.QWidget(self)
        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 = QtGui.QWidget(self)
        self.rad_dmg_widget = uic.loadUi(
            os.path.join(
                os.path.dirname(__file__),
                'ui_files/Qt4_radiation_damage_model_widget_layout.ui'))
        self.vertical_dimension_widget = uic.loadUi(
            os.path.join(
                os.path.dirname(__file__),
                'ui_files/Qt4_vertical_crystal_dimension_widget_layout.ui'))

        # Layout --------------------------------------------------------------
        rone_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rone_widget.setLayout(rone_widget_layout)

        rtwo_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rtwo_widget.setLayout(rtwo_widget_layout)

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

        _main_vlayout = QtGui.QVBoxLayout(self)
        _main_vlayout.addWidget(rone_widget)
        _main_vlayout.addWidget(rtwo_widget)
        _main_vlayout.addWidget(rtree_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(_main_vlayout)

        # 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,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'min_time', self.routine_dc_widget.time_ledit, float,
            QtGui.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,
            QtGui.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, QtGui.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,
            QtGui.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, QtGui.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,
             QtGui.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, QtGui.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, QtGui.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,
            QtGui.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,
            QtGui.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,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'beta', self.rad_dmg_widget.beta_over_gray_ledit, float,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'gamma', self.rad_dmg_widget.gamma_over_gray_ledit, float,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'max_crystal_vdim', self.vertical_dimension_widget.max_vdim_ledit,
            float, QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'min_crystal_vdim', self.vertical_dimension_widget.min_vdim_ledit,
            float, QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'min_crystal_vphi', self.vertical_dimension_widget.min_vphi_ledit,
            float, QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'max_crystal_vphi', self.vertical_dimension_widget.max_vphi_ledit,
            float, QtGui.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)
class CharParametersWidget(QtGui.QWidget):
    """
    Descript. : 
    """

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

        QtGui.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 ----------------------------------------------------
        rone_widget = QtGui.QWidget(self)
        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 = uic.loadUi(os.path.join(os.path.dirname(__file__),
                                          'ui_files/Qt4_snapshot_widget_layout.ui'))
        self.position_widget.setMinimumSize(450, 340)

        rtwo_widget = QtGui.QWidget(self)
        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 = QtGui.QWidget(self)
        self.rad_dmg_widget = uic.loadUi(os.path.join(os.path.dirname(__file__),
             'ui_files/Qt4_radiation_damage_model_widget_layout.ui'))
        self.vertical_dimension_widget = uic.loadUi(os.path.join(os.path.dirname(__file__),
             'ui_files/Qt4_vertical_crystal_dimension_widget_layout.ui'))

        # Layout --------------------------------------------------------------
        rone_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rone_widget.setLayout(rone_widget_layout)

        rtwo_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rtwo_widget.setLayout(rtwo_widget_layout)

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

        _main_vlayout = QtGui.QVBoxLayout(self)
        _main_vlayout.addWidget(rone_widget)
        _main_vlayout.addWidget(rtwo_widget)
        _main_vlayout.addWidget(rtree_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(_main_vlayout)

        # 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,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('min_time',
                                                 self.routine_dc_widget.time_ledit,
                                                 float,
                                                 QtGui.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,
                                                 QtGui.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,
                                                 QtGui.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,
                                                 QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
             QtGui.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,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('beta',
                                                 self.rad_dmg_widget.beta_over_gray_ledit,
                                                 float,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('gamma',
                                                 self.rad_dmg_widget.gamma_over_gray_ledit,
                                                 float,
                                                 QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('max_crystal_vdim',
                                                self.vertical_dimension_widget.max_vdim_ledit,
                                                float,
                                                QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('min_crystal_vdim',
                                                self.vertical_dimension_widget.min_vdim_ledit,
                                                float,
                                                QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('min_crystal_vphi',
                                                self.vertical_dimension_widget.min_vphi_ledit,
                                                float,
                                                QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update('max_crystal_vphi',
                                                self.vertical_dimension_widget.max_vphi_ledit,
                                                float,
                                                QtGui.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)
        #QtCore.QObject.connect(QtGui.QApplication, QtCore.SIGNAL('tab_changed'),
        #                   self.tab_changed)

    def _space_group_change(self, index):
        """
        Descript. :
        """
        self._char_params.space_group = queue_model_enumerables.\
                                        XTAL_SPACEGROUPS[index]

    def _set_space_group(self, space_group):
        """
        Descript. :
        """
        index  = 0
        
        if space_group in queue_model_enumerables.XTAL_SPACEGROUPS:
            index = queue_model_enumerables.XTAL_SPACEGROUPS.index(space_group)

        self._space_group_change(index)
        self.vertical_dimension_widget.space_group_ledit.setCurrentIndex(index)

    def _prefix_ledit_change(self, new_value):
        """
        Descript. :
        """
        prefix = self._data_collection.acquisitions[0].\
                 path_template.get_prefix()
        self._char.set_name(prefix)
        self._tree_view_item.setText(0, self._char.get_name())

    def _run_number_ledit_change(self, new_value):
        """
        Descript. :
        """
        if str(new_value).isdigit():
            self._char.set_number(int(new_value))
            self._tree_view_item.setText(0, self._char.get_name())

    def enable_aimed_mult_ledit(self, state):
        """
        Descript. :
        """
        self.opt_parameters_widget.opt_param_widget.aimed_mult_ledit.setEnabled(state)

    def enable_maximum_res_ledit(self, state):
        """
        Descript. :
        """
        self.opt_parameters_widget.opt_param_widget.maximum_res_ledit.setEnabled(state)

    def update_char_type(self, index):
        """
        Descript. :
        """
        self._char_params.experiment_type = index
    
    def toggle_permitted_range(self, status):
        """
        Descript. :
        """
        self.opt_parameters_widget.opt_param_widget.phi_start_ledit.setEnabled(status)
        self.opt_parameters_widget.opt_param_widget.phi_end_ledit.setEnabled(status)

    def enable_opt_parameters_widget(self, state):
        """
        Descript. :
        """
        if not self._char.is_executed():
            self.opt_parameters_widget.setEnabled(not state)
        else:
            self.opt_parameters_widget.setEnabled(False)

    def tab_changed(self):
        """
        Descript. :
        """
        if self._tree_view_item:
            self.populate_parameter_widget(self._tree_view_item)

    def set_enabled(self, state):
        """
        Descript. :
        """
        self.char_type_widget.setEnabled(state)
        self.routine_dc_widget.setEnabled(state)
        self.sad_widget.setEnabled(state)
        self.rad_dmg_char_widget.setEnabled(state)
        self.reference_img_widget.setEnabled(state)
        self.acq_widget.setEnabled(state)
        self.path_widget.setEnabled(state)
        self.opt_parameters_widget.setEnabled(state)
        self.rad_dmg_widget.setEnabled(state)
        self.vertical_dimension_widget.setEnabled(state)

    def populate_parameter_widget(self, tree_view_item):
        """
        Descript. :
        """
        self._tree_view_item = tree_view_item
        self._char = tree_view_item.get_model()
        self._data_collection = self._char.reference_image_collection
        self._char_params = self._char.characterisation_parameters
        self._char_params_mib.set_model(self._char.characterisation_parameters)
        self._set_space_group(self._char_params.space_group)
       
        self.acq_widget.update_data_model(self._char.reference_image_collection.\
                                          acquisitions[0].acquisition_parameters,
                                          self._char.reference_image_collection.\
                                          acquisitions[0].path_template)
        
        self.path_widget.update_data_model(self._char.reference_image_collection.\
                                           acquisitions[0].path_template)
        
        if self._data_collection.acquisitions[0].acquisition_parameters.\
                centred_position.snapshot_image:
            image = self._data_collection.acquisitions[0].\
                acquisition_parameters.centred_position.snapshot_image
            ration = image.height() / float(image.width())
            image = image.scaled(400, 400 * ration, QtCore.Qt.KeepAspectRatio)
            self.position_widget.svideo.setPixmap(QtGui.QPixmap(image))

        self.toggle_permitted_range(self._char_params.use_permitted_rotation)
        self.enable_opt_parameters_widget(self._char_params.determine_rad_params)
        self.enable_maximum_res_ledit(self._char_params.use_aimed_resolution)
        self.enable_aimed_mult_ledit(self._char_params.use_aimed_multiplicity)
       
        item = self.char_type_widget.charact_type_tbox.\
               widget(self._char_params.experiment_type)
       
        self.char_type_widget.charact_type_tbox.setCurrentWidget(item)
        self.char_type_widget.toggle_time_dose()
        crystal = self._char.reference_image_collection.crystal
        self.acq_widget.set_energies(crystal.energy_scan_result)

    def set_beamline_setup(self, bl_setup):
        """
        Descript. :
        """
        self.acq_widget.set_beamline_setup(bl_setup)
Exemple #4
0
class CharParametersWidget(QtGui.QWidget):
    """
    Descript. : 
    """
    def __init__(self, parent=None, name="parameter_widget"):
        """
        Descript. :
        """

        QtGui.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 ----------------------------------------------------
        rone_widget = QtGui.QWidget(self)
        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 = uic.loadUi(
            os.path.join(os.path.dirname(__file__),
                         'ui_files/Qt4_snapshot_widget_layout.ui'))
        self.position_widget.setMinimumSize(450, 340)

        rtwo_widget = QtGui.QWidget(self)
        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 = QtGui.QWidget(self)
        self.rad_dmg_widget = uic.loadUi(
            os.path.join(
                os.path.dirname(__file__),
                'ui_files/Qt4_radiation_damage_model_widget_layout.ui'))
        self.vertical_dimension_widget = uic.loadUi(
            os.path.join(
                os.path.dirname(__file__),
                'ui_files/Qt4_vertical_crystal_dimension_widget_layout.ui'))

        # Layout --------------------------------------------------------------
        rone_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rone_widget.setLayout(rone_widget_layout)

        rtwo_widget_layout = QtGui.QHBoxLayout(self)
        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)
        rtwo_widget.setLayout(rtwo_widget_layout)

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

        _main_vlayout = QtGui.QVBoxLayout(self)
        _main_vlayout.addWidget(rone_widget)
        _main_vlayout.addWidget(rtwo_widget)
        _main_vlayout.addWidget(rtree_widget)
        _main_vlayout.setSpacing(2)
        _main_vlayout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(_main_vlayout)

        # 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,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'min_time', self.routine_dc_widget.time_ledit, float,
            QtGui.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,
            QtGui.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, QtGui.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,
            QtGui.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, QtGui.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,
             QtGui.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, QtGui.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, QtGui.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,
            QtGui.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,
            QtGui.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,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'beta', self.rad_dmg_widget.beta_over_gray_ledit, float,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'gamma', self.rad_dmg_widget.gamma_over_gray_ledit, float,
            QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'max_crystal_vdim', self.vertical_dimension_widget.max_vdim_ledit,
            float, QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'min_crystal_vdim', self.vertical_dimension_widget.min_vdim_ledit,
            float, QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'min_crystal_vphi', self.vertical_dimension_widget.min_vphi_ledit,
            float, QtGui.QDoubleValidator(0.0, 1000, 2, self))

        self._char_params_mib.bind_value_update(
            'max_crystal_vphi', self.vertical_dimension_widget.max_vphi_ledit,
            float, QtGui.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)
        #QtCore.QObject.connect(QtGui.QApplication, QtCore.SIGNAL('tab_changed'),
        #                   self.tab_changed)

    def _space_group_change(self, index):
        """
        Descript. :
        """
        self._char_params.space_group = queue_model_enumerables.\
                                        XTAL_SPACEGROUPS[index]

    def _set_space_group(self, space_group):
        """
        Descript. :
        """
        index = 0

        if space_group in queue_model_enumerables.XTAL_SPACEGROUPS:
            index = queue_model_enumerables.XTAL_SPACEGROUPS.index(space_group)

        self._space_group_change(index)
        self.vertical_dimension_widget.space_group_ledit.setCurrentIndex(index)

    def _prefix_ledit_change(self, new_value):
        """
        Descript. :
        """
        prefix = self._data_collection.acquisitions[0].\
                 path_template.get_prefix()
        self._char.set_name(prefix)
        self._tree_view_item.setText(0, self._char.get_name())

    def _run_number_ledit_change(self, new_value):
        """
        Descript. :
        """
        if str(new_value).isdigit():
            self._char.set_number(int(new_value))
            self._tree_view_item.setText(0, self._char.get_name())

    def enable_aimed_mult_ledit(self, state):
        """
        Descript. :
        """
        self.opt_parameters_widget.opt_param_widget.aimed_mult_ledit.setEnabled(
            state)

    def enable_maximum_res_ledit(self, state):
        """
        Descript. :
        """
        self.opt_parameters_widget.opt_param_widget.maximum_res_ledit.setEnabled(
            state)

    def update_char_type(self, index):
        """
        Descript. :
        """
        self._char_params.experiment_type = index

    def toggle_permitted_range(self, status):
        """
        Descript. :
        """
        self.opt_parameters_widget.opt_param_widget.phi_start_ledit.setEnabled(
            status)
        self.opt_parameters_widget.opt_param_widget.phi_end_ledit.setEnabled(
            status)

    def enable_opt_parameters_widget(self, state):
        """
        Descript. :
        """
        if not self._char.is_executed():
            self.opt_parameters_widget.setEnabled(not state)
        else:
            self.opt_parameters_widget.setEnabled(False)

    def tab_changed(self):
        """
        Descript. :
        """
        if self._tree_view_item:
            self.populate_parameter_widget(self._tree_view_item)

    def set_enabled(self, state):
        """
        Descript. :
        """
        self.char_type_widget.setEnabled(state)
        self.routine_dc_widget.setEnabled(state)
        self.sad_widget.setEnabled(state)
        self.rad_dmg_char_widget.setEnabled(state)
        self.reference_img_widget.setEnabled(state)
        self.acq_widget.setEnabled(state)
        self.path_widget.setEnabled(state)
        self.opt_parameters_widget.setEnabled(state)
        self.rad_dmg_widget.setEnabled(state)
        self.vertical_dimension_widget.setEnabled(state)

    def populate_parameter_widget(self, tree_view_item):
        """
        Descript. :
        """
        self._tree_view_item = tree_view_item
        self._char = tree_view_item.get_model()
        self._data_collection = self._char.reference_image_collection
        self._char_params = self._char.characterisation_parameters
        self._char_params_mib.set_model(self._char.characterisation_parameters)
        self._set_space_group(self._char_params.space_group)

        self.acq_widget.update_data_model(self._char.reference_image_collection.\
                                          acquisitions[0].acquisition_parameters,
                                          self._char.reference_image_collection.\
                                          acquisitions[0].path_template)

        self.path_widget.update_data_model(self._char.reference_image_collection.\
                                           acquisitions[0].path_template)

        if self._data_collection.acquisitions[0].acquisition_parameters.\
                centred_position.snapshot_image:
            image = self._data_collection.acquisitions[0].\
                acquisition_parameters.centred_position.snapshot_image
            ration = image.height() / float(image.width())
            image = image.scaled(400, 400 * ration, QtCore.Qt.KeepAspectRatio)
            self.position_widget.svideo.setPixmap(QtGui.QPixmap(image))

        self.toggle_permitted_range(self._char_params.use_permitted_rotation)
        self.enable_opt_parameters_widget(
            self._char_params.determine_rad_params)
        self.enable_maximum_res_ledit(self._char_params.use_aimed_resolution)
        self.enable_aimed_mult_ledit(self._char_params.use_aimed_multiplicity)

        item = self.char_type_widget.charact_type_tbox.\
               widget(self._char_params.experiment_type)

        self.char_type_widget.charact_type_tbox.setCurrentWidget(item)
        self.char_type_widget.toggle_time_dose()
        crystal = self._char.reference_image_collection.crystal
        self.acq_widget.set_energies(crystal.energy_scan_result)

    def set_beamline_setup(self, bl_setup):
        """
        Descript. :
        """
        self.acq_widget.set_beamline_setup(bl_setup)