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 .menu import MenuBar, MenuItem, PopupMenu
from .modal import DimBackdrop, ModalBackdrop
from .multiline import MultiLineTextEdit
from .rich_text import ConsoleWidget, OutputPanel, RichTextLabel
from .scroll import ScrollContainer
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",
    "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",
    "BottomControlsStrip",
    "TextParagraph",
    "wrap_paragraph",
    "GamepadOverlay",
    "UITestHarness",
    "DrawLog",
    "DrawCall",
    "AppTheme",
    "SyntaxTheme",
    "ThemeColour",
    "ThemeSize",
    "ThemeStyleBox",
    "StyleBox",
    "set_theme",
    "FileBrowserPanel",
    "AutocompletePopup",
    "CodeEditorPanel",
    "CompletionItem",
    "CompletionItemKind",
    "VirtualJoystick",
    "VirtualDPad",
    "VirtualButton",
    "OverlayCanvas",
    "ModalBackdrop",
    "DimBackdrop",
]