Preliminary controller layout work for plugin integration; controller base message refactor naming

This commit is contained in:
2026-01-18 13:52:28 -06:00
parent 813706265a
commit d55dd4e5da
15 changed files with 34 additions and 27 deletions

View File

@@ -0,0 +1,50 @@
# Python imports
# Lib imports
# Application imports
from ..singleton import Singleton
from ..event_factory import Code_Event_Types
from .controller_base import ControllerBase
from .controller_context import ControllerContext
class ControllerManagerException(Exception):
...
class ControllerManager(Singleton, dict):
def __init__(self):
super(ControllerManager, self).__init__()
def _crete_controller_context(self) -> ControllerContext:
controller_context = ControllerContext()
controller_context.message_to = self.message_to
controller_context.message = self.message
return controller_context
def register_controller(self, name: str, controller: ControllerBase):
if not name or controller == None:
raise ControllerManagerException("Must pass in a 'name' and 'controller'...")
if name in self.keys():
raise ControllerManagerException(f"Can't bind controller to registered name of '{name}'...")
controller.set_controller_context( self._crete_controller_context() )
self[name] = controller
def get_controllers_key_list(self) -> list[str]:
return self.keys()
def message_to(self, name: str, event: Code_Event_Types.CodeEvent):
self[name]._controller_message(event)
def message(self, event: Code_Event_Types.CodeEvent):
for key in self.keys():
self[key]._controller_message(event)