mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
commit
0b8bd9ddbe
@ -33,6 +33,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
r('limit_search_columns', prefs)
|
r('limit_search_columns', prefs)
|
||||||
r('use_primary_find_in_search', prefs)
|
r('use_primary_find_in_search', prefs)
|
||||||
r('search_tool_bar_shows_text', gprefs)
|
r('search_tool_bar_shows_text', gprefs)
|
||||||
|
ossm = self.opt_saved_search_menu_is_hierarchical
|
||||||
|
ossm.setChecked('search' in db.new_api.pref('categories_using_hierarchy', []))
|
||||||
|
ossm.stateChanged.connect(self.changed_signal)
|
||||||
r('case_sensitive', prefs)
|
r('case_sensitive', prefs)
|
||||||
fl = db.field_metadata.get_search_terms()
|
fl = db.field_metadata.get_search_terms()
|
||||||
r('limit_search_columns_to', prefs, setting=CommaSeparatedList, choices=fl)
|
r('limit_search_columns_to', prefs, setting=CommaSeparatedList, choices=fl)
|
||||||
@ -234,6 +237,13 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
str(self.similar_series_search_key.currentText()))
|
str(self.similar_series_search_key.currentText()))
|
||||||
self.db.new_api.set_pref('similar_publisher_search_key',
|
self.db.new_api.set_pref('similar_publisher_search_key',
|
||||||
str(self.similar_publisher_search_key.currentText()))
|
str(self.similar_publisher_search_key.currentText()))
|
||||||
|
|
||||||
|
cats = set(self.db.new_api.pref('categories_using_hierarchy', []))
|
||||||
|
if self.opt_saved_search_menu_is_hierarchical.isChecked():
|
||||||
|
cats.add('search')
|
||||||
|
else:
|
||||||
|
cats.discard('search')
|
||||||
|
self.db.new_api.set_pref('categories_using_hierarchy', list(cats))
|
||||||
return ConfigWidgetBase.commit(self)
|
return ConfigWidgetBase.commit(self)
|
||||||
|
|
||||||
def refresh_gui(self, gui):
|
def refresh_gui(self, gui):
|
||||||
|
@ -147,6 +147,19 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QCheckBox" name="opt_saved_search_menu_is_hierarchical">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show saved searches as a hierarchy</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><p>Hierarchical items are separated by periods.
|
||||||
|
Changing this box will also change the 'Saved Searches' box
|
||||||
|
in Preferences / Look & feel / Tag browser /
|
||||||
|
Hierarchy and searching</p></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab_2">
|
<widget class="QWidget" name="tab_2">
|
||||||
|
@ -443,23 +443,29 @@ class SavedSearchBoxMixin: # {{{
|
|||||||
partial(self.do_saved_search_edit, None))
|
partial(self.do_saved_search_edit, None))
|
||||||
m.addSeparator()
|
m.addSeparator()
|
||||||
db = self.current_db
|
db = self.current_db
|
||||||
|
folder_icon = QIcon.ic('folder_saved_search.png')
|
||||||
|
search_icon = QIcon.ic('search.png')
|
||||||
|
use_hierarchy = 'search' in db.new_api.pref('categories_using_hierarchy', [])
|
||||||
submenus = {}
|
submenus = {}
|
||||||
for name in sorted(db.saved_search_names(), key=lambda x: primary_sort_key(x.strip())):
|
for name in sorted(db.saved_search_names(), key=lambda x: primary_sort_key(x.strip())):
|
||||||
components = tuple(n.strip() for n in name.split('.'))
|
if use_hierarchy:
|
||||||
hierarchy = components[:-1]
|
components = tuple(n.strip() for n in name.split('.'))
|
||||||
last = components[-1]
|
hierarchy = components[:-1]
|
||||||
current_menu = m
|
last = components[-1]
|
||||||
# Walk the hierarchy, creating submenus as needed
|
current_menu = m
|
||||||
for i,c in enumerate(hierarchy, start=1):
|
# Walk the hierarchy, creating submenus as needed
|
||||||
hierarchical_prefix = '.'.join(hierarchy[:i])
|
for i,c in enumerate(hierarchy, start=1):
|
||||||
if hierarchical_prefix not in submenus:
|
hierarchical_prefix = '.'.join(hierarchy[:i])
|
||||||
current_menu = current_menu.addMenu(c)
|
if hierarchical_prefix not in submenus:
|
||||||
current_menu.setIcon(QIcon.ic('folder_saved_search.png'))
|
current_menu = current_menu.addMenu(c)
|
||||||
submenus[hierarchical_prefix] = current_menu
|
current_menu.setIcon(folder_icon)
|
||||||
else:
|
submenus[hierarchical_prefix] = current_menu
|
||||||
current_menu = submenus[hierarchical_prefix]
|
else:
|
||||||
ac = current_menu.addAction(last, partial(self.search.set_search_string, 'search:"='+name+'"'))
|
current_menu = submenus[hierarchical_prefix]
|
||||||
ac.setIcon(QIcon.ic('search.png'))
|
ac = current_menu.addAction(last, partial(self.search.set_search_string, 'search:"='+name+'"'))
|
||||||
|
else:
|
||||||
|
ac = m.addAction(name, partial(self.search.set_search_string, 'search:"='+name+'"'))
|
||||||
|
ac.setIcon(search_icon)
|
||||||
|
|
||||||
def saved_searches_changed(self, set_restriction=None, recount=True):
|
def saved_searches_changed(self, set_restriction=None, recount=True):
|
||||||
self.build_search_restriction_list()
|
self.build_search_restriction_list()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user