Changes in uspace/app/uidemo/uidemo.c [db3895d:80d4aea] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/uidemo/uidemo.c
rdb3895d r80d4aea 40 40 #include <str.h> 41 41 #include <ui/entry.h> 42 #include <ui/filedialog.h> 42 43 #include <ui/fixed.h> 43 44 #include <ui/image.h> … … 48 49 #include <ui/msgdialog.h> 49 50 #include <ui/pbutton.h> 51 #include <ui/promptdialog.h> 50 52 #include <ui/resource.h> 51 53 #include <ui/ui.h> … … 85 87 }; 86 88 89 static void uidemo_file_load(ui_menu_entry_t *, void *); 87 90 static void uidemo_file_message(ui_menu_entry_t *, void *); 88 91 static void uidemo_file_exit(ui_menu_entry_t *, void *); 92 static void uidemo_edit_modify(ui_menu_entry_t *, void *); 93 94 static void file_dialog_bok(ui_file_dialog_t *, void *, const char *); 95 static void file_dialog_bcancel(ui_file_dialog_t *, void *); 96 static void file_dialog_close(ui_file_dialog_t *, void *); 97 98 static ui_file_dialog_cb_t file_dialog_cb = { 99 .bok = file_dialog_bok, 100 .bcancel = file_dialog_bcancel, 101 .close = file_dialog_close 102 }; 103 104 static void prompt_dialog_bok(ui_prompt_dialog_t *, void *, const char *); 105 static void prompt_dialog_bcancel(ui_prompt_dialog_t *, void *); 106 static void prompt_dialog_close(ui_prompt_dialog_t *, void *); 107 108 static ui_prompt_dialog_cb_t prompt_dialog_cb = { 109 .bok = prompt_dialog_bok, 110 .bcancel = prompt_dialog_bcancel, 111 .close = prompt_dialog_close 112 }; 89 113 90 114 static void msg_dialog_button(ui_msg_dialog_t *, void *, unsigned); … … 96 120 }; 97 121 122 /** Horizontal alignment selected by each radio button */ 123 static const gfx_halign_t uidemo_halign[3] = { 124 gfx_halign_left, 125 gfx_halign_center, 126 gfx_halign_right 127 }; 128 98 129 /** Window close button was clicked. 99 130 * … … 122 153 if (rc != EOK) 123 154 printf("Error changing entry text.\n"); 124 (void) ui_entry_paint(demo->entry);125 155 } else { 126 156 rc = ui_entry_set_text(demo->entry, "Cancel pressed"); 127 157 if (rc != EOK) 128 158 printf("Error changing entry text.\n"); 129 (void) ui_entry_paint(demo->entry);130 159 } 131 160 } … … 139 168 { 140 169 ui_demo_t *demo = (ui_demo_t *) arg; 141 errno_t rc; 142 143 if (enable) { 144 rc = ui_entry_set_text(demo->entry, "Checked"); 145 if (rc != EOK) 146 printf("Error changing entry text.\n"); 147 (void) ui_entry_paint(demo->entry); 148 } else { 149 rc = ui_entry_set_text(demo->entry, "Unchecked"); 150 if (rc != EOK) 151 printf("Error changing entry text.\n"); 152 (void) ui_entry_paint(demo->entry); 153 } 170 171 ui_entry_set_read_only(demo->entry, enable); 154 172 } 155 173 … … 163 181 { 164 182 ui_demo_t *demo = (ui_demo_t *) garg; 165 const char *text = (const char *) barg; 166 errno_t rc; 167 168 rc = ui_entry_set_text(demo->entry, text); 169 if (rc != EOK) 170 printf("Error changing entry text.\n"); 183 gfx_halign_t halign = *(gfx_halign_t *) barg; 184 185 ui_entry_set_halign(demo->entry, halign); 171 186 (void) ui_entry_paint(demo->entry); 172 187 } … … 200 215 } 201 216 202 /** File/message menu entry selected. 203 * 204 * @param mentry Menu entry 205 * @param arg Argument (demo) 206 */ 207 static void uidemo_file_message(ui_menu_entry_t *mentry, void *arg) 208 { 209 ui_demo_t *demo = (ui_demo_t *) arg; 217 /** Display a message window. 218 * 219 * @param demo UI demo 220 * @param caption Window caption 221 * @param text Message text 222 */ 223 static void uidemo_show_message(ui_demo_t *demo, const char *caption, 224 const char *text) 225 { 210 226 ui_msg_dialog_params_t mdparams; 211 227 ui_msg_dialog_t *dialog; … … 213 229 214 230 ui_msg_dialog_params_init(&mdparams); 231 mdparams.caption = caption; 232 mdparams.text = text; 233 234 rc = ui_msg_dialog_create(demo->ui, &mdparams, &dialog); 235 if (rc != EOK) { 236 printf("Error creating message dialog.\n"); 237 return; 238 } 239 240 ui_msg_dialog_set_cb(dialog, &msg_dialog_cb, &demo); 241 } 242 243 /** File / Load menu entry selected. 244 * 245 * @param mentry Menu entry 246 * @param arg Argument (demo) 247 */ 248 static void uidemo_file_load(ui_menu_entry_t *mentry, void *arg) 249 { 250 ui_demo_t *demo = (ui_demo_t *) arg; 251 ui_file_dialog_params_t fdparams; 252 ui_file_dialog_t *dialog; 253 errno_t rc; 254 255 ui_file_dialog_params_init(&fdparams); 256 fdparams.caption = "Load File"; 257 258 rc = ui_file_dialog_create(demo->ui, &fdparams, &dialog); 259 if (rc != EOK) { 260 printf("Error creating message dialog.\n"); 261 return; 262 } 263 264 ui_file_dialog_set_cb(dialog, &file_dialog_cb, demo); 265 } 266 267 /** File / Message menu entry selected. 268 * 269 * @param mentry Menu entry 270 * @param arg Argument (demo) 271 */ 272 static void uidemo_file_message(ui_menu_entry_t *mentry, void *arg) 273 { 274 ui_demo_t *demo = (ui_demo_t *) arg; 275 ui_msg_dialog_params_t mdparams; 276 ui_msg_dialog_t *dialog; 277 errno_t rc; 278 279 ui_msg_dialog_params_init(&mdparams); 215 280 mdparams.caption = "Message For You"; 216 281 mdparams.text = "Hello, world!"; … … 223 288 224 289 ui_msg_dialog_set_cb(dialog, &msg_dialog_cb, &demo); 225 226 } 227 228 /** File/exit menu entry selected. 290 } 291 292 /** File / Exit menu entry selected. 229 293 * 230 294 * @param mentry Menu entry … … 236 300 237 301 ui_quit(demo->ui); 302 } 303 304 /** Edit / Modify menu entry selected. 305 * 306 * @param mentry Menu entry 307 * @param arg Argument (demo) 308 */ 309 static void uidemo_edit_modify(ui_menu_entry_t *mentry, void *arg) 310 { 311 ui_demo_t *demo = (ui_demo_t *) arg; 312 ui_prompt_dialog_params_t pdparams; 313 ui_prompt_dialog_t *dialog; 314 errno_t rc; 315 316 ui_prompt_dialog_params_init(&pdparams); 317 pdparams.caption = "Modify Entry Text"; 318 pdparams.prompt = "Enter New Text"; 319 320 rc = ui_prompt_dialog_create(demo->ui, &pdparams, &dialog); 321 if (rc != EOK) { 322 printf("Error creating message dialog.\n"); 323 return; 324 } 325 326 ui_prompt_dialog_set_cb(dialog, &prompt_dialog_cb, demo); 327 } 328 329 /** File dialog OK button press. 330 * 331 * @param dialog File dialog 332 * @param arg Argument (ui_demo_t *) 333 * @param fname File name 334 */ 335 static void file_dialog_bok(ui_file_dialog_t *dialog, void *arg, 336 const char *fname) 337 { 338 ui_demo_t *demo = (ui_demo_t *) arg; 339 char buf[128]; 340 char *p; 341 FILE *f; 342 343 ui_file_dialog_destroy(dialog); 344 345 f = fopen(fname, "rt"); 346 if (f == NULL) { 347 uidemo_show_message(demo, "Error", "Error opening file."); 348 return; 349 } 350 351 p = fgets(buf, sizeof(buf), f); 352 if (p == NULL) { 353 uidemo_show_message(demo, "Error", "Error reading file."); 354 fclose(f); 355 return; 356 } 357 358 /* Cut string off at the first non-printable character */ 359 p = buf; 360 while (*p != '\0') { 361 if (*p < ' ') { 362 *p = '\0'; 363 break; 364 } 365 ++p; 366 } 367 368 ui_entry_set_text(demo->entry, buf); 369 fclose(f); 370 } 371 372 /** File dialog cancel button press. 373 * 374 * @param dialog File dialog 375 * @param arg Argument (ui_demo_t *) 376 */ 377 static void file_dialog_bcancel(ui_file_dialog_t *dialog, void *arg) 378 { 379 ui_demo_t *demo = (ui_demo_t *) arg; 380 381 (void) demo; 382 ui_file_dialog_destroy(dialog); 383 } 384 385 /** File dialog close request. 386 * 387 * @param dialog File dialog 388 * @param arg Argument (ui_demo_t *) 389 */ 390 static void file_dialog_close(ui_file_dialog_t *dialog, void *arg) 391 { 392 ui_demo_t *demo = (ui_demo_t *) arg; 393 394 (void) demo; 395 ui_file_dialog_destroy(dialog); 396 } 397 398 /** Prompt dialog OK button press. 399 * 400 * @param dialog Prompt dialog 401 * @param arg Argument (ui_demo_t *) 402 * @param text Submitted text 403 */ 404 static void prompt_dialog_bok(ui_prompt_dialog_t *dialog, void *arg, 405 const char *text) 406 { 407 ui_demo_t *demo = (ui_demo_t *) arg; 408 409 ui_prompt_dialog_destroy(dialog); 410 ui_entry_set_text(demo->entry, text); 411 } 412 413 /** Prompt dialog cancel button press. 414 * 415 * @param dialog File dialog 416 * @param arg Argument (ui_demo_t *) 417 */ 418 static void prompt_dialog_bcancel(ui_prompt_dialog_t *dialog, void *arg) 419 { 420 ui_demo_t *demo = (ui_demo_t *) arg; 421 422 (void) demo; 423 ui_prompt_dialog_destroy(dialog); 424 } 425 426 /** Prompt dialog close request. 427 * 428 * @param dialog File dialog 429 * @param arg Argument (ui_demo_t *) 430 */ 431 static void prompt_dialog_close(ui_prompt_dialog_t *dialog, void *arg) 432 { 433 ui_demo_t *demo = (ui_demo_t *) arg; 434 435 (void) demo; 436 ui_prompt_dialog_destroy(dialog); 238 437 } 239 438 … … 280 479 gfx_coord2_t off; 281 480 ui_menu_entry_t *mmsg; 481 ui_menu_entry_t *mload; 282 482 ui_menu_entry_t *mfoo; 283 483 ui_menu_entry_t *mbar; 284 484 ui_menu_entry_t *mfoobar; 485 ui_menu_entry_t *msep; 285 486 ui_menu_entry_t *mexit; 487 ui_menu_entry_t *mmodify; 286 488 ui_menu_entry_t *mabout; 287 489 errno_t rc; … … 304 506 params.rect.p0.x = 0; 305 507 params.rect.p0.y = 0; 306 params.rect.p1.x = 80;307 params.rect.p1.y = 2 5;508 params.rect.p1.x = 44; 509 params.rect.p1.y = 21; 308 510 } else { 309 511 params.rect.p0.x = 0; … … 351 553 ui_menu_entry_set_cb(mmsg, uidemo_file_message, (void *) &demo); 352 554 555 rc = ui_menu_entry_create(demo.mfile, "Load", "", &mload); 556 if (rc != EOK) { 557 printf("Error creating menu.\n"); 558 return rc; 559 } 560 561 ui_menu_entry_set_cb(mload, uidemo_file_load, (void *) &demo); 562 353 563 rc = ui_menu_entry_create(demo.mfile, "Foo", "Ctrl-Alt-Del", &mfoo); 354 564 if (rc != EOK) { … … 369 579 } 370 580 371 rc = ui_menu_entry_sep_create(demo.mfile, &m exit);581 rc = ui_menu_entry_sep_create(demo.mfile, &msep); 372 582 if (rc != EOK) { 373 583 printf("Error creating menu.\n"); … … 389 599 } 390 600 601 rc = ui_menu_entry_create(demo.medit, "Modify", "", &mmodify); 602 if (rc != EOK) { 603 printf("Error creating menu.\n"); 604 return rc; 605 } 606 607 ui_menu_entry_set_cb(mmodify, uidemo_edit_modify, (void *) &demo); 608 391 609 rc = ui_menu_create(demo.mbar, "Preferences", &demo.mpreferences); 392 610 if (rc != EOK) { … … 410 628 if (ui_is_textmode(ui)) { 411 629 rect.p0.x = 1; 412 rect.p0.y = 2;413 rect.p1.x = 79;414 rect.p1.y = 3;630 rect.p0.y = 1; 631 rect.p1.x = 43; 632 rect.p1.y = 2; 415 633 } else { 416 634 rect.p0.x = 4; … … 433 651 } 434 652 435 rect.p0.x = 15; 436 rect.p0.y = 53; 437 rect.p1.x = 205; 438 rect.p1.y = 78; 653 /* FIXME: Auto layout */ 654 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; 659 } else { 660 rect.p0.x = 15; 661 rect.p0.y = 53; 662 rect.p1.x = 205; 663 rect.p1.y = 78; 664 } 665 439 666 ui_entry_set_rect(demo.entry, &rect); 440 667 ui_entry_set_halign(demo.entry, gfx_halign_center); … … 452 679 } 453 680 454 rect.p0.x = 60; 455 rect.p0.y = 88; 456 rect.p1.x = 160; 457 rect.p1.y = 101; 681 /* FIXME: Auto layout */ 682 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; 687 } else { 688 rect.p0.x = 60; 689 rect.p0.y = 88; 690 rect.p1.x = 160; 691 rect.p1.y = 101; 692 } 693 458 694 ui_label_set_rect(demo.label, &rect); 459 695 ui_label_set_halign(demo.label, gfx_halign_center); … … 473 709 ui_pbutton_set_cb(demo.pb1, &pbutton_cb, (void *) &demo); 474 710 475 rect.p0.x = 15; 476 rect.p0.y = 111; 477 rect.p1.x = 105; 478 rect.p1.y = 139; 711 /* FIXME: Auto layout */ 712 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; 717 } else { 718 rect.p0.x = 15; 719 rect.p0.y = 111; 720 rect.p1.x = 105; 721 rect.p1.y = 139; 722 } 723 479 724 ui_pbutton_set_rect(demo.pb1, &rect); 480 725 … … 495 740 ui_pbutton_set_cb(demo.pb2, &pbutton_cb, (void *) &demo); 496 741 497 rect.p0.x = 115; 498 rect.p0.y = 111; 499 rect.p1.x = 205; 500 rect.p1.y = 139; 742 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; 747 } else { 748 rect.p0.x = 115; 749 rect.p0.y = 111; 750 rect.p1.x = 205; 751 rect.p1.y = 139; 752 } 753 501 754 ui_pbutton_set_rect(demo.pb2, &rect); 502 755 … … 508 761 509 762 gfx_bitmap_params_init(&bparams); 510 bparams.rect.p0.x = 0; 511 bparams.rect.p0.y = 0; 512 bparams.rect.p1.x = 188; 513 bparams.rect.p1.y = 24; 763 if (ui_is_textmode(ui)) { 764 bparams.rect.p0.x = 0; 765 bparams.rect.p0.y = 0; 766 bparams.rect.p1.x = 40; 767 bparams.rect.p1.y = 2; 768 } else { 769 bparams.rect.p0.x = 0; 770 bparams.rect.p0.y = 0; 771 bparams.rect.p1.x = 188; 772 bparams.rect.p1.y = 24; 773 } 514 774 515 775 rc = gfx_bitmap_create(gc, &bparams, NULL, &bitmap); … … 527 787 } 528 788 529 off.x = 15; 530 off.y = 155; 789 if (ui_is_textmode(ui)) { 790 off.x = 2; 791 off.y = 9; 792 } else { 793 off.x = 15; 794 off.y = 155; 795 } 796 531 797 gfx_rect_translate(&off, &bparams.rect, &rect); 532 798 533 799 /* Adjust for frame width (2 x 1 pixel) */ 534 rect.p1.x += 2; 535 rect.p1.y += 2; 800 if (!ui_is_textmode(ui)) { 801 ui_image_set_flags(demo.image, ui_imgf_frame); 802 rect.p1.x += 2; 803 rect.p1.y += 2; 804 } 805 536 806 ui_image_set_rect(demo.image, &rect); 537 ui_image_set_flags(demo.image, ui_imgf_frame);538 807 539 808 rc = ui_fixed_add(demo.fixed, ui_image_ctl(demo.image)); … … 543 812 } 544 813 545 rc = ui_checkbox_create(ui_res, " Check me", &demo.checkbox);814 rc = ui_checkbox_create(ui_res, "Read only", &demo.checkbox); 546 815 if (rc != EOK) { 547 816 printf("Error creating check box.\n"); … … 551 820 ui_checkbox_set_cb(demo.checkbox, &checkbox_cb, (void *) &demo); 552 821 553 rect.p0.x = 15; 554 rect.p0.y = 190; 555 rect.p1.x = 140; 556 rect.p1.y = 210; 822 /* FIXME: Auto layout */ 823 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; 828 } else { 829 rect.p0.x = 15; 830 rect.p0.y = 190; 831 rect.p1.x = 140; 832 rect.p1.y = 210; 833 } 834 557 835 ui_checkbox_set_rect(demo.checkbox, &rect); 558 836 … … 569 847 } 570 848 571 rc = ui_rbutton_create(demo.rbgroup, " Option 1", (void *) "First",572 &demo.rb 1);849 rc = ui_rbutton_create(demo.rbgroup, "Left", (void *) &uidemo_halign[0], 850 &demo.rbleft); 573 851 if (rc != EOK) { 574 852 printf("Error creating radio button.\n"); … … 579 857 (void *) &demo); 580 858 581 rect.p0.x = 15; 582 rect.p0.y = 220; 583 rect.p1.x = 140; 584 rect.p1.y = 240; 585 ui_rbutton_set_rect(demo.rb1, &rect); 586 587 rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rb1)); 859 /* FIXME: Auto layout */ 860 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; 865 } else { 866 rect.p0.x = 15; 867 rect.p0.y = 220; 868 rect.p1.x = 140; 869 rect.p1.y = 240; 870 } 871 ui_rbutton_set_rect(demo.rbleft, &rect); 872 873 rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbleft)); 588 874 if (rc != EOK) { 589 875 printf("Error adding control to layout.\n"); … … 591 877 } 592 878 593 rc = ui_rbutton_create(demo.rbgroup, " Option 2", (void *) "Second",594 &demo.rb 2);879 rc = ui_rbutton_create(demo.rbgroup, "Center", (void *) &uidemo_halign[1], 880 &demo.rbcenter); 595 881 if (rc != EOK) { 596 882 printf("Error creating radio button.\n"); … … 598 884 } 599 885 600 rect.p0.x = 15; 601 rect.p0.y = 250; 602 rect.p1.x = 140; 603 rect.p1.y = 270; 604 ui_rbutton_set_rect(demo.rb2, &rect); 605 606 rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rb2)); 886 /* FIXME: Auto layout */ 887 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; 892 } else { 893 rect.p0.x = 15; 894 rect.p0.y = 250; 895 rect.p1.x = 140; 896 rect.p1.y = 270; 897 } 898 ui_rbutton_set_rect(demo.rbcenter, &rect); 899 ui_rbutton_select(demo.rbcenter); 900 901 rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbcenter)); 607 902 if (rc != EOK) { 608 903 printf("Error adding control to layout.\n"); … … 610 905 } 611 906 612 rc = ui_rbutton_create(demo.rbgroup, " Option 3", (void *) "Third",613 &demo.rb 3);907 rc = ui_rbutton_create(demo.rbgroup, "Right", (void *) &uidemo_halign[2], 908 &demo.rbright); 614 909 if (rc != EOK) { 615 910 printf("Error creating radio button.\n"); … … 617 912 } 618 913 619 rect.p0.x = 15; 620 rect.p0.y = 280; 621 rect.p1.x = 140; 622 rect.p1.y = 300; 623 ui_rbutton_set_rect(demo.rb3, &rect); 624 625 rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rb3)); 914 /* FIXME: Auto layout */ 915 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; 920 } else { 921 rect.p0.x = 15; 922 rect.p0.y = 280; 923 rect.p1.x = 140; 924 rect.p1.y = 300; 925 } 926 ui_rbutton_set_rect(demo.rbright, &rect); 927 928 rc = ui_fixed_add(demo.fixed, ui_rbutton_ctl(demo.rbright)); 626 929 if (rc != EOK) { 627 930 printf("Error adding control to layout.\n"); … … 637 940 ui_slider_set_cb(demo.slider, &slider_cb, (void *) &demo); 638 941 639 rect.p0.x = 15; 640 rect.p0.y = 310; 641 rect.p1.x = 130; 642 rect.p1.y = 330; 942 /* FIXME: Auto layout */ 943 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; 948 } else { 949 rect.p0.x = 15; 950 rect.p0.y = 310; 951 rect.p1.x = 130; 952 rect.p1.y = 330; 953 } 954 643 955 ui_slider_set_rect(demo.slider, &rect); 644 956 … … 693 1005 k = i * i + j * j; 694 1006 pixelmap_put_pixel(&pixelmap, i, j, 695 PIXEL( 255, k, k, 255 - k));1007 PIXEL(0, k, k, 255 - k)); 696 1008 } 697 1009 }
Note:
See TracChangeset
for help on using the changeset viewer.