1 /* |
1 /* |
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
3 * |
3 * |
4 * Copyright 2017 Olaf Wintermann. All rights reserved. |
4 * Copyright 2024 Olaf Wintermann. All rights reserved. |
5 * |
5 * |
6 * Redistribution and use in source and binary forms, with or without |
6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions are met: |
7 * modification, are permitted provided that the following conditions are met: |
8 * |
8 * |
9 * 1. Redistributions of source code must retain the above copyright |
9 * 1. Redistributions of source code must retain the above copyright |
27 */ |
27 */ |
28 |
28 |
29 #include <stdio.h> |
29 #include <stdio.h> |
30 #include <stdlib.h> |
30 #include <stdlib.h> |
31 |
31 |
|
32 #ifdef _WIN32 |
|
33 #include <Windows.h> |
|
34 #endif |
|
35 |
32 #include <ui/ui.h> |
36 #include <ui/ui.h> |
33 #include <cx/buffer.h> |
|
34 #include <cx/utils.h> |
|
35 |
37 |
36 typedef struct { |
38 #include "application.h" |
37 UiText *text; |
|
38 } MyDocument; |
|
39 |
39 |
40 MyDocument *doc1; |
40 int idav_main(int argc, char **argv) { |
41 MyDocument *doc2; |
41 ui_init("idav", argc, argv); |
|
42 ui_onstartup(application_startup, NULL); |
42 |
43 |
|
44 ui_main(); |
43 |
45 |
44 void action_menu(UiEvent *event, void *userdata) { |
46 return 0; |
45 printf("action_menu: %s\n", (char*)userdata); |
|
46 } |
47 } |
47 |
48 |
48 void action_button(UiEvent *event, void *userdata) { |
49 #ifndef _WIN32 |
49 printf("button test\n"); |
50 int main(int argc, char** argv) { |
50 MyDocument *doc = event->document; |
51 return idav_main(argc, argv); |
51 if(!doc) { |
|
52 printf("no document\n"); |
|
53 return; |
|
54 } |
|
55 |
|
56 char *text = doc->text->get(doc->text); |
|
57 printf("text: {\n%s\n}\n", text); |
|
58 } |
52 } |
|
53 #else |
|
54 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) { |
|
55 return idav_main(__argc, __argv); |
|
56 } |
|
57 #endif |
59 |
58 |
60 void action_switch(UiEvent *event, void *userdata) { |
|
61 if(event->document == doc1) { |
|
62 ui_set_document(event->obj, doc2); |
|
63 } else { |
|
64 ui_set_document(event->obj, doc1); |
|
65 } |
|
66 } |
|
67 |
|
68 |
|
69 MyDocument* create_doc(void) { |
|
70 MyDocument *doc = ui_document_new(sizeof(MyDocument)); |
|
71 UiContext *docctx = ui_document_context(doc); |
|
72 doc->text = ui_text_new(docctx, "text"); |
|
73 return doc; |
|
74 } |
|
75 |
|
76 void application_startup(UiEvent *event, void *data) { |
|
77 |
|
78 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 |
|
83 doc1 = create_doc(); |
|
84 doc2 = create_doc(); |
|
85 |
|
86 ui_attach_document(obj->ctx, doc1); |
|
87 |
|
88 ui_show(obj); |
|
89 } |
|
90 |
|
91 int main(int argc, char** argv) { |
|
92 ui_init("app1", argc, argv); |
|
93 ui_onstartup(application_startup, NULL); |
|
94 |
|
95 // menu |
|
96 ui_menu("_File"); |
|
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 |
|
106 |
|
107 ui_main(); |
|
108 |
|
109 return (EXIT_SUCCESS); |
|
110 } |
|