mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Compare output of GUI and server tag browsers
This commit is contained in:
parent
3387169dca
commit
491cd2478c
@ -158,6 +158,22 @@ class TagTreeItem(object): # {{{
|
|||||||
return self.icon_state_map[0]
|
return self.icon_state_map[0]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def dump_data(self):
|
||||||
|
fmt = '%s [count=%s]'
|
||||||
|
if self.type == self.CATEGORY:
|
||||||
|
return fmt % (self.py_name, len(self.child_tags()))
|
||||||
|
tag = self.tag
|
||||||
|
if tag.use_sort_as_name:
|
||||||
|
name = tag.sort
|
||||||
|
else:
|
||||||
|
if not tag.is_hierarchical:
|
||||||
|
name = tag.original_name
|
||||||
|
else:
|
||||||
|
name = tag.name
|
||||||
|
count = len(self.id_set)
|
||||||
|
count = count if count > 0 else tag.count
|
||||||
|
return fmt % (name, count,)
|
||||||
|
|
||||||
def toggle(self, set_to=None):
|
def toggle(self, set_to=None):
|
||||||
'''
|
'''
|
||||||
set_to: None => advance the state, otherwise a value from TAG_SEARCH_STATES
|
set_to: None => advance the state, otherwise a value from TAG_SEARCH_STATES
|
||||||
|
@ -380,11 +380,8 @@ def dump_categories_tree(data):
|
|||||||
ans, indent = [], ' '
|
ans, indent = [], ' '
|
||||||
def dump_node(node, level=0):
|
def dump_node(node, level=0):
|
||||||
item = items[node['id']]
|
item = items[node['id']]
|
||||||
on = item.get('original_name', '')
|
|
||||||
if on:
|
|
||||||
on += ' '
|
|
||||||
try:
|
try:
|
||||||
ans.append(indent*level + item['name'] + ' [%scount=%s]' % (on, item['count']))
|
ans.append(indent*level + item['name'] + ' [count=%s]' % (item['count'],))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print(item)
|
print(item)
|
||||||
raise
|
raise
|
||||||
@ -395,10 +392,35 @@ def dump_categories_tree(data):
|
|||||||
[dump_node(c) for c in root['children']]
|
[dump_node(c) for c in root['children']]
|
||||||
return '\n'.join(ans)
|
return '\n'.join(ans)
|
||||||
|
|
||||||
|
def dump_tags_model(m):
|
||||||
|
from PyQt5.Qt import QModelIndex, Qt
|
||||||
|
ans, indent = [], ' '
|
||||||
|
def dump_node(index, level=-1):
|
||||||
|
if level > -1:
|
||||||
|
ans.append(indent*level + index.data(Qt.UserRole).dump_data())
|
||||||
|
for i in xrange(m.rowCount(index)):
|
||||||
|
dump_node(m.index(i, 0, index), level + 1)
|
||||||
|
if level == 0:
|
||||||
|
ans.append('')
|
||||||
|
dump_node(QModelIndex())
|
||||||
|
return '\n'.join(ans)
|
||||||
|
|
||||||
def test_tag_browser(library_path=None):
|
def test_tag_browser(library_path=None):
|
||||||
from calibre.library import db
|
from calibre.library import db
|
||||||
db = db(library_path).new_api
|
olddb = db(library_path)
|
||||||
|
db = olddb.new_api
|
||||||
opts = categories_settings({}, db)
|
opts = categories_settings({}, db)
|
||||||
category_data = db.get_categories(sort=opts.sort_by, first_letter_sort=opts.collapse_model == 'first letter')
|
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)
|
data = render_categories(db.field_metadata, opts, category_data)
|
||||||
print(dump_categories_tree(data))
|
srv_data = dump_categories_tree(data)
|
||||||
|
from calibre.gui2 import Application
|
||||||
|
from calibre.gui2.tag_browser.model import TagsModel
|
||||||
|
app = Application([])
|
||||||
|
m = TagsModel(None)
|
||||||
|
m.set_database(olddb)
|
||||||
|
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user