diff --git a/main.py b/main.py index 0a0462f..998e6f1 100644 --- a/main.py +++ b/main.py @@ -57,12 +57,14 @@ if __name__ == "__main__": window = PluginRegistry.execute_single("create_main_window") window.show() - PluginRegistry.execute("open_file", - "/home/andi/ws/performanceDb/data/production/lt_axc_21.4_133.02_maxInstance/" - + "lt_axc_21.4_133.02_maxInstance/app/axcng-service_i-0a69bd43d3624a5bc_172_28_" - + "60_222_VADPERFO01AA001_2021-09-21_091717/service/service.log") - PluginRegistry.execute("open_file", - "testbed/example.log") + PluginRegistry.execute("after_start") + + # PluginRegistry.execute("open_file", + # "/home/andi/ws/performanceDb/data/production/lt_axc_21.4_133.02_maxInstance/" + # + "lt_axc_21.4_133.02_maxInstance/app/axcng-service_i-0a69bd43d3624a5bc_172_28_" + # + "60_222_VADPERFO01AA001_2021-09-21_091717/service/service.log") + # PluginRegistry.execute("open_file", + # "testbed/example.log") signal.signal(signal.SIGINT, stop_signal) signal.signal(signal.SIGTERM, stop_signal) diff --git a/raven/mainwindow.py b/raven/mainwindow.py index b2dae17..6b1709b 100644 --- a/raven/mainwindow.py +++ b/raven/mainwindow.py @@ -144,6 +144,7 @@ class MainWindow(QMainWindow): self.destruct() def destruct(self): + PluginRegistry.execute("before_shutdown") self.tabs.destruct() self.close() SettingsStore.save(self.settings) diff --git a/raven/plugins/openfileplugin.py b/raven/plugins/openfileplugin.py index 92efeae..9888fbf 100644 --- a/raven/plugins/openfileplugin.py +++ b/raven/plugins/openfileplugin.py @@ -82,3 +82,17 @@ class OpenFilePlugin(PluginBase): def after_open_file(self, file: str): self._remember_recent_file(file) + + def after_start(self): + open_files_as_string = self.settings.get_session('general', 'open_files', fallback='') + files = open_files_as_string.split(os.pathsep) + if "" in files: + files.remove("") + for file in files: + self.open_file(file) + + def before_shutdown(self): + open_files = PluginRegistry.execute_single("get_open_files") + if open_files: + open_files_as_string = os.pathsep.join(open_files) + self.settings.set_session('general', 'open_files', open_files_as_string) diff --git a/raven/plugins/ravenlogplugin.py b/raven/plugins/ravenlogplugin.py index aef2cd2..86fb3a0 100644 --- a/raven/plugins/ravenlogplugin.py +++ b/raven/plugins/ravenlogplugin.py @@ -5,6 +5,7 @@ from PySide6.QtCore import Qt from PySide6.QtWidgets import QDockWidget, QMessageBox import constants +from raven.pluginregistry import PluginRegistry from raven.plugins.ravenlog.aboutdialog import AboutDialog from raven.mainwindow import MainWindow from raven.pluginbase import PluginBase @@ -75,6 +76,9 @@ class RavenLogPlugin(PluginBase): def current_file(self) -> Optional[str]: return self.main_window.tabs.current_file() + def get_open_files(self) -> [str]: + return self.main_window.tabs.open_files(); + def update_window_title(self, title: str): if len(title) > 0: self.main_window.setWindowTitle(_("{0} - RavenLog").format(title)) diff --git a/raven/settings/settings.py b/raven/settings/settings.py index e65df80..e4e0a3d 100644 --- a/raven/settings/settings.py +++ b/raven/settings/settings.py @@ -9,8 +9,8 @@ class Settings(): def set_session(self, section: str, option: str, value: str): return self.session.set(section, option, value) - def get_session(self, section: str, option: str) -> str: - return self.session.get(section, option) + def get_session(self, section: str, option: str, fallback: str = object()) -> str: + return self.session.get(section, option, fallback=fallback) def getint_session(self, section: str, option: str) -> int: return self.session.getint(section, option) diff --git a/raven/ui/tabs.py b/raven/ui/tabs.py index a7759fa..4d1d52d 100644 --- a/raven/ui/tabs.py +++ b/raven/ui/tabs.py @@ -62,3 +62,10 @@ class Tabs(QWidget): tab: Tab = self.tabs.widget(self.tabs.currentIndex()) return tab.get_file() + + def open_files(self) -> [str]: + result = [] + for i in range(self.tabs.count()): + tab: Tab = self.tabs.widget(i) + result.append(tab.get_file()) + return result