Skip to content

Commit 0b140dd

Browse files
authored
Fix multi-item and group deletion (#134)
1 parent 1ef9e34 commit 0b140dd

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

simplexui/interfaceModel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ def coerceIndexToRoots(indexes):
168168
The coerced list
169169
"""
170170
indexes = [i for i in indexes if i.column() == 0]
171-
indexes = sorted(indexes, key=lambda x: x.model().itemFromIndex(x), reverse=True)
171+
indexes = sorted(indexes, key=lambda x: x.model().itemFromIndex(x).classDepth, reverse=True)
172172
# Check each item to see if any of it's ancestors
173173
# are in the selection list. If not, it's a root
174174
roots = []

simplexui/items/group.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,14 @@ def delete(self):
260260

261261
mgrs = [model.removeItemManager(self) for model in self.models]
262262
with nested(*mgrs):
263-
gList.remove(self)
263+
# Delete the children first
264264
# Gotta iterate over copies of the lists
265265
# as .delete removes the items from the list
266266
for item in self.items[:]:
267267
item.delete()
268268

269+
gList.remove(self)
270+
269271
@stackable
270272
def take(self, things):
271273
"""Remove some items from their current groups and put them in this one

simplexui/simplexDialog.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,13 +673,13 @@ def sliderTreeDelete(self):
673673
idxs = self.uiSliderTREE.getSelectedIndexes()
674674
roots = coerceIndexToRoots(idxs)
675675
if not roots:
676-
QMessageBox.warning(self, "Warning", "Nothing Selected")
676+
QMessageBox.warning(self, "Warning", "Nothing Selected in Slider tree")
677677
return
678678
roots = makeUnique([i.model().itemFromIndex(i) for i in roots])
679679
for r in roots:
680680
if isinstance(r, Simplex):
681681
QMessageBox.warning(
682-
self, "Warning", "Cannot delete a simplex system this way (for now)"
682+
self, "Warning", "Cannot delete a simplex system this way"
683683
)
684684
return
685685

@@ -692,7 +692,17 @@ def comboTreeDelete(self):
692692
"""Delete some objects in the Combo tree"""
693693
idxs = self.uiComboTREE.getSelectedIndexes()
694694
roots = coerceIndexToRoots(idxs)
695+
if not roots:
696+
QMessageBox.warning(self, "Warning", "Nothing Selected in Combo tree")
697+
return
695698
roots = makeUnique([i.model().itemFromIndex(i) for i in roots])
699+
for r in roots:
700+
if isinstance(r, Simplex):
701+
QMessageBox.warning(
702+
self, "Warning", "Cannot delete a simplex system this way"
703+
)
704+
return
705+
696706
for r in roots:
697707
r.delete()
698708
self.uiComboTREE.model().invalidateFilter()

0 commit comments

Comments
 (0)