simvx.ide.embedded

Embeddable IDE layout: sidebar + code editor + bottom panels, no menu/status bar.

Used by Root (the standalone IDE), which wraps it with a menu bar, status bar, and overlays. (Editor integration takes a different route: IDEBridgePlugin in editor_integration injects IDE features into the editor’s own CodeEditorPanel rather than parenting this shell.)

Module Contents

Classes

EmbeddedShell

Reusable IDE layout without menu bar, status bar, or overlays.

Data

log

API

simvx.ide.embedded.log

‘getLogger(…)’

class simvx.ide.embedded.EmbeddedShell(state: simvx.ide.state.State, config: simvx.ide.config.Config, *, name: str = 'EmbeddedShell', **kwargs)[source]

Bases: simvx.core.Node

Reusable IDE layout without menu bar, status bar, or overlays.

Builds: Left sidebar: FileBrowserPanel (60%) + SymbolOutlinePanel (40%) Center: CodeEditorPanel Bottom: TabContainer with Terminal, Output, Problems, Search, Debug

Initialization

build(width: float, height: float)[source]

Build the IDE layout at the given size. Call once after adding to tree.

on_update(dt: float)[source]

Sync minimap position and viewport with the active editor each frame.

refresh_theme()[source]

Re-apply theme colours to all panels that cache them.

resize(width: float, height: float)[source]

Update layout to new dimensions.

strict_errors: ClassVar[bool]

True

dev_checks: ClassVar[bool]

None

dev_warnings: ClassVar[bool]

None

freeze_check_interval: ClassVar[float]

1.0

dynamic: bool

False

visible

‘Property(…)’

update_mode

‘Property(…)’

focus_mode

‘Property(…)’

drag_threshold

‘Property(…)’

focus_entered

‘Signal(…)’

focus_exited

‘Signal(…)’

__properties__: ClassVar[dict[str, simvx.core.descriptors.Property]]

None

classmethod __init_subclass__(**kwargs)
property name: str
property visible_in_tree: bool
property input_player: simvx.core.input.players.InputPlayer
property input_context: simvx.core.input.contexts.InputContext | None
reset_error() → None
add_child(node: simvx.core.node.T) → simvx.core.node.T
remove_child(node: simvx.core.node.Node) → None
reparent(new_parent: simvx.core.node.Node)
node_at(path, default=_NO_DEFAULT)
find(target, *, direct: bool = False)
find_all(target, *, direct: bool = False)
expect(target, *, direct: bool = False)
ancestor(target)
walk(*, include_self: bool = True) → collections.abc.Iterator[simvx.core.node.Node]
property path: str
property is_scene_root: bool
add_to_group(group: str)
remove_from_group(group: str)
is_in_group(group: str) → bool
on_ready() → None
on_enter_tree() → None
on_exit_tree() → None
on_fixed_update(dt: float) → None
on_draw(canvas) → None
on_draw_3d(gizmos) → None
on_picked(event: simvx.core.input.events.PickEvent) → bool | None
on_gui_input(event: simvx.core.input.events.GuiInputEvent) → bool | None
start_coroutine(gen: simvx.core.descriptors.Coroutine) → simvx.core.descriptors.CoroutineHandle
stop_coroutine(gen_or_handle)
property focused: bool
property focus_rect: tuple[float, float, float, float] | None
drag_threshold_for(pointer_type: simvx.core.input.enums.PointerType | str) → float
grab_focus() → None
release_focus() → None
capture_pointer(pointer_id: int | None = None) → None
release_pointer(pointer_id: int | None = None) → None
queue_redraw() → None
property render_dirty: bool
clear_children()
destroy()
property destroying: bool
property destroyed: bool
call_deferred(method: collections.abc.Callable[..., Any], *args: Any) → None
property app
property tree: simvx.core.scene_tree.SceneTree
property viewport_size: simvx.core.math.types.Vec2
property viewport_insets: tuple[float, float, float, float]
property physics
property physics_2d
__getitem__(key: str)
classmethod get_properties() → dict[str, simvx.core.descriptors.Property]
__repr__()