Skip to main content

GHIElectronics.Endpoint.UI

UI widgets for Endpoint: Button, Label, Container, Image, TextBox, Slider, CheckBox on top of the embedded LVGL in libendpoint. Pair with the GHI UI designer.

Classes​

ClassSummary
BorderContainer with WPF-style Border.Thickness, Border.BorderBrush, Border.CornerRadius, and Border.Padding. Children are positioned relative to this border, same as UI.Container. Background is set via the inherited Widget.BackgroundColor.
ButtonClickable push button with text, color, and font-size properties.
CalendarMonth calendar.
ChartSimple chart with a single series. Not a standard .NET widget: the API mirrors TinyCLR's Chart for ease of porting.
CheckBoxTwo-state check box with a label. CheckBox.ValueChanged fires on each toggle.
ContainerGroups child widgets. Children are positioned relative to the container.
DataGridSimple grid of text cells (standard WPF widget name; TinyCLR-shape API). Call DataGrid.SetSize to allocate rows and columns, then DataGrid.SetCell to fill each cell.
DockPanelWPF-style DockPanel. LVGL has no dock layout; the caller (or codegen) computes each child's absolute position from its Dock side plus the remaining area, then uses the child's X/Y/Width/Height properties.
DropdownSelect one item from a list. ValueChanged fires when the selection changes.
GaugeRadial dial with a needle. Not a standard .NET widget: the API mirrors TinyCLR's Gauge. SweepAngle is 180/270/360 degrees.
GridWPF-style Grid with ColumnDefinitions + RowDefinitions. Call Grid.SetDefinitions once with the column + row sizes, then call Grid.SetCell on each child. Sizes: positive = fixed pixels; 0 or negative = star (-1 = "", -2 = "2", ...).
ImageDisplays a raster image fed as raw RGB565 pixel bytes.
KeyboardVirtual on-screen keyboard. Attach to a UI.TextBox via Keyboard.SetTarget so taps on keys type into it. Positions itself at the bottom half of the display by default; override via inherited X / Y / Width / Height.
LabelStatic text display. For an interactive text input, use UI.TextBox.
ListBoxVertical scrollable list. ListBox.AddItem returns a handle whose Clicked event you subscribe to.
ListBoxItemAn item inside a ListBox. Subscribe to Clicked.
MenuHorizontal menu bar. Menu.AddItem returns a leaf-item handle; Menu.AddDropdown returns a dropdown handle whose entries are listed on click.
MenuItemHandle to a menu item. For a leaf item (Menu.AddItem) subscribe to MenuItem.Clicked. For a dropdown parent (Menu.AddDropdown) subscribe to MenuItem.ValueChanged and read MenuItem.Selected to find out which sub-item the user picked.
MessageBoxModal dialog with title, body text, and footer buttons. Add buttons with MessageBox.AddButton; each returns a handle whose Clicked event you subscribe to. Call MessageBox.Hide to dismiss.
MessageBoxButtonA button inside a MessageBox. Subscribe to Clicked.
ProgressBarHorizontal progress bar. No events; the owner drives it via ProgressBar.Value.
RadioButtonCircular-indicator CheckBox. Grouping (mutual exclusion) is up to the caller: subscribe to ValueChanged on each radio and clear the others when one gets selected.
ScreenA top-level container with no parent. Multiple screens can exist at once; only one is active at a time. Call Screen.Load to make this the currently-displayed screen.
SliderDraggable horizontal slider. Default range is 0-100.
StackPanelWPF-style StackPanel: stacks children vertically (default) or horizontally via LVGL flex layout. StackPanel.Spacing is the gap between children; each child's Widget.SetMargin stacks on top of that.
SwitchBinary on/off toggle. ValueChanged fires on each flip.
TextBoxSingle-line editable text input. Pair with a UI.Keyboard for on-screen typing.
TouchBridgeTouch input bridge. Call TouchBridge.Attach once after UI.Initialize, then call TouchBridge.Feed from your touch chip's event handler. LVGL will dispatch Clicked / ValueChanged accordingly on its event loop.
TreeViewHierarchical list. Nodes are added imperatively via TreeView.AddNode with a depth value: codegen walks the tree and emits one AddNode call per visible node.
UILVGL subsystem lifecycle. Call UI.Initialize once after the display is enabled, then UI.Run on your UI thread. LVGL is built single-threaded (LV_USE_OS=LV_OS_NONE); use UI.UiTimer for periodic work that must touch widgets.
UiTimerThread-safe periodic callback that runs on the UI thread. The callback fires inside UI.Run's LVGL pump every periodMs milliseconds, so widget updates in it are safe (LVGL itself is single- threaded). Dispose cancels the timer. Create / SetPeriod / Dispose are safe from any thread; the body runs on the UI thread.
WidgetAbstract base class for every UI widget. Holds the opaque libendpoint handle and exposes geometry, visibility, and background styling shared by all widget types. All setters and events run on the UI thread; do not touch widgets from background threads (LVGL is built with LV_USE_OS=LV_OS_NONE).

Enums​

EnumSummary
ChartModeVisual style used by UI.Chart.
DockEdge a child docks to within a UI.DockPanel.
GradientDirectionDirection of a linear background gradient.
OrientationDirection in which UI.StackPanel arranges its children.
TextAlignmentHorizontal alignment of text within its widget.