49 lines
1.7 KiB
Python
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
|
|
|
|
|
|
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 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
|