diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py
index 3d79b01c14..ac10847f3d 100644
--- a/src/calibre/gui2/dialogs/metadata_single.py
+++ b/src/calibre/gui2/dialogs/metadata_single.py
@@ -375,6 +375,10 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
self.remove_unused_series)
QObject.connect(self.auto_author_sort, SIGNAL('clicked()'),
self.deduce_author_sort)
+ self.connect(self.author_sort, SIGNAL('textChanged(const QString&)'),
+ self.author_sort_box_changed)
+ self.connect(self.authors, SIGNAL('editTextChanged(const QString&)'),
+ self.authors_box_changed)
self.connect(self.formats, SIGNAL('itemDoubleClicked(QListWidgetItem*)'),
self.show_format)
self.connect(self.formats, SIGNAL('delete_format()'), self.remove_format)
@@ -467,6 +471,26 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
for c in range(2, len(ans[i].widgets), 2):
w.setTabOrder(ans[i].widgets[c-1], ans[i].widgets[c+1])
+ def authors_box_changed(self, txt):
+ aus = unicode(txt)
+ aus = re.sub(r'\s+et al\.$', '', aus)
+ aus = self.db.author_sort_from_authors(string_to_authors(aus))
+ self.mark_author_sort(normal=(unicode(self.author_sort.text()) == aus))
+
+ def author_sort_box_changed(self, txt):
+ au = unicode(self.authors.text())
+ au = re.sub(r'\s+et al\.$', '', au)
+ au = self.db.author_sort_from_authors(string_to_authors(au))
+ self.mark_author_sort(normal=(au == txt))
+
+ def mark_author_sort(self, normal=True):
+ if normal:
+ col = 'rgb(0, 255, 0, 20%)'
+ else:
+ col = 'rgb(255, 0, 0, 20%)'
+ self.author_sort.setStyleSheet('QLineEdit { color: black; '
+ 'background-color: %s; }'%col)
+
def validate_isbn(self, isbn):
isbn = unicode(isbn).strip()
if not isbn:
diff --git a/src/calibre/gui2/dialogs/metadata_single.ui b/src/calibre/gui2/dialogs/metadata_single.ui
index 7184192eba..74febf9c29 100644
--- a/src/calibre/gui2/dialogs/metadata_single.ui
+++ b/src/calibre/gui2/dialogs/metadata_single.ui
@@ -151,14 +151,16 @@
-
- Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles.
+ Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles.
+If the box is colored green, then text matches the individual author's sort strings. If it is colored red, then the authors and this text do not match.
-
- Automatically create the author sort entry based on the current author entry
+ Automatically create the author sort entry based on the current author entry.
+Using this button to create author sort will change author sort from red to green.
...