diff --git a/mantidimaging/gui/test/gui_system_liveviewer_test.py b/mantidimaging/gui/test/gui_system_liveviewer_test.py index 8945bb2498f..06d6358ccb5 100644 --- a/mantidimaging/gui/test/gui_system_liveviewer_test.py +++ b/mantidimaging/gui/test/gui_system_liveviewer_test.py @@ -55,7 +55,7 @@ def test_roi_resized(self): QTest.qWait(SHORT_DELAY) wait_until(lambda: not np.isnan(self.live_viewer_window.presenter.model.mean).any(), max_retry=600) old_mean = self.live_viewer_window.presenter.model.mean - roi = self.live_viewer_window.live_viewer.roi_object.roi + roi = self.live_viewer_window.live_viewer.roi_object handle_index = 0 new_position = (10, 20) roi.movePoint(handle_index, new_position) diff --git a/mantidimaging/gui/windows/live_viewer/live_view_widget.py b/mantidimaging/gui/windows/live_viewer/live_view_widget.py index ab2c13350fb..eaac0b1c936 100644 --- a/mantidimaging/gui/windows/live_viewer/live_view_widget.py +++ b/mantidimaging/gui/windows/live_viewer/live_view_widget.py @@ -5,7 +5,6 @@ from PyQt5.QtCore import pyqtSignal from pyqtgraph import GraphicsLayoutWidget, mkPen -from mantidimaging.core.utility.close_enough_point import CloseEnoughPoint from mantidimaging.core.utility.sensible_roi import SensibleROI from mantidimaging.gui.widgets.mi_mini_image_view.view import MIMiniImageView from mantidimaging.gui.widgets.zslider.zslider import ZSlider @@ -65,17 +64,14 @@ def add_roi(self) -> None: self.roi_object = SpectrumROI('roi', roi, rotatable=False, scaleSnap=True, translateSnap=True) self.roi_object.colour = (255, 194, 10, 255) self.roi_object.hoverPen = mkPen(self.roi_object.colour, width=3) - self.roi_object.roi.sigRegionChangeFinished.connect(self.roi_changed.emit) - self.roi_object.roi.sigRegionChanged.connect(self.roi_changing.emit) - self.image.vb.addItem(self.roi_object.roi) + self.roi_object.sigRegionChangeFinished.connect(self.roi_changed.emit) + self.roi_object.sigRegionChanged.connect(self.roi_changing.emit) + self.image.vb.addItem(self.roi_object) def get_roi(self) -> SensibleROI | None: if not self.roi_object: return None - roi = self.roi_object.roi - pos = CloseEnoughPoint(roi.pos()) - size = CloseEnoughPoint(roi.size()) - return SensibleROI.from_points(pos, size) + return self.roi_object.as_sensible_roi() def set_roi_visibility_flags(self, visible: bool) -> None: if not self.roi_object: diff --git a/mantidimaging/gui/windows/live_viewer/presenter.py b/mantidimaging/gui/windows/live_viewer/presenter.py index c03867d54b7..99c2a50700f 100644 --- a/mantidimaging/gui/windows/live_viewer/presenter.py +++ b/mantidimaging/gui/windows/live_viewer/presenter.py @@ -275,7 +275,7 @@ def update_intensity_with_mean(self) -> None: def set_roi_enabled(self, enable: bool): if self.view.live_viewer.roi_object is not None: - self.view.live_viewer.roi_object.roi.blockSignals(not enable) + self.view.live_viewer.roi_object.blockSignals(not enable) def try_next_mean_chunk(self) -> None: if np.isnan(self.model.mean).any(): diff --git a/mantidimaging/gui/windows/spectrum_viewer/presenter.py b/mantidimaging/gui/windows/spectrum_viewer/presenter.py index 6d2f61c5282..6eb78f71b4c 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/presenter.py +++ b/mantidimaging/gui/windows/spectrum_viewer/presenter.py @@ -343,7 +343,7 @@ def do_add_roi(self) -> None: self.view.auto_range_image() self.do_add_roi_to_table(roi_name) - def change_roi_colour(self, roi_name: str, new_colour: tuple[int, int, int]) -> None: + def change_roi_colour(self, roi_name: str, new_colour: tuple[int, int, int, int]) -> None: """ Change the colour of a given ROI in both the spectrum widget and the table. diff --git a/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py b/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py index 9aa0fc77986..c4ec41164fc 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py +++ b/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py @@ -36,15 +36,14 @@ def __init__(self, name: str, sensible_roi: SensibleROI, *args, **kwargs) -> Non kwargs["pos"] = sensible_roi.left, sensible_roi.top kwargs["size"] = sensible_roi.width, sensible_roi.height super().__init__(*args, **kwargs) - self._name = name + self.name = name self._colour = (0, 0, 0, 255) self.maxBounds = self.parentBounds() self.addScaleHandle([1, 1], [0, 0]) self.addScaleHandle([1, 0], [0, 1]) self.addScaleHandle([0, 0], [1, 1]) self.addScaleHandle([0, 1], [1, 0]) - self._selected_row = None - self.roi.setAcceptedMouseButtons(Qt.MouseButton.LeftButton) + self.setAcceptedMouseButtons(Qt.MouseButton.LeftButton) self.menu = QMenu() self.change_color_action = QAction("Change ROI Colour", self) @@ -54,33 +53,17 @@ def __init__(self, name: str, sensible_roi: SensibleROI, *args, **kwargs) -> Non def onChangeColor(self) -> None: current_color = QColor(*self._colour) selected_color = self.openColorDialog(current_color) - color_valid = self.check_color_valid(selected_color) - if color_valid: + if selected_color.isValid(): new_color = (selected_color.red(), selected_color.green(), selected_color.blue(), 255) self._colour = new_color - self.sig_colour_change.emit(self._name, new_color) + self.sig_colour_change.emit(self.name, new_color) def openColorDialog(self, current_color: QColor) -> QColor: return QColorDialog.getColor(current_color) - def check_color_valid(self, get_colour: QColor) -> bool: - return get_colour.isValid() - def contextMenuEnabled(self) -> bool: return True - @property - def name(self) -> str: - return self._name - - @name.setter - def name(self, name: str) -> None: - self._name = name - - @property - def roi(self) -> ROI: - return self - @property def colour(self) -> tuple[int, int, int, int]: return self._colour @@ -99,17 +82,10 @@ def set_visibility(self, visible: bool) -> None: for handle in self.getHandles(): handle.setVisible(visible) - @property - def selected_row(self) -> int | None: - return self._selected_row - def adjust_spec_roi(self, roi: SensibleROI) -> None: self.setPos((roi.left, roi.top)) self.setSize((roi.width, roi.height)) - def rename_roi(self, new_name: str) -> None: - self._name = new_name - def as_sensible_roi(self) -> SensibleROI: """ Converts the SpectrumROI to a SensibleROI object. @@ -133,7 +109,6 @@ class SpectrumWidget(QWidget): spectrum: PlotItem range_control: LinearRegionItem - roi_dict: dict[str, ROI] last_clicked_roi: str range_changed = pyqtSignal(object) @@ -162,7 +137,7 @@ def __init__(self, main_window: MainWindowView) -> None: self.spectrum_data_dict: dict[str, np.ndarray | None] = {} - self.roi_dict: dict[str, ROI] = {} + self.roi_dict: dict[str, SpectrumROI] = {} self.colour_index = 0 def cleanup(self) -> None: @@ -234,9 +209,7 @@ def get_roi(self, roi_name: str) -> SensibleROI: @return: The ROI with the given name. """ if roi_name in self.roi_dict.keys(): - pos = CloseEnoughPoint(self.roi_dict[roi_name].pos()) - size = CloseEnoughPoint(self.roi_dict[roi_name].size()) - return SensibleROI.from_points(pos, size) + return self.roi_dict[roi_name].as_sensible_roi() elif roi_name == "all": pos = CloseEnoughPoint((0, 0)) size = CloseEnoughPoint(self.max_roi_size) @@ -275,7 +248,7 @@ def rename_roi(self, old_name: str, new_name: str) -> None: self.roi_dict[new_name] = self.roi_dict.pop(old_name) self.spectrum_data_dict[new_name] = self.spectrum_data_dict.pop(old_name) - self.roi_dict[new_name].rename_roi(new_name) + self.roi_dict[new_name].name = new_name def _emit_roi_changed(self): sender_roi = self.sender() diff --git a/mantidimaging/gui/windows/spectrum_viewer/view.py b/mantidimaging/gui/windows/spectrum_viewer/view.py index d1032161510..a3b2c729b61 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/view.py +++ b/mantidimaging/gui/windows/spectrum_viewer/view.py @@ -174,7 +174,7 @@ def set_old_table_names(self, old_table_names) -> None: if 'rits_roi' in self.old_table_names: self.old_table_names.remove('rits_roi') - def update_roi_color(self, roi_name: str, new_color: tuple[int, int, int]) -> None: + def update_roi_color(self, roi_name: str, new_color: tuple[int, int, int, int]) -> None: """ Finds ROI by name in table and updates it's colour (R, G, B) format. """ @@ -182,7 +182,7 @@ def update_roi_color(self, roi_name: str, new_color: tuple[int, int, int]) -> No if row is not None: self._roi_table_model.update_color(row, new_color) - def add_row(self, name: str, colour: tuple[int, int, int], roi_names: list[str]) -> None: + def add_row(self, name: str, colour: tuple[int, int, int, int], roi_names: list[str]) -> None: """ Add a new row to the ROI table """ @@ -560,7 +560,7 @@ def show_visible_spectrums(self) -> None: name=key, pen=self.spectrum_widget.roi_dict[key].colour) - def add_roi_table_row(self, name: str, colour: tuple[int, int, int]) -> None: + def add_roi_table_row(self, name: str, colour: tuple[int, int, int, int]) -> None: """ Add a new row to the ROI table