56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
import sys
|
|
from typing import Optional
|
|
|
|
from PyQt6.QtCore import Qt
|
|
from PyQt6.QtWidgets import QDockWidget, QLabel
|
|
|
|
import constants
|
|
from aboutdialog import AboutDialog
|
|
from raven.mainwindow import MainWindow
|
|
from raven.pluginbase import PluginBase
|
|
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 add_dock(self, area: Qt.DockWidgetArea, widget: Tab):
|
|
dock_widget = QDockWidget(widget.title, self.main_window)
|
|
dock_widget.setWidget(widget)
|
|
self.main_window.addDockWidget(area, dock_widget)
|
|
|
|
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
|