diff --git a/src/plugins/logfile/filterwidget.py b/src/plugins/logfile/filterwidget.py index 5c0a05d..eda73e1 100644 --- a/src/plugins/logfile/filterwidget.py +++ b/src/plugins/logfile/filterwidget.py @@ -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 diff --git a/src/ui/bigtext/bigtext.py b/src/ui/bigtext/bigtext.py index b5d5416..8956733 100644 --- a/src/ui/bigtext/bigtext.py +++ b/src/ui/bigtext/bigtext.py @@ -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)) diff --git a/src/ui/bigtext/logFileModel.py b/src/ui/bigtext/logFileModel.py index 6d06b98..eadce9f 100644 --- a/src/ui/bigtext/logFileModel.py +++ b/src/ui/bigtext/logFileModel.py @@ -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