2026-02-06 09:52:23 +08:00

28 lines
819 B
Python

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)