respect range limit when searching
This commit is contained in:
@@ -68,12 +68,19 @@ class FilterTask(QRunnable):
|
||||
last_progress_report = time.time()
|
||||
try:
|
||||
with open(self.source_model.get_file(), "rb") as source:
|
||||
source.seek(self.source_model.range_start)
|
||||
source_position = source.tell()
|
||||
with open(self.filter_model.get_file(), "w+b") as target:
|
||||
line_count = 0
|
||||
lines_written = 0
|
||||
while line_encoded := source.readline():
|
||||
if 0 < self.source_model.range_end < source_position:
|
||||
break
|
||||
|
||||
line_count = line_count + 1
|
||||
|
||||
line = line_encoded.decode("utf8", errors="ignore")
|
||||
source_position = source_position + len(line_encoded)
|
||||
|
||||
if self.regex.findall(line):
|
||||
lines_written = lines_written + 1
|
||||
|
||||
@@ -170,6 +170,8 @@ class InnerBigText(QWidget):
|
||||
self._range_start = range_start
|
||||
self._range_end = range_end
|
||||
|
||||
self.model.setRange(range_start, range_end)
|
||||
|
||||
self._v_scaled_scrollbar.setMinimum(max(0, self._range_start))
|
||||
self._v_scaled_scrollbar.setMaximum(min(self._v_scaled_scrollbar.maximum(), range_end))
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ class LogFileModel:
|
||||
|
||||
_file_size = -1
|
||||
|
||||
range_start = 0
|
||||
range_end = -1
|
||||
|
||||
def __init__(self, file: str, settings: Settings):
|
||||
self.settings = settings
|
||||
self._file = os.path.realpath(file)
|
||||
@@ -31,6 +34,10 @@ class LogFileModel:
|
||||
def __str__(self):
|
||||
return self._file
|
||||
|
||||
def setRange(self, range_start: int, range_end: int):
|
||||
self.range_start = range_start
|
||||
self.range_end = range_end
|
||||
|
||||
def get_query_highlight(self) -> Optional[HighlightRegex]:
|
||||
if not self.settings.session.getboolean("general", "highlight_search_term"):
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user