diff options
Diffstat (limited to 'silx/gui/plot/tools/roi.py')
-rw-r--r-- | silx/gui/plot/tools/roi.py | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/silx/gui/plot/tools/roi.py b/silx/gui/plot/tools/roi.py index eb933a0..3535097 100644 --- a/silx/gui/plot/tools/roi.py +++ b/silx/gui/plot/tools/roi.py @@ -253,7 +253,7 @@ class RegionOfInterestManager(qt.QObject): else: return False - def _regionOfInterestChanged(self): + def _regionOfInterestChanged(self, event=None): """Handle ROI object changed""" self.sigRoiChanged.emit() @@ -271,7 +271,7 @@ class RegionOfInterestManager(qt.QObject): number of ROIs has been reached. """ roi = roiClass(parent=None) - roi.setLabel(str(label)) + roi.setName(str(label)) roi.setFirstShapePoints(points) self.addRoi(roi, index) @@ -283,6 +283,9 @@ class RegionOfInterestManager(qt.QObject): :param roi_items.RegionOfInterest roi: The ROI to add :param int index: The position where to insert the ROI, By default it is appended to the end of the list of ROIs + :param bool useManagerColor: + Whether to set the ROI color to the default one of the manager or not. + (Default: True). :raise RuntimeError: When ROI cannot be added because the maximum number of ROIs has been reached. """ @@ -297,6 +300,7 @@ class RegionOfInterestManager(qt.QObject): roi.setColor(self.getColor()) roi.sigRegionChanged.connect(self._regionOfInterestChanged) + roi.sigItemChanged.connect(self._regionOfInterestChanged) if index is None: self._rois.append(roi) @@ -321,6 +325,7 @@ class RegionOfInterestManager(qt.QObject): self._rois.remove(roi) roi.sigRegionChanged.disconnect(self._regionOfInterestChanged) + roi.sigItemChanged.disconnect(self._regionOfInterestChanged) roi.setParent(None) self._roisUpdated() @@ -820,11 +825,14 @@ class RegionOfInterestTableWidget(qt.QTableWidget): return if column == 0: - roi.setVisible(item.checkState() == qt.Qt.Checked) - roi.setLabel(item.text()) + # First collect information from item, then update ROI + # Otherwise, this causes issues issues + checked = item.checkState() == qt.Qt.Checked + text= item.text() + roi.setVisible(checked) + roi.setName(text) elif column == 1: - roi.setEditable( - item.checkState() == qt.Qt.Checked) + roi.setEditable(item.checkState() == qt.Qt.Checked) elif column in (2, 3, 4): pass # TODO else: @@ -888,7 +896,7 @@ class RegionOfInterestTableWidget(qt.QTableWidget): baseFlags = qt.Qt.ItemIsSelectable | qt.Qt.ItemIsEnabled # Label and visible - label = roi.getLabel() + label = roi.getName() item = qt.QTableWidgetItem(label) item.setFlags(baseFlags | qt.Qt.ItemIsEditable | qt.Qt.ItemIsUserCheckable) item.setData(qt.Qt.UserRole, index) |