Files
Newton-Editor/src/libs/controllers/controller_manager.py

51 lines
1.4 KiB
Python

# 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)