Source code for mantidimaging.gui.windows.stack_choice.presenter
# Copyright (C) 2024 ISIS Rutherford Appleton Laboratory UKRI
# SPDX - License - Identifier: GPL-3.0-or-later
from __future__ import annotations
import traceback
from typing import TYPE_CHECKING
from mantidimaging.core.data.imagestack import ImageStack
from mantidimaging.gui.windows.stack_choice.presenter_base import StackChoicePresenterMixin
from mantidimaging.gui.windows.stack_choice.view import Notification, StackChoiceView
if TYPE_CHECKING:
from mantidimaging.gui.windows.operations.presenter import FiltersWindowPresenter # pragma: no cover
[docs]
class StackChoicePresenter(StackChoicePresenterMixin):
def __init__(self, original_stack: ImageStack, new_stack: ImageStack, operations_presenter: FiltersWindowPresenter):
self.operations_presenter = operations_presenter
self.original_stack = original_stack
self.view = StackChoiceView(self.original_stack, new_stack, self, parent=operations_presenter.view)
self.new_stack = new_stack
self.done = False
self.use_new_data = False
[docs]
def show(self):
self.view.show()
[docs]
def notify(self, signal):
try:
if signal == Notification.CHOOSE_ORIGINAL:
self.do_reapply_original_data()
elif signal == Notification.CHOOSE_NEW_DATA:
self.do_clean_up_original_data()
self.use_new_data = True
else:
super().notify(signal)
except Exception as e:
self.show_error(e, traceback.format_exc())
[docs]
def do_reapply_original_data(self):
self.new_stack.shared_array = self.original_stack.shared_array
self.new_stack.metadata = self.original_stack.metadata
self.view.choice_made = True
self.close_view()
[docs]
def do_clean_up_original_data(self):
self.view.choice_made = True
self.close_view()
[docs]
def close_view(self):
self.view.close()
self.original_stack = None
self.done = True
[docs]
def enable_nonpositive_check(self):
self.view.original_stack.enable_nonpositive_check()
self.view.new_stack.enable_nonpositive_check()