Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions src/tagstudio/qt/ts_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,21 @@ def set_open_last_loaded_on_startup(checked: bool):
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)
Expand Down Expand Up @@ -957,6 +972,26 @@ def select_all_action_callback(self):

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()
Expand Down Expand Up @@ -1479,8 +1514,10 @@ def set_select_actions_visibility(self):

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)
Expand Down
1 change: 1 addition & 0 deletions src/tagstudio/resources/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down