mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #934509 ([Enhancement] Tag Browser Panel - Right-Click to Delete Tag)
This commit is contained in:
commit
a5627ae5cd
@ -29,7 +29,7 @@ class TagBrowserMixin(object): # {{{
|
||||
self.library_view.model().count_changed_signal.connect(self.tags_view.recount)
|
||||
self.tags_view.set_database(db, self.tag_match, self.sort_by)
|
||||
self.tags_view.tags_marked.connect(self.search.set_search_string)
|
||||
self.tags_view.tag_list_edit.connect(self.do_tags_list_edit)
|
||||
self.tags_view.tags_list_edit.connect(self.do_tags_list_edit)
|
||||
self.tags_view.edit_user_category.connect(self.do_edit_user_categories)
|
||||
self.tags_view.delete_user_category.connect(self.do_delete_user_category)
|
||||
self.tags_view.del_item_from_user_cat.connect(self.do_del_item_from_user_cat)
|
||||
@ -43,6 +43,7 @@ class TagBrowserMixin(object): # {{{
|
||||
self.tags_view.drag_drop_finished.connect(self.drag_drop_finished)
|
||||
self.tags_view.restriction_error.connect(self.do_restriction_error,
|
||||
type=Qt.QueuedConnection)
|
||||
self.tags_view.tag_item_delete.connect(self.do_tag_item_delete)
|
||||
|
||||
for text, func, args, cat_name in (
|
||||
(_('Manage Authors'),
|
||||
@ -244,6 +245,38 @@ class TagBrowserMixin(object): # {{{
|
||||
self.do_tag_item_renamed()
|
||||
self.tags_view.recount()
|
||||
|
||||
def do_tag_item_delete(self, category, item_id, orig_name):
|
||||
'''
|
||||
Delete an item from some category.
|
||||
'''
|
||||
if not question_dialog(self.tags_view,
|
||||
title=_('Delete item'),
|
||||
msg='<p>'+
|
||||
_('%s will be deleted from all books. Are you sure?')
|
||||
%orig_name,
|
||||
skip_dialog_name='tag_item_delete',
|
||||
skip_dialog_msg=_('Show this confirmation again')):
|
||||
return
|
||||
db = self.current_db
|
||||
|
||||
if category == 'tags':
|
||||
delete_func = db.delete_tag_using_id
|
||||
elif category == 'series':
|
||||
delete_func = db.delete_series_using_id
|
||||
elif category == 'publisher':
|
||||
delete_func = db.delete_publisher_using_id
|
||||
else: # must be custom
|
||||
cc_label = db.field_metadata[category]['label']
|
||||
delete_func = partial(db.delete_custom_item_using_id, label=cc_label)
|
||||
m = self.tags_view.model()
|
||||
if delete_func:
|
||||
delete_func(item_id)
|
||||
m.delete_item_from_all_user_categories(orig_name, category)
|
||||
|
||||
# Clean up the library view
|
||||
self.do_tag_item_renamed()
|
||||
self.tags_view.recount()
|
||||
|
||||
def do_tag_item_renamed(self):
|
||||
# Clean up library view and search
|
||||
# get information to redo the selection
|
||||
|
@ -63,7 +63,7 @@ class TagsView(QTreeView): # {{{
|
||||
del_item_from_user_cat = pyqtSignal(object, object, object)
|
||||
add_item_to_user_cat = pyqtSignal(object, object, object)
|
||||
add_subcategory = pyqtSignal(object)
|
||||
tag_list_edit = pyqtSignal(object, object)
|
||||
tags_list_edit = pyqtSignal(object, object)
|
||||
saved_search_edit = pyqtSignal(object)
|
||||
rebuild_saved_searches = pyqtSignal()
|
||||
author_sort_edit = pyqtSignal(object, object, object, object)
|
||||
@ -71,6 +71,7 @@ class TagsView(QTreeView): # {{{
|
||||
search_item_renamed = pyqtSignal()
|
||||
drag_drop_finished = pyqtSignal(object)
|
||||
restriction_error = pyqtSignal()
|
||||
tag_item_delete = pyqtSignal(object, object, object)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QTreeView.__init__(self, parent=None)
|
||||
@ -234,8 +235,11 @@ class TagsView(QTreeView): # {{{
|
||||
if action == 'edit_item':
|
||||
self.edit(index)
|
||||
return
|
||||
if action == 'delete_item':
|
||||
self.tag_item_delete.emit(key, index.id, index.original_name)
|
||||
return
|
||||
if action == 'open_editor':
|
||||
self.tag_list_edit.emit(category, key)
|
||||
self.tags_list_edit.emit(category, key)
|
||||
return
|
||||
if action == 'manage_categories':
|
||||
self.edit_user_category.emit(category)
|
||||
@ -246,7 +250,7 @@ class TagsView(QTreeView): # {{{
|
||||
if action == 'add_to_category':
|
||||
tag = index.tag
|
||||
if len(index.children) > 0:
|
||||
for c in index.children:
|
||||
for c in index.all_children():
|
||||
self.add_item_to_user_cat.emit(category, c.tag.original_name,
|
||||
c.tag.category)
|
||||
self.add_item_to_user_cat.emit(category, tag.original_name,
|
||||
@ -345,6 +349,12 @@ class TagsView(QTreeView): # {{{
|
||||
_('Rename %s')%display_name(tag),
|
||||
partial(self.context_menu_handler, action='edit_item',
|
||||
index=index))
|
||||
if key in ('tags', 'series', 'publisher') or \
|
||||
self._model.db.field_metadata.is_custom_field(key):
|
||||
self.context_menu.addAction(self.delete_icon,
|
||||
_('Delete %s')%display_name(tag),
|
||||
partial(self.context_menu_handler, action='delete_item',
|
||||
key=key, index=tag))
|
||||
if key == 'authors':
|
||||
self.context_menu.addAction(_('Edit sort for %s')%display_name(tag),
|
||||
partial(self.context_menu_handler,
|
||||
|
Loading…
x
Reference in New Issue
Block a user