Refactor plugin event API: rename message* to emit* and requests_ui_element to request_ui_element

This commit is contained in:
2026-02-28 19:48:04 -06:00
parent 1447a68fb0
commit 8ee2106f50
20 changed files with 61 additions and 75 deletions

View File

@@ -76,6 +76,8 @@ class Window(Gtk.ApplicationWindow):
event_system.subscribe("load-interactive-debug", self._load_interactive_debug)
def _load_widgets(self):
widget_registery.expose_object("main-window", self)
if settings_manager.is_debug():
self.set_interactive_debugging(True)

View File

@@ -24,3 +24,6 @@ class EmitDispatcher:
def emit_to(self, controller: str, event: BaseEvent):
self.message_to(controller, event)
def emit_to_selected(self, names: list[str], event: BaseEvent):
self.message_to_selected(names, event)

View File

@@ -56,8 +56,8 @@ class PluginsController(ControllerBase, PluginsControllerMixin, PluginReloadMixi
locations.append(path)
for file in os.listdir(path):
_path = os.path.join(path, file)
if os.path.isdir(_path):
self._collect_search_locations(_path, locations)
if not os.path.isdir(_path): continue
self._collect_search_locations(_path, locations)
def _load_plugins(
self,
@@ -150,12 +150,10 @@ class PluginsController(ControllerBase, PluginsControllerMixin, PluginReloadMixi
def create_plugin_context(self):
plugin_context: PluginContext = PluginContext()
plugin_context.requests_ui_element: callable = self.requests_ui_element
plugin_context.message: callable = self.message
plugin_context.message_to: callable = self.message_to
plugin_context.message_to_selected: callable = self.message_to_selected
plugin_context.emit: callable = event_system.emit
plugin_context.emit_and_await: callable = event_system.emit_and_await
plugin_context.request_ui_element: callable = self.request_ui_element
plugin_context.emit: callable = self.emit
plugin_context.emit_to: callable = self.emit_to
plugin_context.emit_to_selected: callable = self.emit_to_selected
plugin_context.register_controller: callable = self.register_controller
return plugin_context

View File

@@ -18,26 +18,21 @@ class PluginContext:
def __init__(self):
super(PluginContext, self).__init__()
def requests_ui_element(self, element_id: str):
raise PluginContextException("Plugin Context 'requests_ui_element' must be overridden...")
def _controller_message(self, event: BaseEvent):
raise PluginContextException("Plugin Context '_controller_message' must be overridden...")
def message(self, event: BaseEvent):
raise PluginContextException("Plugin Context 'message' must be overridden...")
def request_ui_element(self, element_id: str):
raise PluginContextException("Plugin Context 'request_ui_element' must be overridden...")
def message_to(self, name: str, event: BaseEvent):
raise PluginContextException("Plugin Context 'message_to' must be overridden...")
def message_to_selected(self, names: list[str], event: BaseEvent):
raise PluginContextException("Plugin Context 'message_to_selected' must be overridden...")
def emit(self, event_type: str, data: tuple = ()):
def emit(self, event: BaseEvent):
raise PluginContextException("Plugin Context 'emit' must be overridden...")
def emit_and_await(self, event_type: str, data: tuple = ()):
raise PluginContextException("Plugin Context 'emit_and_await' must be overridden...")
def emit_to(self, name: str, event: BaseEvent):
raise PluginContextException("Plugin Context 'emit_to' must be overridden...")
def emit_to_selected(self, names: list[str], event: BaseEvent):
raise PluginContextException("Plugin Context 'emit_to_selected' must be overridden...")
def register_controller(self, name: str, controller):
raise PluginContextException("Plugin Context 'register_controller' must be overridden...")

View File

@@ -30,20 +30,14 @@ class PluginBase:
def run(self):
raise PluginBaseException("Plugin Base 'run' must be overriden by Plugin")
def requests_ui_element(self, element_id: str):
raise PluginBaseException("Plugin Base 'requests_ui_element' must be overriden by Plugin")
def request_ui_element(self, element_id: str):
raise PluginBaseException("Plugin Base 'request_ui_element' must be overriden by Plugin")
def message(self, event: BaseEvent):
raise PluginBaseException("Plugin Base 'message' must be overriden by Plugin")
def message_to(self, name: str, event: BaseEvent):
raise PluginBaseException("Plugin Base 'message_to' must be overriden by Plugin")
def message_to_selected(self, names: list[str], event: BaseEvent):
raise PluginBaseException("Plugin Base 'message_to_selected' must be overriden by Plugin")
def emit(self, event_type: str, data: tuple = ()):
def emit(self, event: BaseEvent):
raise PluginBaseException("Plugin Base 'emit' must be overriden by Plugin")
def emit_and_await(self, event_type: str, data: tuple = ()):
raise PluginBaseException("Plugin Base 'emit_and_await' must be overriden by Plugin")
def emit_to(self, name: str, event: BaseEvent):
raise PluginBaseException("Plugin Base 'emit_to' must be overriden by Plugin")
def emit_to_selected(self, names: list[str], event: BaseEvent):
raise PluginBaseException("Plugin Base 'emit_to_selected' must be overriden by Plugin")

View File

@@ -31,17 +31,17 @@ class PluginCode(PluginBase):
def run(self):
raise PluginCodeException("Plugin Code 'run' must be overriden by Plugin")
def requests_ui_element(self, element_id: str):
return self.plugin_context.requests_ui_element(element_id)
def message(self, event: BaseEvent):
return self.plugin_context.message(event)
def message_to(self, name: str, event: BaseEvent):
return self.plugin_context.message_to(name, event)
def message_to_selected(self, names: list[str], event: BaseEvent):
return self.plugin_context.message_to_selected(names, event)
def register_controller(self, name: str, controller):
return self.plugin_context.register_controller(name, controller)
def request_ui_element(self, element_id: str):
return self.plugin_context.request_ui_element(element_id)
def emit(self, event: BaseEvent):
return self.plugin_context.emit(event)
def emit_to(self, name: str, event: BaseEvent):
return self.plugin_context.emit_to(name, event)
def emit_to_selected(self, names: list[str], event: BaseEvent):
return self.plugin_context.emit_to_selected(names, event)

View File

@@ -31,20 +31,14 @@ class PluginUI(PluginBase):
def run(self):
raise PluginCodeException("Plugin UI 'run' must be overriden by Plugin")
def requests_ui_element(self, element_id: str):
return self.plugin_context.requests_ui_element(element_id)
def request_ui_element(self, element_id: str):
return self.plugin_context.request_ui_element(element_id)
def message(self, event: BaseEvent):
return self.plugin_context.message(event)
def emit(self, event: BaseEvent):
return self.plugin_context.emit(event)
def message_to(self, name: str, event: BaseEvent):
return self.plugin_context.message_to(name, event)
def emit_to(self, name: str, event: BaseEvent):
return self.plugin_context.emit_to(name, event)
def message_to_selected(self, names: list[str], event: BaseEvent):
return self.plugin_context.message_to_selected(names, event)
def emit(self, event_type: str, data: tuple = ()):
self.plugin_context.emit(event_type, data)
def emit_and_await(self, event_type: str, data: tuple = ()):
self.plugin_context.emit_and_await(event_type, data)
def emit_to_selected(self, names: list[str], event: BaseEvent):
return self.plugin_context.emit_to_selected(names, event)

View File

@@ -13,7 +13,7 @@ class InvalidPluginException(Exception):
class PluginsControllerMixin:
def requests_ui_element(self, target_id: str):
def request_ui_element(self, target_id: str):
if not target_id in widget_registery.objects:
raise InvalidPluginException('Unknown UI "target_id" given in requests.')