Back to Projects
TUIX v0.5Beta

Last Updated: 2026-05-20

Dialog Widget

Dialog is the built-in modal UI widget in v0.5. It can own a body, attach child widgets, draw a backdrop, trap focus through scene modal state, and expose a consumable close request flag.

Creating A Dialog

uid = objects.create_object(builders.DIALOG, 'Main', 0.7, 0.5, 0.2, 0.15)
dialog = objects.get_object_by_uid(uid)

objects.tuix_dialog_set_title(dialog, 'Confirm')
objects.tuix_dialog_set_body_size(dialog, 48, 12)
objects.tuix_dialog_set_padding(dialog, 2, 1, 2, 1)
objects.tuix_dialog_set_close_on_esc(dialog, True)
objects.tuix_dialog_set_close_on_backdrop(dialog, True)
objects.tuix_dialog_activate(dialog, 'Main')

Child Widgets

Create child widgets inside the dialog body with tuix_dialog_add_object(...) or attach existing child UIDs. Dialog children participate in the same buffer hierarchy and modal input routing.

button_uid = objects.tuix_dialog_add_object(dialog, 'Main', builders.BUTTON, 0.4, 0.12)
button = objects.get_object_by_uid(button_uid)
objects.tuix_button_set_label(button, 'OK')

API Functions

FunctionDescription
tuix_dialog_attach_child(obj, scene_name, child_uid)Attaches an existing child.
tuix_dialog_detach_child(obj, scene_name, child_uid)Detaches a child.
tuix_dialog_add_object(obj, scene_name, builder_name, width_mod, height_mod)Creates a child in the dialog body.
tuix_dialog_set_title(obj, title)Sets title text.
tuix_dialog_set_body_size(obj, width, height)Sets body size in terminal cells.
tuix_dialog_set_padding(obj, left, top, right, bottom)Sets body padding.
tuix_dialog_set_close_on_esc(obj, enabled)Enables close request on Escape.
tuix_dialog_set_close_on_backdrop(obj, enabled)Enables close request on backdrop click.
tuix_dialog_set_colors(obj, backdrop_r, backdrop_g, backdrop_b, border_r, border_g, border_b, body_r, body_g, body_b)Sets backdrop, border, and body colors.
tuix_dialog_activate(obj, scene_name)Activates modal state.
tuix_dialog_deactivate(obj, scene_name)Deactivates modal state.
tuix_dialog_take_close_requested(obj)Returns and consumes close-request state.

Close Pattern

while running:
    engine.main_loop()
    if objects.tuix_dialog_take_close_requested(dialog):
        objects.tuix_dialog_deactivate(dialog, 'Main')
        break