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
# from libs.db import DB
from libs.event_system import EventSystem
from libs.endpoint_registry import EndpointRegistry
from libs.keybindings import Keybindings
from libs.logger import Logger
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 wrapper(*args, **kwargs):
print()
print()
for line in traceback.format_stack():
print( line.strip() )
print()
print()
return fn(*args, **kwargs)
return wrapper
@@ -51,8 +47,8 @@ builtins.APP_NAME = "<change_me>"
builtins.keybindings = Keybindings()
builtins.event_system = EventSystem()
builtins.endpoint_registry = EndpointRegistry()
builtins.settings_manager = SettingsManager()
builtins.widget_registery = WidgetRegisteryController()
# builtins.db = DB()
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):
super(CenterContainer, self).__init__()
self._builder = settings_manager.get_builder()
self._setup_styling()
self._setup_signals()
@@ -39,7 +38,7 @@ class CenterContainer(Gtk.Box):
...
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.connect("clicked", self._hello_world)

View File

@@ -6,17 +6,19 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from plugins import plugins_controller
from libs.mixins.ipc_signals_mixin import IPCSignalsMixin
from libs.mixins.keyboard_signals_mixin import KeyboardSignalsMixin
from ..containers.base_container import BaseContainer
from .base_controller_data import BaseControllerData
from .base_controller_mixin import BaseControllerMixin
from .bridge_controller import BridgeController
class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerMixin):
""" docstring for BaseController. """
def __init__(self):
@@ -33,6 +35,16 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
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):
...
@@ -52,6 +64,7 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
def _load_plugins_and_files(self):
args, unknownargs = settings_manager.get_starting_args()
if args.no_plugins == "false":
self.plugins_controller.pre_launch_plugins()
self.plugins_controller.post_launch_plugins()
@@ -62,11 +75,3 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerData):
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.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
# Application imports
from plugins import plugins_controller
from ..builder_wrapper import BuilderWrapper
class BaseControllerData:
''' BaseControllerData 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()
class BaseControllerMixin:
''' BaseControllerMixin contains most of the state of the app at ay given time. It also has some support methods. '''
def _collect_files_dirs(self):
args, \

View File

@@ -41,6 +41,7 @@ class CodeBase:
self.controller_manager.register_controller("completion", completion_controller)
self.controller_manager.register_controller("source_views", source_views_controller)
self.controller_manager.register_controller("plugins", plugins_controller)
self.controller_manager.register_controller("widgets", widget_registery)
def get_tabs_widget(self):
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):
super(Separator, self).__init__()
builder = settings_manager.get_builder()
if id:
builder.expose_object(id, self)
widget_registery.expose_object(id, self)
self.ORIENTATION = ORIENTATION
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:
""" 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.
def unset_keys_and_data(self, widget = None, eve = None):
self.ctrl_down = False
@@ -34,7 +40,7 @@ class KeyboardSignalsMixin:
self.alt_down = False
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)
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]