diff --git a/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_presenter.py b/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_presenter.py index 58f3fb458c7fe7560d8ffe55eae0fcdab2573f1a..a17f95fe41f7ca9b1ffe0c0da6c46d2af43fa163 100644 --- a/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_presenter.py +++ b/scripts/Muon/GUI/Common/grouping_tab_widget/grouping_tab_widget_presenter.py @@ -5,8 +5,8 @@ from Muon.GUI.Common.observer_pattern import Observer, Observable import Muon.GUI.Common.utilities.muon_file_utils as file_utils import Muon.GUI.Common.utilities.xml_utils as xml_utils import Muon.GUI.Common.utilities.algorithm_utils as algorithm_utils -from ui.sans_isis.work_handler import WorkHandler -from sans.gui_logic.presenter.work_handler_listener_wrapper import GenericWorkHandlerListener +from Muon.GUI.Common import thread_model +from Muon.GUI.Common.thread_model_wrapper import ThreadModelWrapper class GroupingTabPresenter(object): @@ -36,9 +36,6 @@ class GroupingTabPresenter(object): self._view.on_save_grouping_button_clicked(self.handle_save_grouping_file) self._view.on_default_grouping_button_clicked(self.handle_default_grouping_button_clicked) - # multi-threading - self.thread_manager = WorkHandler() - # monitors for loaded data changing self.loadObserver = GroupingTabPresenter.LoadObserver(self) self.instrumentObserver = GroupingTabPresenter.InstrumentObserver(self) @@ -128,13 +125,16 @@ class GroupingTabPresenter(object): self.grouping_table_widget.enable_editing() self.pairing_table_widget.enable_editing() - def calculate_all_data(self, arg): + def calculate_all_data(self): self._model.show_all_groups_and_pairs() def handle_update_all_clicked(self): - self.disable_editing() - self.listener = GenericWorkHandlerListener(self.enable_editing, self.enable_editing) - self.thread_manager.process(self.listener, self.calculate_all_data, 0, [1]) + + self.update_thread = self.create_update_thread() + self.update_thread.threadWrapperSetUp(self.disable_editing, + self.enable_editing, + self._view.display_warning_box) + self.update_thread.start() def handle_default_grouping_button_clicked(self): self._model.reset_groups_and_pairs_to_default() @@ -170,6 +170,9 @@ class GroupingTabPresenter(object): if filename != "": xml_utils.save_grouping_to_XML(self._model.groups, self._model.pairs, filename, description=self._view.get_description_text()) + def create_update_thread(self): + self._update_model = ThreadModelWrapper(self.calculate_all_data) + return thread_model.ThreadModel(self._update_model) # ------------------------------------------------------------------------------------------------------------------ # Observer / Observable # ------------------------------------------------------------------------------------------------------------------ diff --git a/scripts/Muon/GUI/Common/muon_context.py b/scripts/Muon/GUI/Common/muon_context.py index 476e1cacd7026ca1ef6754a4cec01e522a64b932..7e7cb89b3db3fd96da9e15afb3a922356c632828 100644 --- a/scripts/Muon/GUI/Common/muon_context.py +++ b/scripts/Muon/GUI/Common/muon_context.py @@ -11,4 +11,4 @@ class MuonContext(object): @data_context.setter def data_context(self, value): - self._data_context = value + self._data_context = value \ No newline at end of file diff --git a/scripts/Muon/GUI/Common/thread_model_wrapper.py b/scripts/Muon/GUI/Common/thread_model_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..1f0e26f75f731044e9e6bcc717d63d7ada4d186b --- /dev/null +++ b/scripts/Muon/GUI/Common/thread_model_wrapper.py @@ -0,0 +1,23 @@ +# Mantid Repository : https://github.com/mantidproject/mantid +# +# Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI, +# NScD Oak Ridge National Laboratory, European Spallation Source +# & Institut Laue - Langevin +# SPDX - License - Identifier: GPL - 3.0 + + + +class ThreadModelWrapper(object): + def __init__(self, function=None): + self.callback = function + + def setInputs(self): + pass + + def cancel(self): + pass + + def output(self): + pass + + def execute(self): + self.callback()