@@ -385,16 +385,6 @@ def contextMenuEvent(self, event):
385
385
edit_tag_action .setShortcut (self .edit_tag_shortcut .key ())
386
386
edit_tag_action .setEnabled (editable )
387
387
menu .addAction (edit_tag_action )
388
- if selected_tag not in self .preserved_tags :
389
- add_to_preserved_tags_action = QtGui .QAction (_ ("Add to 'Preserve Tags' List" ), self )
390
- add_to_preserved_tags_action .triggered .connect (partial (self .preserved_tags .add , selected_tag ))
391
- add_to_preserved_tags_action .setEnabled (editable )
392
- menu .addAction (add_to_preserved_tags_action )
393
- else :
394
- remove_from_preserved_tags_action = QtGui .QAction (_ ("Remove from 'Preserve Tags' List" ), self )
395
- remove_from_preserved_tags_action .triggered .connect (partial (self .preserved_tags .discard , selected_tag ))
396
- remove_from_preserved_tags_action .setEnabled (editable )
397
- menu .addAction (remove_from_preserved_tags_action )
398
388
removals = []
399
389
useorigs = []
400
390
item = self .currentItem ()
@@ -438,6 +428,11 @@ def contextMenuEvent(self, event):
438
428
remove_tag_action .setShortcut (self .remove_tag_shortcut .key ())
439
429
remove_tag_action .setEnabled (bool (removals ))
440
430
menu .addAction (remove_tag_action )
431
+
432
+ add_to_preserved_tags_action = QtGui .QAction (_ ("Toggle Preserve state" ), self )
433
+ add_to_preserved_tags_action .triggered .connect (self ._toggle_preserved )
434
+ menu .addAction (add_to_preserved_tags_action )
435
+
441
436
if useorigs :
442
437
name = ngettext ("Use Original Value" , "Use Original Values" , len (useorigs ))
443
438
use_orig_value_action = QtGui .QAction (name , self )
@@ -478,6 +473,14 @@ def _edit_selected_tag(self):
478
473
if len (tags ) == 1 :
479
474
self ._edit_tag (tags [0 ])
480
475
476
+ def _toggle_preserved (self ):
477
+ for tag in self ._selected_tags (filter_func = self ._tag_is_editable ):
478
+ if tag in self .preserved_tags :
479
+ self .preserved_tags .discard (tag )
480
+ else :
481
+ self .preserved_tags .add (tag )
482
+ self .update ()
483
+
481
484
def _toggle_changes_first (self , checked ):
482
485
config = get_config ()
483
486
config .persist ['show_changes_first' ] = checked
@@ -685,12 +688,18 @@ def _update_items(self, result=None, error=None):
685
688
if not tag_item :
686
689
tag_item = QtWidgets .QTableWidgetItem ()
687
690
tag_item .setFlags (orig_flags )
688
- font = tag_item .font ()
689
- font .setBold (True )
690
- tag_item .setFont (font )
691
691
tag_item .setTextAlignment (alignment )
692
692
self .setItem (i , self .COLUMN_TAG , tag_item )
693
- tag_item .setText (display_tag_name (tag ))
693
+ text = display_tag_name (tag )
694
+ preserved = tag in self .preserved_tags
695
+ font = tag_item .font ()
696
+ font .setBold (not preserved )
697
+ tag_item .setFont (font )
698
+ if preserved :
699
+ preserved_indicator_fmt = _ ('%s [P]' )
700
+ tag_item .setText (preserved_indicator_fmt % text )
701
+ else :
702
+ tag_item .setText (text )
694
703
695
704
orig_item = self .item (i , self .COLUMN_ORIG )
696
705
if not orig_item :
0 commit comments