Files
krowlog/raven/plugins/ravenlogplugin.py
Andreas Huber 614968ca4b move the log file viewer to its own plugin
We plan to have multiple different types of tabs.
2021-12-04 16:53:02 +01:00

49 lines
1.7 KiB
Python

import sys
from typing import Optional
import constants
from aboutdialog import AboutDialog
from raven.mainwindow import MainWindow
from raven.pluginbase import PluginBase
from raven.pluginregistry import PluginRegistry
from raven.plugins.domain.menucontribution import MenuContribution
from raven.plugins.domain.raction import RAction
from raven.plugins.ravenlog.Tab import Tab
class RavenLogPlugin(PluginBase):
def __init__(self):
super(RavenLogPlugin, self).__init__()
self.main_window = None
def create_main_window(self):
if not self.main_window:
self.main_window = MainWindow()
return self.main_window
def get_menu_contributions(self) -> [MenuContribution]:
return [
MenuContribution("file", action=self._action_close(), action_id="close application", after="<last>"),
MenuContribution("help", action=self._action_about(), action_id="open about dialog", after="<last>"),
]
def current_file(self) -> Optional[str]:
return self.main_window.tabs.current_file()
def add_tab(self, tab: Tab):
self.main_window.tabs.add_tab(tab)
def _action_about(self) -> RAction:
about_action = RAction(
"&About",
action=lambda: AboutDialog().exec(),
icon_file=constants.raven_icon
)
return about_action
def _action_close(self) -> RAction:
icon = "close" if sys.platform == 'win32' or sys.platform == 'cygwin' else "exit"
close_action = RAction("E&xit", action=lambda: self.main_window.destruct(), shortcut='Ctrl+X',
icon_from_theme=icon)
return close_action