From 9bc396dc1fbb0a550e1f12a04a1e7014fac1599b Mon Sep 17 00:00:00 2001
From: Conor Finn <conor.finn@stfc.ac.uk>
Date: Tue, 8 Oct 2019 11:46:23 +0100
Subject: [PATCH] RE #26846 Initial Review Changes

---
 .../Properties/Mantid.properties.template     |  2 +-
 .../interfaces/Engineering Diffraction 2.rst  |  2 +-
 .../engineering_diffraction/main_window.ui    |  7 +++
 .../tabs/calibration/model.py                 | 48 +++++++++----------
 .../tabs/calibration/presenter.py             |  2 +-
 scripts/Engineering_Diffraction_2.py          |  2 -
 6 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/Framework/Properties/Mantid.properties.template b/Framework/Properties/Mantid.properties.template
index e90d5d5d722..791b1a46247 100644
--- a/Framework/Properties/Mantid.properties.template
+++ b/Framework/Properties/Mantid.properties.template
@@ -21,7 +21,7 @@ Q.convention = Inelastic
 
 # Set of PyQt interfaces to add to the Interfaces menu, separated by a space.  Interfaces are seperated from their respective categories by a "/".
 
-mantidqt.python_interfaces = Direct/DGS_Reduction.py Direct/DGSPlanner.py Direct/PyChop.py Direct/MSlice.py SANS/ORNL_SANS.py Utility/TofConverter.py Reflectometry/ISIS_Reflectometry_Old.py Diffraction/Powder_Diffraction_Reduction.py Diffraction/Engineering_Diffraction_2.py Utility/FilterEvents.py Diffraction/HFIR_4Circle_Reduction.py Utility/QECoverage.py SANS/ISIS_SANS.py Muon/Frequency_Domain_Analysis.py Muon/Elemental_Analysis.py Muon/Frequency_Domain_Analysis_Old.py Muon/Muon_Analysis_2.py
+mantidqt.python_interfaces = Direct/DGS_Reduction.py Direct/DGSPlanner.py Direct/PyChop.py Direct/MSlice.py SANS/ORNL_SANS.py Utility/TofConverter.py Reflectometry/ISIS_Reflectometry_Old.py Diffraction/Powder_Diffraction_Reduction.py Utility/FilterEvents.py Diffraction/HFIR_4Circle_Reduction.py Utility/QECoverage.py SANS/ISIS_SANS.py Muon/Frequency_Domain_Analysis.py Muon/Elemental_Analysis.py Muon/Frequency_Domain_Analysis_Old.py Muon/Muon_Analysis_2.py
 
 # Directory containing the above startup scripts
 mantidqt.python_interfaces_directory = @MANTID_ROOT@/scripts
diff --git a/docs/source/interfaces/Engineering Diffraction 2.rst b/docs/source/interfaces/Engineering Diffraction 2.rst
index 5243f05ef9f..e2ccbfae155 100644
--- a/docs/source/interfaces/Engineering Diffraction 2.rst	
+++ b/docs/source/interfaces/Engineering Diffraction 2.rst	
@@ -10,7 +10,7 @@ Interface Overview
 ------------------
 
 This custom interface will integrate several tasks related to engineering
-diffraction. In its current state it provides functionality for createing
+diffraction. In its current state it provides functionality for creating
 new calibration files. This interface is under active development.
 
 General Options
diff --git a/scripts/Engineering/gui/engineering_diffraction/main_window.ui b/scripts/Engineering/gui/engineering_diffraction/main_window.ui
index b01ed27e382..3f4cac479e9 100644
--- a/scripts/Engineering/gui/engineering_diffraction/main_window.ui
+++ b/scripts/Engineering/gui/engineering_diffraction/main_window.ui
@@ -116,6 +116,13 @@
    </layout>
   </widget>
  </widget>
+ <tabstops>
+  <tabstop>lineEdit_RBNumber</tabstop>
+  <tabstop>comboBox_instrument</tabstop>
+  <tabstop>tab_main</tabstop>
+  <tabstop>pushButton_help</tabstop>
+  <tabstop>pushButton_close</tabstop>
+ </tabstops>
  <resources/>
  <connections>
   <connection>
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py
index 8dcb6918dbf..960bda053c4 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/model.py
@@ -8,7 +8,6 @@
 from __future__ import (absolute_import, division, print_function)
 
 from os import path, makedirs
-from ntpath import basename
 
 from mantid.api import AnalysisDataService as Ads
 from mantid.kernel import logger
@@ -18,13 +17,15 @@ from mantidqt.plotting.functions import plot
 from Engineering.EnggUtils import write_ENGINX_GSAS_iparam_file
 
 
-class CalibrationModel(object):
-    def __init__(self):
-        self.VANADIUM_INPUT_WORKSPACE_NAME = "engggui_vanadium_ws"
-        self.CURVES_WORKSPACE_NAME = "engggui_vanadium_curves"
-        self.INTEGRATED_WORKSPACE_NAME = "engggui_vanadium_integration"
-        self.out_files_root_dir = path.join(path.expanduser("~"), "Engineering_Mantid/")
+VANADIUM_INPUT_WORKSPACE_NAME = "engggui_vanadium_ws"
+CURVES_WORKSPACE_NAME = "engggui_vanadium_curves"
+INTEGRATED_WORKSPACE_NAME = "engggui_vanadium_integration"
+
+OUT_FILES_ROOT_DIR = path.join(path.expanduser("~"), "Engineering_Mantid")
+CALIBRATION_DIR = path.join(OUT_FILES_ROOT_DIR, "Calibration", "")
+
 
+class CalibrationModel(object):
     def create_new_calibration(self,
                                vanadium_path,
                                ceria_path,
@@ -39,7 +40,6 @@ class CalibrationModel(object):
         :param instrument: The instrument the data relates to.
         :param rb_num: The RB number for file creation.
         """
-
         vanadium_corrections = self.calculate_vanadium_correction(vanadium_path)
         van_integration = vanadium_corrections[0]
         van_curves = vanadium_corrections[1]
@@ -54,12 +54,11 @@ class CalibrationModel(object):
         difc = [output[0].DIFC, output[1].DIFC]
         tzero = [output[0].TZERO, output[1].TZERO]
 
-        calibration_dir = self.out_files_root_dir + "Calibration/"
-        self.create_output_files(calibration_dir, difc, tzero, ceria_path, vanadium_path,
+        self.create_output_files(CALIBRATION_DIR, difc, tzero, ceria_path, vanadium_path,
                                  instrument)
         if rb_num:
-            calibration_dir = self.out_files_root_dir + "User/" + rb_num + "/Calibration/"
-            self.create_output_files(calibration_dir, difc, tzero, ceria_path, vanadium_path,
+            user_calib_dir = path.join(OUT_FILES_ROOT_DIR, "User", rb_num, "Calibration", "")
+            self.create_output_files(user_calib_dir, difc, tzero, ceria_path, vanadium_path,
                                      instrument)
 
     @staticmethod
@@ -83,7 +82,7 @@ class CalibrationModel(object):
     @staticmethod
     def _plot_difc_zero(difc, tzero):
         for i in range(1, 3):
-            bank_ws = Ads.retrieve("engggui_calibration_bank_" + str(i))
+            bank_ws = Ads.retrieve(CalibrationModel._generate_table_workspace_name(i-1))
 
             x_val = []
             y_val = []
@@ -129,7 +128,7 @@ class CalibrationModel(object):
             return Load(Filename=ceria_run_no, OutputWorkspace="engggui_calibration_sample_ws")
         except Exception as e:
             logger.error("Error while loading calibration sample data. "
-                         "Could not run the algorithm Load succesfully for the calibration sample "
+                         "Could not run the algorithm Load successfully for the calibration sample "
                          "(run number: " + str(ceria_run_no) + "). Error description: " + str(e) +
                          " Please check also the previous log messages for details.")
             raise RuntimeError
@@ -153,25 +152,26 @@ class CalibrationModel(object):
                                       OutputParametersTableName=table_name)
         return output
 
-    def calculate_vanadium_correction(self, vanadium_path):
+    @staticmethod
+    def calculate_vanadium_correction(vanadium_path):
         """
         Runs the vanadium correction algorithm.
         :param vanadium_path: The path to the vanadium data.
         :return: The integrated workspace and the curves generated by the algorithm.
         """
         try:
-            Load(Filename=vanadium_path, OutputWorkspace=self.VANADIUM_INPUT_WORKSPACE_NAME)
+            Load(Filename=vanadium_path, OutputWorkspace=VANADIUM_INPUT_WORKSPACE_NAME)
         except Exception as e:
             logger.error("Error when loading vanadium sample data. "
                          "Could not run Load algorithm with vanadium run number: " +
                          str(vanadium_path) + ". Error description: " + str(e))
             raise RuntimeError
-        EnggVanadiumCorrections(VanadiumWorkspace=self.VANADIUM_INPUT_WORKSPACE_NAME,
-                                OutIntegrationWorkspace=self.INTEGRATED_WORKSPACE_NAME,
-                                OutCurvesWorkspace=self.CURVES_WORKSPACE_NAME)
-        Ads.remove(self.VANADIUM_INPUT_WORKSPACE_NAME)
-        integrated_workspace = Ads.Instance().retrieve(self.INTEGRATED_WORKSPACE_NAME)
-        curves_workspace = Ads.Instance().retrieve(self.CURVES_WORKSPACE_NAME)
+        EnggVanadiumCorrections(VanadiumWorkspace=VANADIUM_INPUT_WORKSPACE_NAME,
+                                OutIntegrationWorkspace=INTEGRATED_WORKSPACE_NAME,
+                                OutCurvesWorkspace=CURVES_WORKSPACE_NAME)
+        Ads.remove(VANADIUM_INPUT_WORKSPACE_NAME)
+        integrated_workspace = Ads.Instance().retrieve(INTEGRATED_WORKSPACE_NAME)
+        curves_workspace = Ads.Instance().retrieve(CURVES_WORKSPACE_NAME)
         return integrated_workspace, curves_workspace
 
     def create_output_files(self, calibration_dir, difc, tzero, ceria_path, vanadium_path,
@@ -229,8 +229,8 @@ class CalibrationModel(object):
         :param bank: The bank being saved.
         :return: The filename, the vanadium run number, and ceria run number.
         """
-        vanadium_no = path.splitext(basename(vanadium_path))[0].replace(instrument, '').lstrip('0')
-        ceria_no = path.splitext(basename(ceria_path))[0].replace(instrument, '').lstrip('0')
+        vanadium_no = path.splitext(path.basename(vanadium_path))[0].replace(instrument, '').lstrip('0')
+        ceria_no = path.splitext(path.basename(ceria_path))[0].replace(instrument, '').lstrip('0')
         filename = instrument + "_" + vanadium_no + "_" + ceria_no + "_"
         if bank == "all":
             filename = filename + "all_banks.prm"
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py
index 035bbadc8dd..f1bc1bfaee2 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py
@@ -41,8 +41,8 @@ class CalibrationPresenter(object):
         self.worker = AsyncTask(self.model.create_new_calibration, (vanadium_path, calib_path),
                                 {"plot_output": plot_output, "instrument": self.instrument, "rb_num": rb_num},
                                 error_cb=self._on_error, finished_cb=self.enable_calibrate_buttons)
-        self.worker.start()
         self.disable_calibrate_buttons()
+        self.worker.start()
 
     def set_instrument_override(self, instrument):
         if instrument == 0:
diff --git a/scripts/Engineering_Diffraction_2.py b/scripts/Engineering_Diffraction_2.py
index 8c387a8759d..f402708cbce 100644
--- a/scripts/Engineering_Diffraction_2.py
+++ b/scripts/Engineering_Diffraction_2.py
@@ -10,8 +10,6 @@ from Engineering.gui.engineering_diffraction.engineering_diffraction import Engi
 from qtpy import QtCore
 
 
-Name = "Engineering_Diffraction"
-
 if 'engineering_diffraction' in globals():
     eng_diff = globals()['engineering_diffraction']
     if not eng_diff.isHidden():
-- 
GitLab