import os.path from typing import Callable, Optional from PySide6.QtWidgets import QMessageBox from fulltabwidget import FullTabWidget from logFileModel import LogFileModel from raven.pluginbase import PluginBase from raven.plugins.ravenlog.Tab import Tab from settings import Settings from raven.i18n import _ class LogFilePlugin(PluginBase): def __init__(self): super(LogFilePlugin, self).__init__() self.settings = None def set_settings(self, settings: Settings): self.settings = settings 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) return tab