diff --git a/src/calibre/gui2/dialogs/template_dialog.py b/src/calibre/gui2/dialogs/template_dialog.py
index a228fb5c0d..f78e7a7383 100644
--- a/src/calibre/gui2/dialogs/template_dialog.py
+++ b/src/calibre/gui2/dialogs/template_dialog.py
@@ -254,12 +254,14 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
self.textbox_changed()
self.rule = (None, '')
- self.template_tutorial.setText(_('Template language tutorial: ') +
+ tt = _('Template language tutorial')
+ self.template_tutorial.setText(
''
- 'http://manual.calibre-ebook.com/template_lang.html')
- self.template_func_reference.setText(_('Template function reference: ') +
+ '%s'%tt)
+ tt = _('Template function reference')
+ self.template_func_reference.setText(
''
- 'http://manual.calibre-ebook.com/template_ref.html')
+ '%s'%tt)
def textbox_changed(self):
cur_text = unicode(self.textbox.toPlainText())
@@ -306,4 +308,4 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
return
self.rule = (unicode(self.colored_field.currentText()), txt)
- QDialog.accept(self)
\ No newline at end of file
+ QDialog.accept(self)
diff --git a/src/calibre/gui2/preferences/coloring.py b/src/calibre/gui2/preferences/coloring.py
index 49c7c2898c..f8376e9b84 100644
--- a/src/calibre/gui2/preferences/coloring.py
+++ b/src/calibre/gui2/preferences/coloring.py
@@ -192,6 +192,8 @@ class ConditionEditor(QWidget): # {{{
action = self.current_action
if not action:
return
+ m = self.fm[col]
+ dt = m['datatype']
tt = ''
if col == 'identifiers':
tt = _('Enter either an identifier type or an '
diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py
index 17bec7e0e8..601071a2ce 100644
--- a/src/calibre/library/caches.py
+++ b/src/calibre/library/caches.py
@@ -509,7 +509,8 @@ class ResultCache(SearchQueryParser): # {{{
valq_mkind, valq = self._matchkind(query)
loc = self.field_metadata[location]['rec_index']
- split_char = self.field_metadata[location]['is_multiple']['cache_to_list']
+ split_char = self.field_metadata[location]['is_multiple'].get(
+ 'cache_to_list', ',')
for id_ in candidates:
item = self._data[id_]
if item is None:
diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py
index 00ecccc78e..9a2a27aecc 100644
--- a/src/calibre/library/custom_columns.py
+++ b/src/calibre/library/custom_columns.py
@@ -575,7 +575,6 @@ class CustomColumns(object):
def custom_columns_in_meta(self):
lines = {}
for data in self.custom_column_label_map.values():
- display = data['display']
table, lt = self.custom_table_names(data['num'])
if data['normalized']:
query = '%s.value'
diff --git a/src/calibre/library/sqlite_custom.c b/src/calibre/library/sqlite_custom.c
index dee17c79d4..52f0be4575 100644
--- a/src/calibre/library/sqlite_custom.c
+++ b/src/calibre/library/sqlite_custom.c
@@ -141,6 +141,22 @@ static void sort_concat_finalize2(sqlite3_context *context) {
}
+static void sort_concat_finalize3(sqlite3_context *context) {
+ SortConcatList *list;
+ unsigned char *ans;
+
+ list = (SortConcatList*) sqlite3_aggregate_context(context, sizeof(*list));
+
+ if (list != NULL && list->vals != NULL && list->count > 0) {
+ qsort(list->vals, list->count, sizeof(list->vals[0]), sort_concat_cmp);
+ ans = sort_concat_do_finalize(list, '&');
+ if (ans != NULL) sqlite3_result_text(context, (char*)ans, -1, SQLITE_TRANSIENT);
+ free(ans);
+ sort_concat_free(list);
+ }
+
+}
+
// }}}
// identifiers_concat {{{
@@ -237,7 +253,8 @@ MYEXPORT int sqlite3_extension_init(
sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi){
SQLITE_EXTENSION_INIT2(pApi);
sqlite3_create_function(db, "sortconcat", 2, SQLITE_UTF8, NULL, NULL, sort_concat_step, sort_concat_finalize);
- sqlite3_create_function(db, "sort_concat", 2, SQLITE_UTF8, NULL, NULL, sort_concat_step, sort_concat_finalize2);
+ sqlite3_create_function(db, "sortconcat_bar", 2, SQLITE_UTF8, NULL, NULL, sort_concat_step, sort_concat_finalize2);
+ sqlite3_create_function(db, "sortconcat_amper", 2, SQLITE_UTF8, NULL, NULL, sort_concat_step, sort_concat_finalize3);
sqlite3_create_function(db, "identifiers_concat", 2, SQLITE_UTF8, NULL, NULL, identifiers_concat_step, identifiers_concat_finalize);
return 0;
}