Skip to content

Modern Tui TuiWidget

Paul Squires edited this page Oct 19, 2026 · 6 revisions

Home › Terminal TUI Library › Widgets › TuiWidget

TuiWidget

Holds the base type every widget extends; you write Render and Kind for your own.

Syntax

type TuiWidget extends Object
    declare abstract sub Render( byref f as TuiFrame, byval area as TuiRect )
    declare abstract function Kind( ) as ustring
    declare virtual function HandleEvent( byref e as TuiEvent ) as boolean
    declare virtual function SizeHint( byval avail as TuiRect ) as TuiSize
    declare virtual function CanFocus( ) as boolean
    declare virtual sub SetFocused( byval on_ as boolean )
    declare virtual destructor( )
end type

Description

The abstract base every widget derives from, so a container can hold a mixed Array( of TuiWidget ptr ). Render and Kind are abstract; the rest have sensible defaults, so a display-only widget overrides two methods and no more.

Example

#import "std/tui"
using tui

type Ticker extends TuiWidget
    as int32 n
    declare sub Render( byref f as TuiFrame, byval area as TuiRect ) override
    declare function Kind( ) as ustring override
end type

sub Ticker.Render( byref f as TuiFrame, byval area as TuiRect )
    f.DrawText( area.x, area.y, "n=" & str( n ), TuiStyleDefault( ) )
end sub

function Ticker.Kind( ) as ustring
    return "Ticker"
end function

dim as Ticker t
t.n = 7
print t.Kind( )                   '' Ticker
print t.CanFocus( )               '' false -- the default

See also

TuiWidget.Render TuiWidget.SizeHint TuiFocusRing TuiFocusRing.Count
TuiWidget.Kind TuiWidget.CanFocus TuiFocusRing.Add TuiFocusRing.Current
TuiWidget.HandleEvent TuiWidget.SetFocused TuiFocusRing.Clear TuiFocusRing.Next_

Library: Terminal TUI Library
Category: Terminal TUI Library
Documented under: Widgets
Working examples: hello.tiko · form.tiko · dashboard.tiko


Home · Keyword Index

Clone this wiki locally