Tag Editor: Place the keyboard focus on the last edited field. Fixes #1473140 [Improvement/Feature Request: Tag Editor Change](https://bugs.launchpad.net/calibre/+bug/1473140)

Manage saved searches: Make the behavior of the renames search button
more intuitive. Fixes #1467147 [Rename search creates a new one instead](https://bugs.launchpad.net/calibre/+bug/1467147)

Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
Kovid Goyal 2015-07-13 16:48:56 +05:30
commit 38028aa0d3
2 changed files with 20 additions and 2 deletions

View File

@ -35,9 +35,12 @@ class SavedSearchEditor(QDialog, Ui_SavedSearchEditor):
self.select_search(initial_search) self.select_search(initial_search)
def populate_search_list(self): def populate_search_list(self):
self.search_name_box.blockSignals(True)
self.search_name_box.clear() self.search_name_box.clear()
for name in sorted(self.searches.keys(), key=sort_key): for name in sorted(self.searches.keys(), key=sort_key):
self.search_name_box.addItem(name) self.search_name_box.addItem(name)
self.search_names = set([icu_lower(n) for n in self.searches.keys()])
self.search_name_box.blockSignals(False)
def sanitize_name(self): def sanitize_name(self):
n = unicode(self.input_box.text()).strip().replace('\\', '') n = unicode(self.input_box.text()).strip().replace('\\', '')
@ -45,6 +48,7 @@ class SavedSearchEditor(QDialog, Ui_SavedSearchEditor):
return n return n
def add_search(self): def add_search(self):
self.save_current_search()
search_name = self.sanitize_name() search_name = self.sanitize_name()
if search_name == '': if search_name == '':
return False return False
@ -72,6 +76,7 @@ class SavedSearchEditor(QDialog, Ui_SavedSearchEditor):
self.search_name_box.removeItem(self.search_name_box.currentIndex()) self.search_name_box.removeItem(self.search_name_box.currentIndex())
def rename_search(self): def rename_search(self):
self.save_current_search()
new_search_name = self.sanitize_name() new_search_name = self.sanitize_name()
if new_search_name == '': if new_search_name == '':
return False return False
@ -101,11 +106,14 @@ class SavedSearchEditor(QDialog, Ui_SavedSearchEditor):
self.current_search_name = None self.current_search_name = None
self.search_text.setPlainText('') self.search_text.setPlainText('')
def save_current_search(self):
if self.current_search_name:
self.searches[self.current_search_name] = unicode(self.search_text.toPlainText())
def accept(self): def accept(self):
from calibre.gui2.ui import get_gui from calibre.gui2.ui import get_gui
db = get_gui().current_db db = get_gui().current_db
if self.current_search_name: self.save_current_search()
self.searches[self.current_search_name] = unicode(self.search_text.toPlainText())
ss = {name:self.searches[name] for name in self.searches} ss = {name:self.searches[name] for name in self.searches}
db.saved_search_set_all(ss) db.saved_search_set_all(ss)
QDialog.accept(self) QDialog.accept(self)

View File

@ -73,6 +73,12 @@ class TagEditor(QDialog, Ui_TagEditor):
self.available_filter_input.textChanged.connect(self.filter_tags) self.available_filter_input.textChanged.connect(self.filter_tags)
self.applied_filter_input.textChanged.connect(partial(self.filter_tags, which='applied_tags')) self.applied_filter_input.textChanged.connect(partial(self.filter_tags, which='applied_tags'))
# Restore the focus to the last input box used (typed into)
self.add_tag_input.textChanged.connect(partial(self.edit_box_changed, which="add_tag_input"))
self.available_filter_input.textChanged.connect(partial(self.edit_box_changed, which="available_filter_input"))
self.applied_filter_input.textChanged.connect(partial(self.edit_box_changed, which="applied_filter_input"))
getattr(self, gprefs.get('tag_editor_last_filter', 'add_tag_input')).setFocus()
if islinux: if islinux:
self.available_tags.itemDoubleClicked.connect(self.apply_tags) self.available_tags.itemDoubleClicked.connect(self.apply_tags)
else: else:
@ -83,6 +89,10 @@ class TagEditor(QDialog, Ui_TagEditor):
if geom is not None: if geom is not None:
self.restoreGeometry(geom) self.restoreGeometry(geom)
def edit_box_changed(self, which):
gprefs['tag_editor_last_filter'] = which
def delete_tags(self, item=None): def delete_tags(self, item=None):
confirms, deletes = [], [] confirms, deletes = [], []
items = self.available_tags.selectedItems() if item is None else [item] items = self.available_tags.selectedItems() if item is None else [item]