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