Source code for simvx.editor

"""SimVX Editor: A Godot-like editor built with SimVX's own UI widgets."""

from .app import launch
from .autosave import Autosave, AutosaveRecoveryDialog, format_recovery_message
from .command_palette import (
    Command,
    CommandPalette,
    CommandRegistry,
    PaletteMode,
    fuzzy_score,
    scan_project_files,
    search_files,
)
from .commands import (
    AddNodeCommand,
    RemoveNodeCommand,
    RenameCommand,
    ReorderCommand,
    ReparentCommand,
    TransformCommand,
)
from .config import AppTheme, Config
from .error_recovery import ErrorRecovery
from .extract import extract_node_to_file
from .hints import HintOverlay
from .keyboard_nav import KeyboardNavigator
from .layout_presets import BUILTIN_PRESETS, LayoutPresets
from .main import main
from .play_mode import PlayMode
from .plugin import Plugin, PluginManifest, PluginRegistry, is_tool, tool
from .project import ProjectMetadata, ProjectSession
from .project_registry import ProjectRegistry, RecentProject
from .root import Root
from .save_dialog import SavePreviewDialog
from .state import State
from .templates import (
    PROJECT_TEMPLATES,
    TEMPLATES,
    ProjectTemplate,
    ScriptTemplate,
    generate_project,
    generate_script,
)
from .testing.demo_steps import (
    AddNode,
    AssertConfig,
    AssertProperty,
    AssertTree,
    ClickMenu,
    ConfigureNode,
    NewSceneSelect,
    PlayScene,
    RenameNode,
    SelectNode,
    SetProperty,
    SetScript,
    StopScene,
    SwitchViewport,
    register_editor_steps,
)
from .welcome import WelcomeScreen
from .workspace_tabs import NewSceneDialog, SceneTabState, UnsavedChangesDialog, WorkspaceTabs

__all__ = [
    "State",
    "Root",
    "Command",
    "CommandPalette",
    "CommandRegistry",
    "fuzzy_score",
    "PaletteMode",
    "scan_project_files",
    "search_files",
    "main",
    "launch",
    "PlayMode",
    "ProjectSession",
    "ProjectMetadata",
    "ProjectRegistry",
    "RecentProject",
    "WelcomeScreen",
    "Config",
    "AppTheme",
    "Plugin",
    "PluginManifest",
    "PluginRegistry",
    "tool",
    "is_tool",
    "ScriptTemplate",
    "TEMPLATES",
    "generate_script",
    "ProjectTemplate",
    "PROJECT_TEMPLATES",
    "generate_project",
    # Workspace tabs
    "WorkspaceTabs",
    "SceneTabState",
    "NewSceneDialog",
    "UnsavedChangesDialog",
    # New modules from editor rework
    "Autosave",
    "AutosaveRecoveryDialog",
    "format_recovery_message",
    "AddNodeCommand",
    "RemoveNodeCommand",
    "ReparentCommand",
    "ReorderCommand",
    "RenameCommand",
    "TransformCommand",
    "ErrorRecovery",
    "extract_node_to_file",
    "HintOverlay",
    "KeyboardNavigator",
    "LayoutPresets",
    "BUILTIN_PRESETS",
    "SavePreviewDialog",
    # Demo step types
    "AddNode",
    "RenameNode",
    "SelectNode",
    "SetProperty",
    "AssertProperty",
    "SetScript",
    "PlayScene",
    "StopScene",
    "SwitchViewport",
    "AssertTree",
    "ConfigureNode",
    "AssertConfig",
    "ClickMenu",
    "NewSceneSelect",
    "register_editor_steps",
]

# IDE integration lives in ``simvx.ide.editor_integration`` (IDEBridgePlugin).
# The editor must NOT import ide at module load -- ide depends on the editor's
# extension points, never the reverse.