Source code for simvx.core.ui

"""SimVX UI widget system.

Provides a complete UI framework with:
- Control base class with anchors, margins, focus system, and layout
- Container hierarchy (HBox, VBox, Margin, Grid)
- Widgets (Button, Label, Panel, TextEdit, Slider, ProgressBar)
- Event system (input routing, focus, hover, drag-and-drop)
- Virtual scroll for large lists
- GraphEdit for node graph editing
- Theme support (colours, fonts, styles)
- Colour utility with named presets and hex parsing

Example:
    from simvx.core import Control, VBoxContainer, Button, Label

    root = Control(name="Root")
    vbox = root.add_child(VBoxContainer())
    title = vbox.add_child(Label("Hello UI"))
    button = vbox.add_child(Button("Click Me", on_press=lambda: print("Clicked!")))
"""

from ..properties import Colour
from .advanced import (
    CheckBox,
    DropDown,
    RadioButton,
    SpinBox,
)
from .ansi_parser import StyledSpan, parse_ansi, strip_ansi
from .autocomplete import AutocompletePopup
from .bottom_strip import BottomControlsStrip
from .code_edit import CodeTextEdit, TextMarker
from .code_editor_panel import CodeEditorPanel
from .colour_picker import ColourPicker
from .completion_types import CompletionItem, CompletionItemKind
from .containers import (
    ColumnSizing,
    Container,
    FormLayout,
    GridContainer,
    HBoxContainer,
    MarginContainer,
    OverlayCanvas,
    SizingMode,
    VBoxContainer,
)
from .core import Control
from .dock import DockContainer, DockPanel
from .enums import AnchorPreset, FocusMode, SizeFlags
from .file_browser import FileBrowserPanel
from .file_dialog import FileDialog
from .gamepad_overlay import GamepadOverlay
from .graph_edit import GraphConnection, GraphEdit, GraphNode, GraphPort
from .grid_slots import GridSlots
from .marks import ControlMark, enumerate_interactive_controls
from .menu import MenuBar, MenuItem, PopupMenu
from .multiline import MultiLineTextEdit
from .overlay import OverlayEntry, OverlayLayer
from .rich_text import ConsoleWidget, OutputPanel, RichTextLabel
from .scroll import ScrollContainer
from .splash import AttributionWatermark, SplashScreen
from .split import SplitContainer
from .tabs import TabContainer
from .terminal import TerminalEmulator
from .testing import DrawCall, DrawLog, UITestHarness
from .text_paragraph import TextParagraph, wrap_paragraph
from .theme import AppTheme, StyleBox, SyntaxTheme, em, set_theme
from .toolbar import Toolbar, ToolbarButton
from .tooltip import TooltipManager
from .tree import TreeItem, TreeView
from .types import DragData, Theme, ThemeColour, ThemeSize, ThemeStyleBox, UIInputEvent
from .virtual_controls import VirtualButton, VirtualDPad, VirtualJoystick
from .virtual_scroll import VirtualScrollContainer
from .widgets import (
    Button,
    Label,
    Panel,
    ProgressBar,
    Slider,
    TextEdit,
)

__all__ = [
    "Control",
    "Container",
    "Theme",
    "Colour",
    "UIInputEvent",
    "FocusMode",
    "AnchorPreset",
    "SizeFlags",
    "DragData",
    "SizingMode",
    "ColumnSizing",
    "HBoxContainer",
    "VBoxContainer",
    "MarginContainer",
    "GridContainer",
    "Label",
    "Button",
    "Panel",
    "TextEdit",
    "Slider",
    "ProgressBar",
    "SplashScreen",
    "AttributionWatermark",
    "CheckBox",
    "SpinBox",
    "DropDown",
    "RadioButton",
    "FormLayout",
    "ScrollContainer",
    "SplitContainer",
    "MenuItem",
    "PopupMenu",
    "MenuBar",
    "TabContainer",
    "TreeItem",
    "TreeView",
    "FileDialog",
    "ColourPicker",
    "MultiLineTextEdit",
    "Toolbar",
    "ToolbarButton",
    "TooltipManager",
    "DockPanel",
    "DockContainer",
    "CodeTextEdit",
    "TextMarker",
    "StyledSpan",
    "parse_ansi",
    "strip_ansi",
    "RichTextLabel",
    "OutputPanel",
    "ConsoleWidget",
    "TerminalEmulator",
    "VirtualScrollContainer",
    "GraphPort",
    "GraphConnection",
    "GraphNode",
    "GraphEdit",
    "GridSlots",
    "ControlMark",
    "enumerate_interactive_controls",
    "BottomControlsStrip",
    "TextParagraph",
    "wrap_paragraph",
    "GamepadOverlay",
    "UITestHarness",
    "DrawLog",
    "DrawCall",
    "AppTheme",
    "SyntaxTheme",
    "ThemeColour",
    "ThemeSize",
    "ThemeStyleBox",
    "StyleBox",
    "set_theme",
    "em",
    "FileBrowserPanel",
    "AutocompletePopup",
    "CodeEditorPanel",
    "CompletionItem",
    "CompletionItemKind",
    "VirtualJoystick",
    "VirtualDPad",
    "VirtualButton",
    "OverlayCanvas",
    "OverlayLayer",
    "OverlayEntry",
]