removed endpoint_registery; relocated builder_wrapper to be widget_registery under libs/
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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]
|
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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])
|
|
||||||
@@ -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, \
|
||||||
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|||||||
64
src/libs/widget_registery.py
Normal file
64
src/libs/widget_registery.py
Normal 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]
|
||||||
Reference in New Issue
Block a user