Ignore:
File:
1 edited

Legend:

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

    r80d4aea ref4d684  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2023 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>
     
    8590static ui_slider_cb_t slider_cb = {
    8691        .moved = slider_moved
     92};
     93
     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
    87106};
    88107
     
    91110static void uidemo_file_exit(ui_menu_entry_t *, void *);
    92111static void uidemo_edit_modify(ui_menu_entry_t *, void *);
     112static void uidemo_edit_insert_character(ui_menu_entry_t *, void *);
    93113
    94114static void file_dialog_bok(ui_file_dialog_t *, void *, const char *);
     
    110130        .bcancel = prompt_dialog_bcancel,
    111131        .close = prompt_dialog_close
     132};
     133
     134static void select_dialog_bok(ui_select_dialog_t *, void *, void *);
     135static void select_dialog_bcancel(ui_select_dialog_t *, void *);
     136static void select_dialog_close(ui_select_dialog_t *, void *);
     137
     138static ui_select_dialog_cb_t select_dialog_cb = {
     139        .bok = select_dialog_bok,
     140        .bcancel = select_dialog_bcancel,
     141        .close = select_dialog_close
    112142};
    113143
     
    215245}
    216246
     247/** Scrollbar up button pressed.
     248 *
     249 * @param scrollbar Scrollbar
     250 * @param arg Argument (demo)
     251 */
     252static void scrollbar_up(ui_scrollbar_t *scrollbar, void *arg)
     253{
     254        gfx_coord_t pos;
     255
     256        pos = ui_scrollbar_get_pos(scrollbar);
     257        ui_scrollbar_set_pos(scrollbar, pos - 1);
     258
     259        pos = ui_scrollbar_get_pos(scrollbar);
     260        scrollbar_moved(scrollbar, arg, pos);
     261}
     262
     263/** Scrollbar down button pressed.
     264 *
     265 * @param scrollbar Scrollbar
     266 * @param arg Argument (demo)
     267 */
     268static void scrollbar_down(ui_scrollbar_t *scrollbar, void *arg)
     269{
     270        gfx_coord_t pos;
     271
     272        pos = ui_scrollbar_get_pos(scrollbar);
     273        ui_scrollbar_set_pos(scrollbar, pos + 1);
     274
     275        pos = ui_scrollbar_get_pos(scrollbar);
     276        scrollbar_moved(scrollbar, arg, pos);
     277}
     278
     279/** Scrollbar page up event.
     280 *
     281 * @param scrollbar Scrollbar
     282 * @param arg Argument (demo)
     283 */
     284static void scrollbar_page_up(ui_scrollbar_t *scrollbar, void *arg)
     285{
     286        gfx_coord_t pos;
     287
     288        pos = ui_scrollbar_get_pos(scrollbar);
     289        ui_scrollbar_set_pos(scrollbar, pos -
     290            ui_scrollbar_trough_length(scrollbar) / 4);
     291
     292        pos = ui_scrollbar_get_pos(scrollbar);
     293        scrollbar_moved(scrollbar, arg, pos);
     294}
     295
     296/** Scrollbar page down event.
     297 *
     298 * @param scrollbar Scrollbar
     299 * @param arg Argument (demo)
     300 */
     301static void scrollbar_page_down(ui_scrollbar_t *scrollbar, void *arg)
     302{
     303        gfx_coord_t pos;
     304
     305        pos = ui_scrollbar_get_pos(scrollbar);
     306        ui_scrollbar_set_pos(scrollbar, pos +
     307            ui_scrollbar_trough_length(scrollbar) / 4);
     308
     309        pos = ui_scrollbar_get_pos(scrollbar);
     310        scrollbar_moved(scrollbar, arg, pos);
     311}
     312
     313/** Scrollbar was moved.
     314 *
     315 * @param scrollbar Scrollbar
     316 * @param arg Argument (demo)
     317 * @param pos Position
     318 */
     319static void scrollbar_moved(ui_scrollbar_t *scrollbar, void *arg,
     320    gfx_coord_t pos)
     321{
     322        ui_demo_t *demo = (ui_demo_t *) arg;
     323        char *str;
     324        errno_t rc;
     325        int rv;
     326
     327        rv = asprintf(&str, "Scrollbar: %d of %d", (int) pos,
     328            ui_scrollbar_move_length(scrollbar));
     329        if (rv < 0) {
     330                printf("Out of memory.\n");
     331                return;
     332        }
     333
     334        rc = ui_entry_set_text(demo->entry, str);
     335        if (rc != EOK)
     336                printf("Error changing entry text.\n");
     337        (void) ui_entry_paint(demo->entry);
     338
     339        free(str);
     340}
     341
    217342/** Display a message window.
    218343 *
     
    320445        rc = ui_prompt_dialog_create(demo->ui, &pdparams, &dialog);
    321446        if (rc != EOK) {
    322                 printf("Error creating message dialog.\n");
     447                printf("Error creating prompt dialog.\n");
    323448                return;
    324449        }
    325450
    326451        ui_prompt_dialog_set_cb(dialog, &prompt_dialog_cb, demo);
     452}
     453
     454/** Edit / Insert Character menu entry selected.
     455 *
     456 * @param mentry Menu entry
     457 * @param arg Argument (demo)
     458 */
     459static void uidemo_edit_insert_character(ui_menu_entry_t *mentry, void *arg)
     460{
     461        ui_demo_t *demo = (ui_demo_t *) arg;
     462        ui_select_dialog_params_t sdparams;
     463        ui_select_dialog_t *dialog;
     464        ui_list_entry_attr_t attr;
     465        errno_t rc;
     466
     467        ui_select_dialog_params_init(&sdparams);
     468        sdparams.caption = "Insert Character";
     469        sdparams.prompt = "Select character to insert";
     470
     471        rc = ui_select_dialog_create(demo->ui, &sdparams, &dialog);
     472        if (rc != EOK) {
     473                printf("Error creating select dialog.\n");
     474                return;
     475        }
     476
     477        ui_list_entry_attr_init(&attr);
     478        attr.caption = "Dollar sign ($)";
     479        attr.arg = (void *)'$';
     480        rc = ui_select_dialog_append(dialog, &attr);
     481        if (rc != EOK) {
     482                printf("Error appending entry to list.\n");
     483                return;
     484        }
     485
     486        ui_list_entry_attr_init(&attr);
     487        attr.caption = "Hash sign (#)";
     488        attr.arg = (void *)'#';
     489        rc = ui_select_dialog_append(dialog, &attr);
     490        if (rc != EOK) {
     491                printf("Error appending entry to list.\n");
     492                return;
     493        }
     494
     495        ui_list_entry_attr_init(&attr);
     496        attr.caption = "Question mark (?)";
     497        attr.arg = (void *)'?';
     498        rc = ui_select_dialog_append(dialog, &attr);
     499        if (rc != EOK) {
     500                printf("Error appending entry to list.\n");
     501                return;
     502        }
     503
     504        ui_select_dialog_set_cb(dialog, &select_dialog_cb, demo);
     505
     506        (void) ui_select_dialog_paint(dialog);
    327507}
    328508
     
    413593/** Prompt dialog cancel button press.
    414594 *
    415  * @param dialog File dialog
     595 * @param dialog Prompt dialog
    416596 * @param arg Argument (ui_demo_t *)
    417597 */
     
    426606/** Prompt dialog close request.
    427607 *
    428  * @param dialog File dialog
     608 * @param dialog Prompt dialog
    429609 * @param arg Argument (ui_demo_t *)
    430610 */
     
    435615        (void) demo;
    436616        ui_prompt_dialog_destroy(dialog);
     617}
     618
     619/** Select dialog OK button press.
     620 *
     621 * @param dialog Select dialog
     622 * @param arg Argument (ui_demo_t *)
     623 * @param text Submitted text
     624 */
     625static void select_dialog_bok(ui_select_dialog_t *dialog, void *arg,
     626    void *earg)
     627{
     628        ui_demo_t *demo = (ui_demo_t *) arg;
     629        char str[2];
     630
     631        ui_select_dialog_destroy(dialog);
     632        str[0] = (char)(intptr_t)earg;
     633        str[1] = '\0';
     634        (void) ui_entry_insert_str(demo->entry, str);
     635}
     636
     637/** Select dialog cancel button press.
     638 *
     639 * @param dialog Select dialog
     640 * @param arg Argument (ui_demo_t *)
     641 */
     642static void select_dialog_bcancel(ui_select_dialog_t *dialog, void *arg)
     643{
     644        ui_demo_t *demo = (ui_demo_t *) arg;
     645
     646        (void) demo;
     647        ui_select_dialog_destroy(dialog);
     648}
     649
     650/** Select dialog close request.
     651 *
     652 * @param dialog Select dialog
     653 * @param arg Argument (ui_demo_t *)
     654 */
     655static void select_dialog_close(ui_select_dialog_t *dialog, void *arg)
     656{
     657        ui_demo_t *demo = (ui_demo_t *) arg;
     658
     659        (void) demo;
     660        ui_select_dialog_destroy(dialog);
    437661}
    438662
     
    486710        ui_menu_entry_t *mexit;
    487711        ui_menu_entry_t *mmodify;
     712        ui_menu_entry_t *minsert_char;
    488713        ui_menu_entry_t *mabout;
     714        ui_list_entry_attr_t eattr;
    489715        errno_t rc;
    490716
     
    500726        ui_wnd_params_init(&params);
    501727        params.caption = "UI Demo";
    502         params.style |= ui_wds_resizable;
     728        params.style |= ui_wds_maximize_btn | ui_wds_resizable;
    503729
    504730        /* FIXME: Auto layout */
     
    506732                params.rect.p0.x = 0;
    507733                params.rect.p0.y = 0;
    508                 params.rect.p1.x = 44;
    509                 params.rect.p1.y = 21;
     734                params.rect.p1.x = 46;
     735                params.rect.p1.y = 25;
    510736        } else {
    511737                params.rect.p0.x = 0;
    512738                params.rect.p0.y = 0;
    513                 params.rect.p1.x = 220;
    514                 params.rect.p1.y = 350;
     739                params.rect.p1.x = 255;
     740                params.rect.p1.y = 410;
    515741        }
    516742
     
    539765        }
    540766
    541         rc = ui_menu_create(demo.mbar, "File", &demo.mfile);
     767        rc = ui_menu_dd_create(demo.mbar, "~F~ile", NULL, &demo.mfile);
    542768        if (rc != EOK) {
    543769                printf("Error creating menu.\n");
     
    545771        }
    546772
    547         rc = ui_menu_entry_create(demo.mfile, "Message", "", &mmsg);
     773        rc = ui_menu_entry_create(demo.mfile, "~M~essage", "", &mmsg);
    548774        if (rc != EOK) {
    549775                printf("Error creating menu.\n");
     
    553779        ui_menu_entry_set_cb(mmsg, uidemo_file_message, (void *) &demo);
    554780
    555         rc = ui_menu_entry_create(demo.mfile, "Load", "", &mload);
     781        rc = ui_menu_entry_create(demo.mfile, "~L~oad", "", &mload);
    556782        if (rc != EOK) {
    557783                printf("Error creating menu.\n");
     
    561787        ui_menu_entry_set_cb(mload, uidemo_file_load, (void *) &demo);
    562788
    563         rc = ui_menu_entry_create(demo.mfile, "Foo", "Ctrl-Alt-Del", &mfoo);
     789        rc = ui_menu_entry_create(demo.mfile, "~F~oo", "Ctrl-Alt-Del", &mfoo);
    564790        if (rc != EOK) {
    565791                printf("Error creating menu.\n");
     
    567793        }
    568794
    569         rc = ui_menu_entry_create(demo.mfile, "Bar", "", &mbar);
     795        rc = ui_menu_entry_create(demo.mfile, "~B~ar", "", &mbar);
    570796        if (rc != EOK) {
    571797                printf("Error creating menu.\n");
     
    573799        }
    574800
    575         rc = ui_menu_entry_create(demo.mfile, "Foobar", "", &mfoobar);
     801        rc = ui_menu_entry_create(demo.mfile, "F~o~obar", "", &mfoobar);
    576802        if (rc != EOK) {
    577803                printf("Error creating menu.\n");
     
    579805        }
    580806
     807        ui_menu_entry_set_disabled(mfoobar, true);
     808
    581809        rc = ui_menu_entry_sep_create(demo.mfile, &msep);
    582810        if (rc != EOK) {
     
    585813        }
    586814
    587         rc = ui_menu_entry_create(demo.mfile, "Exit", "Alt-F4", &mexit);
     815        rc = ui_menu_entry_create(demo.mfile, "E~x~it", "Alt-F4", &mexit);
    588816        if (rc != EOK) {
    589817                printf("Error creating menu.\n");
     
    593821        ui_menu_entry_set_cb(mexit, uidemo_file_exit, (void *) &demo);
    594822
    595         rc = ui_menu_create(demo.mbar, "Edit", &demo.medit);
     823        rc = ui_menu_dd_create(demo.mbar, "~E~dit", NULL, &demo.medit);
    596824        if (rc != EOK) {
    597825                printf("Error creating menu.\n");
     
    599827        }
    600828
    601         rc = ui_menu_entry_create(demo.medit, "Modify", "", &mmodify);
     829        rc = ui_menu_entry_create(demo.medit, "~M~odify", "", &mmodify);
    602830        if (rc != EOK) {
    603831                printf("Error creating menu.\n");
     
    607835        ui_menu_entry_set_cb(mmodify, uidemo_edit_modify, (void *) &demo);
    608836
    609         rc = ui_menu_create(demo.mbar, "Preferences", &demo.mpreferences);
     837        rc = ui_menu_entry_create(demo.medit, "~I~nsert Character",
     838            "", &minsert_char);
    610839        if (rc != EOK) {
    611840                printf("Error creating menu.\n");
     
    613842        }
    614843
    615         rc = ui_menu_create(demo.mbar, "Help", &demo.mhelp);
     844        ui_menu_entry_set_cb(minsert_char, uidemo_edit_insert_character,
     845            (void *) &demo);
     846
     847        rc = ui_menu_dd_create(demo.mbar, "~P~references", NULL,
     848            &demo.mpreferences);
    616849        if (rc != EOK) {
    617850                printf("Error creating menu.\n");
     
    619852        }
    620853
    621         rc = ui_menu_entry_create(demo.mhelp, "About", "Ctrl-H, F1", &mabout);
     854        rc = ui_menu_dd_create(demo.mbar, "~H~elp", NULL, &demo.mhelp);
     855        if (rc != EOK) {
     856                printf("Error creating menu.\n");
     857                return rc;
     858        }
     859
     860        rc = ui_menu_entry_create(demo.mhelp, "~A~bout", "Ctrl-H, F1", &mabout);
    622861        if (rc != EOK) {
    623862                printf("Error creating menu.\n");
     
    634873                rect.p0.x = 4;
    635874                rect.p0.y = 30;
    636                 rect.p1.x = 216;
     875                rect.p1.x = 251;
    637876                rect.p1.y = 52;
    638877        }
     878
    639879        ui_menu_bar_set_rect(demo.mbar, &rect);
    640880
     
    645885        }
    646886
     887        rc = ui_tab_set_create(ui_res, &demo.tabset);
     888        if (rc != EOK) {
     889                printf("Error creating tab set.\n");
     890                return rc;
     891        }
     892
     893        /* FIXME: Auto layout */
     894        if (ui_is_textmode(ui)) {
     895                rect.p0.x = 2;
     896                rect.p0.y = 2;
     897                rect.p1.x = 44;
     898                rect.p1.y = 24;
     899        } else {
     900                rect.p0.x = 8;
     901                rect.p0.y = 53;
     902                rect.p1.x = 250;
     903                rect.p1.y = 405;
     904        }
     905
     906        ui_tab_set_set_rect(demo.tabset, &rect);
     907
     908        rc = ui_tab_create(demo.tabset, "Basic", &demo.tbasic);
     909        if (rc != EOK) {
     910                printf("Error creating tab.\n");
     911                return rc;
     912        }
     913
     914        rc = ui_tab_create(demo.tabset, "Lists", &demo.tlists);
     915        if (rc != EOK) {
     916                printf("Error creating tab.\n");
     917                return rc;
     918        }
     919
     920        rc = ui_fixed_add(demo.fixed, ui_tab_set_ctl(demo.tabset));
     921        if (rc != EOK) {
     922                printf("Error adding control to layout.\n");
     923                return rc;
     924        }
     925
     926        rc = ui_fixed_create(&demo.bfixed);
     927        if (rc != EOK) {
     928                printf("Error creating fixed layout.\n");
     929                return rc;
     930        }
     931
    647932        rc = ui_entry_create(window, "", &demo.entry);
    648933        if (rc != EOK) {
     
    653938        /* FIXME: Auto layout */
    654939        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;
     940                rect.p0.x = 4;
     941                rect.p0.y = 5;
     942                rect.p1.x = 41;
     943                rect.p1.y = 6;
    659944        } else {
    660945                rect.p0.x = 15;
    661                 rect.p0.y = 53;
     946                rect.p0.y = 88;
    662947                rect.p1.x = 205;
    663                 rect.p1.y = 78;
     948                rect.p1.y = 113;
    664949        }
    665950
     
    667952        ui_entry_set_halign(demo.entry, gfx_halign_center);
    668953
    669         rc = ui_fixed_add(demo.fixed, ui_entry_ctl(demo.entry));
     954        rc = ui_fixed_add(demo.bfixed, ui_entry_ctl(demo.entry));
    670955        if (rc != EOK) {
    671956                printf("Error adding control to layout.\n");
     
    681966        /* FIXME: Auto layout */
    682967        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;
     968                rect.p0.x = 4;
     969                rect.p0.y = 7;
     970                rect.p1.x = 41;
     971                rect.p1.y = 8;
    687972        } else {
    688973                rect.p0.x = 60;
    689                 rect.p0.y = 88;
     974                rect.p0.y = 123;
    690975                rect.p1.x = 160;
    691                 rect.p1.y = 101;
     976                rect.p1.y = 136;
    692977        }
    693978
     
    695980        ui_label_set_halign(demo.label, gfx_halign_center);
    696981
    697         rc = ui_fixed_add(demo.fixed, ui_label_ctl(demo.label));
     982        rc = ui_fixed_add(demo.bfixed, ui_label_ctl(demo.label));
    698983        if (rc != EOK) {
    699984                printf("Error adding control to layout.\n");
     
    711996        /* FIXME: Auto layout */
    712997        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;
     998                rect.p0.x = 4;
     999                rect.p0.y = 9;
     1000                rect.p1.x = 15;
     1001                rect.p1.y = 10;
    7171002        } else {
    7181003                rect.p0.x = 15;
    719                 rect.p0.y = 111;
     1004                rect.p0.y = 146;
    7201005                rect.p1.x = 105;
    721                 rect.p1.y = 139;
     1006                rect.p1.y = 174;
    7221007        }
    7231008
     
    7261011        ui_pbutton_set_default(demo.pb1, true);
    7271012
    728         rc = ui_fixed_add(demo.fixed, ui_pbutton_ctl(demo.pb1));
     1013        rc = ui_fixed_add(demo.bfixed, ui_pbutton_ctl(demo.pb1));
    7291014        if (rc != EOK) {
    7301015                printf("Error adding control to layout.\n");
     
    7411026
    7421027        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;
     1028                rect.p0.x = 30;
     1029                rect.p0.y = 9;
     1030                rect.p1.x = 41;
     1031                rect.p1.y = 10;
    7471032        } else {
    7481033                rect.p0.x = 115;
    749                 rect.p0.y = 111;
     1034                rect.p0.y = 146;
    7501035                rect.p1.x = 205;
    751                 rect.p1.y = 139;
     1036                rect.p1.y = 174;
    7521037        }
    7531038
    7541039        ui_pbutton_set_rect(demo.pb2, &rect);
    7551040
    756         rc = ui_fixed_add(demo.fixed, ui_pbutton_ctl(demo.pb2));
     1041        rc = ui_fixed_add(demo.bfixed, ui_pbutton_ctl(demo.pb2));
    7571042        if (rc != EOK) {
    7581043                printf("Error adding control to layout.\n");
     
    7641049                bparams.rect.p0.x = 0;
    7651050                bparams.rect.p0.y = 0;
    766                 bparams.rect.p1.x = 40;
     1051                bparams.rect.p1.x = 37;
    7671052                bparams.rect.p1.y = 2;
    7681053        } else {
     
    7881073
    7891074        if (ui_is_textmode(ui)) {
    790                 off.x = 2;
    791                 off.y = 9;
     1075                off.x = 4;
     1076                off.y = 11;
    7921077        } else {
    7931078                off.x = 15;
    794                 off.y = 155;
     1079                off.y = 190;
    7951080        }
    7961081
     
    8061091        ui_image_set_rect(demo.image, &rect);
    8071092
    808         rc = ui_fixed_add(demo.fixed, ui_image_ctl(demo.image));
     1093        rc = ui_fixed_add(demo.bfixed, ui_image_ctl(demo.image));
    8091094        if (rc != EOK) {
    8101095                printf("Error adding control to layout.\n");
     
    8221107        /* FIXME: Auto layout */
    8231108        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;
     1109                rect.p0.x = 4;
     1110                rect.p0.y = 14;
     1111                rect.p1.x = 14;
     1112                rect.p1.y = 15;
    8281113        } else {
    8291114                rect.p0.x = 15;
    830                 rect.p0.y = 190;
     1115                rect.p0.y = 225;
    8311116                rect.p1.x = 140;
    832                 rect.p1.y = 210;
     1117                rect.p1.y = 245;
    8331118        }
    8341119
    8351120        ui_checkbox_set_rect(demo.checkbox, &rect);
    8361121
    837         rc = ui_fixed_add(demo.fixed, ui_checkbox_ctl(demo.checkbox));
     1122        rc = ui_fixed_add(demo.bfixed, ui_checkbox_ctl(demo.checkbox));
    8381123        if (rc != EOK) {
    8391124                printf("Error adding control to layout.\n");
     
    8591144        /* FIXME: Auto layout */
    8601145        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;
     1146                rect.p0.x = 4;
     1147                rect.p0.y = 16;
     1148                rect.p1.x = 14;
     1149                rect.p1.y = 17;
    8651150        } else {
    8661151                rect.p0.x = 15;
    867                 rect.p0.y = 220;
     1152                rect.p0.y = 255;
    8681153                rect.p1.x = 140;
    869                 rect.p1.y = 240;
     1154                rect.p1.y = 275;
    8701155        }
    8711156        ui_rbutton_set_rect(demo.rbleft, &rect);
    8721157
    873         rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbleft));
     1158        rc = ui_fixed_add(demo.bfixed, ui_rbutton_ctl(demo.rbleft));
    8741159        if (rc != EOK) {
    8751160                printf("Error adding control to layout.\n");
     
    8861171        /* FIXME: Auto layout */
    8871172        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;
     1173                rect.p0.x = 4;
     1174                rect.p0.y = 17;
     1175                rect.p1.x = 14;
     1176                rect.p1.y = 18;
    8921177        } else {
    8931178                rect.p0.x = 15;
    894                 rect.p0.y = 250;
     1179                rect.p0.y = 285;
    8951180                rect.p1.x = 140;
    896                 rect.p1.y = 270;
     1181                rect.p1.y = 305;
    8971182        }
    8981183        ui_rbutton_set_rect(demo.rbcenter, &rect);
    8991184        ui_rbutton_select(demo.rbcenter);
    9001185
    901         rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbcenter));
     1186        rc = ui_fixed_add(demo.bfixed, ui_rbutton_ctl(demo.rbcenter));
    9021187        if (rc != EOK) {
    9031188                printf("Error adding control to layout.\n");
     
    9141199        /* FIXME: Auto layout */
    9151200        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;
     1201                rect.p0.x = 4;
     1202                rect.p0.y = 18;
     1203                rect.p1.x = 14;
     1204                rect.p1.y = 19;
    9201205        } else {
    9211206                rect.p0.x = 15;
    922                 rect.p0.y = 280;
     1207                rect.p0.y = 315;
    9231208                rect.p1.x = 140;
    924                 rect.p1.y = 300;
     1209                rect.p1.y = 335;
    9251210        }
    9261211        ui_rbutton_set_rect(demo.rbright, &rect);
    9271212
    928         rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbright));
     1213        rc = ui_fixed_add(demo.bfixed, ui_rbutton_ctl(demo.rbright));
    9291214        if (rc != EOK) {
    9301215                printf("Error adding control to layout.\n");
     
    9321217        }
    9331218
    934         rc = ui_slider_create(ui_res, "Slide!", &demo.slider);
     1219        rc = ui_slider_create(ui_res, &demo.slider);
    9351220        if (rc != EOK) {
    9361221                printf("Error creating button.\n");
     
    9421227        /* FIXME: Auto layout */
    9431228        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;
     1229                rect.p0.x = 4;
     1230                rect.p0.y = 20;
     1231                rect.p1.x = 32;
     1232                rect.p1.y = 21;
    9481233        } else {
    9491234                rect.p0.x = 15;
    950                 rect.p0.y = 310;
     1235                rect.p0.y = 345;
    9511236                rect.p1.x = 130;
    952                 rect.p1.y = 330;
     1237                rect.p1.y = 365;
    9531238        }
    9541239
    9551240        ui_slider_set_rect(demo.slider, &rect);
    9561241
    957         rc = ui_fixed_add(demo.fixed, ui_slider_ctl(demo.slider));
     1242        rc = ui_fixed_add(demo.bfixed, ui_slider_ctl(demo.slider));
    9581243        if (rc != EOK) {
    9591244                printf("Error adding control to layout.\n");
    9601245                return rc;
    9611246        }
     1247
     1248        rc = ui_scrollbar_create(ui, window, ui_sbd_horiz, &demo.hscrollbar);
     1249        if (rc != EOK) {
     1250                printf("Error creating scrollbar.\n");
     1251                return rc;
     1252        }
     1253
     1254        ui_scrollbar_set_cb(demo.hscrollbar, &scrollbar_cb, (void *) &demo);
     1255
     1256        /* FIXME: Auto layout */
     1257        if (ui_is_textmode(ui)) {
     1258                rect.p0.x = 4;
     1259                rect.p0.y = 22;
     1260                rect.p1.x = 42;
     1261                rect.p1.y = 23;
     1262        } else {
     1263                rect.p0.x = 15;
     1264                rect.p0.y = 375;
     1265                rect.p1.x = 220;
     1266                rect.p1.y = 398;
     1267        }
     1268
     1269        ui_scrollbar_set_rect(demo.hscrollbar, &rect);
     1270
     1271        ui_scrollbar_set_thumb_length(demo.hscrollbar,
     1272            ui_scrollbar_trough_length(demo.hscrollbar) / 4);
     1273
     1274        rc = ui_fixed_add(demo.bfixed, ui_scrollbar_ctl(demo.hscrollbar));
     1275        if (rc != EOK) {
     1276                printf("Error adding control to layout.\n");
     1277                return rc;
     1278        }
     1279
     1280        rc = ui_scrollbar_create(ui, window, ui_sbd_vert, &demo.vscrollbar);
     1281        if (rc != EOK) {
     1282                printf("Error creating button.\n");
     1283                return rc;
     1284        }
     1285
     1286        ui_scrollbar_set_cb(demo.vscrollbar, &scrollbar_cb, (void *) &demo);
     1287
     1288        /* FIXME: Auto layout */
     1289        if (ui_is_textmode(ui)) {
     1290                rect.p0.x = 42;
     1291                rect.p0.y = 5;
     1292                rect.p1.x = 43;
     1293                rect.p1.y = 22;
     1294        } else {
     1295                rect.p0.x = 220;
     1296                rect.p0.y = 88;
     1297                rect.p1.x = 243;
     1298                rect.p1.y = 375;
     1299        }
     1300
     1301        ui_scrollbar_set_rect(demo.vscrollbar, &rect);
     1302
     1303        ui_scrollbar_set_thumb_length(demo.vscrollbar,
     1304            ui_scrollbar_trough_length(demo.vscrollbar) / 4);
     1305
     1306        rc = ui_fixed_add(demo.bfixed, ui_scrollbar_ctl(demo.vscrollbar));
     1307        if (rc != EOK) {
     1308                printf("Error adding control to layout.\n");
     1309                return rc;
     1310        }
     1311
     1312        ui_tab_add(demo.tbasic, ui_fixed_ctl(demo.bfixed));
     1313
     1314        rc = ui_fixed_create(&demo.lfixed);
     1315        if (rc != EOK) {
     1316                printf("Error creating fixed layout.\n");
     1317                return rc;
     1318        }
     1319
     1320        rc = ui_list_create(window, false, &demo.list);
     1321        if (rc != EOK) {
     1322                printf("Error creating list.\n");
     1323                return rc;
     1324        }
     1325
     1326        ui_list_entry_attr_init(&eattr);
     1327
     1328        eattr.caption = "One";
     1329        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1330        if (rc != EOK) {
     1331                printf("Error adding list entry.\n");
     1332                return rc;
     1333        }
     1334
     1335        eattr.caption = "Two";
     1336        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1337        if (rc != EOK) {
     1338                printf("Error adding list entry.\n");
     1339                return rc;
     1340        }
     1341
     1342        eattr.caption = "Three";
     1343        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1344        if (rc != EOK) {
     1345                printf("Error adding list entry.\n");
     1346                return rc;
     1347        }
     1348
     1349        eattr.caption = "Four";
     1350        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1351        if (rc != EOK) {
     1352                printf("Error adding list entry.\n");
     1353                return rc;
     1354        }
     1355
     1356        eattr.caption = "Five";
     1357        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1358        if (rc != EOK) {
     1359                printf("Error adding list entry.\n");
     1360                return rc;
     1361        }
     1362
     1363        eattr.caption = "Six";
     1364        rc = ui_list_entry_append(demo.list, &eattr, NULL);
     1365        if (rc != EOK) {
     1366                printf("Error adding list entry.\n");
     1367                return rc;
     1368        }
     1369
     1370        /* FIXME: Auto layout */
     1371        if (ui_is_textmode(ui)) {
     1372                rect.p0.x = 4;
     1373                rect.p0.y = 5;
     1374                rect.p1.x = 41;
     1375                rect.p1.y = 10;
     1376        } else {
     1377                rect.p0.x = 15;
     1378                rect.p0.y = 88;
     1379                rect.p1.x = 245;
     1380                rect.p1.y = 173;
     1381        }
     1382
     1383        ui_list_set_rect(demo.list, &rect);
     1384
     1385        rc = ui_fixed_add(demo.lfixed, ui_list_ctl(demo.list));
     1386        if (rc != EOK) {
     1387                printf("Error adding control to layout.\n");
     1388                return rc;
     1389        }
     1390
     1391        ui_tab_add(demo.tlists, ui_fixed_ctl(demo.lfixed));
    9621392
    9631393        ui_window_add(window, ui_fixed_ctl(demo.fixed));
     
    10191449int main(int argc, char *argv[])
    10201450{
    1021         const char *display_spec = UI_DISPLAY_DEFAULT;
     1451        const char *display_spec = UI_ANY_DEFAULT;
    10221452        errno_t rc;
    10231453        int i;
Note: See TracChangeset for help on using the changeset viewer.