Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/uidemo/uidemo.c

    r80d4aea r9a07ee3  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4444#include <ui/image.h>
    4545#include <ui/label.h>
     46#include <ui/list.h>
     47#include <ui/menu.h>
    4648#include <ui/menubar.h>
     49#include <ui/menudd.h>
    4750#include <ui/menuentry.h>
    48 #include <ui/menu.h>
    4951#include <ui/msgdialog.h>
    5052#include <ui/pbutton.h>
    5153#include <ui/promptdialog.h>
    5254#include <ui/resource.h>
     55#include <ui/selectdialog.h>
     56#include <ui/tab.h>
     57#include <ui/tabset.h>
    5358#include <ui/ui.h>
    5459#include <ui/window.h>
     
    8792};
    8893
     94static void scrollbar_up(ui_scrollbar_t *, void *);
     95static void scrollbar_down(ui_scrollbar_t *, void *);
     96static void scrollbar_page_up(ui_scrollbar_t *, void *);
     97static void scrollbar_page_down(ui_scrollbar_t *, void *);
     98static void scrollbar_moved(ui_scrollbar_t *, void *, gfx_coord_t);
     99
     100static ui_scrollbar_cb_t scrollbar_cb = {
     101        .up = scrollbar_up,
     102        .down = scrollbar_down,
     103        .page_up = scrollbar_page_up,
     104        .page_down = scrollbar_page_down,
     105        .moved = scrollbar_moved
     106};
     107
    89108static void uidemo_file_load(ui_menu_entry_t *, void *);
    90109static void uidemo_file_message(ui_menu_entry_t *, void *);
     110static void uidemo_file_confirmation(ui_menu_entry_t *, void *);
    91111static void uidemo_file_exit(ui_menu_entry_t *, void *);
    92112static void uidemo_edit_modify(ui_menu_entry_t *, void *);
     113static void uidemo_edit_insert_character(ui_menu_entry_t *, void *);
    93114
    94115static void file_dialog_bok(ui_file_dialog_t *, void *, const char *);
     
    110131        .bcancel = prompt_dialog_bcancel,
    111132        .close = prompt_dialog_close
     133};
     134
     135static void select_dialog_bok(ui_select_dialog_t *, void *, void *);
     136static void select_dialog_bcancel(ui_select_dialog_t *, void *);
     137static void select_dialog_close(ui_select_dialog_t *, void *);
     138
     139static ui_select_dialog_cb_t select_dialog_cb = {
     140        .bok = select_dialog_bok,
     141        .bcancel = select_dialog_bcancel,
     142        .close = select_dialog_close
    112143};
    113144
     
    215246}
    216247
    217 /** Display a message window.
     248/** Scrollbar up button pressed.
     249 *
     250 * @param scrollbar Scrollbar
     251 * @param arg Argument (demo)
     252 */
     253static void scrollbar_up(ui_scrollbar_t *scrollbar, void *arg)
     254{
     255        gfx_coord_t pos;
     256
     257        pos = ui_scrollbar_get_pos(scrollbar);
     258        ui_scrollbar_set_pos(scrollbar, pos - 1);
     259
     260        pos = ui_scrollbar_get_pos(scrollbar);
     261        scrollbar_moved(scrollbar, arg, pos);
     262}
     263
     264/** Scrollbar down button pressed.
     265 *
     266 * @param scrollbar Scrollbar
     267 * @param arg Argument (demo)
     268 */
     269static void scrollbar_down(ui_scrollbar_t *scrollbar, void *arg)
     270{
     271        gfx_coord_t pos;
     272
     273        pos = ui_scrollbar_get_pos(scrollbar);
     274        ui_scrollbar_set_pos(scrollbar, pos + 1);
     275
     276        pos = ui_scrollbar_get_pos(scrollbar);
     277        scrollbar_moved(scrollbar, arg, pos);
     278}
     279
     280/** Scrollbar page up event.
     281 *
     282 * @param scrollbar Scrollbar
     283 * @param arg Argument (demo)
     284 */
     285static void scrollbar_page_up(ui_scrollbar_t *scrollbar, void *arg)
     286{
     287        gfx_coord_t pos;
     288
     289        pos = ui_scrollbar_get_pos(scrollbar);
     290        ui_scrollbar_set_pos(scrollbar, pos -
     291            ui_scrollbar_trough_length(scrollbar) / 4);
     292
     293        pos = ui_scrollbar_get_pos(scrollbar);
     294        scrollbar_moved(scrollbar, arg, pos);
     295}
     296
     297/** Scrollbar page down event.
     298 *
     299 * @param scrollbar Scrollbar
     300 * @param arg Argument (demo)
     301 */
     302static void scrollbar_page_down(ui_scrollbar_t *scrollbar, void *arg)
     303{
     304        gfx_coord_t pos;
     305
     306        pos = ui_scrollbar_get_pos(scrollbar);
     307        ui_scrollbar_set_pos(scrollbar, pos +
     308            ui_scrollbar_trough_length(scrollbar) / 4);
     309
     310        pos = ui_scrollbar_get_pos(scrollbar);
     311        scrollbar_moved(scrollbar, arg, pos);
     312}
     313
     314/** Scrollbar was moved.
     315 *
     316 * @param scrollbar Scrollbar
     317 * @param arg Argument (demo)
     318 * @param pos Position
     319 */
     320static void scrollbar_moved(ui_scrollbar_t *scrollbar, void *arg,
     321    gfx_coord_t pos)
     322{
     323        ui_demo_t *demo = (ui_demo_t *) arg;
     324        char *str;
     325        errno_t rc;
     326        int rv;
     327
     328        rv = asprintf(&str, "Scrollbar: %d of %d", (int) pos,
     329            ui_scrollbar_move_length(scrollbar));
     330        if (rv < 0) {
     331                printf("Out of memory.\n");
     332                return;
     333        }
     334
     335        rc = ui_entry_set_text(demo->entry, str);
     336        if (rc != EOK)
     337                printf("Error changing entry text.\n");
     338        (void) ui_entry_paint(demo->entry);
     339
     340        free(str);
     341}
     342
     343/** Display a message window with OK button.
    218344 *
    219345 * @param demo UI demo
     
    290416}
    291417
     418/** File / Confirmation menu entry selected.
     419 *
     420 * @param mentry Menu entry
     421 * @param arg Argument (demo)
     422 */
     423static void uidemo_file_confirmation(ui_menu_entry_t *mentry, void *arg)
     424{
     425        ui_demo_t *demo = (ui_demo_t *) arg;
     426        ui_msg_dialog_params_t mdparams;
     427        ui_msg_dialog_t *dialog;
     428        errno_t rc;
     429
     430        ui_msg_dialog_params_init(&mdparams);
     431        mdparams.caption = "Confirmation";
     432        mdparams.text = "This will not actually do anything. Proceed?";
     433        mdparams.choice = umdc_ok_cancel;
     434
     435        rc = ui_msg_dialog_create(demo->ui, &mdparams, &dialog);
     436        if (rc != EOK) {
     437                printf("Error creating message dialog.\n");
     438                return;
     439        }
     440
     441        ui_msg_dialog_set_cb(dialog, &msg_dialog_cb, &demo);
     442}
     443
    292444/** File / Exit menu entry selected.
    293445 *
     
    320472        rc = ui_prompt_dialog_create(demo->ui, &pdparams, &dialog);
    321473        if (rc != EOK) {
    322                 printf("Error creating message dialog.\n");
     474                printf("Error creating prompt dialog.\n");
    323475                return;
    324476        }
    325477
    326478        ui_prompt_dialog_set_cb(dialog, &prompt_dialog_cb, demo);
     479}
     480
     481/** Edit / Insert Character menu entry selected.
     482 *
     483 * @param mentry Menu entry
     484 * @param arg Argument (demo)
     485 */
     486static void uidemo_edit_insert_character(ui_menu_entry_t *mentry, void *arg)
     487{
     488        ui_demo_t *demo = (ui_demo_t *) arg;
     489        ui_select_dialog_params_t sdparams;
     490        ui_select_dialog_t *dialog;
     491        ui_list_entry_attr_t attr;
     492        errno_t rc;
     493
     494        ui_select_dialog_params_init(&sdparams);
     495        sdparams.caption = "Insert Character";
     496        sdparams.prompt = "Select character to insert";
     497
     498        rc = ui_select_dialog_create(demo->ui, &sdparams, &dialog);
     499        if (rc != EOK) {
     500                printf("Error creating select dialog.\n");
     501                return;
     502        }
     503
     504        ui_list_entry_attr_init(&attr);
     505        attr.caption = "Dollar sign ($)";
     506        attr.arg = (void *)'$';
     507        rc = ui_select_dialog_append(dialog, &attr);
     508        if (rc != EOK) {
     509                printf("Error appending entry to list.\n");
     510                return;
     511        }
     512
     513        ui_list_entry_attr_init(&attr);
     514        attr.caption = "Hash sign (#)";
     515        attr.arg = (void *)'#';
     516        rc = ui_select_dialog_append(dialog, &attr);
     517        if (rc != EOK) {
     518                printf("Error appending entry to list.\n");
     519                return;
     520        }
     521
     522        ui_list_entry_attr_init(&attr);
     523        attr.caption = "Question mark (?)";
     524        attr.arg = (void *)'?';
     525        rc = ui_select_dialog_append(dialog, &attr);
     526        if (rc != EOK) {
     527                printf("Error appending entry to list.\n");
     528                return;
     529        }
     530
     531        ui_select_dialog_set_cb(dialog, &select_dialog_cb, demo);
     532
     533        (void) ui_select_dialog_paint(dialog);
    327534}
    328535
     
    413620/** Prompt dialog cancel button press.
    414621 *
    415  * @param dialog File dialog
     622 * @param dialog Prompt dialog
    416623 * @param arg Argument (ui_demo_t *)
    417624 */
     
    426633/** Prompt dialog close request.
    427634 *
    428  * @param dialog File dialog
     635 * @param dialog Prompt dialog
    429636 * @param arg Argument (ui_demo_t *)
    430637 */
     
    435642        (void) demo;
    436643        ui_prompt_dialog_destroy(dialog);
     644}
     645
     646/** Select dialog OK button press.
     647 *
     648 * @param dialog Select dialog
     649 * @param arg Argument (ui_demo_t *)
     650 * @param text Submitted text
     651 */
     652static void select_dialog_bok(ui_select_dialog_t *dialog, void *arg,
     653    void *earg)
     654{
     655        ui_demo_t *demo = (ui_demo_t *) arg;
     656        char str[2];
     657
     658        ui_select_dialog_destroy(dialog);
     659        str[0] = (char)(intptr_t)earg;
     660        str[1] = '\0';
     661        (void) ui_entry_insert_str(demo->entry, str);
     662}
     663
     664/** Select dialog cancel button press.
     665 *
     666 * @param dialog Select dialog
     667 * @param arg Argument (ui_demo_t *)
     668 */
     669static void select_dialog_bcancel(ui_select_dialog_t *dialog, void *arg)
     670{
     671        ui_demo_t *demo = (ui_demo_t *) arg;
     672
     673        (void) demo;
     674        ui_select_dialog_destroy(dialog);
     675}
     676
     677/** Select dialog close request.
     678 *
     679 * @param dialog Select dialog
     680 * @param arg Argument (ui_demo_t *)
     681 */
     682static void select_dialog_close(ui_select_dialog_t *dialog, void *arg)
     683{
     684        ui_demo_t *demo = (ui_demo_t *) arg;
     685
     686        (void) demo;
     687        ui_select_dialog_destroy(dialog);
    437688}
    438689
     
    486737        ui_menu_entry_t *mexit;
    487738        ui_menu_entry_t *mmodify;
     739        ui_menu_entry_t *minsert_char;
    488740        ui_menu_entry_t *mabout;
     741        ui_list_entry_attr_t eattr;
    489742        errno_t rc;
    490743
     
    500753        ui_wnd_params_init(&params);
    501754        params.caption = "UI Demo";
    502         params.style |= ui_wds_resizable;
     755        params.style |= ui_wds_maximize_btn | ui_wds_resizable;
    503756
    504757        /* FIXME: Auto layout */
     
    506759                params.rect.p0.x = 0;
    507760                params.rect.p0.y = 0;
    508                 params.rect.p1.x = 44;
    509                 params.rect.p1.y = 21;
     761                params.rect.p1.x = 46;
     762                params.rect.p1.y = 25;
    510763        } else {
    511764                params.rect.p0.x = 0;
    512765                params.rect.p0.y = 0;
    513                 params.rect.p1.x = 220;
    514                 params.rect.p1.y = 350;
    515         }
     766                params.rect.p1.x = 255;
     767                params.rect.p1.y = 410;
     768        }
     769
     770        /* Only allow making the window larger */
     771        gfx_rect_dims(&params.rect, &params.min_size);
    516772
    517773        rc = ui_window_create(ui, &params, &window);
     
    539795        }
    540796
    541         rc = ui_menu_create(demo.mbar, "File", &demo.mfile);
     797        rc = ui_menu_dd_create(demo.mbar, "~F~ile", NULL, &demo.mfile);
    542798        if (rc != EOK) {
    543799                printf("Error creating menu.\n");
     
    545801        }
    546802
    547         rc = ui_menu_entry_create(demo.mfile, "Message", "", &mmsg);
     803        rc = ui_menu_entry_create(demo.mfile, "~M~essage", "", &mmsg);
    548804        if (rc != EOK) {
    549805                printf("Error creating menu.\n");
     
    553809        ui_menu_entry_set_cb(mmsg, uidemo_file_message, (void *) &demo);
    554810
    555         rc = ui_menu_entry_create(demo.mfile, "Load", "", &mload);
     811        rc = ui_menu_entry_create(demo.mfile, "~C~onfirmation", "", &mmsg);
    556812        if (rc != EOK) {
    557813                printf("Error creating menu.\n");
     
    559815        }
    560816
     817        ui_menu_entry_set_cb(mmsg, uidemo_file_confirmation, (void *) &demo);
     818
     819        rc = ui_menu_entry_create(demo.mfile, "~L~oad", "", &mload);
     820        if (rc != EOK) {
     821                printf("Error creating menu.\n");
     822                return rc;
     823        }
     824
    561825        ui_menu_entry_set_cb(mload, uidemo_file_load, (void *) &demo);
    562826
    563         rc = ui_menu_entry_create(demo.mfile, "Foo", "Ctrl-Alt-Del", &mfoo);
     827        rc = ui_menu_entry_create(demo.mfile, "~F~oo", "Ctrl-Alt-Del", &mfoo);
    564828        if (rc != EOK) {
    565829                printf("Error creating menu.\n");
     
    567831        }
    568832
    569         rc = ui_menu_entry_create(demo.mfile, "Bar", "", &mbar);
     833        rc = ui_menu_entry_create(demo.mfile, "~B~ar", "", &mbar);
    570834        if (rc != EOK) {
    571835                printf("Error creating menu.\n");
     
    573837        }
    574838
    575         rc = ui_menu_entry_create(demo.mfile, "Foobar", "", &mfoobar);
     839        rc = ui_menu_entry_create(demo.mfile, "F~o~obar", "", &mfoobar);
    576840        if (rc != EOK) {
    577841                printf("Error creating menu.\n");
     
    579843        }
    580844
     845        ui_menu_entry_set_disabled(mfoobar, true);
     846
    581847        rc = ui_menu_entry_sep_create(demo.mfile, &msep);
    582848        if (rc != EOK) {
     
    585851        }
    586852
    587         rc = ui_menu_entry_create(demo.mfile, "Exit", "Alt-F4", &mexit);
     853        rc = ui_menu_entry_create(demo.mfile, "E~x~it", "Alt-F4", &mexit);
    588854        if (rc != EOK) {
    589855                printf("Error creating menu.\n");
     
    593859        ui_menu_entry_set_cb(mexit, uidemo_file_exit, (void *) &demo);
    594860
    595         rc = ui_menu_create(demo.mbar, "Edit", &demo.medit);
     861        rc = ui_menu_dd_create(demo.mbar, "~E~dit", NULL, &demo.medit);
    596862        if (rc != EOK) {
    597863                printf("Error creating menu.\n");
     
    599865        }
    600866
    601         rc = ui_menu_entry_create(demo.medit, "Modify", "", &mmodify);
     867        rc = ui_menu_entry_create(demo.medit, "~M~odify", "", &mmodify);
    602868        if (rc != EOK) {
    603869                printf("Error creating menu.\n");
     
    607873        ui_menu_entry_set_cb(mmodify, uidemo_edit_modify, (void *) &demo);
    608874
    609         rc = ui_menu_create(demo.mbar, "Preferences", &demo.mpreferences);
     875        rc = ui_menu_entry_create(demo.medit, "~I~nsert Character",
     876            "", &minsert_char);
    610877        if (rc != EOK) {
    611878                printf("Error creating menu.\n");
     
    613880        }
    614881
    615         rc = ui_menu_create(demo.mbar, "Help", &demo.mhelp);
     882        ui_menu_entry_set_cb(minsert_char, uidemo_edit_insert_character,
     883            (void *) &demo);
     884
     885        rc = ui_menu_dd_create(demo.mbar, "~P~references", NULL,
     886            &demo.mpreferences);
    616887        if (rc != EOK) {
    617888                printf("Error creating menu.\n");
     
    619890        }
    620891
    621         rc = ui_menu_entry_create(demo.mhelp, "About", "Ctrl-H, F1", &mabout);
     892        rc = ui_menu_dd_create(demo.mbar, "~H~elp", NULL, &demo.mhelp);
     893        if (rc != EOK) {
     894                printf("Error creating menu.\n");
     895                return rc;
     896        }
     897
     898        rc = ui_menu_entry_create(demo.mhelp, "~A~bout", "Ctrl-H, F1", &mabout);
    622899        if (rc != EOK) {
    623900                printf("Error creating menu.\n");
     
    634911                rect.p0.x = 4;
    635912                rect.p0.y = 30;
    636                 rect.p1.x = 216;
     913                rect.p1.x = 251;
    637914                rect.p1.y = 52;
    638915        }
     916
    639917        ui_menu_bar_set_rect(demo.mbar, &rect);
    640918
     
    645923        }
    646924
     925        rc = ui_tab_set_create(ui_res, &demo.tabset);
     926        if (rc != EOK) {
     927                printf("Error creating tab set.\n");
     928                return rc;
     929        }
     930
     931        /* FIXME: Auto layout */
     932        if (ui_is_textmode(ui)) {
     933                rect.p0.x = 2;
     934                rect.p0.y = 2;
     935                rect.p1.x = 44;
     936                rect.p1.y = 24;
     937        } else {
     938                rect.p0.x = 8;
     939                rect.p0.y = 53;
     940                rect.p1.x = 250;
     941                rect.p1.y = 405;
     942        }
     943
     944        ui_tab_set_set_rect(demo.tabset, &rect);
     945
     946        rc = ui_tab_create(demo.tabset, "Basic", &demo.tbasic);
     947        if (rc != EOK) {
     948                printf("Error creating tab.\n");
     949                return rc;
     950        }
     951
     952        rc = ui_tab_create(demo.tabset, "Lists", &demo.tlists);
     953        if (rc != EOK) {
     954                printf("Error creating tab.\n");
     955                return rc;
     956        }
     957
     958        rc = ui_fixed_add(demo.fixed, ui_tab_set_ctl(demo.tabset));
     959        if (rc != EOK) {
     960                printf("Error adding control to layout.\n");
     961                return rc;
     962        }
     963
     964        rc = ui_fixed_create(&demo.bfixed);
     965        if (rc != EOK) {
     966                printf("Error creating fixed layout.\n");
     967                return rc;
     968        }
     969
    647970        rc = ui_entry_create(window, "", &demo.entry);
    648971        if (rc != EOK) {
     
    653976        /* FIXME: Auto layout */
    654977        if (ui_is_textmode(ui)) {
    655                 rect.p0.x = 2;
    656                 rect.p0.y = 3;
    657                 rect.p1.x = 42;
    658                 rect.p1.y = 4;
     978                rect.p0.x = 4;
     979                rect.p0.y = 5;
     980                rect.p1.x = 41;
     981                rect.p1.y = 6;
    659982        } else {
    660983                rect.p0.x = 15;
    661                 rect.p0.y = 53;
     984                rect.p0.y = 88;
    662985                rect.p1.x = 205;
    663                 rect.p1.y = 78;
     986                rect.p1.y = 113;
    664987        }
    665988
     
    667990        ui_entry_set_halign(demo.entry, gfx_halign_center);
    668991
    669         rc = ui_fixed_add(demo.fixed, ui_entry_ctl(demo.entry));
     992        rc = ui_fixed_add(demo.bfixed, ui_entry_ctl(demo.entry));
    670993        if (rc != EOK) {
    671994                printf("Error adding control to layout.\n");
     
    6811004        /* FIXME: Auto layout */
    6821005        if (ui_is_textmode(ui)) {
    683                 rect.p0.x = 2;
    684                 rect.p0.y = 5;
    685                 rect.p1.x = 42;
    686                 rect.p1.y = 6;
     1006                rect.p0.x = 4;
     1007                rect.p0.y = 7;
     1008                rect.p1.x = 41;
     1009                rect.p1.y = 8;
    6871010        } else {
    6881011                rect.p0.x = 60;
    689                 rect.p0.y = 88;
     1012                rect.p0.y = 123;
    6901013                rect.p1.x = 160;
    691                 rect.p1.y = 101;
     1014                rect.p1.y = 136;
    6921015        }
    6931016
     
    6951018        ui_label_set_halign(demo.label, gfx_halign_center);
    6961019
    697         rc = ui_fixed_add(demo.fixed, ui_label_ctl(demo.label));
     1020        rc = ui_fixed_add(demo.bfixed, ui_label_ctl(demo.label));
    6981021        if (rc != EOK) {
    6991022                printf("Error adding control to layout.\n");
     
    7111034        /* FIXME: Auto layout */
    7121035        if (ui_is_textmode(ui)) {
    713                 rect.p0.x = 2;
    714                 rect.p0.y = 7;
    715                 rect.p1.x = 12;
    716                 rect.p1.y = 8;
     1036                rect.p0.x = 4;
     1037                rect.p0.y = 9;
     1038                rect.p1.x = 15;
     1039                rect.p1.y = 10;
    7171040        } else {
    7181041                rect.p0.x = 15;
    719                 rect.p0.y = 111;
     1042                rect.p0.y = 146;
    7201043                rect.p1.x = 105;
    721                 rect.p1.y = 139;
     1044                rect.p1.y = 174;
    7221045        }
    7231046
     
    7261049        ui_pbutton_set_default(demo.pb1, true);
    7271050
    728         rc = ui_fixed_add(demo.fixed, ui_pbutton_ctl(demo.pb1));
     1051        rc = ui_fixed_add(demo.bfixed, ui_pbutton_ctl(demo.pb1));
    7291052        if (rc != EOK) {
    7301053                printf("Error adding control to layout.\n");
     
    7411064
    7421065        if (ui_is_textmode(ui)) {
    743                 rect.p0.x = 32;
    744                 rect.p0.y = 7;
    745                 rect.p1.x = 42;
    746                 rect.p1.y = 8;
     1066                rect.p0.x = 30;
     1067                rect.p0.y = 9;
     1068                rect.p1.x = 41;
     1069                rect.p1.y = 10;
    7471070        } else {
    7481071                rect.p0.x = 115;
    749                 rect.p0.y = 111;
     1072                rect.p0.y = 146;
    7501073                rect.p1.x = 205;
    751                 rect.p1.y = 139;
     1074                rect.p1.y = 174;
    7521075        }
    7531076
    7541077        ui_pbutton_set_rect(demo.pb2, &rect);
    7551078
    756         rc = ui_fixed_add(demo.fixed, ui_pbutton_ctl(demo.pb2));
     1079        rc = ui_fixed_add(demo.bfixed, ui_pbutton_ctl(demo.pb2));
    7571080        if (rc != EOK) {
    7581081                printf("Error adding control to layout.\n");
     
    7641087                bparams.rect.p0.x = 0;
    7651088                bparams.rect.p0.y = 0;
    766                 bparams.rect.p1.x = 40;
     1089                bparams.rect.p1.x = 37;
    7671090                bparams.rect.p1.y = 2;
    7681091        } else {
     
    7881111
    7891112        if (ui_is_textmode(ui)) {
    790                 off.x = 2;
    791                 off.y = 9;
     1113                off.x = 4;
     1114                off.y = 11;
    7921115        } else {
    7931116                off.x = 15;
    794                 off.y = 155;
     1117                off.y = 190;
    7951118        }
    7961119
     
    8061129        ui_image_set_rect(demo.image, &rect);
    8071130
    808         rc = ui_fixed_add(demo.fixed, ui_image_ctl(demo.image));
     1131        rc = ui_fixed_add(demo.bfixed, ui_image_ctl(demo.image));
    8091132        if (rc != EOK) {
    8101133                printf("Error adding control to layout.\n");
     
    8221145        /* FIXME: Auto layout */
    8231146        if (ui_is_textmode(ui)) {
    824                 rect.p0.x = 2;
    825                 rect.p0.y = 12;
    826                 rect.p1.x = 12;
    827                 rect.p1.y = 13;
     1147                rect.p0.x = 4;
     1148                rect.p0.y = 14;
     1149                rect.p1.x = 14;
     1150                rect.p1.y = 15;
    8281151        } else {
    8291152                rect.p0.x = 15;
    830                 rect.p0.y = 190;
     1153                rect.p0.y = 225;
    8311154                rect.p1.x = 140;
    832                 rect.p1.y = 210;
     1155                rect.p1.y = 245;
    8331156        }
    8341157
    8351158        ui_checkbox_set_rect(demo.checkbox, &rect);
    8361159
    837         rc = ui_fixed_add(demo.fixed, ui_checkbox_ctl(demo.checkbox));
     1160        rc = ui_fixed_add(demo.bfixed, ui_checkbox_ctl(demo.checkbox));
    8381161        if (rc != EOK) {
    8391162                printf("Error adding control to layout.\n");
     
    8591182        /* FIXME: Auto layout */
    8601183        if (ui_is_textmode(ui)) {
    861                 rect.p0.x = 2;
    862                 rect.p0.y = 14;
    863                 rect.p1.x = 12;
    864                 rect.p1.y = 15;
     1184                rect.p0.x = 4;
     1185                rect.p0.y = 16;
     1186                rect.p1.x = 14;
     1187                rect.p1.y = 17;
    8651188        } else {
    8661189                rect.p0.x = 15;
    867                 rect.p0.y = 220;
     1190                rect.p0.y = 255;
    8681191                rect.p1.x = 140;
    869                 rect.p1.y = 240;
     1192                rect.p1.y = 275;
    8701193        }
    8711194        ui_rbutton_set_rect(demo.rbleft, &rect);
    8721195
    873         rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbleft));
     1196        rc = ui_fixed_add(demo.bfixed, ui_rbutton_ctl(demo.rbleft));
    8741197        if (rc != EOK) {
    8751198                printf("Error adding control to layout.\n");
     
    8861209        /* FIXME: Auto layout */
    8871210        if (ui_is_textmode(ui)) {
    888                 rect.p0.x = 2;
    889                 rect.p0.y = 15;
    890                 rect.p1.x = 12;
    891                 rect.p1.y = 16;
     1211                rect.p0.x = 4;
     1212                rect.p0.y = 17;
     1213                rect.p1.x = 14;
     1214                rect.p1.y = 18;
    8921215        } else {
    8931216                rect.p0.x = 15;
    894                 rect.p0.y = 250;
     1217                rect.p0.y = 285;
    8951218                rect.p1.x = 140;
    896                 rect.p1.y = 270;
     1219                rect.p1.y = 305;
    8971220        }
    8981221        ui_rbutton_set_rect(demo.rbcenter, &rect);
    8991222        ui_rbutton_select(demo.rbcenter);
    9001223
    901         rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbcenter));
     1224        rc = ui_fixed_add(demo.bfixed, ui_rbutton_ctl(demo.rbcenter));
    9021225        if (rc != EOK) {
    9031226                printf("Error adding control to layout.\n");
     
    9141237        /* FIXME: Auto layout */
    9151238        if (ui_is_textmode(ui)) {
    916                 rect.p0.x = 2;
    917                 rect.p0.y = 16;
    918                 rect.p1.x = 12;
    919                 rect.p1.y = 17;
     1239                rect.p0.x = 4;
     1240                rect.p0.y = 18;
     1241                rect.p1.x = 14;
     1242                rect.p1.y = 19;
    9201243        } else {
    9211244                rect.p0.x = 15;
    922                 rect.p0.y = 280;
     1245                rect.p0.y = 315;
    9231246                rect.p1.x = 140;
    924                 rect.p1.y = 300;
     1247                rect.p1.y = 335;
    9251248        }
    9261249        ui_rbutton_set_rect(demo.rbright, &rect);
    9271250
    928         rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbright));
     1251        rc = ui_fixed_add(demo.bfixed, ui_rbutton_ctl(demo.rbright));
    9291252        if (rc != EOK) {
    9301253                printf("Error adding control to layout.\n");
     
    9321255        }
    9331256
    934         rc = ui_slider_create(ui_res, "Slide!", &demo.slider);
     1257        rc = ui_slider_create(ui_res, &demo.slider);
    9351258        if (rc != EOK) {
    9361259                printf("Error creating button.\n");
     
    9421265        /* FIXME: Auto layout */
    9431266        if (ui_is_textmode(ui)) {
    944                 rect.p0.x = 2;
    945                 rect.p0.y = 18;
    946                 rect.p1.x = 12;
    947                 rect.p1.y = 19;
     1267                rect.p0.x = 4;
     1268                rect.p0.y = 20;
     1269                rect.p1.x = 32;
     1270                rect.p1.y = 21;
    9481271        } else {
    9491272                rect.p0.x = 15;
    950                 rect.p0.y = 310;
     1273                rect.p0.y = 345;
    9511274                rect.p1.x = 130;
    952                 rect.p1.y = 330;
     1275                rect.p1.y = 365;
    9531276        }
    9541277
    9551278        ui_slider_set_rect(demo.slider, &rect);
    9561279
    957         rc = ui_fixed_add(demo.fixed, ui_slider_ctl(demo.slider));
     1280        rc = ui_fixed_add(demo.bfixed, ui_slider_ctl(demo.slider));
    9581281        if (rc != EOK) {
    9591282                printf("Error adding control to layout.\n");
    9601283                return rc;
    9611284        }
     1285
     1286        rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &demo.hscrollbar);
     1287        if (rc != EOK) {
     1288                printf("Error creating scrollbar.\n");
     1289                return rc;
     1290        }
     1291
     1292        ui_scrollbar_set_cb(demo.hscrollbar, &scrollbar_cb, (void *) &demo);
     1293
     1294        /* FIXME: Auto layout */
     1295        if (ui_is_textmode(ui)) {
     1296                rect.p0.x = 4;
     1297                rect.p0.y = 22;
     1298                rect.p1.x = 42;
     1299                rect.p1.y = 23;
     1300        } else {
     1301                rect.p0.x = 15;
     1302                rect.p0.y = 375;
     1303                rect.p1.x = 220;
     1304                rect.p1.y = 398;
     1305        }
     1306
     1307        ui_scrollbar_set_rect(demo.hscrollbar, &rect);
     1308
     1309        ui_scrollbar_set_thumb_length(demo.hscrollbar,
     1310            ui_scrollbar_trough_length(demo.hscrollbar) / 4);
     1311
     1312        rc = ui_fixed_add(demo.bfixed, ui_scrollbar_ctl(demo.hscrollbar));
     1313        if (rc != EOK) {
     1314                printf("Error adding control to layout.\n");
     1315                return rc;
     1316        }
     1317
     1318        rc = ui_scrollbar_create(ui, window, ui_sbd_vert, &demo.vscrollbar);
     1319        if (rc != EOK) {
     1320                printf("Error creating button.\n");
     1321                return rc;
     1322        }
     1323
     1324        ui_scrollbar_set_cb(demo.vscrollbar, &scrollbar_cb, (void *) &demo);
     1325
     1326        /* FIXME: Auto layout */
     1327        if (ui_is_textmode(ui)) {
     1328                rect.p0.x = 42;
     1329                rect.p0.y = 5;
     1330                rect.p1.x = 43;
     1331                rect.p1.y = 22;
     1332        } else {
     1333                rect.p0.x = 220;
     1334                rect.p0.y = 88;
     1335                rect.p1.x = 243;
     1336                rect.p1.y = 375;
     1337        }
     1338
     1339        ui_scrollbar_set_rect(demo.vscrollbar, &rect);
     1340
     1341        ui_scrollbar_set_thumb_length(demo.vscrollbar,
     1342            ui_scrollbar_trough_length(demo.vscrollbar) / 4);
     1343
     1344        rc = ui_fixed_add(demo.bfixed, ui_scrollbar_ctl(demo.vscrollbar));
     1345        if (rc != EOK) {
     1346                printf("Error adding control to layout.\n");
     1347                return rc;
     1348        }
     1349
     1350        ui_tab_add(demo.tbasic, ui_fixed_ctl(demo.bfixed));
     1351
     1352        rc = ui_fixed_create(&demo.lfixed);
     1353        if (rc != EOK) {
     1354                printf("Error creating fixed layout.\n");
     1355                return rc;
     1356        }
     1357
     1358        rc = ui_list_create(window, false, &demo.list);
     1359        if (rc != EOK) {
     1360                printf("Error creating list.\n");
     1361                return rc;
     1362        }
     1363
     1364        ui_list_entry_attr_init(&eattr);
     1365
     1366        eattr.caption = "One";
     1367        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1368        if (rc != EOK) {
     1369                printf("Error adding list entry.\n");
     1370                return rc;
     1371        }
     1372
     1373        eattr.caption = "Two";
     1374        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1375        if (rc != EOK) {
     1376                printf("Error adding list entry.\n");
     1377                return rc;
     1378        }
     1379
     1380        eattr.caption = "Three";
     1381        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1382        if (rc != EOK) {
     1383                printf("Error adding list entry.\n");
     1384                return rc;
     1385        }
     1386
     1387        eattr.caption = "Four";
     1388        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1389        if (rc != EOK) {
     1390                printf("Error adding list entry.\n");
     1391                return rc;
     1392        }
     1393
     1394        eattr.caption = "Five";
     1395        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1396        if (rc != EOK) {
     1397                printf("Error adding list entry.\n");
     1398                return rc;
     1399        }
     1400
     1401        eattr.caption = "Six";
     1402        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1403        if (rc != EOK) {
     1404                printf("Error adding list entry.\n");
     1405                return rc;
     1406        }
     1407
     1408        /* FIXME: Auto layout */
     1409        if (ui_is_textmode(ui)) {
     1410                rect.p0.x = 4;
     1411                rect.p0.y = 5;
     1412                rect.p1.x = 41;
     1413                rect.p1.y = 10;
     1414        } else {
     1415                rect.p0.x = 15;
     1416                rect.p0.y = 88;
     1417                rect.p1.x = 245;
     1418                rect.p1.y = 173;
     1419        }
     1420
     1421        ui_list_set_rect(demo.list, &rect);
     1422
     1423        rc = ui_fixed_add(demo.lfixed, ui_list_ctl(demo.list));
     1424        if (rc != EOK) {
     1425                printf("Error adding control to layout.\n");
     1426                return rc;
     1427        }
     1428
     1429        ui_tab_add(demo.tlists, ui_fixed_ctl(demo.lfixed));
    9621430
    9631431        ui_window_add(window, ui_fixed_ctl(demo.fixed));
     
    10191487int main(int argc, char *argv[])
    10201488{
    1021         const char *display_spec = UI_DISPLAY_DEFAULT;
     1489        const char *display_spec = UI_ANY_DEFAULT;
    10221490        errno_t rc;
    10231491        int i;
Note: See TracChangeset for help on using the changeset viewer.