From a617d772e44c7f985ba52f832a6e4a7f18b2f879 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Aug 2011 12:14:13 -0600 Subject: [PATCH] Show the languages currently used at the top of the drop down list of languages --- src/calibre/gui2/dialogs/metadata_bulk.py | 1 + src/calibre/gui2/languages.py | 9 +++++++-- src/calibre/gui2/library/delegates.py | 3 ++- src/calibre/gui2/metadata/basic_widgets.py | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 6e9dcf5116..1325bd7c2f 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -335,6 +335,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): geom = gprefs.get('bulk_metadata_window_geometry', None) if geom is not None: self.restoreGeometry(bytes(geom)) + self.languages.init_langs(self.db) self.languages.setEditText('') self.exec_() diff --git a/src/calibre/gui2/languages.py b/src/calibre/gui2/languages.py index d7f34df1b4..0dfbb38b08 100644 --- a/src/calibre/gui2/languages.py +++ b/src/calibre/gui2/languages.py @@ -13,7 +13,7 @@ from calibre.utils.icu import sort_key, lower class LanguagesEdit(MultiCompleteComboBox): - def __init__(self, parent=None): + def __init__(self, parent=None, db=None): MultiCompleteComboBox.__init__(self, parent) self.setSizeAdjustPolicy(self.AdjustToMinimumContentsLengthWithIcon) @@ -23,9 +23,14 @@ class LanguagesEdit(MultiCompleteComboBox): self.comma_map = {k:k.replace(',', '|') for k in self.names_with_commas} self.comma_rmap = {v:k for k, v in self.comma_map.iteritems()} self._rmap = {lower(v):k for k,v in self._lang_map.iteritems()} + if db is not None: + self.init_langs(db) + def init_langs(self, db): + pmap = {self._lang_map.get(x[1], x[1]):1 for x in + db.get_languages_with_ids()} all_items = sorted(self._lang_map.itervalues(), - key=sort_key) + key=lambda x: (-pmap.get(x, 0), sort_key(x))) self.update_items_cache(all_items) for item in all_items: self.addItem(item) diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index 64c94980be..880d70c5a6 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -233,7 +233,8 @@ class CompleteDelegate(QStyledItemDelegate): # {{{ class LanguagesDelegate(QStyledItemDelegate): # {{{ def createEditor(self, parent, option, index): - editor = LanguagesEdit(parent) + editor = LanguagesEdit(parent=parent) + editor.init_langs(index.model().db) ct = index.data(Qt.DisplayRole).toString() editor.setEditText(ct) editor.lineEdit().selectAll() diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py index 3ec34938af..95b963efac 100644 --- a/src/calibre/gui2/metadata/basic_widgets.py +++ b/src/calibre/gui2/metadata/basic_widgets.py @@ -1163,6 +1163,7 @@ class LanguagesEdit(LE): # {{{ return property(fget=fget, fset=fset) def initialize(self, db, id_): + self.init_langs(db) lc = [] langs = db.languages(id_, index_is_id=True) if langs: