EG/core/editor_context.py
2026-03-15 17:23:37 +08:00

45 lines
1.4 KiB
Python

"""Editor context adapter for the ImGui editor runtime."""
class EditorContext:
"""Provide a stable access layer for editor-facing services."""
def __init__(self, world):
self.world = world
def get_tree_widget(self):
return None
def get_gui_manager(self):
return getattr(self.world, "gui_manager", None)
def ensure_gui_elements(self):
gui_manager = self.get_gui_manager()
if gui_manager is not None:
gui_elements = getattr(gui_manager, "gui_elements", None)
if gui_elements is None:
gui_elements = []
setattr(gui_manager, "gui_elements", gui_elements)
return gui_elements
gui_elements = getattr(self.world, "gui_elements", None)
if gui_elements is None:
gui_elements = []
setattr(self.world, "gui_elements", gui_elements)
return gui_elements
def append_gui_element(self, element):
gui_elements = self.ensure_gui_elements()
gui_elements.append(element)
return True
def get_editor_context(owner):
"""Get or create editor context from a world/owner object."""
world = getattr(owner, "world", owner)
context = getattr(world, "_editor_context", None)
if context is None or getattr(context, "world", None) is not world:
context = EditorContext(world)
setattr(world, "_editor_context", context)
return context