| 433 ui_show(obj); |
433 ui_show(obj); |
| 434 } |
434 } |
| 435 |
435 |
| 436 void action_sourcelist_activate(UiEvent *event, void *userdata) { |
436 void action_sourcelist_activate(UiEvent *event, void *userdata) { |
| 437 UiSubListEventData *eventdata = event->eventdata; |
437 UiSubListEventData *eventdata = event->eventdata; |
| 438 printf("sourcelist %s index %d\n", eventdata->row_data, event->intval); |
438 printf("sourcelist %s index %d\n", eventdata->row_data, eventdata->row_index); |
| |
439 ui_list_update_row(eventdata->list, eventdata->row_index); |
| 439 } |
440 } |
| 440 |
441 |
| 441 void action_table_activate(UiEvent *event, void *userdata) { |
442 void action_table_activate(UiEvent *event, void *userdata) { |
| 442 char *s = userdata; |
443 char *s = userdata; |
| 443 printf("table event: %s\n", s); |
444 printf("table event: %s\n", s); |
| 456 case 1: return row; |
457 case 1: return row; |
| 457 case 2: return (void*)(intptr_t)1234; |
458 case 2: return (void*)(intptr_t)1234; |
| 458 case 3: return ui_foldericon(16); |
459 case 3: return ui_foldericon(16); |
| 459 case 4: return ui_fileicon(16); |
460 case 4: return ui_fileicon(16); |
| 460 case 5: return "file"; |
461 case 5: return "file"; |
| |
462 case 6: return (void*)(intptr_t)123; |
| |
463 case 7: return "edit me"; |
| |
464 case 8: return "edit me too"; |
| 461 } |
465 } |
| 462 return NULL; |
466 return NULL; |
| 463 } |
467 } |
| 464 |
468 |
| 465 UiBool table_getstyle(UiList *list, void *elm, int row, int col, void *userdata, UiTextStyle *style) { |
469 UiBool table_getstyle(UiList *list, void *elm, int row, int col, void *userdata, UiTextStyle *style) { |
| |
470 if(col > 6) { |
| |
471 return FALSE; |
| |
472 } |
| 466 if(row < 2 && col != -1) { |
473 if(row < 2 && col != -1) { |
| 467 style->text_style = UI_TEXT_STYLE_BOLD; |
474 style->text_style = UI_TEXT_STYLE_BOLD; |
| 468 if(col == 2) { |
475 if(col == 2) { |
| 469 style->text_style = UI_TEXT_STYLE_ITALIC; |
476 style->text_style = UI_TEXT_STYLE_ITALIC; |
| 470 } |
477 } |
| 561 char *label = ui_get(doc->link_label); |
568 char *label = ui_get(doc->link_label); |
| 562 char *uri = ui_get(doc->link_uri); |
569 char *uri = ui_get(doc->link_uri); |
| 563 ui_linkbutton_value_set(doc->link, label, uri); |
570 ui_linkbutton_value_set(doc->link, label, uri); |
| 564 } |
571 } |
| 565 |
572 |
| |
573 static UiBool list_save(UiList *list, int row, int col, UiCellValue *value, void *userdata) { |
| |
574 printf("list new value at [%d, %d]: %s\n", row, col, value->string); |
| |
575 return FALSE; |
| |
576 } |
| |
577 |
| 566 void application_startup(UiEvent *event, void *data) { |
578 void application_startup(UiEvent *event, void *data) { |
| 567 // global list |
579 // global list |
| 568 UiContext *global = ui_global_context(); |
580 UiContext *global = ui_global_context(); |
| 569 menu_list = ui_list_new(global, "menulist"); |
581 menu_list = ui_list_new(global, "menulist"); |
| 570 ui_list_append(menu_list, "menu list item 1"); |
582 ui_list_append(menu_list, "menu list item 1"); |
| 571 ui_list_append(menu_list, "menu list item 2"); |
583 ui_list_append(menu_list, "menu list item 2"); |
| 572 ui_list_append(menu_list, "menu list item 3"); |
584 ui_list_append(menu_list, "menu list item 3"); |
| 573 |
585 |
| 574 |
586 |
| 575 |
587 |
| 576 UiObject *obj = ui_sidebar_window("Test", NULL); |
588 UiObject *obj = ui_splitview_window("Test", TRUE); |
| 577 |
589 |
| 578 MyDocument *doc = create_doc(); |
590 MyDocument *doc = create_doc(); |
| 579 ui_attach_document(obj->ctx, doc); |
591 ui_attach_document(obj->ctx, doc); |
| 580 |
592 |
| 581 ui_sidebar(obj, .margin = 0, .spacing = 0) { |
593 ui_sidebar(obj, .margin = 0, .spacing = 0) { |
| 582 ui_sourcelist(obj, .fill = TRUE, |
594 ui_sourcelist(obj, .fill = TRUE, |
| 583 .getvalue = sourcelist_getvalue, |
595 .getvalue = sourcelist_getvalue, |
| 584 .sublists = UI_SUBLISTS(UI_SUBLIST(.varname = "srclist1", .header = "Header 1", .userdata = "Sublist1"), UI_SUBLIST(.varname = "srclist2", .header = "Header 2", .userdata = "Sublist2")), |
596 .sublists = UI_SUBLISTS(UI_SUBLIST(.varname = "srclist1", .header = "Header 1", .userdata = "Sublist1"), UI_SUBLIST(.varname = "srclist2", .header = "Header 2", .userdata = "Sublist2")), |
| 585 .onactivate = action_sourcelist_activate); |
597 .onactivate = action_sourcelist_activate); |
| |
598 } |
| |
599 |
| |
600 ui_right_panel(obj, .margin = 10, .spacing = 10) { |
| |
601 ui_button(obj, .label = "Test"); |
| 586 } |
602 } |
| 587 |
603 |
| 588 ui_tabview(obj, .spacing=10, .margin=10, .tabview = UI_TABVIEW_NAVIGATION_SIDE, .varname="tabview", .fill = TRUE) { |
604 ui_tabview(obj, .spacing=10, .margin=10, .tabview = UI_TABVIEW_NAVIGATION_SIDE, .varname="tabview", .fill = TRUE) { |
| 589 ui_tab(obj, "Tab 0") { |
605 ui_tab(obj, "Tab 0") { |
| 590 ui_vbox(obj, .fill = FALSE, .margin = 15, .spacing = 15) { |
606 ui_vbox(obj, .fill = FALSE, .margin = 15, .spacing = 15) { |
| 605 |
621 |
| 606 ui_label(obj, .label = "Label Col 1", .align = UI_ALIGN_LEFT); |
622 ui_label(obj, .label = "Label Col 1", .align = UI_ALIGN_LEFT); |
| 607 ui_label(obj, .label = "Label Col 2", .style = UI_LABEL_STYLE_TITLE, .align = UI_ALIGN_RIGHT); |
623 ui_label(obj, .label = "Label Col 2", .style = UI_LABEL_STYLE_TITLE, .align = UI_ALIGN_RIGHT); |
| 608 ui_newline(obj); |
624 ui_newline(obj); |
| 609 |
625 |
| 610 ui_spinner(obj, .step = 5); |
626 ui_spinbox(obj, .step = 5); |
| |
627 ui_newline(obj); |
| |
628 |
| |
629 ui_switch(obj, .varname = "switch"); |
| 611 ui_newline(obj); |
630 ui_newline(obj); |
| 612 |
631 |
| 613 ui_progressbar(obj, .colspan = 2, .varname = "progress"); |
632 ui_progressbar(obj, .colspan = 2, .varname = "progress"); |
| 614 ui_set(doc->progress, 0.75); |
633 ui_set(doc->progress, 0.75); |
| 615 ui_newline(obj); |
634 ui_newline(obj); |
| 643 } |
662 } |
| 644 ui_newline(obj); |
663 ui_newline(obj); |
| 645 } |
664 } |
| 646 } |
665 } |
| 647 ui_tab(obj, "Tab 1") { |
666 ui_tab(obj, "Tab 1") { |
| 648 UiModel *model = ui_model(obj->ctx, UI_ICON_TEXT, "col1", UI_INTEGER, "col2", UI_ICON, "col3", UI_ICON_TEXT, "col4", UI_INTEGER, "col5", -1); |
667 UiModel *model = ui_model(obj->ctx, UI_ICON_TEXT, "col1", UI_INTEGER, "col2", UI_ICON, "col3", UI_ICON_TEXT, "col4", UI_INTEGER, "col5", UI_STRING_EDITABLE, "edit6", UI_STRING_EDITABLE, "edit7", -1); |
| 649 model->columnsize[0] = -1; |
668 model->columnsize[0] = -1; |
| 650 ui_table(obj, .model = model, .list = doc->list2, .colspan = 2, .fill = TRUE, .contextmenu = menubuilder, .multiselection = TRUE, .fill = TRUE, |
669 ui_table(obj, .model = model, .list = doc->list2, .colspan = 2, .fill = TRUE, .contextmenu = menubuilder, .multiselection = TRUE, .fill = TRUE, |
| 651 .getvalue = table_getvalue, .getstyle = table_getstyle, |
670 .getvalue = table_getvalue, .getstyle = table_getstyle, .onsave = list_save, |
| 652 .onactivate = action_table_activate, .onactivatedata = "activate", |
671 .onactivate = action_table_activate, .onactivatedata = "activate", |
| 653 .onselection = action_table_activate, .onselectiondata = "selection"); |
672 .onselection = action_table_activate, .onselectiondata = "selection"); |
| 654 ui_hbox(obj, .fill = FALSE) { |
673 ui_hbox(obj, .fill = FALSE) { |
| 655 ui_textfield(obj, .value = doc->list_input); |
674 ui_textfield(obj, .value = doc->list_input); |
| 656 ui_button(obj, .label = "Update List Item 1", .onclick = action_update_list); |
675 ui_button(obj, .label = "Update List Item 1", .onclick = action_update_list); |
| 708 ui_tab(obj, "Tab 7") { |
727 ui_tab(obj, "Tab 7") { |
| 709 ui_itemlist(obj, .create_ui = create_item, .varname = "items", .subcontainer = UI_CONTAINER_HBOX, .sub_spacing = 10, .margin = 10, .spacing = 4, .userdata = doc, .fill = TRUE); |
728 ui_itemlist(obj, .create_ui = create_item, .varname = "items", .subcontainer = UI_CONTAINER_HBOX, .sub_spacing = 10, .margin = 10, .spacing = 4, .userdata = doc, .fill = TRUE); |
| 710 } |
729 } |
| 711 |
730 |
| 712 ui_tab(obj, "Tab 8") { |
731 ui_tab(obj, "Tab 8") { |
| 713 ui_hsplitpane(obj, .initial_position = 100, .fill = TRUE) { |
732 ui_hsplitpane(obj, .initial_position = 100, .position_property = "hsplitpane.position", .fill = TRUE) { |
| 714 ui_button(obj, .label = "Button 1"); |
733 ui_button(obj, .label = "Button 1"); |
| 715 ui_button(obj, .label = "Button 2"); |
734 ui_button(obj, .label = "Button 2"); |
| 716 } |
735 } |
| 717 } |
736 } |
| 718 ui_tab(obj, "Tab 9") { |
737 ui_tab(obj, "Tab 9") { |
| 1033 |
1052 |
| 1034 ui_newline(obj); |
1053 ui_newline(obj); |
| 1035 |
1054 |
| 1036 ui_button(obj, .label = "Button Y"); |
1055 ui_button(obj, .label = "Button Y"); |
| 1037 ui_checkbox(obj, .label = "Checkbox"); |
1056 ui_checkbox(obj, .label = "Checkbox"); |
| 1038 ui_spinner(obj, .digits = 2); |
1057 ui_spinbox(obj, .digits = 2); |
| 1039 ui_newline(obj); |
1058 ui_newline(obj); |
| 1040 |
1059 |
| 1041 ui_hbox(obj, .colspan = 3) { |
1060 ui_hbox(obj, .colspan = 3) { |
| 1042 ui_radiobutton(obj, .label = "Radio 1", .varname = "radio"); |
1061 ui_radiobutton(obj, .label = "Radio 1", .varname = "radio"); |
| 1043 ui_radiobutton(obj, .label = "Radio 2", .varname = "radio"); |
1062 ui_radiobutton(obj, .label = "Radio 2", .varname = "radio"); |