diff options
Diffstat (limited to 'silx/gui/plot/tools/roi.py')
-rw-r--r-- | silx/gui/plot/tools/roi.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/silx/gui/plot/tools/roi.py b/silx/gui/plot/tools/roi.py index 98295ba..eb933a0 100644 --- a/silx/gui/plot/tools/roi.py +++ b/silx/gui/plot/tools/roi.py @@ -106,6 +106,9 @@ class RegionOfInterestManager(qt.QObject): self._rois = [] # List of ROIs self._drawnROI = None # New ROI being currently drawn + # Handle unique selection of interaction mode action + self._actionGroup = qt.QActionGroup(self) + self._roiClass = None self._color = rgba('red') @@ -158,6 +161,8 @@ class RegionOfInterestManager(qt.QObject): action.setChecked(self.getCurrentInteractionModeRoiClass() is roiClass) action.setToolTip(text) + self._actionGroup.addAction(action) + action.triggered[bool].connect(functools.partial( WeakMethodProxy(self._modeActionTriggered), roiClass=roiClass)) self._modeActions[roiClass] = action @@ -171,9 +176,6 @@ class RegionOfInterestManager(qt.QObject): """ if checked: self.start(roiClass) - else: # Keep action checked - action = self.sender() - action.setChecked(True) def _updateModeActions(self): """Check/Uncheck action corresponding to current mode""" @@ -781,9 +783,9 @@ class RegionOfInterestTableWidget(qt.QTableWidget): super(RegionOfInterestTableWidget, self).__init__(parent) self._roiManagerRef = None - self.setColumnCount(5) - self.setHorizontalHeaderLabels( - ['Label', 'Edit', 'Kind', 'Coordinates', '']) + headers = ['Label', 'Edit', 'Kind', 'Coordinates', ''] + self.setColumnCount(len(headers)) + self.setHorizontalHeaderLabels(headers) horizontalHeader = self.horizontalHeader() horizontalHeader.setDefaultAlignment(qt.Qt.AlignLeft) @@ -815,9 +817,10 @@ class RegionOfInterestTableWidget(qt.QTableWidget): manager = self.getRegionOfInterestManager() roi = manager.getRois()[index] else: - roi = None + return if column == 0: + roi.setVisible(item.checkState() == qt.Qt.Checked) roi.setLabel(item.text()) elif column == 1: roi.setEditable( @@ -884,11 +887,13 @@ class RegionOfInterestTableWidget(qt.QTableWidget): for index, roi in enumerate(rois): baseFlags = qt.Qt.ItemIsSelectable | qt.Qt.ItemIsEnabled - # Label + # Label and visible label = roi.getLabel() item = qt.QTableWidgetItem(label) - item.setFlags(baseFlags | qt.Qt.ItemIsEditable) + item.setFlags(baseFlags | qt.Qt.ItemIsEditable | qt.Qt.ItemIsUserCheckable) item.setData(qt.Qt.UserRole, index) + item.setCheckState( + qt.Qt.Checked if roi.isVisible() else qt.Qt.Unchecked) self.setItem(index, 0, item) # Editable |