diff --git a/src/calibre/gui2/tag_browser/model.py b/src/calibre/gui2/tag_browser/model.py index dd48e0690f..06f4b4007c 100644 --- a/src/calibre/gui2/tag_browser/model.py +++ b/src/calibre/gui2/tag_browser/model.py @@ -283,7 +283,7 @@ class TagsModel(QAbstractItemModel): # {{{ if rebuild: self.rebuild_node_tree(state_map) - def set_database(self, db): + def set_database(self, db, hidden_categories=None): self.beginResetModel() hidden_cats = db.new_api.pref('tag_browser_hidden_categories', None) # migrate from config to db prefs @@ -295,6 +295,8 @@ class TagsModel(QAbstractItemModel): # {{{ if cat in db.field_metadata: self.hidden_categories.add(cat) db.new_api.set_pref('tag_browser_hidden_categories', list(self.hidden_categories)) + if hidden_categories is not None: + self.hidden_categories = hidden_categories self.db = db self._run_rebuild() diff --git a/src/calibre/srv/metadata.py b/src/calibre/srv/metadata.py index fef04981a6..b4a7c2b810 100644 --- a/src/calibre/srv/metadata.py +++ b/src/calibre/srv/metadata.py @@ -391,6 +391,8 @@ def categories_as_json(ctx, rd, db): category_data = ctx.get_categories(rd, db, sort=opts.sort_by, first_letter_sort=opts.collapse_model == 'first letter') render_categories(db.field_metadata, opts, category_data) +# Test tag browser {{{ + def dump_categories_tree(data): root, items = data['root'], data['item_map'] ans, indent = [], ' ' @@ -422,6 +424,7 @@ def dump_tags_model(m): return '\n'.join(ans) def test_tag_browser(library_path=None): + ' Compare output of server and GUI tag browsers ' from calibre.library import db olddb = db(library_path) db = olddb.new_api @@ -429,14 +432,21 @@ def test_tag_browser(library_path=None): category_data = db.get_categories(sort=opts.sort_by, first_letter_sort=opts.collapse_model == 'first letter') data = render_categories(db.field_metadata, opts, category_data) srv_data = dump_categories_tree(data) - from calibre.gui2 import Application + from calibre.gui2 import Application, gprefs from calibre.gui2.tag_browser.model import TagsModel + prefs = { + 'tags_browser_category_icons':gprefs['tags_browser_category_icons'], + 'tags_browser_collapse_at':opts.collapse_at, + 'tags_browser_partition_method': opts.collapse_model, + 'tag_browser_dont_collapse': opts.dont_collapse, + } app = Application([]) - m = TagsModel(None) - m.set_database(olddb) + m = TagsModel(None, prefs) + m.set_database(olddb, hidden_categories=set()) m_data = dump_tags_model(m) from calibre.gui2.tweak_book.diff.main import Diff d = Diff(show_as_window=True) d.string_diff(m_data, srv_data, left_name='GUI', right_name='server') d.exec_() del app +# }}}