"""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",
]