mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 18:24:30 -04:00
Collapse identical (upto spaces) matches from different formats
This commit is contained in:
parent
22596d077a
commit
53da2ebd54
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import traceback
|
import traceback
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from itertools import count
|
from itertools import count
|
||||||
@ -21,6 +22,7 @@ from calibre.gui2.ui import get_gui
|
|||||||
from calibre.gui2.viewer.widgets import ResultsDelegate, SearchBox
|
from calibre.gui2.viewer.widgets import ResultsDelegate, SearchBox
|
||||||
|
|
||||||
ROOT = QModelIndex()
|
ROOT = QModelIndex()
|
||||||
|
sanitize_text_pat = re.compile(r'\s+')
|
||||||
|
|
||||||
|
|
||||||
class SearchDelegate(ResultsDelegate):
|
class SearchDelegate(ResultsDelegate):
|
||||||
@ -47,14 +49,26 @@ class Results:
|
|||||||
|
|
||||||
def __init__(self, book_id):
|
def __init__(self, book_id):
|
||||||
self.book_id = book_id
|
self.book_id = book_id
|
||||||
self.search_results = []
|
self.text_map = {}
|
||||||
self.append = self.search_results.append
|
self.texts = []
|
||||||
|
self.formats = []
|
||||||
|
|
||||||
|
def add_result_with_text(self, result):
|
||||||
|
text = result['text']
|
||||||
|
q = sanitize_text_pat.sub('', text)
|
||||||
|
fmt = result['format']
|
||||||
|
i = self.text_map.get(q)
|
||||||
|
if i is None:
|
||||||
|
i = self.text_map[q] = len(self.texts)
|
||||||
|
self.texts.append(result)
|
||||||
|
self.formats.append(set())
|
||||||
|
self.formats[i].add(fmt)
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(self.search_results)
|
return len(self.texts)
|
||||||
|
|
||||||
def __getitem__(self, x):
|
def __getitem__(self, x):
|
||||||
return self.search_results[x]
|
return self.texts[x]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def title(self):
|
def title(self):
|
||||||
@ -143,7 +157,7 @@ class ResultsModel(QAbstractItemModel):
|
|||||||
parent_idx = self.index(i, 0)
|
parent_idx = self.index(i, 0)
|
||||||
r = len(parent)
|
r = len(parent)
|
||||||
self.beginInsertRows(parent_idx, r, r)
|
self.beginInsertRows(parent_idx, r, r)
|
||||||
parent.append(result)
|
parent.add_result_with_text(result)
|
||||||
self.endInsertRows()
|
self.endInsertRows()
|
||||||
|
|
||||||
def signal_search_complete(self, query_id):
|
def signal_search_complete(self, query_id):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user