Skip to content

Commit da6fca9

Browse files
authored
Export Window: Create/Add ImageView (Mapping) to Export Window (#2819)
2 parents 4006829 + 7aa88b2 commit da6fca9

File tree

3 files changed

+63
-5
lines changed

3 files changed

+63
-5
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#2395: Adds an Image preview to the Export tab and makes the Table/Image view switchable from within the Export tab.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Copyright (C) 2021 ISIS Rutherford Appleton Laboratory UKRI
2+
# SPDX - License - Identifier: GPL-3.0-or-later
3+
from __future__ import annotations
4+
5+
import numpy as np
6+
from PyQt5.QtWidgets import QWidget, QVBoxLayout
7+
import pyqtgraph as pg
8+
9+
10+
class ExportImageViewWidget(QWidget):
11+
"""
12+
Minimal image preview widget for the Export tab.
13+
"""
14+
15+
def __init__(self, parent: QWidget | None) -> None:
16+
super().__init__(parent)
17+
18+
layout = QVBoxLayout(self)
19+
layout.setContentsMargins(0, 0, 0, 0)
20+
21+
self.image_view = pg.ImageView()
22+
self.image_view.ui.roiBtn.hide()
23+
self.image_view.ui.menuBtn.hide()
24+
self.image_view.ui.histogram.hide()
25+
26+
layout.addWidget(self.image_view)
27+
self.clear()
28+
29+
def update_image(self, image: np.ndarray | None, autoLevels: bool = True) -> None:
30+
if image is None:
31+
self.clear()
32+
return
33+
34+
arr = np.asarray(image)
35+
if arr.ndim == 3 and arr.shape[0] > 0:
36+
arr = arr.mean(axis=0)
37+
self.image_view.setImage(arr, autoLevels=autoLevels)
38+
39+
def clear(self) -> None:
40+
"""Show a blank canvas."""
41+
self.image_view.setImage(np.zeros((1, 1), dtype=np.float32), autoLevels=True)
42+
43+
@property
44+
def image_data(self) -> np.ndarray | None:
45+
"""Return the currently displayed image array, or None."""
46+
return getattr(self.image_view.imageItem, "image", None)

mantidimaging/gui/windows/spectrum_viewer/view.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
from PyQt5 import QtWidgets
1010
from pyqtgraph import mkPen
1111
from PyQt5.QtGui import QPixmap
12-
from PyQt5.QtWidgets import (QCheckBox, QVBoxLayout, QFileDialog, QLabel, QGroupBox, QActionGroup, QAction, QSplitter,
13-
QTabWidget)
12+
from PyQt5.QtWidgets import (QSplitter, QTabWidget, QCheckBox, QVBoxLayout, QFileDialog, QLabel, QGroupBox,
13+
QActionGroup, QAction)
1414
from PyQt5.QtCore import QModelIndex
1515
from logging import getLogger
1616

@@ -27,6 +27,7 @@
2727
from mantidimaging.gui.widgets.spectrum_widgets.fitting_param_form_widget import FittingParamFormWidget
2828
from mantidimaging.gui.widgets.spectrum_widgets.export_settings_widget import FitExportFormWidget
2929
from mantidimaging.gui.widgets.spectrum_widgets.export_data_table_widget import ExportDataTableWidget
30+
from mantidimaging.gui.widgets.spectrum_widgets.export_image_widget import ExportImageViewWidget
3031

3132
import numpy as np
3233

@@ -64,7 +65,6 @@ def __init__(self, main_window: MainWindowView):
6465
super().__init__(None, 'gui/ui/spectrum_viewer.ui')
6566

6667
self.main_window = main_window
67-
6868
splitter = self.findChild(QSplitter, "splitter")
6969
sidebar = self.findChild(QTabWidget, "formTabs")
7070

@@ -99,6 +99,19 @@ def __init__(self, main_window: MainWindowView):
9999
self.scalable_roi_widget = FittingParamFormWidget(self.presenter)
100100
self.fittingFormLayout.layout().addWidget(self.scalable_roi_widget)
101101

102+
self.export_display_tabs = QTabWidget(self)
103+
self.exportDataTableWidget = ExportDataTableWidget()
104+
self.export_display_tabs.addTab(self.exportDataTableWidget, "Table")
105+
106+
self._export_image_widget = ExportImageViewWidget(self)
107+
self.export_display_tabs.addTab(self._export_image_widget, "Image")
108+
self.exportLayout.addWidget(self.export_display_tabs)
109+
export_image = self.spectrum_widget.image.image_item.image
110+
if export_image is not None:
111+
self._export_image_widget.update_image(export_image)
112+
self.spectrum_widget.image.image_item.sigImageChanged.connect(
113+
lambda: self._export_image_widget.update_image(self.spectrum_widget.image.image_item.image))
114+
102115
self.exportSettingsWidget = FitExportFormWidget()
103116
self.exportFormLayout.layout().addWidget(self.exportSettingsWidget)
104117
self.exportSettingsWidget.exportButton.clicked.connect(self.presenter.handle_export_table)
@@ -155,8 +168,6 @@ def __init__(self, main_window: MainWindowView):
155168

156169
self.roi_form.exportButton.clicked.connect(self.presenter.handle_export_csv)
157170
self.roi_form.exportButtonRITS.clicked.connect(self.presenter.handle_rits_export)
158-
self.exportDataTableWidget = ExportDataTableWidget()
159-
self.exportLayout.addWidget(self.exportDataTableWidget)
160171

161172
self.roi_form.table_view.clicked.connect(self.handle_table_click)
162173

0 commit comments

Comments
 (0)