28 lines
819 B
Python
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)
|