use signals to enable/disable the cancel button

This commit is contained in:
2022-02-20 08:36:54 +01:00
parent d28c870a0a
commit 916eac5134

View File

@@ -4,7 +4,7 @@ import tempfile
import threading import threading
from typing import Optional, Callable from typing import Optional, Callable
from PySide6.QtCore import QRunnable, QThreadPool from PySide6.QtCore import QRunnable, QThreadPool, Signal
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QCheckBox, QPushButton from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QCheckBox, QPushButton
from src.ui.bigtext.bigtext import BigText from src.ui.bigtext.bigtext import BigText
@@ -85,6 +85,7 @@ class FilterTask(QRunnable):
class FilterWidget(QWidget): class FilterWidget(QWidget):
filter_model: LogFileModel filter_model: LogFileModel
filter_task: Optional[FilterTask] = None filter_task: Optional[FilterTask] = None
search_is_running = Signal(bool)
def __init__(self, source_model: LogFileModel): def __init__(self, source_model: LogFileModel):
super(FilterWidget, self).__init__() super(FilterWidget, self).__init__()
@@ -101,6 +102,7 @@ class FilterWidget(QWidget):
self.btn_cancel_search = QPushButton(_("Cancel")) self.btn_cancel_search = QPushButton(_("Cancel"))
self.btn_cancel_search.setVisible(False) self.btn_cancel_search.setVisible(False)
self.btn_cancel_search.pressed.connect(self._cancel_search) self.btn_cancel_search.pressed.connect(self._cancel_search)
self.search_is_running.connect(lambda is_running: self.btn_cancel_search.setVisible(is_running))
self.ignore_case = QCheckBox(_("ignore case")) self.ignore_case = QCheckBox(_("ignore case"))
self.ignore_case.setChecked(True) self.ignore_case.setChecked(True)
@@ -185,7 +187,7 @@ class FilterWidget(QWidget):
regex, regex,
self._lock, self._lock,
self.filter_match_found_listeners, self.filter_match_found_listeners,
lambda: self.btn_cancel_search.setVisible(True), lambda: self.search_is_running.emit(True),
lambda: self.btn_cancel_search.setVisible(False) lambda: self.search_is_running.emit(False)
) )
QThreadPool.globalInstance().start(self.filter_task) QThreadPool.globalInstance().start(self.filter_task)