removed endpoint_registery; relocated builder_wrapper to be widget_registery under libs/

This commit is contained in:
2026-01-19 13:50:07 -06:00
parent c6b10ceb17
commit 4ce4d85842
10 changed files with 93 additions and 96 deletions

View File

@@ -9,10 +9,10 @@ import sys
# Application imports # Application imports
# from libs.db import DB # from libs.db import DB
from libs.event_system import EventSystem from libs.event_system import EventSystem
from libs.endpoint_registry import EndpointRegistry
from libs.keybindings import Keybindings from libs.keybindings import Keybindings
from libs.logger import Logger from libs.logger import Logger
from libs.settings.manager import SettingsManager from libs.settings.manager import SettingsManager
from libs.widget_registery import WidgetRegisteryController
@@ -34,12 +34,8 @@ def daemon_threaded_wrapper(fn):
def call_chain_wrapper(fn): def call_chain_wrapper(fn):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
print()
print()
for line in traceback.format_stack(): for line in traceback.format_stack():
print( line.strip() ) print( line.strip() )
print()
print()
return fn(*args, **kwargs) return fn(*args, **kwargs)
return wrapper return wrapper
@@ -51,8 +47,8 @@ builtins.APP_NAME = "<change_me>"
builtins.keybindings = Keybindings() builtins.keybindings = Keybindings()
builtins.event_system = EventSystem() builtins.event_system = EventSystem()
builtins.endpoint_registry = EndpointRegistry()
builtins.settings_manager = SettingsManager() builtins.settings_manager = SettingsManager()
builtins.widget_registery = WidgetRegisteryController()
# builtins.db = DB() # builtins.db = DB()
settings_manager.load_settings() settings_manager.load_settings()

View File

@@ -1,33 +0,0 @@
# 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]

View File

@@ -14,7 +14,6 @@ class CenterContainer(Gtk.Box):
def __init__(self): def __init__(self):
super(CenterContainer, self).__init__() super(CenterContainer, self).__init__()
self._builder = settings_manager.get_builder()
self._setup_styling() self._setup_styling()
self._setup_signals() self._setup_signals()
@@ -39,7 +38,7 @@ class CenterContainer(Gtk.Box):
... ...
def _load_widgets(self): def _load_widgets(self):
glade_box = self._builder.get_object("glade_box") glade_box = widget_registery.get_object("glade_box")
button = Gtk.Button(label = "Click Me!") button = Gtk.Button(label = "Click Me!")
button.connect("clicked", self._hello_world) button.connect("clicked", self._hello_world)

View File

@@ -6,17 +6,19 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk from gi.repository import Gtk
# Application imports # Application imports
from plugins import plugins_controller
from libs.mixins.ipc_signals_mixin import IPCSignalsMixin from libs.mixins.ipc_signals_mixin import IPCSignalsMixin
from libs.mixins.keyboard_signals_mixin import KeyboardSignalsMixin from libs.mixins.keyboard_signals_mixin import KeyboardSignalsMixin
from ..containers.base_container import BaseContainer from ..containers.base_container import BaseContainer
from .base_controller_data import BaseControllerData from .base_controller_mixin import BaseControllerMixin
from .bridge_controller import BridgeController from .bridge_controller import BridgeController
class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData): class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerMixin):
""" docstring for BaseController. """ """ docstring for BaseController. """
def __init__(self): def __init__(self):
@@ -33,6 +35,16 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
settings_manager.log_load_time() settings_manager.log_load_time()
def _setup_controller_data(self):
self.window = settings_manager.get_main_window()
self.base_container = BaseContainer()
self.plugins_controller = plugins_controller
widget_registery.expose_object("main_window", self.window)
settings_manager.register_signals_to_builder([self, self.base_container])
self._collect_files_dirs()
def _setup_styling(self): def _setup_styling(self):
... ...
@@ -52,6 +64,7 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
def _load_plugins_and_files(self): def _load_plugins_and_files(self):
args, unknownargs = settings_manager.get_starting_args() args, unknownargs = settings_manager.get_starting_args()
if args.no_plugins == "false": if args.no_plugins == "false":
self.plugins_controller.pre_launch_plugins() self.plugins_controller.pre_launch_plugins()
self.plugins_controller.post_launch_plugins() self.plugins_controller.post_launch_plugins()
@@ -62,11 +75,3 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
def _tggl_top_main_menubar(self): def _tggl_top_main_menubar(self):
logger.debug("_tggl_top_main_menubar > stub...") logger.debug("_tggl_top_main_menubar > stub...")
def _load_glade_file(self):
self.builder.add_from_file( settings_manager.path_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])

View File

@@ -6,29 +6,11 @@ from shutil import which
# Lib imports # Lib imports
# Application imports # Application imports
from plugins import plugins_controller
from ..builder_wrapper import BuilderWrapper
class BaseControllerData: class BaseControllerMixin:
''' BaseControllerData contains most of the state of the app at ay given time. It also has some support methods. ''' ''' BaseControllerMixin contains most of the state of the app at ay given time. It also has some support methods. '''
def _setup_controller_data(self) -> None:
self.window = settings_manager.get_main_window()
self.builder = BuilderWrapper()
self.plugins_controller = plugins_controller
self.base_container = None
self.was_midified_key = False
self.ctrl_down = False
self.shift_down = False
self.alt_down = False
self._collect_files_dirs()
self._load_glade_file()
def _collect_files_dirs(self): def _collect_files_dirs(self):
args, \ args, \

View File

@@ -41,6 +41,7 @@ class CodeBase:
self.controller_manager.register_controller("completion", completion_controller) self.controller_manager.register_controller("completion", completion_controller)
self.controller_manager.register_controller("source_views", source_views_controller) self.controller_manager.register_controller("source_views", source_views_controller)
self.controller_manager.register_controller("plugins", plugins_controller) self.controller_manager.register_controller("plugins", plugins_controller)
self.controller_manager.register_controller("widgets", widget_registery)
def get_tabs_widget(self): def get_tabs_widget(self):
return self.controller_manager["tabs"].get_tabs_widget() return self.controller_manager["tabs"].get_tabs_widget()

View File

@@ -13,9 +13,8 @@ class Separator(Gtk.Separator):
def __init__(self, id: str = None, ORIENTATION: int = 0): def __init__(self, id: str = None, ORIENTATION: int = 0):
super(Separator, self).__init__() super(Separator, self).__init__()
builder = settings_manager.get_builder()
if id: if id:
builder.expose_object(id, self) widget_registery.expose_object(id, self)
self.ORIENTATION = ORIENTATION self.ORIENTATION = ORIENTATION
self._setup_styling() self._setup_styling()

View File

@@ -1,22 +0,0 @@
# Python imports
# Lib imports
# Application imports
from .singleton import Singleton
class EndpointRegistry(Singleton):
def __init__(self):
self._endpoints = {}
def register(self, rule, **options):
def decorator(f):
self._endpoints[rule] = f
return f
return decorator
def get_endpoints(self):
return self._endpoints

View File

@@ -19,6 +19,12 @@ valid_keyvalue_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]")
class KeyboardSignalsMixin: class KeyboardSignalsMixin:
""" KeyboardSignalsMixin keyboard hooks controller. """ """ KeyboardSignalsMixin keyboard hooks controller. """
was_midified_key = False
ctrl_down = False
shift_down = False
alt_down = False
# TODO: Need to set methods that use this to somehow check the keybindings state instead. # TODO: Need to set methods that use this to somehow check the keybindings state instead.
def unset_keys_and_data(self, widget = None, eve = None): def unset_keys_and_data(self, widget = None, eve = None):
self.ctrl_down = False self.ctrl_down = False
@@ -34,7 +40,7 @@ class KeyboardSignalsMixin:
self.alt_down = False self.alt_down = False
def on_global_key_press_controller(self, eve, user_data): def on_global_key_press_controller(self, eve, user_data):
keyname = Gdk.keyval_name(user_data.keyval).lower() keyname = Gdk.keyval_name(user_data.keyval).lower()
modifiers = Gdk.ModifierType(user_data.get_state() & ~Gdk.ModifierType.LOCK_MASK) modifiers = Gdk.ModifierType(user_data.get_state() & ~Gdk.ModifierType.LOCK_MASK)
self.was_midified_key = True if modifiers != 0 else False self.was_midified_key = True if modifiers != 0 else False

View File

@@ -0,0 +1,64 @@
# Python imports
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from .controllers.controller_base import ControllerBase
from .dto.base_event import BaseEvent
class WidgetRegisteryController(ControllerBase):
"""docstring for WidgetRegisteryController."""
def __init__(self):
super(WidgetRegisteryController, self).__init__()
self._builder: Gtk.Builder = None
self.objects: dict = {}
self.builder_keys: list = []
self._load_glade_file()
def _load_glade_file(self):
self._builder = Gtk.Builder.new_from_file( settings_manager.path_manager.get_glade_file() )
settings_manager.set_builder(self._builder)
widgets = self._builder.get_objects()
for widget in widgets:
self.builder_keys.append( widget.get_name() )
def _controller_message(self, event: BaseEvent):
...
def list_objects(self, id: str) -> list:
return self.objects.keys() + self.builder_keys
def list_non_builder_objects(self, id: str) -> list:
return self.objects.keys()
def list_builder_objects(self, id: str) -> list:
return self.builder_keys
def get_object(self, id: str) -> any:
if id in self.objects:
return self.objects[id]
return self._builder.get_object(id)
def expose_object(self, id: str, object: any, use_gtk: bool = False):
if not use_gtk:
self.objects[id] = object
return
self._builder.expose_object(id, object)
self.builder_keys.append(id)
def dereference_object(self, id: str):
self.builder_keys.remove(id)
if id in self.objects:
del self.objects[id]