mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix bug where the option "recognize numbers inside text" wasn't used when first-letter-sorting is turned on but the column isn't partitioned.
This commit is contained in:
parent
3c7b3591a4
commit
821813cbb2
@ -1542,12 +1542,13 @@ class Cache:
|
|||||||
|
|
||||||
@api
|
@api
|
||||||
def get_categories(self, sort='name', book_ids=None, already_fixed=None,
|
def get_categories(self, sort='name', book_ids=None, already_fixed=None,
|
||||||
first_letter_sort=False):
|
first_letter_sort=False, uncollapsed_categories=None):
|
||||||
' Used internally to implement the Tag Browser '
|
' Used internally to implement the Tag Browser '
|
||||||
try:
|
try:
|
||||||
with self.safe_read_lock:
|
with self.safe_read_lock:
|
||||||
return get_categories(self, sort=sort, book_ids=book_ids,
|
return get_categories(self, sort=sort, book_ids=book_ids,
|
||||||
first_letter_sort=first_letter_sort)
|
first_letter_sort=first_letter_sort,
|
||||||
|
uncollapsed_categories=uncollapsed_categories)
|
||||||
except InvalidLinkTable as err:
|
except InvalidLinkTable as err:
|
||||||
bad_field = err.field_name
|
bad_field = err.field_name
|
||||||
if bad_field == already_fixed:
|
if bad_field == already_fixed:
|
||||||
|
@ -193,7 +193,7 @@ category_sort_keys[False]['name'] = sort_key_for_name
|
|||||||
# dict being in the default display order: standard fields, custom in alpha order,
|
# dict being in the default display order: standard fields, custom in alpha order,
|
||||||
# user categories, then saved searches. This works because the backend adds
|
# user categories, then saved searches. This works because the backend adds
|
||||||
# custom columns to field metadata in the right order.
|
# custom columns to field metadata in the right order.
|
||||||
def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False):
|
def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False, uncollapsed_categories=None):
|
||||||
if sort not in CATEGORY_SORTS:
|
if sort not in CATEGORY_SORTS:
|
||||||
raise ValueError('sort ' + sort + ' not a valid value')
|
raise ValueError('sort ' + sort + ' not a valid value')
|
||||||
|
|
||||||
@ -213,9 +213,10 @@ def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False)
|
|||||||
return ans
|
return ans
|
||||||
|
|
||||||
bids = None
|
bids = None
|
||||||
first_letter_sort = bool(first_letter_sort)
|
uncollapsed_categories = () if uncollapsed_categories is None else uncollapsed_categories
|
||||||
|
|
||||||
for category, is_multiple, is_composite in find_categories(fm):
|
for category, is_multiple, is_composite in find_categories(fm):
|
||||||
|
fl_sort = False if category in uncollapsed_categories else bool(first_letter_sort)
|
||||||
tag_class = create_tag_class(category, fm)
|
tag_class = create_tag_class(category, fm)
|
||||||
sort_on, reverse = sort, False
|
sort_on, reverse = sort, False
|
||||||
if is_composite:
|
if is_composite:
|
||||||
@ -240,7 +241,7 @@ def get_categories(dbcache, sort='name', book_ids=None, first_letter_sort=False)
|
|||||||
cat['is_multiple'] and cat['display'].get('is_names', False)):
|
cat['is_multiple'] and cat['display'].get('is_names', False)):
|
||||||
for item in cats:
|
for item in cats:
|
||||||
item.sort = author_to_author_sort(item.sort)
|
item.sort = author_to_author_sort(item.sort)
|
||||||
cats.sort(key=partial(category_sort_keys[first_letter_sort][sort_on],
|
cats.sort(key=partial(category_sort_keys[fl_sort][sort_on],
|
||||||
hierarchical_categories=hierarchical_categories),
|
hierarchical_categories=hierarchical_categories),
|
||||||
reverse=reverse)
|
reverse=reverse)
|
||||||
categories[category] = cats
|
categories[category] = cats
|
||||||
|
@ -1274,6 +1274,12 @@ class TagsModel(QAbstractItemModel): # {{{
|
|||||||
self.row_map = []
|
self.row_map = []
|
||||||
self.categories = OrderedDict()
|
self.categories = OrderedDict()
|
||||||
|
|
||||||
|
# We need to pass this to get_categories so it can adjust how it sorts
|
||||||
|
# the values. The "first_letter_sort" argument is the default. It is
|
||||||
|
# changed to False by get_categories() if the category is not collapsed
|
||||||
|
uncollapsed_categories = self.db.prefs.get('tag_browser_dont_collapse',
|
||||||
|
self.prefs['tag_browser_dont_collapse'])
|
||||||
|
|
||||||
# Get the categories
|
# Get the categories
|
||||||
try:
|
try:
|
||||||
# We must disable the in_tag_browser ids because we want all the
|
# We must disable the in_tag_browser ids because we want all the
|
||||||
@ -1283,12 +1289,14 @@ class TagsModel(QAbstractItemModel): # {{{
|
|||||||
self.db.data.set_in_tag_browser(None)
|
self.db.data.set_in_tag_browser(None)
|
||||||
data = self.db.new_api.get_categories(sort=sort,
|
data = self.db.new_api.get_categories(sort=sort,
|
||||||
book_ids=self.get_book_ids_to_use(),
|
book_ids=self.get_book_ids_to_use(),
|
||||||
first_letter_sort=self.collapse_model == 'first letter')
|
first_letter_sort=(self.collapse_model == 'first letter'),
|
||||||
|
uncollapsed_categories=uncollapsed_categories)
|
||||||
self.db.data.set_in_tag_browser(old_in_tb)
|
self.db.data.set_in_tag_browser(old_in_tb)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
data = self.db.new_api.get_categories(sort=sort,
|
data = self.db.new_api.get_categories(sort=sort,
|
||||||
first_letter_sort=self.collapse_model == 'first letter')
|
first_letter_sort=(self.collapse_model == 'first letter'),
|
||||||
|
uncollapsed_categories=uncollapsed_categories)
|
||||||
self.restriction_error.emit(str(e))
|
self.restriction_error.emit(str(e))
|
||||||
|
|
||||||
if self.filter_categories_by:
|
if self.filter_categories_by:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user