Immutable column definition for an ActivityDialogSpec: an optional fixed
Width (mutually exclusive with Star), default cell
Alignment, and an optional default Style. The activity control maps each
column onto a real CliGrid column; CliGrid owns the actual width resolution.
The safe, thread-safe surface a background activity operation uses to report progress. It exposes
only value updates — never rendering primitives, widgets, or the grid. Updates are coalesced and
applied to the UI on the modal-loop thread; the operation never renders or mutates widgets directly.
Immutable description of a rich activity dialog's live layout: variable columns and rows of cells,
with named dynamic rows carrying fixed-length value arrays. Build one with Create(); the
activity control maps it (plus the runtime values) onto a CliGrid. The spec is shape only —
runtime values are held separately and mutated through the operation's activity context.
Base type for the renderable element hosted by an ActivityCellSpec. Elements are
immutable and describe what a cell shows; the activity control maps them onto a
CliGrid cell (text) or a post-layout overlay (progress bar). Kept small and extensible.
A progress-bar element bound to row-local values. The current value is read from
ValueIndex; the maximum is either the fixed FixedMax (default 100) or,
when MaxValueIndex is set, read from that value. Rendered as a post-layout overlay so
CliGrid resolves the bar's width (place it in a star column to fill the remaining space).
Immutable row definition. A row is either static (unnamed, no values, fixed labels/text) or
dynamic (named, with a fixed-length value array updated at runtime). The cells reference the
row's values by index; the value count is fixed at build time.
Fluent builder for an ActivityDialogSpec. Add columns first, then rows; call
Build() (done automatically by the run API) to validate and freeze the spec.
Configures the spinner an activity dialog shows on its top frame. Pick one of three modes:
Default (the framework's default Default and interval),
FromFrameSet(SpinnerFrameSet, TimeSpan?) (a predefined frame set with an optional interval), or
FromTicker(TuiTicker) (a caller-created TuiTicker). The spec owns only the choice of
ticker; it knows nothing about overlays, titles, or markup — frames stay raw and the dialog's overlay
decides presentation.
Continues the fluent chain after Text(string). Optionally refines the
just-added text element's Style(ThemeStyle) and Align(CliTextAlignment)ment, then starts the next
Cell(int, int) or declares the row's Values(params object?[]). Style/alignment live here, not on
Text(...), because a text template may contain composite placeholders, so trailing parameters
there would be ambiguous.
A single-line text element. Template is trusted TigerCli markup that may contain
composite placeholders ({0}, {2,5:F1}, …); the substituted values are formatted and
markup-escaped at render time (see ItTiger.TigerCli.Markup.SafeMarkupFormatter) so data can never inject markup.