@@ -473,6 +473,21 @@ def set_open_last_loaded_on_startup(checked: bool):
473
473
self .select_all_action .setEnabled (False )
474
474
edit_menu .addAction (self .select_all_action )
475
475
476
+ self .select_inverse_action = QAction (Translations ["select.inverse" ], menu_bar )
477
+ self .select_inverse_action .triggered .connect (self .select_inverse_action_callback )
478
+ self .select_inverse_action .setShortcut (
479
+ QtCore .QKeyCombination (
480
+ QtCore .Qt .KeyboardModifier (
481
+ QtCore .Qt .KeyboardModifier .ControlModifier
482
+ ^ QtCore .Qt .KeyboardModifier .ShiftModifier
483
+ ),
484
+ QtCore .Qt .Key .Key_I ,
485
+ )
486
+ )
487
+ self .select_inverse_action .setToolTip ("Ctrl+Shift+I" )
488
+ self .select_inverse_action .setEnabled (False )
489
+ edit_menu .addAction (self .select_inverse_action )
490
+
476
491
self .clear_select_action = QAction (Translations ["select.clear" ], menu_bar )
477
492
self .clear_select_action .triggered .connect (self .clear_select_action_callback )
478
493
self .clear_select_action .setShortcut (QtCore .Qt .Key .Key_Escape )
@@ -957,6 +972,26 @@ def select_all_action_callback(self):
957
972
958
973
self .preview_panel .update_widgets (update_preview = False )
959
974
975
+ def select_inverse_action_callback (self ):
976
+ """Invert the selection of all visible items."""
977
+ new_selected = []
978
+
979
+ for item in self .item_thumbs :
980
+ if item .mode and not item .isHidden ():
981
+ if item .item_id in self .selected :
982
+ item .thumb_button .set_selected (False )
983
+ else :
984
+ item .thumb_button .set_selected (True )
985
+ new_selected .append (item .item_id )
986
+
987
+ self .selected = new_selected
988
+
989
+ self .set_macro_menu_viability ()
990
+ self .set_clipboard_menu_viability ()
991
+ self .set_select_actions_visibility ()
992
+
993
+ self .preview_panel .update_widgets (update_preview = False )
994
+
960
995
def clear_select_action_callback (self ):
961
996
self .selected .clear ()
962
997
self .set_select_actions_visibility ()
@@ -1479,8 +1514,10 @@ def set_select_actions_visibility(self):
1479
1514
1480
1515
if self .frame_content :
1481
1516
self .select_all_action .setEnabled (True )
1517
+ self .select_inverse_action .setEnabled (True )
1482
1518
else :
1483
1519
self .select_all_action .setEnabled (False )
1520
+ self .select_inverse_action .setEnabled (False )
1484
1521
1485
1522
if self .selected :
1486
1523
self .add_tag_to_selected_action .setEnabled (True )
0 commit comments