from __future__ import annotations from typing import List from PySide6.QtCore import QThread, Signal class SearchWorker(QThread): finished = Signal(list) def __init__(self, lines: List[str], needle: str, case_sensitive: bool) -> None: super().__init__() self._lines = lines self._needle = needle self._case_sensitive = case_sensitive def run(self) -> None: if not self._needle: self.finished.emit([]) return needle = self._needle if self._case_sensitive else self._needle.lower() matches: List[int] = [] for idx, line in enumerate(self._lines): hay = line if self._case_sensitive else line.lower() if needle in hay: matches.append(idx) self.finished.emit(matches)