diff --git a/mantidimaging/gui/windows/main/view.py b/mantidimaging/gui/windows/main/view.py index a5a05045b77..768665bc840 100644 --- a/mantidimaging/gui/windows/main/view.py +++ b/mantidimaging/gui/windows/main/view.py @@ -767,5 +767,5 @@ def show_move_stack_dialog(self, origin_dataset_id: uuid.UUID, stack_id: uuid.UU self.move_stack_dialog.show() def show_stack_properties_dialog(self, stack_id: uuid.UUID, origin_dataset: Dataset, stack_data_type: str) -> None: - self.stack_properties_dialog = StackPropertiesDialog(self, stack_id, origin_dataset, stack_data_type) - self.stack_properties_dialog.show() + stack_properties_dialog = StackPropertiesDialog(self, stack_id, origin_dataset, stack_data_type) + stack_properties_dialog.show() diff --git a/mantidimaging/gui/windows/stack_properties_dialog/presenter.py b/mantidimaging/gui/windows/stack_properties_dialog/presenter.py index 41c0a0ab969..3dc93ff083c 100644 --- a/mantidimaging/gui/windows/stack_properties_dialog/presenter.py +++ b/mantidimaging/gui/windows/stack_properties_dialog/presenter.py @@ -2,6 +2,7 @@ # SPDX - License - Identifier: GPL-3.0-or-later from __future__ import annotations +from pathlib import Path from typing import TYPE_CHECKING from mantidimaging.core.utility.size_calculator import full_size_MB @@ -16,25 +17,20 @@ class StackPropertiesPresenter(BasePresenter): def __init__(self, view: StackPropertiesDialog): super().__init__(view) - def set_stack_from_data_type(self, origin_data_type) -> None: - if origin_data_type == "Sample": - self.view.stack = self.view.origin_dataset.sample - elif origin_data_type == "Flat Before": - self.view.stack = self.view.origin_dataset.flat_before - elif origin_data_type == "Flat After": - self.view.stack = self.view.origin_dataset.flat_after - elif origin_data_type == "Dark Before": - self.view.stack = self.view.origin_dataset.dark_before - elif origin_data_type == "Dark After": - self.view.stack = self.view.origin_dataset.dark_after - - def set_stack_data(self): + def set_stack_data(self) -> None: if self.view.stack is not None: - if self.view.stack.filenames is not None: - self.view.directory = self.view.stack.filenames[0].replace(self.view.stack.filenames[0].split("\\")[-1], - '') self.view.stack_shape = self.view.stack.data.shape self.view.stack_size_MB = self.get_stack_size_MB() - def get_stack_size_MB(self): + def set_stack_directory(self): + if self.view.stack.filenames is not None: + self.view.directory = Path(self.view.stack.filenames[0]).parent + + def get_stack_size_MB(self) -> float: return full_size_MB(self.view.stack.data.shape, self.view.stack.data.dtype) + + def get_log_filename(self) -> str: + if 'log_file' in self.view.stack.metadata: + return self.view.stack.metadata['log_file'] + else: + return "N/A" diff --git a/mantidimaging/gui/windows/stack_properties_dialog/test/presenter_test.py b/mantidimaging/gui/windows/stack_properties_dialog/test/presenter_test.py index b0b5605c7e6..9cf70a9b01c 100644 --- a/mantidimaging/gui/windows/stack_properties_dialog/test/presenter_test.py +++ b/mantidimaging/gui/windows/stack_properties_dialog/test/presenter_test.py @@ -2,11 +2,11 @@ # SPDX - License - Identifier: GPL-3.0-or-later from __future__ import annotations import unittest +from pathlib import Path from unittest import mock import numpy as np -from mantidimaging.core.data import ImageStack from mantidimaging.gui.windows.stack_properties_dialog.presenter import StackPropertiesPresenter from mantidimaging.gui.windows.stack_properties_dialog.view import StackPropertiesDialog @@ -21,13 +21,15 @@ def setUp(self): self.view.originDatasetName = mock.Mock() self.view.destinationTypeComboBox = mock.Mock() self.view.originDataType = mock.Mock() + self.view.stack = mock.Mock() def test_WHEN_set_stack_data_THEN_stack_data_set_correctly(self): - self.view.stack = ImageStack(np.ones([3, 11, 12])) - self.view.stack.filenames = ["test\\filename\\a.tif", "test\\filename\\b.tif", "test\\filename\\c.tif"] + self.view.stack.data = np.ones([3, 11, 12]) + self.view.stack.filenames = ["test/filename/a.tif", "test/filename/b.tif", "test/filename/c.tif"] self.presenter.get_stack_size_MB = mock.Mock() self.presenter.get_stack_size_MB.return_value = 10 self.presenter.set_stack_data() + self.presenter.set_stack_directory() - self.assertEqual(self.view.directory, "test\\filename\\") + self.assertEqual(self.view.directory, Path("test/filename/")) self.assertEqual(self.view.stack_shape, (3, 11, 12)) diff --git a/mantidimaging/gui/windows/stack_properties_dialog/view.py b/mantidimaging/gui/windows/stack_properties_dialog/view.py index 112a4c925e2..ecbcd672f17 100644 --- a/mantidimaging/gui/windows/stack_properties_dialog/view.py +++ b/mantidimaging/gui/windows/stack_properties_dialog/view.py @@ -20,15 +20,16 @@ class StackPropertiesDialog(BaseDialogView): def __init__(self, parent, stack_id: uuid.UUID, origin_dataset: Dataset, origin_data_type: str): super().__init__(parent) + self.parent_view = parent self.origin_dataset = origin_dataset self.presenter = StackPropertiesPresenter(self) - self._stack_id = stack_id + self.stack = self.parent_view.presenter.model.get_images_by_uuid(stack_id) - self.presenter.set_stack_from_data_type(origin_data_type) self.presenter.set_stack_data() - self.parent_view = parent + self.presenter.set_stack_directory() + self.log_filename = self.presenter.get_log_filename() self.setWindowTitle(f"Stack Properties: {origin_dataset.name}") self.layout = QGridLayout() @@ -44,18 +45,10 @@ def __init__(self, parent, stack_id: uuid.UUID, origin_dataset: Dataset, origin_ self.layout.addWidget(QLabel(f"{origin_data_type}"), 3, 2) self.layout.addWidget(QLabel(f"{round(self.stack_size_MB, 4)} MB"), 4, 2) self.layout.addWidget(QLabel(f"{self.stack_shape}"), 5, 2) - self.layout.addWidget(QLabel(f"{self.stack.metadata['log_file']}"), 6, 2) + self.layout.addWidget(QLabel(f"{self.log_filename}"), 6, 2) self.setLayout(self.layout) def accept(self) -> None: self.presenter.notify(Notification.ACCEPTED) self.close() - - @property - def origin_dataset_id(self) -> uuid.UUID: - return self._origin_dataset_id - - @property - def stack_id(self) -> uuid.UUID: - return self._stack_id