mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 10:44:09 -04:00
Advanced search dialog: Remember the last focused field in the search by ttiel/authors tab
This commit is contained in:
parent
06d2569fa5
commit
424de7f8fe
@ -6,7 +6,7 @@ import re, copy
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
from PyQt5.Qt import (
|
from PyQt5.Qt import (
|
||||||
QDialog, QDialogButtonBox, QFrame, QLabel, QComboBox, QIcon, QVBoxLayout,
|
QDialog, QDialogButtonBox, QFrame, QLabel, QComboBox, QIcon, QVBoxLayout, Qt,
|
||||||
QSize, QHBoxLayout, QTabWidget, QLineEdit, QWidget, QGroupBox, QFormLayout,
|
QSize, QHBoxLayout, QTabWidget, QLineEdit, QWidget, QGroupBox, QFormLayout,
|
||||||
QSpinBox, QRadioButton
|
QSpinBox, QRadioButton
|
||||||
)
|
)
|
||||||
@ -115,11 +115,13 @@ def create_simple_tab(self, db):
|
|||||||
l.setFieldGrowthPolicy(l.AllNonFixedFieldsGrow)
|
l.setFieldGrowthPolicy(l.AllNonFixedFieldsGrow)
|
||||||
|
|
||||||
self.title_box = le = QLineEdit(w)
|
self.title_box = le = QLineEdit(w)
|
||||||
|
le.setObjectName('title_box')
|
||||||
le.setPlaceholderText(_('The title to search for'))
|
le.setPlaceholderText(_('The title to search for'))
|
||||||
l.addRow(_('&Title:'), le)
|
l.addRow(_('&Title:'), le)
|
||||||
|
|
||||||
self.authors_box = le = EditWithComplete(self)
|
self.authors_box = le = EditWithComplete(self)
|
||||||
le.lineEdit().setPlaceholderText(_('The author to search for'))
|
le.lineEdit().setPlaceholderText(_('The author to search for'))
|
||||||
|
le.setObjectName('authors_box')
|
||||||
le.setEditText('')
|
le.setEditText('')
|
||||||
le.set_separator('&')
|
le.set_separator('&')
|
||||||
le.set_space_before_sep(True)
|
le.set_space_before_sep(True)
|
||||||
@ -129,6 +131,7 @@ def create_simple_tab(self, db):
|
|||||||
|
|
||||||
self.series_box = le = EditWithComplete(self)
|
self.series_box = le = EditWithComplete(self)
|
||||||
le.lineEdit().setPlaceholderText(_('The series to search for'))
|
le.lineEdit().setPlaceholderText(_('The series to search for'))
|
||||||
|
le.setObjectName('series_box')
|
||||||
all_series = sorted((x[1] for x in db.all_series()), key=sort_key)
|
all_series = sorted((x[1] for x in db.all_series()), key=sort_key)
|
||||||
le.set_separator(None)
|
le.set_separator(None)
|
||||||
le.update_items_cache(all_series)
|
le.update_items_cache(all_series)
|
||||||
@ -136,6 +139,7 @@ def create_simple_tab(self, db):
|
|||||||
l.addRow(_('&Series:'), le)
|
l.addRow(_('&Series:'), le)
|
||||||
|
|
||||||
self.tags_box = le = EditWithComplete(self)
|
self.tags_box = le = EditWithComplete(self)
|
||||||
|
le.setObjectName('tags_box')
|
||||||
le.lineEdit().setPlaceholderText(_('The tags to search for'))
|
le.lineEdit().setPlaceholderText(_('The tags to search for'))
|
||||||
self.tags_box.update_items_cache(db.all_tags())
|
self.tags_box.update_items_cache(db.all_tags())
|
||||||
l.addRow(_('Ta&gs:'), le)
|
l.addRow(_('Ta&gs:'), le)
|
||||||
@ -146,6 +150,7 @@ def create_simple_tab(self, db):
|
|||||||
self.general_combo.addItems(searchables)
|
self.general_combo.addItems(searchables)
|
||||||
self.box_last_values = copy.deepcopy(box_values)
|
self.box_last_values = copy.deepcopy(box_values)
|
||||||
self.general_box = le = QLineEdit(self)
|
self.general_box = le = QLineEdit(self)
|
||||||
|
le.setObjectName('general_box')
|
||||||
l.addRow(self.general_combo, le)
|
l.addRow(self.general_combo, le)
|
||||||
if self.box_last_values:
|
if self.box_last_values:
|
||||||
for k,v in self.box_last_values.items():
|
for k,v in self.box_last_values.items():
|
||||||
@ -256,11 +261,19 @@ class SearchDialog(QDialog):
|
|||||||
self.tab_widget.setCurrentIndex(current_tab)
|
self.tab_widget.setCurrentIndex(current_tab)
|
||||||
if current_tab == 1:
|
if current_tab == 1:
|
||||||
self.matchkind.setCurrentIndex(last_matchkind)
|
self.matchkind.setCurrentIndex(last_matchkind)
|
||||||
|
focused_field = gprefs.get('advanced_search_simple_tab_focused_field', 'title_box')
|
||||||
|
w = getattr(self, focused_field, None)
|
||||||
|
if w is not None:
|
||||||
|
w.setFocus(Qt.OtherFocusReason)
|
||||||
self.resize(self.sizeHint())
|
self.resize(self.sizeHint())
|
||||||
|
|
||||||
def save_state(self):
|
def save_state(self):
|
||||||
gprefs['advanced search dialog current tab'] = \
|
gprefs['advanced search dialog current tab'] = \
|
||||||
self.tab_widget.currentIndex()
|
self.tab_widget.currentIndex()
|
||||||
|
if self.tab_widget.currentIndex() == 1:
|
||||||
|
fw = self.tab_widget.focusWidget().objectName()
|
||||||
|
if fw:
|
||||||
|
gprefs.set('advanced_search_simple_tab_focused_field', fw)
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
self.save_state()
|
self.save_state()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user