Skip to content

Commit 28d2b17

Browse files
committed
Toggle one or more tags preserve state at once
1 parent 72c7c60 commit 28d2b17

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

picard/ui/metadatabox.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -385,16 +385,6 @@ def contextMenuEvent(self, event):
385385
edit_tag_action.setShortcut(self.edit_tag_shortcut.key())
386386
edit_tag_action.setEnabled(editable)
387387
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)
398388
removals = []
399389
useorigs = []
400390
item = self.currentItem()
@@ -438,6 +428,11 @@ def contextMenuEvent(self, event):
438428
remove_tag_action.setShortcut(self.remove_tag_shortcut.key())
439429
remove_tag_action.setEnabled(bool(removals))
440430
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+
441436
if useorigs:
442437
name = ngettext("Use Original Value", "Use Original Values", len(useorigs))
443438
use_orig_value_action = QtGui.QAction(name, self)
@@ -478,6 +473,14 @@ def _edit_selected_tag(self):
478473
if len(tags) == 1:
479474
self._edit_tag(tags[0])
480475

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+
481484
def _toggle_changes_first(self, checked):
482485
config = get_config()
483486
config.persist['show_changes_first'] = checked
@@ -685,12 +688,18 @@ def _update_items(self, result=None, error=None):
685688
if not tag_item:
686689
tag_item = QtWidgets.QTableWidgetItem()
687690
tag_item.setFlags(orig_flags)
688-
font = tag_item.font()
689-
font.setBold(True)
690-
tag_item.setFont(font)
691691
tag_item.setTextAlignment(alignment)
692692
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)
694703

695704
orig_item = self.item(i, self.COLUMN_ORIG)
696705
if not orig_item:

0 commit comments

Comments
 (0)