Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 214aefb in mainline for uspace/app/uidemo/uidemo.c


Ignore:
Timestamp:
2021-04-09T22:41:22Z (8 months ago)
Author:
jxsvoboda <5887334+jxsvoboda@…>
Branches:
master
Children:
0262f16c
Parents:
b0858150
git-author:
Jiri Svoboda <jiri@…> (2021-03-27 22:52:09)
git-committer:
jxsvoboda <5887334+jxsvoboda@…> (2021-04-09 22:41:22)
Message:

UI menu (WIP)

File:
1 edited

Legend:

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

    rb0858150 r214aefb  
    4343#include <ui/image.h>
    4444#include <ui/label.h>
     45#include <ui/menubar.h>
     46#include <ui/menuentry.h>
     47#include <ui/menu.h>
    4548#include <ui/pbutton.h>
    4649#include <ui/resource.h>
     
    8083        .moved = slider_moved
    8184};
     85
     86static void uidemo_file_exit(ui_menu_entry_t *, void *);
    8287
    8388/** Window close button was clicked.
     
    185190}
    186191
     192/** File/exit menu entry selected.
     193 *
     194 * @param mentry Menu entry
     195 * @param arg Argument (demo)
     196 */
     197static void uidemo_file_exit(ui_menu_entry_t *mentry, void *arg)
     198{
     199        ui_demo_t *demo = (ui_demo_t *) arg;
     200
     201        ui_quit(demo->ui);
     202}
     203
    187204/** Run UI demo on display server. */
    188205static errno_t ui_demo(const char *display_spec)
     
    198215        gfx_bitmap_t *bitmap;
    199216        gfx_coord2_t off;
     217        ui_menu_entry_t *mfoo;
     218        ui_menu_entry_t *mbar;
     219        ui_menu_entry_t *mfoobar;
     220        ui_menu_entry_t *mexit;
     221        ui_menu_entry_t *mabout;
    200222        errno_t rc;
    201223
     
    212234        params.rect.p0.y = 0;
    213235        params.rect.p1.x = 220;
    214         params.rect.p1.y = 340;
     236        params.rect.p1.y = 350;
    215237
    216238        memset((void *) &demo, 0, sizeof(demo));
     
    235257        }
    236258
     259        rc = ui_menu_bar_create(ui_res, &demo.mbar);
     260        if (rc != EOK) {
     261                printf("Error creating menu bar.\n");
     262                return rc;
     263        }
     264
     265        rc = ui_menu_create(demo.mbar, "File", &demo.mfile);
     266        if (rc != EOK) {
     267                printf("Error creating menu.\n");
     268                return rc;
     269        }
     270
     271        rc = ui_menu_entry_create(demo.mfile, "Foo", &mfoo);
     272        if (rc != EOK) {
     273                printf("Error creating menu.\n");
     274                return rc;
     275        }
     276
     277        rc = ui_menu_entry_create(demo.mfile, "Bar", &mbar);
     278        if (rc != EOK) {
     279                printf("Error creating menu.\n");
     280                return rc;
     281        }
     282
     283        rc = ui_menu_entry_create(demo.mfile, "Foobar", &mfoobar);
     284        if (rc != EOK) {
     285                printf("Error creating menu.\n");
     286                return rc;
     287        }
     288
     289        rc = ui_menu_entry_create(demo.mfile, "Exit", &mexit);
     290        if (rc != EOK) {
     291                printf("Error creating menu.\n");
     292                return rc;
     293        }
     294
     295        ui_menu_entry_set_cb(mexit, uidemo_file_exit, (void *) &demo);
     296
     297        rc = ui_menu_create(demo.mbar, "Edit", &demo.medit);
     298        if (rc != EOK) {
     299                printf("Error creating menu.\n");
     300                return rc;
     301        }
     302
     303        rc = ui_menu_create(demo.mbar, "Preferences", &demo.mpreferences);
     304        if (rc != EOK) {
     305                printf("Error creating menu.\n");
     306                return rc;
     307        }
     308
     309        rc = ui_menu_create(demo.mbar, "Help", &demo.mhelp);
     310        if (rc != EOK) {
     311                printf("Error creating menu.\n");
     312                return rc;
     313        }
     314
     315        rc = ui_menu_entry_create(demo.mhelp, "About", &mabout);
     316        if (rc != EOK) {
     317                printf("Error creating menu.\n");
     318                return rc;
     319        }
     320
     321        rect.p0.x = 4;
     322        rect.p0.y = 30;
     323        rect.p1.x = 216;
     324        rect.p1.y = 52;
     325        ui_menu_bar_set_rect(demo.mbar, &rect);
     326
     327        rc = ui_fixed_add(demo.fixed, ui_menu_bar_ctl(demo.mbar));
     328        if (rc != EOK) {
     329                printf("Error adding control to layout.\n");
     330                return rc;
     331        }
     332
     333        rc = ui_entry_create(ui_res, "", &demo.entry);
     334        if (rc != EOK) {
     335                printf("Error creating entry.\n");
     336                return rc;
     337        }
     338
     339        rect.p0.x = 15;
     340        rect.p0.y = 53;
     341        rect.p1.x = 205;
     342        rect.p1.y = 78;
     343        ui_entry_set_rect(demo.entry, &rect);
     344        ui_entry_set_halign(demo.entry, gfx_halign_center);
     345
     346        rc = ui_fixed_add(demo.fixed, ui_entry_ctl(demo.entry));
     347        if (rc != EOK) {
     348                printf("Error adding control to layout.\n");
     349                return rc;
     350        }
     351
    237352        rc = ui_label_create(ui_res, "Text label", &demo.label);
    238353        if (rc != EOK) {
     
    242357
    243358        rect.p0.x = 60;
    244         rect.p0.y = 37;
     359        rect.p0.y = 88;
    245360        rect.p1.x = 160;
    246         rect.p1.y = 50;
     361        rect.p1.y = 101;
    247362        ui_label_set_rect(demo.label, &rect);
    248363        ui_label_set_halign(demo.label, gfx_halign_center);
     
    263378
    264379        rect.p0.x = 15;
    265         rect.p0.y = 70;
     380        rect.p0.y = 111;
    266381        rect.p1.x = 105;
    267         rect.p1.y = 98;
     382        rect.p1.y = 139;
    268383        ui_pbutton_set_rect(demo.pb1, &rect);
    269384
     
    285400
    286401        rect.p0.x = 115;
    287         rect.p0.y = 70;
     402        rect.p0.y = 111;
    288403        rect.p1.x = 205;
    289         rect.p1.y = 98;
     404        rect.p1.y = 139;
    290405        ui_pbutton_set_rect(demo.pb2, &rect);
    291406
    292407        rc = ui_fixed_add(demo.fixed, ui_pbutton_ctl(demo.pb2));
    293         if (rc != EOK) {
    294                 printf("Error adding control to layout.\n");
    295                 return rc;
    296         }
    297 
    298         rc = ui_entry_create(ui_res, "", &demo.entry);
    299         if (rc != EOK) {
    300                 printf("Error creating entry.\n");
    301                 return rc;
    302         }
    303 
    304         rect.p0.x = 15;
    305         rect.p0.y = 110;
    306         rect.p1.x = 205;
    307         rect.p1.y = 135;
    308         ui_entry_set_rect(demo.entry, &rect);
    309         ui_entry_set_halign(demo.entry, gfx_halign_center);
    310 
    311         rc = ui_fixed_add(demo.fixed, ui_entry_ctl(demo.entry));
    312408        if (rc != EOK) {
    313409                printf("Error adding control to layout.\n");
     
    336432
    337433        off.x = 15;
    338         off.y = 145;
     434        off.y = 155;
    339435        gfx_rect_translate(&off, &bparams.rect, &rect);
    340436
     
    360456
    361457        rect.p0.x = 15;
    362         rect.p0.y = 180;
     458        rect.p0.y = 190;
    363459        rect.p1.x = 140;
    364         rect.p1.y = 200;
     460        rect.p1.y = 210;
    365461        ui_checkbox_set_rect(demo.checkbox, &rect);
    366462
     
    388484
    389485        rect.p0.x = 15;
    390         rect.p0.y = 210;
     486        rect.p0.y = 220;
    391487        rect.p1.x = 140;
    392         rect.p1.y = 230;
     488        rect.p1.y = 240;
    393489        ui_rbutton_set_rect(demo.rb1, &rect);
    394490
     
    407503
    408504        rect.p0.x = 15;
    409         rect.p0.y = 240;
     505        rect.p0.y = 250;
    410506        rect.p1.x = 140;
    411         rect.p1.y = 260;
     507        rect.p1.y = 270;
    412508        ui_rbutton_set_rect(demo.rb2, &rect);
    413509
     
    426522
    427523        rect.p0.x = 15;
    428         rect.p0.y = 270;
     524        rect.p0.y = 280;
    429525        rect.p1.x = 140;
    430         rect.p1.y = 290;
     526        rect.p1.y = 300;
    431527        ui_rbutton_set_rect(demo.rb3, &rect);
    432528
     
    446542
    447543        rect.p0.x = 15;
    448         rect.p0.y = 300;
     544        rect.p0.y = 310;
    449545        rect.p1.x = 130;
    450         rect.p1.y = 320;
     546        rect.p1.y = 330;
    451547        ui_slider_set_rect(demo.slider, &rect);
    452548
Note: See TracChangeset for help on using the changeset viewer.