|
|
|
|
@@ -5,7 +5,9 @@ import threading
|
|
|
|
|
from typing import Optional, Callable
|
|
|
|
|
|
|
|
|
|
from PySide6.QtCore import QRunnable, QThreadPool, Signal
|
|
|
|
|
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QCheckBox, QPushButton
|
|
|
|
|
from PySide6.QtGui import QIcon
|
|
|
|
|
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QCheckBox, QPushButton, QComboBox, \
|
|
|
|
|
QSizePolicy
|
|
|
|
|
|
|
|
|
|
from src.ui.bigtext.bigtext import BigText
|
|
|
|
|
from src.ui.bigtext.logFileModel import LogFileModel
|
|
|
|
|
@@ -96,14 +98,23 @@ class FilterWidget(QWidget):
|
|
|
|
|
self.layout = QVBoxLayout(self)
|
|
|
|
|
self.layout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
|
|
|
|
|
self.query_field = QLineEdit()
|
|
|
|
|
self.query_field.textChanged.connect(self.filter_changed)
|
|
|
|
|
self.query_field = QComboBox()
|
|
|
|
|
self.query_field.setEditable(True)
|
|
|
|
|
self.query_field.addItem("")
|
|
|
|
|
self.query_field.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
|
|
|
|
self.query_field.lineEdit().textChanged.connect(self.filter_changed)
|
|
|
|
|
self.query_field.lineEdit().returnPressed.connect(self.filter_changed)
|
|
|
|
|
self.query_field.setInsertPolicy(QComboBox.NoInsert)
|
|
|
|
|
|
|
|
|
|
self.btn_cancel_search = QPushButton(_("Cancel"))
|
|
|
|
|
self.btn_cancel_search.setVisible(False)
|
|
|
|
|
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.btn_bookmark = QPushButton(QIcon("icons/ionicons/star.svg"), "")
|
|
|
|
|
self.btn_bookmark.setToolTip(_("save query"))
|
|
|
|
|
self.btn_bookmark.pressed.connect(self._save_query)
|
|
|
|
|
|
|
|
|
|
self.ignore_case = QCheckBox(_("ignore case"))
|
|
|
|
|
self.ignore_case.setChecked(True)
|
|
|
|
|
self.ignore_case.stateChanged.connect(self.filter_changed)
|
|
|
|
|
@@ -117,6 +128,7 @@ class FilterWidget(QWidget):
|
|
|
|
|
filter_bar.layout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
filter_bar.layout.addWidget(self.query_field)
|
|
|
|
|
filter_bar.layout.addWidget(self.btn_cancel_search)
|
|
|
|
|
filter_bar.layout.addWidget(self.btn_bookmark)
|
|
|
|
|
filter_bar.layout.addWidget(self.ignore_case)
|
|
|
|
|
filter_bar.layout.addWidget(self.is_regex)
|
|
|
|
|
|
|
|
|
|
@@ -130,12 +142,31 @@ class FilterWidget(QWidget):
|
|
|
|
|
|
|
|
|
|
self.filter_match_found_listeners: [Callable[[int], None]] = []
|
|
|
|
|
|
|
|
|
|
def on_reveal(self):
|
|
|
|
|
self._reload_save_queries()
|
|
|
|
|
|
|
|
|
|
def _reload_save_queries(self):
|
|
|
|
|
current_text = self.query_field.currentText()
|
|
|
|
|
self.query_field.clear()
|
|
|
|
|
saved_queries = PluginRegistry.execute_single("saved_queries")
|
|
|
|
|
self.query_field.addItem("")
|
|
|
|
|
for saved_query in saved_queries:
|
|
|
|
|
self.query_field.addItem(saved_query)
|
|
|
|
|
|
|
|
|
|
self.query_field.setCurrentText(current_text)
|
|
|
|
|
|
|
|
|
|
def add_line_click_listener(self, listener: Callable[[int], None]):
|
|
|
|
|
self.hits_view.add_line_click_listener(listener)
|
|
|
|
|
|
|
|
|
|
def add_filter_match_found_listener(self, listener: Callable[[int], None]):
|
|
|
|
|
self.filter_match_found_listeners.append(listener)
|
|
|
|
|
|
|
|
|
|
def _save_query(self):
|
|
|
|
|
query = self.query_field.currentText()
|
|
|
|
|
if len(query) > 0:
|
|
|
|
|
PluginRegistry.execute("save_query", query)
|
|
|
|
|
self._reload_save_queries()
|
|
|
|
|
|
|
|
|
|
def destruct(self):
|
|
|
|
|
# print("cleanup: ", self.tmpfilename)
|
|
|
|
|
self._cancel_search()
|
|
|
|
|
@@ -156,7 +187,7 @@ class FilterWidget(QWidget):
|
|
|
|
|
PluginRegistry.execute("update_ui")
|
|
|
|
|
|
|
|
|
|
def filter_changed(self):
|
|
|
|
|
query = self.query_field.text()
|
|
|
|
|
query = self.query_field.currentText()
|
|
|
|
|
ignore_case = self.ignore_case.isChecked()
|
|
|
|
|
is_regex = self.is_regex.isChecked()
|
|
|
|
|
|
|
|
|
|
|