32 #include <ui/ui.h> |
32 #include <ui/ui.h> |
33 #include <cx/buffer.h> |
33 #include <cx/buffer.h> |
34 #include <cx/utils.h> |
34 #include <cx/utils.h> |
35 |
35 |
36 typedef struct { |
36 typedef struct { |
37 UiText *text; |
37 UiString *str1; |
|
38 UiString *str2; |
38 } MyDocument; |
39 } MyDocument; |
39 |
40 |
40 MyDocument *doc1; |
41 MyDocument *doc1; |
41 MyDocument *doc2; |
42 MyDocument *doc2; |
42 |
43 |
43 |
44 |
44 void action_menu(UiEvent *event, void *userdata) { |
45 void action_menu(UiEvent *event, void *userdata) { |
45 printf("action_menu: %s\n", (char*)userdata); |
46 |
46 } |
47 } |
47 |
48 |
48 void action_button(UiEvent *event, void *userdata) { |
49 void action_button(UiEvent *event, void *userdata) { |
49 printf("button test\n"); |
|
50 MyDocument *doc = event->document; |
|
51 if(!doc) { |
|
52 printf("no document\n"); |
|
53 return; |
|
54 } |
|
55 |
50 |
56 char *text = doc->text->get(doc->text); |
|
57 printf("text: {\n%s\n}\n", text); |
|
58 } |
51 } |
59 |
52 |
60 void action_switch(UiEvent *event, void *userdata) { |
53 void action_switch(UiEvent *event, void *userdata) { |
61 if(event->document == doc1) { |
54 |
62 ui_set_document(event->obj, doc2); |
|
63 } else { |
|
64 ui_set_document(event->obj, doc1); |
|
65 } |
|
66 } |
55 } |
67 |
56 |
68 |
57 |
69 MyDocument* create_doc(void) { |
58 MyDocument* create_doc(void) { |
70 MyDocument *doc = ui_document_new(sizeof(MyDocument)); |
59 MyDocument *doc = ui_document_new(sizeof(MyDocument)); |
71 UiContext *docctx = ui_document_context(doc); |
60 UiContext *docctx = ui_document_context(doc); |
72 doc->text = ui_text_new(docctx, "text"); |
61 doc->str1 = ui_string_new(docctx, "str1"); |
|
62 doc->str1 = ui_string_new(docctx, "str2"); |
73 return doc; |
63 return doc; |
74 } |
64 } |
75 |
65 |
76 void application_startup(UiEvent *event, void *data) { |
66 void application_startup(UiEvent *event, void *data) { |
77 |
67 |
78 UiObject *obj = ui_window("Test", NULL); |
68 UiObject *obj = ui_window("Test", NULL); |
79 ui_textarea_nv(obj, "text"); |
|
80 ui_button(obj, "Test", action_button, NULL); |
|
81 ui_button(obj, "Switch Document", action_switch, NULL); |
|
82 |
69 |
83 doc1 = create_doc(); |
|
84 doc2 = create_doc(); |
|
85 |
70 |
86 ui_attach_document(obj->ctx, doc1); |
|
87 |
71 |
88 ui_show(obj); |
72 ui_show(obj); |
89 } |
73 } |
90 |
74 |
91 int main(int argc, char** argv) { |
75 int main(int argc, char** argv) { |
92 ui_init("app1", argc, argv); |
76 ui_init("app1", argc, argv); |
93 ui_onstartup(application_startup, NULL); |
77 ui_onstartup(application_startup, NULL); |
94 |
78 |
95 // menu |
79 // menu |
96 ui_menu("_File"); |
80 |
97 ui_menuitem("_Hello", action_menu, NULL); |
|
98 ui_submenu("Submenu1"); |
|
99 ui_submenu("Submenu2"); |
|
100 ui_menuitem("item2", action_menu, NULL); |
|
101 ui_submenu_end(); |
|
102 ui_menuitem("item3", action_menu, NULL); |
|
103 ui_submenu_end(); |
|
104 ui_menuitem("item4", action_menu, NULL); |
|
105 |
81 |
106 |
82 |
107 ui_main(); |
83 ui_main(); |
108 |
84 |
109 return (EXIT_SUCCESS); |
85 return (EXIT_SUCCESS); |