Skip to content

Commit d258d50

Browse files
committed
Proper implementation of individual deletion
1 parent cd92eb3 commit d258d50

File tree

6 files changed

+53
-54
lines changed

6 files changed

+53
-54
lines changed

src/sas/qtgui/Plotting/SlicerParameters.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -406,9 +406,9 @@ def onDelete(self):
406406
# Remove the slicer from the dictionary
407407
if slicer_item in self.parent.slicers:
408408
slicer_obj = self.parent.slicers[slicer_item]
409-
# Clear the slicer from the plot
410-
if hasattr(slicer_obj, 'clear'):
411-
slicer_obj.clear()
409+
# Clear only this slicer's markers without affecting other slicers
410+
# Use clear_markers() which uses connect.clear(*markers) instead of clearall()
411+
self._clear_slicer_markers(slicer_obj)
412412
# Remove from dictionary
413413
del self.parent.slicers[slicer_item]
414414
# Remove from slicer_models cache
@@ -578,6 +578,17 @@ def onHelp(self):
578578
url = "/user/qtgui/MainWindow/graph_help.html#d-data-averaging"
579579
self.manager.parent.showHelp(url)
580580

581+
def _clear_slicer_markers(self, slicer_obj):
582+
"""
583+
Clear the slicer by calling its clear() method.
584+
The slicer's clear() method handles all cleanup for that specific slicer type.
585+
"""
586+
if hasattr(slicer_obj, 'clear'):
587+
try:
588+
slicer_obj.clear()
589+
except (ValueError, AttributeError):
590+
pass
591+
581592
def updateSlicersList(self):
582593
"""
583594
Update the slicers list when slicers are added or removed

src/sas/qtgui/Plotting/Slicers/AnnulusSlicer.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -333,10 +333,6 @@ def clear(self):
333333
self.inner_circle.remove()
334334
except (ValueError, AttributeError):
335335
pass
336-
try:
337-
self.base.connect.clearall()
338-
except (ValueError, AttributeError):
339-
pass
340336

341337
def get_radius(self):
342338
"""

src/sas/qtgui/Plotting/Slicers/BoxSlicer.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,6 @@ def clear(self):
138138
self.vertical_lines.clear()
139139
except (ValueError, AttributeError):
140140
pass
141-
try:
142-
self.base.connect.clearall()
143-
except (ValueError, AttributeError):
144-
pass
145141
try:
146142
self.center.clear()
147143
except (ValueError, AttributeError):
@@ -526,9 +522,18 @@ def clear(self):
526522
"""
527523
Clear this figure and its markers
528524
"""
529-
self.clear_markers()
530-
self.center.remove()
531-
self.center_marker.remove()
525+
try:
526+
self.clear_markers()
527+
except (ValueError, AttributeError):
528+
pass
529+
try:
530+
self.center.remove()
531+
except (ValueError, AttributeError):
532+
pass
533+
try:
534+
self.center_marker.remove()
535+
except (ValueError, AttributeError):
536+
pass
532537

533538
def update(self, center_x=None, center_y=None):
534539
"""
@@ -854,10 +859,22 @@ def clear(self):
854859
"""
855860
Clear this figure and its markers
856861
"""
857-
self.clear_markers()
858-
self.top_marker.remove()
859-
self.bottom_line.remove()
860-
self.top_line.remove()
862+
try:
863+
self.clear_markers()
864+
except (ValueError, AttributeError):
865+
pass
866+
try:
867+
self.top_marker.remove()
868+
except (ValueError, AttributeError):
869+
pass
870+
try:
871+
self.bottom_line.remove()
872+
except (ValueError, AttributeError):
873+
pass
874+
try:
875+
self.top_line.remove()
876+
except (ValueError, AttributeError):
877+
pass
861878

862879
def update(self, x1=None, x2=None, y1=None, y2=None, half_width=None, half_height=None, center=None):
863880
"""

src/sas/qtgui/Plotting/Slicers/BoxSum.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,6 @@ def clear(self):
182182
self.center.clear()
183183
except (ValueError, AttributeError):
184184
pass
185-
try:
186-
self.base.connect.clearall()
187-
except (ValueError, AttributeError):
188-
pass
189185

190186
def update(self):
191187
"""

src/sas/qtgui/Plotting/Slicers/SectorSlicer.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,6 @@ def clear(self):
9494
self.right_line.clear()
9595
except (ValueError, AttributeError):
9696
pass
97-
try:
98-
self.base.connect.clearall()
99-
except (ValueError, AttributeError):
100-
pass
10197

10298
def update(self):
10399
"""
@@ -378,12 +374,12 @@ def clear(self):
378374
try:
379375
self.inner_marker.remove()
380376
self.outer_marker.remove()
381-
for line in list(self.axes.lines):
382-
line.remove()
383-
except:
384-
# Old version of matplotlib
385-
for item in range(len(self.axes.lines)):
386-
del self.axes.lines[0]
377+
except (ValueError, AttributeError):
378+
pass
379+
try:
380+
self.line.remove()
381+
except (ValueError, AttributeError):
382+
pass
387383

388384
def update(self, phi=None, delta=None, mline=None, side=False, left=False, right=False):
389385
"""
@@ -569,8 +565,7 @@ def clear(self):
569565
except (ValueError, AttributeError):
570566
pass
571567
try:
572-
for line in list(self.axes.lines):
573-
line.remove()
568+
self.line.remove()
574569
except (ValueError, AttributeError):
575570
pass
576571

src/sas/qtgui/Plotting/Slicers/WedgeSlicer.py

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,26 +96,10 @@ def clear(self):
9696
"""
9797
self.averager = None
9898
self.clear_markers()
99-
try:
100-
self.outer_arc.clear()
101-
except (ValueError, AttributeError):
102-
pass
103-
try:
104-
self.inner_arc.clear()
105-
except (ValueError, AttributeError):
106-
pass
107-
try:
108-
self.radial_lines.clear()
109-
except (ValueError, AttributeError):
110-
pass
111-
try:
112-
self.central_line.clear()
113-
except (ValueError, AttributeError):
114-
pass
115-
try:
116-
self.base.connect.clearall()
117-
except (ValueError, AttributeError):
118-
pass
99+
self.outer_arc.clear()
100+
self.inner_arc.clear()
101+
self.radial_lines.clear()
102+
self.central_line.clear()
119103

120104
def update(self):
121105
"""

0 commit comments

Comments
 (0)