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