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; }