From 62210eb8ff3a38cd7f1f2037a2b74bcb24aaa7bf Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 23 Jun 2010 15:44:59 +0100 Subject: [PATCH] Prepare for device_collection editor --- src/calibre/gui2/dialogs/tag_list_editor.py | 2 +- src/calibre/gui2/tag_view.py | 23 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index 1ec80f4b4a..73e81e2d99 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -11,7 +11,7 @@ from calibre.ebooks.metadata import title_sort class TagListEditor(QDialog, Ui_TagListEditor): - def __init__(self, window, db, tag_to_match, category): + def __init__(self, window, db, tag_to_match, category, data, compare): QDialog.__init__(self, window) Ui_TagListEditor.__init__(self) self.setupUi(self) diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index daea4e86ea..6b4e8dbd88 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -15,6 +15,7 @@ from PyQt4.Qt import Qt, QTreeView, QApplication, pyqtSignal, \ QAbstractItemModel, QVariant, QModelIndex, QMenu, \ QPushButton, QWidget, QItemDelegate +from calibre.ebooks.metadata import title_sort from calibre.gui2 import config, NONE from calibre.utils.config import prefs from calibre.library.field_metadata import TagsIcons @@ -680,7 +681,27 @@ class TagBrowserMixin(object): # {{{ self.tags_view.recount() def do_tags_list_edit(self, tag, category): - d = TagListEditor(self, self.library_view.model().db, tag, category) + db=self.library_view.model().db + if category == 'tags': + result = db.get_tags_with_ids() + compare = (lambda x,y:cmp(x.lower(), y.lower())) + elif category == 'series': + result = db.get_series_with_ids() + compare = (lambda x,y:cmp(title_sort(x).lower(), title_sort(y).lower())) + elif category == 'publisher': + result = db.get_publishers_with_ids() + compare = (lambda x,y:cmp(x.lower(), y.lower())) + else: # should be a custom field + self.cc_label = None + if category in db.field_metadata: + self.cc_label = db.field_metadata[category]['label'] + result = self.db.get_custom_items_with_ids(label=self.cc_label) + else: + result = [] + compare = (lambda x,y:cmp(x.lower(), y.lower())) + + d = TagListEditor(self, db=db, tag_to_match=tag, category=category, + data=result, compare=compare) d.exec_() if d.result() == d.Accepted: # Clean up everything, as information could have changed for many books.