From 148bcafef5a21dd4fea19d9350731f094825b3fb Mon Sep 17 00:00:00 2001
From: Conor Finn <conor.finn@stfc.ac.uk>
Date: Fri, 21 Feb 2020 08:59:33 +0000
Subject: [PATCH] RE #27779 Fix plots being added twice

If the table was repopulated at any time, any plotted workspaces would
be added to the plot every time the table was updated. Resulting in
extra lines shown on the legend that couldn't be seen on the plot.
---
 .../tabs/fitting/data_handling/data_presenter.py            | 3 +--
 .../tabs/fitting/data_handling/test/test_data_presenter.py  | 6 ++++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py
index 98d1530eeff..0759e4dda5e 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py
@@ -52,12 +52,10 @@ class FittingDataPresenter(object):
             if old_name in self.plotted:
                 self.plotted.remove(old_name)
                 self.plotted.add(new_name)
-            self.all_plots_removed_notifier.notify_subscribers()
             self._repopulate_table()
 
     def clear_workspaces(self):
         self.get_loaded_workspaces().clear()
-        self.all_plots_removed_notifier.notify_subscribers()
         self.plotted.clear()
         self.row_numbers.clear()
         self._repopulate_table()
@@ -99,6 +97,7 @@ class FittingDataPresenter(object):
         """
         self._remove_all_table_rows()
         self.row_numbers.clear()
+        self.all_plots_removed_notifier.notify_subscribers()
         workspaces = self.get_loaded_workspaces()
         for i, name in enumerate(workspaces):
             try:
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py
index 671dbf4dfae..475a1c93380 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py
@@ -74,6 +74,7 @@ class FittingDataPresenterTest(unittest.TestCase):
         self.model.get_loaded_workspaces.return_value = model_dict
         self.model.get_sample_log_from_ws.return_value = "bankOrRunNumber"
         self.presenter.plot_added_notifier = mock.MagicMock()
+        self.presenter.all_plots_removed_notifier = mock.MagicMock()
 
         self.presenter._on_worker_success("info")
 
@@ -87,6 +88,7 @@ class FittingDataPresenterTest(unittest.TestCase):
         self.model.get_loaded_workspaces.return_value = model_dict
         self.model.get_sample_log_from_ws.side_effect = RuntimeError("No sample logs present")
         self.presenter.plot_added_notifier = mock.MagicMock()
+        self.presenter.all_plots_removed_notifier = mock.MagicMock()
 
         self.presenter._on_worker_success("info")
 
@@ -101,6 +103,7 @@ class FittingDataPresenterTest(unittest.TestCase):
         self.model.get_loaded_workspaces.return_value = model_dict
         self.model.get_sample_log_from_ws.side_effect = RuntimeError("No sample logs present")
         self.presenter.plot_added_notifier = mock.MagicMock()
+        self.presenter.all_plots_removed_notifier = mock.MagicMock()
 
         self.presenter._on_worker_success("info")
 
@@ -115,6 +118,7 @@ class FittingDataPresenterTest(unittest.TestCase):
         self.model.get_loaded_workspaces.return_value = model_dict
         self.presenter.row_numbers = {"name1": 0, "name2": 1}
         self.presenter.plot_removed_notifier = mock.MagicMock()
+        self.presenter.all_plots_removed_notifier = mock.MagicMock()
 
         self.presenter.remove_workspace("name1")
 
@@ -171,6 +175,7 @@ class FittingDataPresenterTest(unittest.TestCase):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
         self.presenter.row_numbers = {"name1": 0, "name2": 1}
+        self.presenter.all_plots_removed_notifier = mock.MagicMock()
 
         self.presenter.replace_workspace("name1", "newWs")
 
@@ -198,6 +203,7 @@ class FittingDataPresenterTest(unittest.TestCase):
         self.view.remove_selected.return_value = [0, 2]
         self.presenter.plot_removed_notifier = mock.MagicMock()
         self.presenter.plot_added_notifier = mock.MagicMock()
+        self.presenter.all_plots_removed_notifier = mock.MagicMock()
 
         self.presenter._remove_selected_tracked_workspaces()
 
-- 
GitLab