mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
Add to preferences/look & feel a list of fields for which items are hierarchical.
This commit is contained in:
parent
166db2e4de
commit
4cde033d66
@ -7,17 +7,19 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
from PyQt4.Qt import QApplication, QFont, QFontInfo, QFontDialog
|
from PyQt4.Qt import QApplication, QFont, QFontInfo, QFontDialog
|
||||||
|
|
||||||
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
|
from calibre.gui2.preferences import ConfigWidgetBase, test_widget, CommaSeparatedList
|
||||||
from calibre.gui2.preferences.look_feel_ui import Ui_Form
|
from calibre.gui2.preferences.look_feel_ui import Ui_Form
|
||||||
from calibre.gui2 import config, gprefs, qt_app
|
from calibre.gui2 import config, gprefs, qt_app
|
||||||
from calibre.utils.localization import available_translations, \
|
from calibre.utils.localization import available_translations, \
|
||||||
get_language, get_lang
|
get_language, get_lang
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
|
from calibre.utils.icu import sort_key
|
||||||
|
|
||||||
class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||||
|
|
||||||
def genesis(self, gui):
|
def genesis(self, gui):
|
||||||
self.gui = gui
|
self.gui = gui
|
||||||
|
db = gui.library_view.model().db
|
||||||
|
|
||||||
r = self.register
|
r = self.register
|
||||||
|
|
||||||
@ -61,6 +63,15 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
r('tags_browser_partition_method', gprefs, choices=choices)
|
r('tags_browser_partition_method', gprefs, choices=choices)
|
||||||
r('tags_browser_collapse_at', gprefs)
|
r('tags_browser_collapse_at', gprefs)
|
||||||
|
|
||||||
|
choices = set([k for k in db.field_metadata.all_field_keys()
|
||||||
|
if db.field_metadata[k]['is_category'] and
|
||||||
|
db.field_metadata[k]['datatype'] in ['text', 'series', 'enumeration']])
|
||||||
|
choices -= set(['authors', 'publisher', 'formats', 'news'])
|
||||||
|
self.opt_categories_using_hierarchy.update_items_cache(choices)
|
||||||
|
r('categories_using_hierarchy', db.prefs, setting=CommaSeparatedList,
|
||||||
|
choices=sorted(list(choices), key=sort_key))
|
||||||
|
|
||||||
|
|
||||||
self.current_font = None
|
self.current_font = None
|
||||||
self.change_font_button.clicked.connect(self.change_font)
|
self.change_font_button.clicked.connect(self.change_font)
|
||||||
|
|
||||||
|
@ -190,6 +190,28 @@ up into sub-categories. If the partition method is set to disable, this value is
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
|
<widget class="QLabel" name="label_81">
|
||||||
|
<property name="text">
|
||||||
|
<string>Categories with hierarchical items:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_categories_using_hierarchy</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="1">
|
||||||
|
<widget class="MultiCompleteLineEdit" name="opt_categories_using_hierarchy">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>A comma-separated list of columns in which items containing
|
||||||
|
periods are displayed in the tag browser trees. For example, if
|
||||||
|
this box contains 'tags' then tags of the form 'mystery.English'
|
||||||
|
and 'mystery.Thriller' will be displayed with English and Thriller
|
||||||
|
both under the label 'mystery'. If 'tags' is not in this box,
|
||||||
|
then the tags will be displayed each on their own line.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="15" column="0" colspan="2">
|
<item row="15" column="0" colspan="2">
|
||||||
<widget class="QGroupBox" name="groupBox_2">
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
@ -275,6 +297,13 @@ up into sub-categories. If the partition method is set to disable, this value is
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>MultiCompleteLineEdit</class>
|
||||||
|
<extends>QLineEdit</extends>
|
||||||
|
<header>calibre/gui2/complete.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -914,7 +914,8 @@ class TagsModel(QAbstractItemModel): # {{{
|
|||||||
node_parent = category
|
node_parent = category
|
||||||
|
|
||||||
components = [t for t in tag.name.split('.')]
|
components = [t for t in tag.name.split('.')]
|
||||||
if key in ['authors', 'publisher', 'title'] or len(components) == 1 or \
|
if key not in self.db.prefs.get('categories_using_hierarchy', []) \
|
||||||
|
or len(components) == 1 or \
|
||||||
self.db.field_metadata[key]['kind'] == 'user':
|
self.db.field_metadata[key]['kind'] == 'user':
|
||||||
self.beginInsertRows(category_index, 999999, 1)
|
self.beginInsertRows(category_index, 999999, 1)
|
||||||
TagTreeItem(parent=node_parent, data=tag, tooltip=tt,
|
TagTreeItem(parent=node_parent, data=tag, tooltip=tt,
|
||||||
|
@ -174,6 +174,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
self.prefs = DBPrefs(self)
|
self.prefs = DBPrefs(self)
|
||||||
defs = self.prefs.defaults
|
defs = self.prefs.defaults
|
||||||
defs['gui_restriction'] = defs['cs_restriction'] = ''
|
defs['gui_restriction'] = defs['cs_restriction'] = ''
|
||||||
|
defs['categories_using_hierarchy'] = ''
|
||||||
|
|
||||||
# Migrate saved search and user categories to db preference scheme
|
# Migrate saved search and user categories to db preference scheme
|
||||||
def migrate_preference(key, default):
|
def migrate_preference(key, default):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user