Пример #1
0
    def __init__(self):
        """
        initialization
        """
        super(PyRSLauncher, self).__init__(None)

        # set up UI
        # ui_path = os.path.join(os.path.dirname(__file__), os.path.join('ui', 'pyrsmain.ui'))
        # self.ui = load_ui(ui_path, baseinstance=self)
        self.ui = load_ui('pyrsmain.ui', baseinstance=self)

        # define
        self.ui.pushButton_manualReduction.clicked.connect(self.do_launch_manual_reduction)
        self.ui.pushButton_fitPeaks.clicked.connect(self.do_launch_fit_peak_window)
        self.ui.pushButton_launchTextureAnalysis.clicked.connect(self.do_launch_texture_window)
        self.ui.pushButton_launchStrainStressCalculation.clicked.connect(self.do_launch_strain_stress_window)
        self.ui.pushButton_launchDebugger.clicked.connect(self.do_launch_debugger)
        self.ui.pushButton_calibration.clicked.connect(self.do_launch_calibration)

        self.ui.actionQuit.triggered.connect(self.do_quit)

        # child windows
        self.peak_fit_window = None
        self.texture_analysis_window = None
        self.strain_stress_window = None
        self.manual_reduction_window = None
        self.instrument_calibration_window = None
        self.calibration_window = None
        self.debugger = None   # IPython window
Пример #2
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(SmartPeakFitControlDialog, self).__init__(parent)

        # set up parent window
        assert isinstance(parent, QMainWindow), 'Parent window {} must be a QMainWindow but not a {}' \
                                                ''.format(parent, type(parent))
        self._main_window = parent

        # link signal
        self.FitPeakSignal.connect(self._main_window.fit_peaks_smart)

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', 'peakfitadvsetting.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)

        # init UI
        self._init_widgets()

        # define event handling methods
        self.ui.pushButton_smartFitPeaks.clicked.connect(
            self.do_smart_peaks_fitting)
        self.ui.pushButton_close.clicked.connect(self.do_close)

        return
Пример #3
0
    def __init__(self, parent):
        """ initialization
        :param parent:
        """
        super(StrainStressGridSetup, self).__init__(parent)

        # Set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', "strainstressgridsetup.ui"))
        self.ui = load_ui(ui_path, baseinstance=self)
        # Init widgets
        self._init_widgets()

        self.ui.buttonBox.accepted.connect(self.do_accept_user_input)
        self.ui.comboBox_alignmentCriteria.currentIndexChanged.connect(
            self.do_set_default_values)

        self._is_user_specified_grids = False

        # for return
        self._grid_setup_dict = dict()  # [Min/Max/'Resolution'][X/Y/Z] = value

        # flag that user input is OK
        self._is_user_input_acceptable = True

        # original dimension statistics
        self._exp_grid_dimensions = dict(
        )  # ['min']['e11']['X'] = value ... min/max/num_indv_values
        self._plot_grid_dimensions = dict(
        )  # ['min']['e11']['X'] = value ... min/max/num_indv_values

        return
Пример #4
0
    def __init__(self, parent, fit_peak_core=None):
        """
        initialization
        :param parent:
        """
        super(FitPeaksWindow, self).__init__(parent)

        # class variables
        self.current_hidra_file_name = ''  # current loaded nxs (hidra file)
        self._core = fit_peak_core
        self._project_name = None
        self.hidra_workspace = None
        self.fit_result = None  # list of fits for each sub-runs
        # current/last loaded data
        self._curr_file_name = None

        # list of d0 from peak range/label table
        self.list_peak_d0 = []

        # a copy of sample logs
        self._sample_log_names = list()  # a copy of sample logs' names that are added to combo-box

        # sub windows
        self._advanced_fit_dialog = None

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__), os.path.join('ui', 'peakfitwindow.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)

        self.setup_ui()
Пример #5
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(CreateNewSessionDialog, self).__init__(parent)

        # Set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', "newsessiondialog.ui"))
        self.ui = load_ui(ui_path, baseinstance=self)

        self.ui.buttonBox.accepted.connect(self.do_new_session)
        self.ui.buttonBox.rejected.connect(self.do_quit)

        # connect the signal
        self.NewSessionSignal.connect(parent.create_new_session)

        # init widgets
        self.ui.comboBox_strainStressType.clear()
        self.ui.comboBox_strainStressType.addItem(
            'Unconstrained Strain/Stress')
        self.ui.comboBox_strainStressType.addItem('Plane Strain')
        self.ui.comboBox_strainStressType.addItem('Plane Stress')

        return
Пример #6
0
    def __init__(self, parent=None):
        """ Init
        """
        # call base
        QWidget.__init__(self)

        # Parent & others
        self._myMainWindow = None
        self._myParent = parent

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__), "WorkspacesView.ui")
        self.ui = load_ui(ui_path, baseinstance=self)
        self._promote_widgets()

        self.ui.tableWidget_dataStructure.setup()
        self.ui.widget_ipython.set_main_application(self)

        # define event handling methods
        # TODO - FUTURE - self.ui.pushButton_plot.clicked.connect(self.do_plot_workspace)
        self.ui.pushButton_toIPython.clicked.connect(self.do_write_workspace_name)
        self.ui.pushButton_toIPythonMtd.clicked.connect(self.do_write_workspace_instance)
        self.ui.pushButton_toIPythonAssign.clicked.connect(self.do_assign_workspace)
        self.ui.pushButton_clear.clicked.connect(self.do_clear_canvas)
        self.ui.pushButton_fitCanvas.clicked.connect(self.do_fit_canvas)

        return
Пример #7
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(ExportGridSliceSetupDialog, self).__init__(parent)

        # Set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', "sliceexportdialog.ui"))
        self.ui = load_ui(ui_path, baseinstance=self)

        # set default value
        self.ui.lineEdit_resolution.setText('0.001')

        return
Пример #8
0
    def __init__(self):
        """
        initialization
        """
        super(PyRSLauncher, self).__init__(None)

        # set up UI
        self.ui = load_ui('pyrsmain.ui', baseinstance=self)

        # define
        self.ui.pushButton_manualReduction.clicked.connect(
            self.do_launch_manual_reduction)
        self.ui.pushButton_fitPeaks.clicked.connect(
            self.do_launch_fit_peak_window)
        self.ui.pushButton_launchStrainStressCalculation.clicked.connect(
            self.do_launch_strain_stress_window)

        self.ui.actionQuit.triggered.connect(self.do_quit)

        # child windows
        self.peak_fit_window = None
        self.manual_reduction_window = None
        self.strain_stress_window = None
Пример #9
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(StrainStressTableView, self).__init__(parent)

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', "strainstressview.ui"))
        self.ui = load_ui(ui_path, baseinstance=self)

        # promote
        self.ui.tableView_strainStressTable = qt_util.promote_widget(
            self, self.ui.tableView_strainStressTable_frame,
            StrainStressValueTable)

        # init widgets
        self.ui.tableView_strainStressTable.setup()

        # define event handling
        self.ui.pushButton_close.clicked.connect(self.do_quit)

        return
Пример #10
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(ManualReductionWindow, self).__init__(parent)

        # class variables
        self._core = None
        self._currExpNumber = None
        self._hydra_workspace = None  # HiDRA worksapce instance if any file loaded
        self._project_data_id = None  # Project name for reference (str)
        self._project_file_name = None  # last loaded project file
        self._output_dir = None

        # mutexes
        self._plot_run_numbers_mutex = False
        self._plot_sliced_mutex = False
        self._plot_selection_mutex = False

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', 'manualreductionwindow.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)
        # promote some widgets
        self._promote_widgets()

        # Hide some not-yet-implemented
        self.ui.tabWidget_reduceRuns.setTabEnabled(
            1, False)  # User specified instrument parameter (shifts)
        self.ui.tabWidget_reduceRuns.setTabEnabled(
            2, False)  # advanced slicing tab

        # Event handler: handler must be set up after UI is loaded
        self._event_handler = EventHandler(parent=self)

        # Mask file: check box and line edit
        # set default
        self._mask_state(self.ui.checkBox_defaultMaskFile.checkState())
        # link event handling
        self.checkBox_defaultMaskFile.stateChanged.connect(self._mask_state)
        self.ui.pushButton_browseMaskFile.clicked.connect(
            self.browse_mask_file)
        self.ui.pushButton_browseVanadium.clicked.connect(
            self.browse_vanadium_file)

        # Calibration file: check box and line edit
        self._calibration_state(
            self.ui.checkBox_defaultCalibrationFile.checkState())
        self.checkBox_defaultCalibrationFile.stateChanged.connect(
            self._calibration_state)
        self.ui.pushButton_browseCalibrationFile.clicked.connect(
            self.browse_calibration_file)

        # Output directory: check box, spin box and line edit
        # change of run number won't trigger the scan of NeXus file
        self.ui.lineEdit_runNumber.textChanged.connect(
            self._event_handler.update_run_changed)
        self.ui.pushButton_browseNeXus.clicked.connect(self.browse_nexus_file)
        # self._output_state(self.ui.checkBox_defaultOutputDirectory.checkState())
        self.checkBox_defaultOutputDirectory.stateChanged.connect(
            self._output_state)
        self.ui.pushButton_browseOutputDirectory.clicked.connect(
            self.browse_output_dir)

        # Push button for split, convert and save project file
        self.ui.pushButton_splitConvertSaveProject.clicked.connect(
            self.split_convert_save_nexus)
        # Next: self.ui.pushButton_chopReduce.clicked.connect(self.slice_nexus)

        # Plotting
        self.ui.pushButton_plotDetView.clicked.connect(self.plot_sub_runs)

        # radio button operation
        self.ui.radioButton_chopByTime.toggled.connect(
            self.event_change_slice_type)
        self.ui.radioButton_chopByLogValue.toggled.connect(
            self.event_change_slice_type)
        self.ui.radioButton_chopAdvanced.toggled.connect(
            self.event_change_slice_type)

        self.ui.actionQuit.triggered.connect(self.do_quit)
        self.ui.progressBar.setVisible(False)
        # event handling for combobox
        # TODO - Make this work properly
        # self.ui.comboBox_sub_runs.currentIndexChanged.connect(self.event_different_sub_run_selected)

        # TODO - ASAP - Use these 2 buttons to enable/disable write access to configuration
        # actionEdit_Calibrations
        # actionFix_Calibrations

        # TODO - ASAP - Load Instrument
        # actionLoad_Instrument

        # Child windows
        self._slice_setup_window = None

        # menu operation

        # load NeXus
        self.ui.actionLoad_nexus_file.triggered.connect(self.load_nexus_file)

        # Load project file (*.h5)
        self.ui.actionLoad_Project_File.triggered.connect(
            self.load_hidra_project_file)

        # init widgets
        self._init_widgets_setup()

        # mutexes
        self._mutexPlotRuns = False

        return
Пример #11
0
    def __init__(self, parent=None):
        """ Initialization
        """
        # call base
        QMainWindow.__init__(self)

        # child windows
        self._manualSlicerDialog = None

        # parent
        self._myParent = parent
        self._mutexLockSwitchSliceMethod = False

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', 'eventslicersetupwindow.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)

        # promote
        self.ui.graphicsView_main = qt_util.promote_widget(
            self, self.ui.graphicsView_main_frame, LogGraphicsView)

        # Set up widgets
        self._init_widgets_setup()

        # Defining widget handling methods
        self.ui.pushButton_prevLog.clicked.connect(self.do_load_prev_log)
        self.ui.pushButton_nextLog.clicked.connect(self.do_load_next_log)
        self.ui.comboBox_logFrameUnit.currentIndexChanged.connect(
            self.evt_re_plot_mts_log)

        self.ui.checkBox_hideSingleValueLog.stateChanged.connect(
            self.load_log_names)

        # chopping setup
        self.ui.radioButton_timeSlicer.toggled.connect(
            self.evt_switch_slicer_method)
        self.ui.radioButton_logValueSlicer.toggled.connect(
            self.evt_switch_slicer_method)
        self.ui.radioButton_manualSlicer.toggled.connect(
            self.evt_switch_slicer_method)
        self.ui.pushButton_slicer.clicked.connect(self.do_chop)
        self.ui.pushButton_viewReduced.clicked.connect(
            self.do_view_reduced_data)

        # automatic slicer setup
        self.ui.pushButton_setupAutoSlicer.clicked.connect(
            self.do_setup_uniform_slicer)
        self.ui.checkBox_showSlicer.stateChanged.connect(self.evt_show_slicer)

        # manual slicer picker
        self.ui.pushButton_showManualSlicerTable.clicked.connect(
            self.do_show_manual_slicer_table)
        self.ui.pushButton_loadSlicerFile.clicked.connect(
            self.do_import_slicer_file)

        # Canvas
        self.ui.pushButton_doPlotSample.clicked.connect(
            self.evt_plot_sample_log)
        self.ui.pushButton_resizeCanvas.clicked.connect(self.do_resize_canvas)
        self.ui.comboBox_logNames.currentIndexChanged.connect(
            self.evt_plot_sample_log)

        self.ui.radioButton_useMaxPointResolution.toggled.connect(
            self.evt_change_resolution_type)

        self.ui.radioButton_useTimeResolution.toggled.connect(
            self.evt_change_resolution_type)

        self.ui.pushButton_prevPartialLog.clicked.connect(
            self.do_load_prev_log_frame)
        self.ui.pushButton_nextPartialLog.clicked.connect(
            self.do_load_next_log_frame)

        # menu actions
        self.ui.actionExit.triggered.connect(self.evt_quit_no_save)

        # Event handling for pickers
        self._mtsFileLoaderWindow = None

        # child windows
        self._quickChopDialog = None

        # Class variables
        self._logNameList = list()
        self._sampleLogDict = dict()

        # self._currentPickerID = None
        self._myPickerMode = OUT_PICKER
        self._currMousePosX = 0.
        self._currMousePosY = 0.

        # Picker management
        self._myPickerIDList = list()

        # Experiment-related variables
        self._currLogType = None
        self._currRunNumber = None
        self._currLogName = None

        self._currentBlockIndex = None
        self._currentFrameUnit = str(
            self.ui.comboBox_logFrameUnit.currentText())
        self._currentStartPoint = None
        self._currentStopPoint = None
        self._averagePointsPerSecond = None
        self._blockIndex = None

        # MTS log format dictionary.  key is file name, value is the format dictionary
        self._mtsLogFormat = dict()

        # Highlighted lines list
        self._myHighLightedLineList = list()

        # Mutex/Lock, multiple threading
        self._mutexLockLogNameComboBox = False

        # Reference to slicers that have been set up
        self._currSlicerKey = None
        self._slicerKeyList = list()

        return
Пример #12
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(TextureAnalysisWindow, self).__init__(parent)

        # class variables
        self._core = None

        # set up UI
        # self.ui = ui.ui_texturecalculationwindow.Ui_MainWindow()
        # self.ui.setupUi(self)

        ui_path = os.path.join(os.path.dirname(__file__), os.path.join('ui', 'texturecalculationwindow.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)

        # promote widgets
        self.ui.graphicsView_fitSetup = qt_util.promote_widget(self, self.ui.graphicsView_fitSetup_frame,
                                                               PeakFitSetupView)
        self.ui.graphicsView_fitResult = qt_util.promote_widget(self, self.ui.graphicsView_fitResult_frame,
                                                                GeneralDiffDataView)
        self.ui.graphicsView_contour = qt_util.promote_widget(self, self.ui.graphicsView_contour_frame,
                                                              Diffraction2DPlot)
        self.ui.tableView_poleFigureParams = qt_util.promote_widget(self, self.ui.tableView_poleFigureParams_frame,
                                                                    PoleFigureTable)

        # init widgets
        self._init_widgets()

        # set up handling
        self.ui.pushButton_browseFile.clicked.connect(self.do_browse_load_file)
        self.ui.pushButton_plotPeaks.clicked.connect(self.do_plot_diff_data)
        self.ui.pushButton_fitPeaks.clicked.connect(self.do_fit_peaks)
        self.ui.pushButton_calPoleFigure.clicked.connect(self.do_cal_pole_figure)
        self.ui.pushButton_save_pf.clicked.connect(self.do_save_pole_figure)
        self.ui.pushButton_scanNumberForward.clicked.connect(self.do_forward_scan_log_index)
        self.ui.pushButton_scanNumberBackward.clicked.connect(self.do_rewind_scan_log_index)

        self.ui.pushButton_plotLogs.clicked.connect(self.do_plot_meta_data)
        self.ui.pushButton_plot_pf.clicked.connect(self.do_plot_pole_figure)
        self.ui.pushButton_clearPF.clicked.connect(self.do_clear_pole_figure_plot)

        self.ui.actionQuit.triggered.connect(self.do_quit)
        self.ui.actionOpen_HDF5.triggered.connect(self.do_browse_load_file)
        self.ui.actionSave_as.triggered.connect(self.do_save_as)

        self.ui.actionSave_Diffraction_Data_For_Mantid.triggered.connect(self.do_save_workspace)

        self.ui.comboBox_xaxisNames.currentIndexChanged.connect(self.do_plot_meta_data)
        self.ui.comboBox_yaxisNames.currentIndexChanged.connect(self.do_plot_meta_data)

        self.ui.actionExport_Table.triggered.connect(self.do_export_pole_figure_table)

        # mutexes
        self._sample_log_names_mutex = False

        # current data information
        self._data_key = None

        return
Пример #13
0
    def __init__(self, parent):
        """ Initialization
        :param parent:
        """
        super(GridAlignmentCheckTablesView, self).__init__(parent)

        # define my parent
        self._parent = parent
        self._core = parent.core

        # state
        self._is_analysis_table_raw = True  # analysis table has raw experiment grids

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', "gridsalignmentview.ui"))
        self.ui = load_ui(ui_path, baseinstance=self)

        # promote widgets
        self.ui.tableView_gridAlignment = qt_util.promote_widget(
            self, self.ui.tableView_gridAlignment_frame, GridAlignmentTable)
        self.ui.tableView_alignedParameters = qt_util.promote_widget(
            self, self.ui.tableView_alignedParameters_frame,
            ParamValueGridTable)
        self.ui.tableView_gridParamAnalysis = qt_util.promote_widget(
            self, self.ui.tableView_gridParamAnalysis_frame,
            ParamValueMapAnalysisTable)
        self.ui.tableView_gridStatistic = qt_util.promote_widget(
            self, self.ui.tableView_gridStatistic_frame, GridsStatisticsTable)
        self.ui.tableView_partialMatchedGrids = qt_util.promote_widget(
            self, self.ui.tableView_partialMatchedGrids_frame,
            GridsStatisticsTable)
        self.ui.tableView_matchedGrids = qt_util.promote_widget(
            self, self.ui.tableView_matchedGrids_frame, GridsStatisticsTable)
        self.ui.tableView_mismatchedGrids = qt_util.promote_widget(
            self, self.ui.tableView_mismatchedGrids_frame,
            MismatchedGridsTable)

        # init widgets
        self.ui.pushButton_showParameterSSGrid.setEnabled(False)

        # define events handlers
        self.ui.actionQuit.triggered.connect(self.do_quit)
        self.ui.pushButton_showParameterRawGrid.clicked.connect(
            self.do_load_params_raw_grid)
        self.ui.pushButton_showParameterSSGrid.clicked.connect(
            self.do_load_mapped_values)
        self.ui.pushButton_plot2D.clicked.connect(self.do_plot_parameter)
        self.ui.pushButton_export2D.clicked.connect(self.do_export_2d)

        # combo box event handling and mutex
        self.ui.comboBox_parameterList.currentIndexChanged.connect(
            self.do_show_parameter)
        self._mutex_param_name_list = False

        # set up all the tables
        self.ui.tableView_gridAlignment.setup()
        self.ui.tableView_gridStatistic.setup()
        self.ui.tableView_alignedParameters.setup()
        self.ui.tableView_matchedGrids.setup()
        self.ui.tableView_partialMatchedGrids.setup()
        self.ui.tableView_mismatchedGrids.setup()
        self.ui.tableView_gridParamAnalysis.setup()

        return
Пример #14
0
    def __init__(self, parent):
        """
        initialization
        :param parent:
        """
        super(ManualReductionWindow, self).__init__(parent)

        # class variables
        self._core = None

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__), os.path.join('ui', 'manualreductionwindow.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)
        # promote some widgets
        self._promote_widgets()

        # Event handler: handler must be set up after UI is loaded
        self._event_handler = EventHandler(parent=self)

        # Mask file: check box and line edit
        # set default
        self._mask_state(self.ui.checkBox_defaultMaskFile.checkState())
        # link event handling
        self.checkBox_defaultMaskFile.stateChanged.connect(self._mask_state)
        self.ui.pushButton_browseMaskFile.clicked.connect(self.browse_mask_file)
        self.ui.pushButton_browseVanadium.clicked.connect(self.browse_vanadium_file)

        # Calibration file: check box and line edit
        self._calibration_state(self.ui.checkBox_defaultCalibrationFile.checkState())
        self.checkBox_defaultCalibrationFile.stateChanged.connect(self._calibration_state)
        self.ui.pushButton_browseCalibrationFile.clicked.connect(self.browse_calibration_file)

        # Output directory: check box, spin box and line edit
        # change of run number won't trigger the scan of NeXus file
        self.ui.lineEdit_runNumber.textChanged.connect(self._event_handler.update_run_changed)
        self.ui.pushButton_browseNeXus.clicked.connect(self.browse_nexus_file)
        # self._output_state(self.ui.checkBox_defaultOutputDirectory.checkState())
        self.checkBox_defaultOutputDirectory.stateChanged.connect(self._output_state)
        self.ui.pushButton_browseOutputDirectory.clicked.connect(self.browse_output_dir)

        # Push button for split, convert and save project file
        self.ui.pushButton_splitConvertSaveProject.clicked.connect(self.split_convert_save_nexus)
        # Next: self.ui.pushButton_chopReduce.clicked.connect(self.slice_nexus)

        # Plotting
        self.ui.pushButton_plotDetView.clicked.connect(self.plot_sub_runs)

        self.ui.actionQuit.triggered.connect(self.do_quit)
        self.ui.progressBar.setVisible(False)
        # event handling for combobox
        self.ui.comboBox_sub_runs.currentIndexChanged.connect(self.plot_sub_runs)

        # TODO - ASAP - Use these 2 buttons to enable/disable write access to configuration
        # actionEdit_Calibrations
        # actionFix_Calibrations

        # TODO - ASAP - Load Instrument
        # actionLoad_Instrument

        # Child windows
        self._slice_setup_window = None
Пример #15
0
    def __init__(self, parent, pyrs_core):
        """
        initialization
        :param parent:
        :param pyrs_core:
        """
        super(InstrumentCalibrationWindow, self).__init__(parent)

        # check
        assert isinstance(pyrs_core, pyrs.core.pyrscore.PyRsCore), 'PyRS core {0} of type {1} must be a PyRsCore ' \
                                                                   'instance.'.format(pyrs_core, type(pyrs_core))

        self._core = pyrs_core

        # class variables for calculation (not GUI)
        self._default_dir = None
        self._curr_data_id = None

        self._number_rois = 0
        self._peaks_shown = False

        # set up UI
        ui_path = os.path.join(os.path.dirname(__file__),
                               os.path.join('ui', 'calibrationwindow.ui'))
        self.ui = load_ui(ui_path, baseinstance=self)
        # promote widgets
        self._promote_widgets()

        self.ui.pushButton_loadRawData.clicked.connect(self.do_load_raw)
        # TODO - TONIGHT2 - self.ui.pushButton_loadGeomCalFile : shall parse value and set up lineEdits

        self.ui.pushButton_loadMask.clicked.connect(self.do_load_mask)
        self.ui.pushButton_reduce.clicked.connect(self.do_reduce_data)

        self.ui.pushButton_calibrateGeometry.clicked.connect(
            self.do_calibrate_geometry)

        # decrease button associated line edits dictionary
        self._link_widgets()

        # define event handing methods
        self.ui.pushButton_decreaseCenterX.clicked.connect(
            self.do_decrease_value)
        self.ui.pushButton_decreaseCenterY.clicked.connect(
            self.do_decrease_value)
        self.ui.pushButton_decreaseCenterZ.clicked.connect(
            self.do_decrease_value)

        self.ui.pushButton_increaseCenterX.clicked.connect(
            self.do_increase_value)
        self.ui.pushButton_increaseCenterY.clicked.connect(
            self.do_increase_value)
        self.ui.pushButton_increaseCenterZ.clicked.connect(
            self.do_increase_value)

        self.ui.pushButton_decreaseRotationX.clicked.connect(
            self.do_decrease_value)
        self.ui.pushButton_decreaseRotationY.clicked.connect(
            self.do_decrease_value)
        self.ui.pushButton_decreaseRotationZ.clicked.connect(
            self.do_decrease_value)

        self.ui.pushButton_increaseRotationX.clicked.connect(
            self.do_increase_value)
        self.ui.pushButton_increaseRotationY.clicked.connect(
            self.do_increase_value)
        self.ui.pushButton_increaseRotationZ.clicked.connect(
            self.do_increase_value)

        self.ui.pushButton_decreaseWavelength.clicked.connect(
            self.do_decrease_value)
        self.ui.pushButton_increaseWavelength.clicked.connect(
            self.do_increase_value)

        # TODO - TODAY 1 - Add widgets: frame_calibrationViewControl: checkBox + Fit

        self.ui.pushButton_showPeaks.clicked.connect(self.do_show_hide_peaks)
        self.ui.pushButton_fitPeaks.clicked.connect(self.do_fit_peaks)

        # Figure's subplot vs mask
        self._subplot_mask_dict = dict()
        self._mask_subplot_dict = dict()  # mask number to plot number

        return