From d5bc7e501a46060292b4d78dc0b6edb230fa64b6 Mon Sep 17 00:00:00 2001
From: Conor Finn <conor.finn@stfc.ac.uk>
Date: Thu, 26 Sep 2019 16:50:29 +0100
Subject: [PATCH] #26846 Created Skeleton Calibration Model and Presenter

Non functional right now...
---
 .../engineering_diffraction.py                |  35 ++++
 .../engineering_diffraction/main_window.ui    | 121 ++++++++++++
 .../tabs/calibration/calibration_tab.ui       | 180 ++++++++++++++++++
 .../tabs/calibration/presenter.py             |  20 ++
 .../tabs/calibration/view.py                  |  30 +++
 scripts/Engineering_Diffraction_2.py          |  19 ++
 6 files changed, 405 insertions(+)
 create mode 100644 scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py
 create mode 100644 scripts/Engineering/gui/engineering_diffraction/main_window.ui
 create mode 100644 scripts/Engineering/gui/engineering_diffraction/tabs/calibration/calibration_tab.ui
 create mode 100644 scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py
 create mode 100644 scripts/Engineering/gui/engineering_diffraction/tabs/calibration/view.py
 create mode 100644 scripts/Engineering_Diffraction_2.py

diff --git a/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py b/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py
new file mode 100644
index 00000000000..6c7de92a307
--- /dev/null
+++ b/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py
@@ -0,0 +1,35 @@
+# Mantid Repository : https://github.com/mantidproject/mantid
+#
+# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+#     NScD Oak Ridge National Laboratory, European Spallation Source
+#     & Institut Laue - Langevin
+# SPDX - License - Identifier: GPL - 3.0 +
+# pylint: disable=invalid-name
+from __future__ import (absolute_import, division, print_function)
+from qtpy import QtCore, QtWidgets
+
+from Engineering.gui.engineering_diffraction.tabs.calibration.presenter import CalibrationPresenter, CalibrationView, \
+    CalibrationModel
+
+from mantidqt.utils.qt import load_ui
+
+Ui_main_window, _ = load_ui(__file__, "main_window.ui")
+
+
+class EngineeringDiffractionGui(QtWidgets.QMainWindow, Ui_main_window):
+    """
+    The engineering diffraction interface v2.0
+    """
+    def __init__(self, parent=None):
+        super(EngineeringDiffractionGui, self).__init__(parent)
+
+        # Main Window
+        self.setupUi(self)
+        self.tabs = self.tab_main
+        self.setFocusPolicy(QtCore.Qt.StrongFocus)
+
+        # Calibration Tab
+        cal_model = CalibrationModel()
+        cal_view = CalibrationView(parent=self.tabs)
+        self.calibration_presenter = CalibrationPresenter(cal_model, cal_view)
+        self.tabs.addTab(cal_view, "Calibration")
diff --git a/scripts/Engineering/gui/engineering_diffraction/main_window.ui b/scripts/Engineering/gui/engineering_diffraction/main_window.ui
new file mode 100644
index 00000000000..9154ca2abfb
--- /dev/null
+++ b/scripts/Engineering/gui/engineering_diffraction/main_window.ui
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EngDIffMainGUI</class>
+ <widget class="QMainWindow" name="EngDIffMainGUI">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>640</width>
+    <height>197</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Engineering Diffraction Analysis</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QGridLayout" name="gridLayout">
+    <item row="1" column="0" colspan="2">
+     <widget class="QTabWidget" name="tab_main">
+      <property name="enabled">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item row="0" column="0" colspan="2">
+     <layout class="QHBoxLayout" name="topBar">
+      <item>
+       <widget class="QLabel" name="label_RBNumber">
+        <property name="text">
+         <string>RB Number:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="lineEdit_RBNumber"/>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>138</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Instrument:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QComboBox" name="comboBox_instrument">
+        <item>
+         <property name="text">
+          <string>ENGINX</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>IMAT</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item row="4" column="0" colspan="2">
+     <layout class="QHBoxLayout" name="bottomBar">
+      <item>
+       <widget class="QPushButton" name="pushButton_help">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>25</width>
+          <height>25</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>?</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QStatusBar" name="statusbar">
+        <property name="sizeGripEnabled">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="pushButton_close">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Close</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/calibration_tab.ui b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/calibration_tab.ui
new file mode 100644
index 00000000000..b3a7a15d335
--- /dev/null
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/calibration_tab.ui
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CalibTab</class>
+ <widget class="QWidget" name="CalibTab">
+  <property name="windowModality">
+   <enum>Qt::NonModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>619</width>
+    <height>165</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QGroupBox {
+border: 1px solid grey;border-radius: 10px;margin-top: 1ex; margin-right: 0ex
+}
+QGroupBox:title {
+                           subcontrol-origin: margin;
+                           padding: 0 3px;
+                           subcontrol-position: top center;
+                           padding-top: 0px;
+                          padding-bottom: 0px;
+                           padding-right: 10px;
+                            color: rgb(56, 56, 56)
+}</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout" stretch="1">
+     <property name="sizeConstraint">
+      <enum>QLayout::SetDefaultConstraint</enum>
+     </property>
+     <item>
+      <widget class="QGroupBox" name="loadingGroup">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="layoutDirection">
+        <enum>Qt::LeftToRight</enum>
+       </property>
+       <property name="autoFillBackground">
+        <bool>false</bool>
+       </property>
+       <property name="styleSheet">
+        <string notr="true"/>
+       </property>
+       <property name="title">
+        <string>Load Calibration</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+       </property>
+       <property name="flat">
+        <bool>false</bool>
+       </property>
+       <property name="checkable">
+        <bool>false</bool>
+       </property>
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="1" column="0">
+         <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0,0,0" columnstretch="0,0,0">
+          <property name="sizeConstraint">
+           <enum>QLayout::SetDefaultConstraint</enum>
+          </property>
+          <property name="verticalSpacing">
+           <number>6</number>
+          </property>
+          <item row="6" column="0" colspan="2">
+           <widget class="QCheckBox" name="check_plotCalibWsp">
+            <property name="text">
+             <string>Plot Calibrated Workspace</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" colspan="3">
+           <widget class="QRadioButton" name="radio_newCalib">
+            <property name="text">
+             <string>Create New Calibration</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="0" colspan="3">
+           <widget class="Line" name="line">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0" colspan="3">
+           <spacer name="verticalSpacer">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>10</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="6" column="2">
+           <widget class="QPushButton" name="button_calibrate">
+            <property name="text">
+             <string>Calibrate</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" colspan="3">
+           <widget class="FileFinder" name="finder_calib" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" colspan="3">
+           <widget class="FileFinder" name="finder_vanadium" native="true">
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>FileFinder</class>
+   <extends>QWidget</extends>
+   <header>mantidqt.widgets.filefinder</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>radio_newCalib</tabstop>
+  <tabstop>check_plotCalibWsp</tabstop>
+  <tabstop>button_calibrate</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py
new file mode 100644
index 00000000000..d251e85d3a2
--- /dev/null
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/presenter.py
@@ -0,0 +1,20 @@
+# Mantid Repository : https://github.com/mantidproject/mantid
+#
+# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+#     NScD Oak Ridge National Laboratory, European Spallation Source
+#     & Institut Laue - Langevin
+# SPDX - License - Identifier: GPL - 3.0 +
+# pylint: disable=invalid-name
+from __future__ import (absolute_import, division, print_function)
+
+from Engineering.gui.engineering_diffraction.tabs.calibration.model import CalibrationModel
+from Engineering.gui.engineering_diffraction.tabs.calibration.view import CalibrationView
+
+
+class CalibrationPresenter(object):
+    def __init__(self, model, view):
+        self.model = model
+        self.view = view
+
+
+
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/view.py b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/view.py
new file mode 100644
index 00000000000..8bb820f371e
--- /dev/null
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/calibration/view.py
@@ -0,0 +1,30 @@
+# Mantid Repository : https://github.com/mantidproject/mantid
+#
+# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+#     NScD Oak Ridge National Laboratory, European Spallation Source
+#     & Institut Laue - Langevin
+# SPDX - License - Identifier: GPL - 3.0 +
+# pylint: disable=invalid-name
+from __future__ import (absolute_import, division, print_function)
+from qtpy import QtWidgets
+from mantidqt.widgets.filefinder import FileFinder
+
+from mantidqt.utils.qt import load_ui
+
+Ui_calib, _ = load_ui(__file__, "calibration_tab.ui")
+
+
+class CalibrationView(QtWidgets.QWidget, Ui_calib):
+    def __init__(self, parent=None):
+        super(CalibrationView, self).__init__(parent)
+        self.setupUi(self)
+
+    def on_browse_vanadium_clicked(self, slot):
+        self.button_browseVanadium.clicked.connect(slot)
+
+
+    def on_browse_calibration_clicked(self, slot):
+        self.button_browseCalib.clicked.connect(slot)
+
+    def on_calibrate_clicked(self, slot):
+        self.button_calibrate.clicked.connect(slot)
diff --git a/scripts/Engineering_Diffraction_2.py b/scripts/Engineering_Diffraction_2.py
new file mode 100644
index 00000000000..dc44007a3df
--- /dev/null
+++ b/scripts/Engineering_Diffraction_2.py
@@ -0,0 +1,19 @@
+# Mantid Repository : https://github.com/mantidproject/mantid
+#
+# Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+#     NScD Oak Ridge National Laboratory, European Spallation Source
+#     & Institut Laue - Langevin
+# SPDX - License - Identifier: GPL - 3.0 +
+# pylint: disable=invalid-name
+from __future__ import (absolute_import, division, print_function)
+from Engineering.gui.engineering_diffraction.engineering_diffraction import EngineeringDiffractionGui
+from qtpy import QtCore
+
+
+Name = "Engineering_Diffraction"
+
+if 'engineering_diffraction' in globals():
+    eng_diff = globals()['engineering_diffraction']
+else:
+    eng_diff = EngineeringDiffractionGui()
+    eng_diff.show()
-- 
GitLab