Files
krowlog/src/plugins/logfileplugin.py

71 lines
2.5 KiB
Python

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="<last>"),
]
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))