example.md 1.9 KB

Példa

#define UI_IMPLEMENTATION
#include <ui.h>

int main(int argc, char **argv)
{
    /* lokalizált sztringek tömbje */
    enum { WINDOW_TITLE, POPUP_TITLE, BUTTON_TITLE,
        EASY_TITLE, HARD_TITLE, VOLUME_TITLE };
    char *lang[] = { "Basic demo", "Show", "Button",
        "easy", "hard", "Volume:" };

    /* állapotok tárolására használt változók */
    int button = 0, difficulty = 0, volume = 25;

    /* ezekre hivatkozó űrlap, HTML-folyam szerű elrendezéssel */
    ui_t ctx;
    ui_form_t popup[] = {
        { .type = UI_BUTTON, .flags = UI_FORCEBR,
            .ptr = &button, .value = 1,
            .label = BUTTON_TITLE },
        { .type = UI_RADIO, .flags = UI_NOBR,
            .ptr = &difficulty, .value = 0,
            .y = 5, .label = EASY_TITLE },
        { .type = UI_RADIO, .flags = UI_FORCEBR,
            .ptr = &difficulty, .value = 1,
            .x = 20, .label = HARD_TITLE },
        { .type = UI_LABEL, .flags = UI_NOBR,
            .y = 5, .label = VOLUME_TITLE },
        { .type = UI_SLIDER, .ptr = &volume, .max = 100 },
        { .type = UI_END }
    };
    ui_form_t form[] = {
        { .type = UI_POPUP, .align = UI_CENTER | UI_MIDDLE,
            .ptr = &popup,
            .x = UI_PERCENT(50), .y = UI_PERCENT(50),
            .m = 10, .label = POPUP_TITLE },
        { .type = UI_END }
    };

    /* UI kontextus inicializálása */
    ui_init(&ctx, sizeof(lang)/sizeof(lang[0]), lang, 640, 480, NULL);

    /* várunk, amíg a felhasználó be nem zárja az ablakot */
    while(ui_event(&ctx, form)) {
        /* gomb lekezelése, ez akár másik szálban is lehetne */
        if(button) {
            printf("button clicked\n");
            button = 0;
            ui_refresh(&ctx);
        }
    }

    /* ablak bezárása, erőforrások felszabadítása */
    ui_free(&ctx);

    return 0;
}