|
1 | 1 | from pathlib import Path
|
2 | 2 |
|
3 |
| -from PySide6.QtCore import (QItemSelectionModel, QModelIndex, |
4 |
| - QPersistentModelIndex, QStringListModel, QTimer, |
5 |
| - Qt, Slot) |
| 3 | +from PySide6.QtCore import (QItemSelectionModel, QModelIndex, QStringListModel, |
| 4 | + QTimer, Qt, Slot) |
6 | 5 | from PySide6.QtGui import QKeyEvent
|
7 | 6 | from PySide6.QtWidgets import (QAbstractItemView, QCompleter, QDockWidget,
|
8 | 7 | QLabel, QLineEdit, QListView, QVBoxLayout,
|
@@ -78,15 +77,11 @@ def keyPressEvent(self, event: QKeyEvent):
|
78 | 77 | if event.key() != Qt.Key_Delete:
|
79 | 78 | super().keyPressEvent(event)
|
80 | 79 | return
|
81 |
| - # The selected indices must be converted to `QPersistentModelIndex` |
82 |
| - # objects to properly delete multiple tags. |
83 |
| - selected_indices = [QPersistentModelIndex(index) for index |
84 |
| - in self.selectedIndexes()] |
85 |
| - for index in selected_indices: |
86 |
| - self.image_tag_list_model.removeRow(index.row()) |
87 |
| - # The current index is set but not selected automatically after the |
88 |
| - # tags are deleted, so select it. |
89 |
| - self.setCurrentIndex(self.currentIndex()) |
| 80 | + rows_to_remove = [index.row() for index in self.selectedIndexes()] |
| 81 | + remaining_tags = [tag for i, tag |
| 82 | + in enumerate(self.image_tag_list_model.stringList()) |
| 83 | + if i not in rows_to_remove] |
| 84 | + self.image_tag_list_model.setStringList(remaining_tags) |
90 | 85 |
|
91 | 86 |
|
92 | 87 | class ImageTagsEditor(QDockWidget):
|
@@ -127,6 +122,7 @@ def __init__(self, proxy_image_list_model: ProxyImageListModel,
|
127 | 122 | self.image_tags_list.scrollToBottom)
|
128 | 123 | # `rowsInserted` does not have to be connected because `dataChanged`
|
129 | 124 | # is emitted when a tag is added.
|
| 125 | + self.image_tag_list_model.modelReset.connect(self.count_tokens) |
130 | 126 | self.image_tag_list_model.dataChanged.connect(self.count_tokens)
|
131 | 127 | self.image_tag_list_model.rowsRemoved.connect(self.count_tokens)
|
132 | 128 |
|
|
0 commit comments