mirror of
https://github.com/TagStudioDev/TagStudio.git
synced 2026-01-29 06:10:51 +00:00
feat: add ability to invert selection (#909)
* implement selection inversing * Rename Select Inverse to Invert Selection
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user