Skip to content

nimterm/app

This page is generated from the module’s exported API and ## documentation comments.

Small, deterministic application shell for widgets and event sources.

EventSource = ref object of RootObj
id*: string

View source

App = object
backend*: TerminalBackend
root*: Widget
queue*: EventQueue
size*: Size
frame*: Canvas
running*: bool
dirty*: bool
focus*: Widget
mouseCapture*: Widget
onEvent*: proc (app: var App; event: UiEvent): EventResponse {.closure.}
onAction*: proc (app: var App; action: UiAction) {.closure.}
pollIntervalMs*: int
minFrameIntervalMs*: int
sources*: seq[EventSource]

View source

method poll(source: EventSource): seq[UiEvent] {.base, raises: [], tags: [],
forbids: [].}

Returns: seq[UiEvent].

Name Type Default
source EventSource

View source

method close(source: EventSource) {.base, raises: [], tags: [], forbids: [].}
Name Type Default
source EventSource

View source

method needsPolling(source: EventSource): bool {.base, raises: [], tags: [],
forbids: [].}

Returns: bool.

Name Type Default
source EventSource

View source

proc newApp(backend: TerminalBackend; root: Widget = nil): App {.raises: [],
tags: [ReadEnvEffect, TimeEffect], forbids: [].}

Returns: App.

Name Type Default
backend TerminalBackend
root Widget nil

View source

proc addSource(app: var App; source: EventSource) {.raises: [], tags: [],
forbids: [].}
Name Type Default
app var App
source EventSource

View source

proc schedule(app: var App; id: string; delayMs: int; intervalMs = 0) {.
raises: [], tags: [TimeEffect], forbids: [].}
Name Type Default
app var App
id string
delayMs int
intervalMs inferred 0

View source

proc cancelTimer(app: var App; id: string) {.raises: [], tags: [], forbids: [].}
Name Type Default
app var App
id string

View source

proc invalidate(app: var App) {.raises: [], tags: [], forbids: [].}
Name Type Default
app var App

View source

proc post(app: var App; event: UiEvent) {.raises: [], tags: [], forbids: [].}
Name Type Default
app var App
event UiEvent

View source

proc focus(app: var App; widget: Widget) {.raises: [Exception],
tags: [RootEffect], forbids: [].}
Name Type Default
app var App
widget Widget

View source

proc dispatch(app: var App; event: UiEvent) {.raises: [Exception],
tags: [RootEffect], forbids: [].}
Name Type Default
app var App
event UiEvent

View source

proc render(app: var App) {.raises: [Exception, IOError],
tags: [TimeEffect, RootEffect, WriteIOEffect],
forbids: [].}
Name Type Default
app var App

View source

proc flush(app: var App; force = false) {.raises: [Exception, IOError],
tags: [TimeEffect, RootEffect, WriteIOEffect], forbids: [].}
Name Type Default
app var App
force inferred false

View source

Process one queued/backend event and render if invalidated.

proc step(app: var App; timeoutMs = 0): bool {.
raises: [Exception, Exception, IOError],
tags: [RootEffect, TimeEffect, WriteIOEffect], forbids: [].}

Returns: bool.

Name Type Default
app var App
timeoutMs inferred 0

View source

proc pump(app: var App; timeoutMs = 0): bool {.raises: [Exception, IOError],
tags: [RootEffect, TimeEffect, WriteIOEffect], forbids: [].}

Returns: bool.

Name Type Default
app var App
timeoutMs inferred 0

View source

proc run(app: var App) {.raises: [ValueError, Exception, IOError],
tags: [RootEffect, TimeEffect, WriteIOEffect],
forbids: [].}
Name Type Default
app var App

View source