From 74e6a375fce2dee999251dd62d49a679991b1601 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sun, 27 Dec 2020 11:31:30 +0000 Subject: [PATCH] Enhancement #1909380: make drag & drop give VL prompt --- src/calibre/gui2/tag_browser/model.py | 17 ++++++++++++++--- src/calibre/gui2/tag_browser/view.py | 9 ++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/calibre/gui2/tag_browser/model.py b/src/calibre/gui2/tag_browser/model.py index a78127c38c..f468af9b10 100644 --- a/src/calibre/gui2/tag_browser/model.py +++ b/src/calibre/gui2/tag_browser/model.py @@ -18,7 +18,7 @@ from PyQt5.Qt import ( from calibre.constants import config_dir from calibre.db.categories import Tag from calibre.ebooks.metadata import rating_to_stars -from calibre.gui2 import config, error_dialog, file_icon_provider, gprefs +from calibre.gui2 import config, error_dialog, file_icon_provider, gprefs, question_dialog from calibre.gui2.dialogs.confirm_delete import confirm from calibre.library.field_metadata import category_icon_map from calibre.utils.config import prefs, tweaks @@ -298,6 +298,15 @@ class TagTreeItem(object): # {{{ FL_Interval = namedtuple('FL_Interval', ('first_chr', 'last_chr', 'length')) +def rename_only_in_vl_question(parent): + return question_dialog(parent, + _('Rename in Virtual library'), '

' + + _('Do you want this rename to apply only to books ' + 'in the current Virtual library?') + '

', + yes_text=_('Yes, apply only in VL'), + no_text=_('No, apply in entire library')) + + class TagsModel(QAbstractItemModel): # {{{ search_item_renamed = pyqtSignal() @@ -878,8 +887,10 @@ class TagsModel(QAbstractItemModel): # {{{ new_name = dest_item.tag.original_name + '.' + src_simple_name else: new_name = src_simple_name - # In d&d renames always use the vl. This might be controversial. - src_item.use_vl = True + if self.get_in_vl(): + src_item.use_vl = rename_only_in_vl_question(self.gui_parent) + else: + src_item.use_vl = False self.rename_item(src_item, key, new_name) return True # Should be working with a user category diff --git a/src/calibre/gui2/tag_browser/view.py b/src/calibre/gui2/tag_browser/view.py index f5ac68940b..9db0e0c62e 100644 --- a/src/calibre/gui2/tag_browser/view.py +++ b/src/calibre/gui2/tag_browser/view.py @@ -20,7 +20,7 @@ from calibre.constants import config_dir from calibre.ebooks.metadata import rating_to_stars from calibre.gui2.complete2 import EditWithComplete from calibre.gui2.tag_browser.model import (TagTreeItem, TAG_SEARCH_STATES, - TagsModel, DRAG_IMAGE_ROLE, COUNT_ROLE) + TagsModel, DRAG_IMAGE_ROLE, COUNT_ROLE, rename_only_in_vl_question) from calibre.gui2.widgets import EnLineEdit from calibre.gui2 import (config, gprefs, choose_files, pixmap_to_data, rating_font, empty_index, question_dialog) @@ -133,12 +133,7 @@ class TagDelegate(QStyledItemDelegate): # {{{ if not item.ignore_vl: if item.use_vl is None: if self.tags_view.model().get_in_vl(): - item.use_vl = question_dialog(self.tags_view, - _('Rename in Virtual library'), '

' + - _('Do you want this rename to apply only to books ' - 'in the current Virtual library?') + '

', - yes_text=_('Yes, apply only in VL'), - no_text=_('No, apply in entire library')) + item.use_vl = rename_only_in_vl_question(self.tags_view) else: item.use_vl = False elif not item.use_vl and self.tags_view.model().get_in_vl():