feat: add ability to invert selection (#909)

* implement selection inversing

* Rename Select Inverse to Invert Selection
This commit is contained in:
Tony
2025-04-05 20:59:44 -04:00
committed by GitHub
parent a72c2c4ba8
commit 97ee43c875
2 changed files with 38 additions and 0 deletions

View File

@@ -473,6 +473,21 @@ class QtDriver(DriverMixin, QObject):
self.select_all_action.setEnabled(False)
edit_menu.addAction(self.select_all_action)
self.select_inverse_action = QAction(Translations["select.inverse"], menu_bar)
self.select_inverse_action.triggered.connect(self.select_inverse_action_callback)
self.select_inverse_action.setShortcut(
QtCore.QKeyCombination(
QtCore.Qt.KeyboardModifier(
QtCore.Qt.KeyboardModifier.ControlModifier
^ QtCore.Qt.KeyboardModifier.ShiftModifier
),
QtCore.Qt.Key.Key_I,
)
)
self.select_inverse_action.setToolTip("Ctrl+Shift+I")
self.select_inverse_action.setEnabled(False)
edit_menu.addAction(self.select_inverse_action)
self.clear_select_action = QAction(Translations["select.clear"], menu_bar)
self.clear_select_action.triggered.connect(self.clear_select_action_callback)
self.clear_select_action.setShortcut(QtCore.Qt.Key.Key_Escape)
@@ -957,6 +972,26 @@ class QtDriver(DriverMixin, QObject):
self.preview_panel.update_widgets(update_preview=False)
def select_inverse_action_callback(self):
"""Invert the selection of all visible items."""
new_selected = []
for item in self.item_thumbs:
if item.mode and not item.isHidden():
if item.item_id in self.selected:
item.thumb_button.set_selected(False)
else:
item.thumb_button.set_selected(True)
new_selected.append(item.item_id)
self.selected = new_selected
self.set_macro_menu_viability()
self.set_clipboard_menu_viability()
self.set_select_actions_visibility()
self.preview_panel.update_widgets(update_preview=False)
def clear_select_action_callback(self):
self.selected.clear()
self.set_select_actions_visibility()
@@ -1479,8 +1514,10 @@ class QtDriver(DriverMixin, QObject):
if self.frame_content:
self.select_all_action.setEnabled(True)
self.select_inverse_action.setEnabled(True)
else:
self.select_all_action.setEnabled(False)
self.select_inverse_action.setEnabled(False)
if self.selected:
self.add_tag_to_selected_action.setEnabled(True)

View File

@@ -229,6 +229,7 @@
"select.add_tag_to_selected": "Add Tag to Selected",
"select.all": "Select All",
"select.clear": "Clear Selection",
"select.inverse": "Invert Selection",
"settings.clear_thumb_cache.title": "Clear Thumbnail Cache",
"settings.filepath.label": "Filepath Visibility",
"settings.filepath.option.full": "Show Full Paths",