diff --git a/src/core/builder_wrapper.py b/src/core/builder_wrapper.py new file mode 100644 index 0000000..9245da9 --- /dev/null +++ b/src/core/builder_wrapper.py @@ -0,0 +1,33 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class BuilderWrapper(Gtk.Builder): + """docstring for BuilderWrapper.""" + + def __init__(self): + super(BuilderWrapper, self).__init__() + + self.objects = {} + + def get_object(self, id: str, use_gtk: bool = True) -> any: + if not use_gtk: + return self.objects[id] + + return super(BuilderWrapper, self).get_object(id) + + def expose_object(self, id: str, object: any, use_gtk: bool = True) -> None: + if not use_gtk: + self.objects[id] = object + else: + super(BuilderWrapper, self).expose_object(id, object) + + def dereference_object(self, id: str) -> None: + del self.objects[id] diff --git a/src/core/controllers/base_controller.py b/src/core/controllers/base_controller.py index 42280ac..1728ca1 100644 --- a/src/core/controllers/base_controller.py +++ b/src/core/controllers/base_controller.py @@ -56,12 +56,12 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData): def _tggl_top_main_menubar(self): logger.debug("_tggl_top_main_menubar > stub...") - def setup_builder_and_container(self): - self.builder = Gtk.Builder() + def _load_glade_file(self): 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]) \ No newline at end of file + settings_manager.register_signals_to_builder([self, self.base_container]) + diff --git a/src/core/controllers/base_controller_data.py b/src/core/controllers/base_controller_data.py index 3a5c7da..23f7461 100644 --- a/src/core/controllers/base_controller_data.py +++ b/src/core/controllers/base_controller_data.py @@ -7,6 +7,7 @@ from shutil import which # Application imports from plugins.plugins_controller import PluginsController +from ..builder_wrapper import BuilderWrapper @@ -15,14 +16,15 @@ class BaseControllerData: def setup_controller_data(self) -> None: self.window = settings_manager.get_main_window() - self.builder = None + self.builder = BuilderWrapper() + self.base_container = None self.was_midified_key = False self.ctrl_down = False self.shift_down = False self.alt_down = False - self.setup_builder_and_container() + self._load_glade_file() self.plugins = PluginsController() def collect_files_dirs(self, args, unknownargs):