From 33c0827ca2bea3162cb09382afa24f0e94d5a18e Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sun, 20 Oct 2024 16:03:19 -0500 Subject: [PATCH] Moved args info to settings and restructured calls --- src/__main__.py | 17 +++++------ src/app.py | 12 ++++---- src/core/controllers/base_controller.py | 30 +++++++++++--------- src/core/controllers/base_controller_data.py | 9 ++++-- src/core/window.py | 10 +++---- src/libs/settings/manager.py | 27 +++++++++++------- 6 files changed, 60 insertions(+), 45 deletions(-) diff --git a/src/__main__.py b/src/__main__.py index b854e86..5b387cc 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -17,7 +17,7 @@ from app import Application -def main(args, unknownargs): +def main(): setproctitle(f'{APP_NAME}') settings_manager.set_start_load_time() @@ -28,7 +28,7 @@ def main(args, unknownargs): settings_manager.set_trace_debug(True) settings_manager.do_dirty_start_check() - Application(args, unknownargs) + Application() @@ -37,19 +37,20 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() # Add long and short arguments - parser.add_argument("--debug", "-d", default="false", help="Do extra console messaging.") - parser.add_argument("--trace-debug", "-td", default="false", help="Disable saves, ignore IPC lock, do extra console messaging.") - parser.add_argument("--no-plugins", "-np", default="false", help="Do not load plugins.") + parser.add_argument("--debug", "-d", default = "false", help = "Do extra console messaging.") + parser.add_argument("--trace-debug", "-td", default = "false", help = "Disable saves, ignore IPC lock, do extra console messaging.") + parser.add_argument("--no-plugins", "-np", default = "false", help = "Do not load plugins.") - parser.add_argument("--new-tab", "-nt", default="false", help="Opens a 'New Tab' if a handler is set for it.") - parser.add_argument("--file", "-f", default="default", help="JUST SOME FILE ARG.") + parser.add_argument("--new-tab", "-nt", default = "false", help = "Opens a 'New Tab' if a handler is set for it.") + parser.add_argument("--file", "-f", default = "default", help = "JUST SOME FILE ARG.") # Read arguments (If any...) args, unknownargs = parser.parse_known_args() + settings_manager.set_starting_args( args, unknownargs ) try: faulthandler.enable() # For better debug info - main(args, unknownargs) + main() except Exception as e: traceback.print_exc() quit() \ No newline at end of file diff --git a/src/app.py b/src/app.py index 02bf996..2f39b3b 100644 --- a/src/app.py +++ b/src/app.py @@ -19,18 +19,20 @@ class AppLaunchException(Exception): class Application: """ docstring for Application. """ - def __init__(self, args, unknownargs): + def __init__(self): super(Application, self).__init__() if not settings_manager.is_trace_debug(): - self.load_ipc(args, unknownargs) + self.load_ipc() self.setup_debug_hook() - Window(args, unknownargs).main() + Window().main() - def load_ipc(self, args, unknownargs): - ipc_server = IPCServer() + def load_ipc(self): + args, unknownargs = settings_manager.get_starting_args() + ipc_server = IPCServer() + self.ipc_realization_check(ipc_server) if not ipc_server.is_ipc_alive: diff --git a/src/core/controllers/base_controller.py b/src/core/controllers/base_controller.py index 7681c6a..db9d05a 100644 --- a/src/core/controllers/base_controller.py +++ b/src/core/controllers/base_controller.py @@ -17,24 +17,15 @@ from .bridge_controller import BridgeController class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData): - def __init__(self, args, unknownargs): - self.collect_files_dirs(args, unknownargs) - + def __init__(self): + self.collect_files_dirs() self.setup_controller_data() self._setup_styling() self._setup_signals() self._subscribe_to_events() self._load_controllers() - - if args.no_plugins == "false": - self.plugins_controller.pre_launch_plugins() - - if args.no_plugins == "false": - self.plugins_controller.post_launch_plugins() - - for file in settings_manager.get_starting_files(): - event_system.emit("post-file-to-ipc", file) + self._load_plugins_and_files() logger.info(f"Made it past {self.__class__} loading...") settings_manager.set_end_load_time() @@ -58,14 +49,25 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData): def _load_controllers(self): BridgeController() + def _load_plugins_and_files(self): + args, unknownargs = settings_manager.get_starting_args() + if args.no_plugins == "false": + self.plugins_controller.pre_launch_plugins() + + if args.no_plugins == "false": + self.plugins_controller.post_launch_plugins() + + for file in settings_manager.get_starting_files(): + event_system.emit("post-file-to-ipc", file) + def _tggl_top_main_menubar(self): logger.debug("_tggl_top_main_menubar > stub...") def _load_glade_file(self): - self.builder.add_from_file(settings_manager.get_glade_file()) + self.builder.add_from_file( settings_manager.get_glade_file() ) self.builder.expose_object("main_window", self.window) settings_manager.set_builder(self.builder) self.base_container = BaseContainer() - settings_manager.register_signals_to_builder([self, self.base_container]) + settings_manager.register_signals_to_builder([self, self.base_container]) \ No newline at end of file diff --git a/src/core/controllers/base_controller_data.py b/src/core/controllers/base_controller_data.py index 4581209..de531b4 100644 --- a/src/core/controllers/base_controller_data.py +++ b/src/core/controllers/base_controller_data.py @@ -28,8 +28,11 @@ class BaseControllerData: self._load_glade_file() - def collect_files_dirs(self, args, unknownargs): - files = [] + def collect_files_dirs(self): + args, \ + unknownargs = settings_manager.get_starting_args() + files = [] + for arg in unknownargs + [args.new_tab,]: if os.path.isdir( arg.replace("file://", "") ): files.append( f"DIR|{arg.replace('file://', '')}" ) @@ -97,4 +100,4 @@ class BaseControllerData: proc = subprocess.Popen(command, stdin = subprocess.PIPE) proc.stdin.write(data.encode(encoding)) proc.stdin.close() - retcode = proc.wait() + retcode = proc.wait() \ No newline at end of file diff --git a/src/core/window.py b/src/core/window.py index 1b09fb4..aec77f6 100644 --- a/src/core/window.py +++ b/src/core/window.py @@ -24,7 +24,7 @@ class ControllerStartExceptiom(Exception): class Window(Gtk.ApplicationWindow): """ docstring for Window. """ - def __init__(self, args, unknownargs): + def __init__(self): super(Window, self).__init__() settings_manager.set_main_window(self) @@ -34,7 +34,7 @@ class Window(Gtk.ApplicationWindow): self._setup_styling() self._setup_signals() self._subscribe_to_events() - self._load_widgets(args, unknownargs) + self._load_widgets() self._set_window_data() self._set_size_constraints() @@ -63,11 +63,11 @@ class Window(Gtk.ApplicationWindow): event_system.subscribe("tear-down", self._tear_down) event_system.subscribe("load-interactive-debug", self._load_interactive_debug) - def _load_widgets(self, args, unknownargs): + def _load_widgets(self): if settings_manager.is_debug(): self.set_interactive_debugging(True) - self._controller = BaseController(args, unknownargs) + self._controller = BaseController() self._status_icon = StatusIcon() if not self._controller: raise ControllerStartException("BaseController exited and doesn't exist...") @@ -135,4 +135,4 @@ class Window(Gtk.ApplicationWindow): Gtk.main_quit() def main(self): - Gtk.main() + Gtk.main() \ No newline at end of file diff --git a/src/libs/settings/manager.py b/src/libs/settings/manager.py index ed38192..5b77c38 100644 --- a/src/libs/settings/manager.py +++ b/src/libs/settings/manager.py @@ -156,14 +156,8 @@ class SettingsManager(StartCheckMixin, Singleton): def get_home_path(self) -> str: return self._USER_HOME def get_starting_files(self) -> list: return self._starting_files - def is_trace_debug(self) -> str: return self._trace_debug - def is_debug(self) -> str: return self._debug - def is_starting_with_file(self) -> bool: return self._passed_in_file - - def call_method(self, target_class: any = None, _method_name: str = "", data: any = None): - method_name = str(_method_name) - method = getattr(target_class, method_name, lambda data: f"No valid key passed...\nkey={method_name}\nargs={data}") - return method(data) if data else method() + def get_starting_args(self): + return self.args, self.unknownargs def set_main_window_x(self, x: int = 0): self.settings.config.main_window_x = x def set_main_window_y(self, y: int = 0): self.settings.config.main_window_y = y @@ -172,10 +166,12 @@ class SettingsManager(StartCheckMixin, Singleton): def set_main_window_min_width(self, width: int = 720): self.settings.config.main_window_min_width = width def set_main_window_min_height(self, height: int = 480): self.settings.config.main_window_min_height = height def set_starting_files(self, files: list): self._starting_files = files - def set_start_load_time(self): self._start_load_time = time.perf_counter() def set_end_load_time(self): self._end_load_time = time.perf_counter() - def log_load_time(self): logger.info( f"Load Time: {self._end_load_time - self._start_load_time}" ) + + def set_starting_args(self, args, unknownargs): + self.args = args + self.unknownargs = unknownargs def set_trace_debug(self, trace_debug: bool): self._trace_debug = trace_debug @@ -186,6 +182,17 @@ class SettingsManager(StartCheckMixin, Singleton): def set_is_starting_with_file(self, is_passed_in_file: bool = False): self._passed_in_file = is_passed_in_file + def is_trace_debug(self) -> str: return self._trace_debug + def is_debug(self) -> str: return self._debug + def is_starting_with_file(self) -> bool: return self._passed_in_file + + def log_load_time(self): logger.info( f"Load Time: {self._end_load_time - self._start_load_time}" ) + + def call_method(self, target_class: any = None, _method_name: str = "", data: any = None): + method_name = str(_method_name) + method = getattr(target_class, method_name, lambda data: f"No valid key passed...\nkey={method_name}\nargs={data}") + return method(data) if data else method() + def load_settings(self): if not path.exists(self._CONFIG_FILE): self.settings = Settings()