From 00df37d15e9adbbb87830d9819374dbccfb67e7e Mon Sep 17 00:00:00 2001
From: Conor Finn <conor.finn@stfc.ac.uk>
Date: Thu, 20 Feb 2020 14:52:14 +0000
Subject: [PATCH] RE #27965 Add warning if focusing > 10 workspaces

---
 .../tabs/focus/presenter.py                       | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/focus/presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/focus/presenter.py
index a33e9b1d533..37e3f94b1c6 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/focus/presenter.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/focus/presenter.py
@@ -14,6 +14,8 @@ from Engineering.gui.engineering_diffraction.tabs.common.cropping.cropping_widge
 from mantidqt.utils.asynchronous import AsyncTask
 from mantidqt.utils.observer_pattern import Observer
 
+from qtpy.QtWidgets import QMessageBox
+
 
 class FocusPresenter(object):
     def __init__(self, model, view):
@@ -41,7 +43,8 @@ class FocusPresenter(object):
             return
         banks, spectrum_numbers = self._get_banks()
         focus_paths = self.view.get_focus_filenames()
-        self.start_focus_worker(focus_paths, banks, self.view.get_plot_output(), self.rb_num, spectrum_numbers)
+        if self._number_of_files_warning(focus_paths):
+            self.start_focus_worker(focus_paths, banks, self.view.get_plot_output(), self.rb_num, spectrum_numbers)
 
     def start_focus_worker(self, focus_paths, banks, plot_output, rb_num, spectrum_numbers=None):
         """
@@ -94,6 +97,16 @@ class FocusPresenter(object):
             return False
         return True
 
+    def _number_of_files_warning(self, paths):
+        if len(paths) > 10:  # Just a guess on the warning for now. May change in future.
+            response = QMessageBox.warning(
+                self.view, 'Engineering Diffraction - Warning',
+                'You are attempting to focus {} workspaces. This may take some time.\n\n Would you like to continue?'
+                .format(len(paths)), QMessageBox.Ok | QMessageBox.Cancel)
+            return response == QMessageBox.Ok
+        else:
+            return True
+
     def _on_worker_error(self, _):
         self.emit_enable_button_signal()
 
-- 
GitLab