From 6dc8abdc766f1c3adf5129f257b20a593bbd43bc Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 27 May 2010 14:53:50 -0600 Subject: [PATCH] Sort tags case insensitively inthe Tag Editor --- src/calibre/gui2/dialogs/tag_editor.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/dialogs/tag_editor.py b/src/calibre/gui2/dialogs/tag_editor.py index 9959e07f51..34c61914fe 100644 --- a/src/calibre/gui2/dialogs/tag_editor.py +++ b/src/calibre/gui2/dialogs/tag_editor.py @@ -9,6 +9,9 @@ from calibre.constants import islinux class TagEditor(QDialog, Ui_TagEditor): + def tag_cmp(self, x, y): + return cmp(x.lower(), y.lower()) + def __init__(self, window, db, index=None): QDialog.__init__(self, window) Ui_TagEditor.__init__(self) @@ -22,7 +25,7 @@ class TagEditor(QDialog, Ui_TagEditor): tags = [] if tags: tags = [tag.strip() for tag in tags.split(',') if tag.strip()] - tags.sort() + tags.sort(cmp=self.tag_cmp) for tag in tags: self.applied_tags.addItem(tag) else: @@ -32,7 +35,7 @@ class TagEditor(QDialog, Ui_TagEditor): all_tags = [tag for tag in self.db.all_tags()] all_tags = list(set(all_tags)) - all_tags.sort() + all_tags.sort(cmp=self.tag_cmp) for tag in all_tags: if tag not in tags: self.available_tags.addItem(tag) @@ -79,7 +82,7 @@ class TagEditor(QDialog, Ui_TagEditor): self.tags.append(tag) self.available_tags.takeItem(self.available_tags.row(item)) - self.tags.sort() + self.tags.sort(cmp=self.tag_cmp) self.applied_tags.clear() for tag in self.tags: self.applied_tags.addItem(tag) @@ -93,12 +96,17 @@ class TagEditor(QDialog, Ui_TagEditor): self.tags.remove(tag) self.available_tags.addItem(tag) - self.tags.sort() + self.tags.sort(cmp=self.tag_cmp) self.applied_tags.clear() for tag in self.tags: self.applied_tags.addItem(tag) - self.available_tags.sortItems() + items = [unicode(self.available_tags.item(x).text()) for x in + range(self.available_tags.count())] + items.sort(cmp=self.tag_cmp) + self.available_tags.clear() + for item in items: + self.available_tags.addItem(item) def add_tag(self): tags = unicode(self.add_tag_input.text()).split(',') @@ -109,7 +117,7 @@ class TagEditor(QDialog, Ui_TagEditor): if tag not in self.tags: self.tags.append(tag) - self.tags.sort() + self.tags.sort(cmp=self.tag_cmp) self.applied_tags.clear() for tag in self.tags: self.applied_tags.addItem(tag)