From 9e77a672242bb0ec82abf3a288f5292e32f7d9e1 Mon Sep 17 00:00:00 2001 From: ashmeigh Date: Mon, 26 Feb 2024 09:13:35 +0000 Subject: [PATCH 1/2] click table colour and change colour --- docs/release_notes/2.7.rst | 1 + .../gui/windows/spectrum_viewer/presenter.py | 2 +- .../gui/windows/spectrum_viewer/spectrum_widget.py | 6 +++--- mantidimaging/gui/windows/spectrum_viewer/view.py | 14 +++++++++++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/release_notes/2.7.rst b/docs/release_notes/2.7.rst index fe7baf83781..49c767a03c2 100644 --- a/docs/release_notes/2.7.rst +++ b/docs/release_notes/2.7.rst @@ -10,6 +10,7 @@ New Features - #2026: Time of flight graph in the Spectrum Viewer is now resizable - #2027: The Spectrum ROI details display in an adjustable table via spinboxes - #2048: Update spectrum documentation to reflect changes made to the Spectrum Viewer. +- #2046 : Enhancement: Implement Click Dialog for Changing ROI Colors in Table Fixes ----- diff --git a/mantidimaging/gui/windows/spectrum_viewer/presenter.py b/mantidimaging/gui/windows/spectrum_viewer/presenter.py index 67ff6897314..73df17444d3 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/presenter.py +++ b/mantidimaging/gui/windows/spectrum_viewer/presenter.py @@ -242,7 +242,7 @@ def change_roi_colour(self, roi_name: str, new_colour: tuple) -> None: """ if roi_name in self.view.spectrum_widget.roi_dict: self.view.spectrum_widget.roi_dict[roi_name].colour = new_colour - self.view.update_roi_color_in_table(roi_name, new_colour) + self.view.update_roi_color(roi_name, new_colour) def add_rits_roi(self) -> None: roi_name = ROI_RITS diff --git a/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py b/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py index e2b9e635ae3..6d901f56449 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py +++ b/mantidimaging/gui/windows/spectrum_viewer/spectrum_widget.py @@ -43,9 +43,9 @@ def __init__(self, name: str, sensible_roi: SensibleROI, *args, **kwargs): self.roi.setAcceptedMouseButtons(Qt.MouseButton.LeftButton) self.menu = QMenu() - change_color_action = QAction("Change ROI Colour", self) - change_color_action.triggered.connect(self.onChangeColor) - self.menu.addAction(change_color_action) + self.change_color_action = QAction("Change ROI Colour", self) + self.change_color_action.triggered.connect(self.onChangeColor) + self.menu.addAction(self.change_color_action) def onChangeColor(self): current_color = QColor(*self._colour) diff --git a/mantidimaging/gui/windows/spectrum_viewer/view.py b/mantidimaging/gui/windows/spectrum_viewer/view.py index 45eb1187d14..77f2f8023d6 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/view.py +++ b/mantidimaging/gui/windows/spectrum_viewer/view.py @@ -111,6 +111,7 @@ def __init__(self, main_window: 'MainWindowView'): self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.tableView.setSelectionMode(QAbstractItemView.SingleSelection) self.tableView.setAlternatingRowColors(True) + self.tableView.clicked.connect(self.handle_table_click) # Roi Prop table self.roi_table_properties = ["Top", "Bottom", "Left", "Right"] @@ -351,10 +352,18 @@ def set_new_roi(self) -> None: spinbox.setEnabled(True) self.set_roi_properties() - def update_roi_color_in_table(self, roi_name: str, new_color: tuple): + def handle_table_click(self, index): + if index.isValid() and index.column() == 1: + roi_name = self.roi_table_model.index(index.row(), 0).data() + self.set_spectum_roi_color(roi_name) + + def set_spectum_roi_color(self, roi_name: str) -> None: + spectrum_roi = self.spectrum_widget.roi_dict[roi_name] + spectrum_roi.change_color_action.trigger() + + def update_roi_color(self, roi_name: str, new_color: tuple) -> None: """ Finds ROI by name in table and updates colour. - @param roi_name: Name of the ROI to update. @param new_color: The new color for the ROI in (R, G, B) format. """ @@ -365,7 +374,6 @@ def update_roi_color_in_table(self, roi_name: str, new_color: tuple): def find_row_for_roi(self, roi_name: str) -> Optional[int]: """ Returns row index for ROI name, or None if not found. - @param roi_name: Name ROI find. @return: Row index ROI or None. """ From 7444f1fbcf4e2f81d25af75274dcaf23285ce49d Mon Sep 17 00:00:00 2001 From: Sam Tygier Date: Mon, 26 Feb 2024 15:14:45 +0000 Subject: [PATCH 2/2] When changing the colour of an ROI in RITS mode, call on_visibility_change() to update plot --- mantidimaging/gui/windows/spectrum_viewer/presenter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mantidimaging/gui/windows/spectrum_viewer/presenter.py b/mantidimaging/gui/windows/spectrum_viewer/presenter.py index 73df17444d3..5bb7fb6e5da 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/presenter.py +++ b/mantidimaging/gui/windows/spectrum_viewer/presenter.py @@ -243,6 +243,7 @@ def change_roi_colour(self, roi_name: str, new_colour: tuple) -> None: if roi_name in self.view.spectrum_widget.roi_dict: self.view.spectrum_widget.roi_dict[roi_name].colour = new_colour self.view.update_roi_color(roi_name, new_colour) + self.view.on_visibility_change() def add_rits_roi(self) -> None: roi_name = ROI_RITS