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 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"), MenuContribution("help", action=self._action_about(), action_id="open about dialog"), ] def current_file(self) -> Optional[str]: return self.main_window.tabs.current_file() def create_tab(self, file: str): self.main_window.tabs.create_tab(file) PluginRegistry.execute("after_open_file", file) 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