import os.path from typing import Optional from PySide6.QtWidgets import QMessageBox from src.pluginregistry import PluginRegistry from src.plugins.domain.menucontribution import MenuContribution from src.plugins.domain.raction import RAction from src.plugins.logfile.fulltabwidget import FullTabWidget from src.ui.bigtext.logFileModel import LogFileModel from src.pluginbase import PluginBase from src.plugins.krowlog.Tab import Tab from src.settings.settings import Settings from src.i18n import _ from src.ui.bigtext.newhighlightingdialog import NewHighlightingDialog class LogFilePlugin(PluginBase): def __init__(self): super(LogFilePlugin, self).__init__() self.settings = None def set_settings(self, settings: Settings): self.settings = settings def get_menu_contributions(self) -> [MenuContribution]: return [ MenuContribution("settings", action=self._action_highlighter(), action_id="new highlighter", after=""), ] def _action_highlighter(self): manage = RAction( _("&Highlighter"), action=lambda: NewHighlightingDialog(self.settings).exec(), shortcut='Ctrl+H' ) return manage def create_tab(self, file: str) -> Optional[Tab]: if not os.path.isfile(file): message = QMessageBox(QMessageBox.Icon.Warning, _("File not found"), _("'{0}' is not a file or cannot be opened").format(file)) message.exec() return None realpath = os.path.realpath(file) filename = os.path.basename(realpath) model = LogFileModel(file, self.settings) tab = FullTabWidget(model, unique_id=realpath, title=filename, zoned_plugin_registry=PluginRegistry.create_zoned_plugin_registry()) return tab def saved_queries(self) -> [str]: saved_queries = self.settings.get_session("general", "saved_queries", "").splitlines() if "" in saved_queries: saved_queries.remove("") saved_queries.sort() return saved_queries def save_query(self, query: str): saved_queries = self.settings.get_session("general", "saved_queries", "").splitlines() if "" in saved_queries: saved_queries.remove("") if not query in saved_queries: saved_queries.append(query) self.settings.set_session("general", "saved_queries", "\n".join(saved_queries))