53 #ifdef __cplusplus |
53 #ifdef __cplusplus |
54 extern "C" { |
54 extern "C" { |
55 #endif |
55 #endif |
56 |
56 |
57 /* public types */ |
57 /* public types */ |
58 typedef struct UiObject UiObject; |
58 typedef struct UiObject UiObject; |
59 typedef struct UiEvent UiEvent; |
59 typedef struct UiEvent UiEvent; |
|
60 typedef struct UiObserver UiObserver; |
60 |
61 |
61 typedef struct UiInteger UiInteger; |
62 typedef struct UiInteger UiInteger; |
62 typedef struct UiString UiString; |
63 typedef struct UiString UiString; |
63 typedef struct UiText UiText; |
64 typedef struct UiText UiText; |
|
65 typedef struct UiList UiList; |
64 |
66 |
65 /* private types */ |
67 /* private types */ |
66 typedef struct UiContext UiContext; |
68 typedef struct UiContext UiContext; |
67 typedef struct UiContainer UiContainer; |
69 typedef struct UiContainer UiContainer; |
68 |
70 |
71 |
73 |
72 #define ui_getsubstr(text, begin, end) (text).getsubstr(&(val), begin, end) |
74 #define ui_getsubstr(text, begin, end) (text).getsubstr(&(val), begin, end) |
73 #define ui_insert(text, begin, str) (text).insert(&(text), begin, str) |
75 #define ui_insert(text, begin, str) (text).insert(&(text), begin, str) |
74 |
76 |
75 |
77 |
76 typedef void(*ui_callback)(UiEvent*, void*); // event, user data |
78 typedef void(*ui_callback)(UiEvent*, void*); /* event, user data */ |
77 |
79 |
78 struct UiObject { |
80 struct UiObject { |
79 /* |
81 /* |
80 * native widget |
82 * native widget |
81 */ |
83 */ |
126 struct UiText { |
134 struct UiText { |
127 void (*set)(UiText*, char*); |
135 void (*set)(UiText*, char*); |
128 char* (*get)(UiText*); |
136 char* (*get)(UiText*); |
129 char* (*getsubstr)(UiText*, int, int); // text, begin, end |
137 char* (*getsubstr)(UiText*, int, int); // text, begin, end |
130 void (*insert)(UiText*, int, char*); |
138 void (*insert)(UiText*, int, char*); |
131 char* value; |
139 char *value; |
132 void *obj; |
140 void *obj; |
133 void *undomgr; |
141 void *undomgr; |
134 // TODO: selection, undo, replace, ... |
142 // TODO: selection, undo, replace, ... |
|
143 }; |
|
144 |
|
145 /* |
|
146 * abstract list |
|
147 */ |
|
148 struct UiList { |
|
149 /* get the first element */ |
|
150 void*(*first)(UiList *list); |
|
151 /* get the next element */ |
|
152 void*(*next)(UiList *list); |
|
153 /* get the nth element */ |
|
154 void*(*get)(UiList *list, int i); |
|
155 /* get the number of elements */ |
|
156 int(*count)(UiList *list); |
|
157 /* list of observers */ |
|
158 UiObserver *observers; |
|
159 /* iterator changes after first() next() and get() */ |
|
160 void *iter; |
|
161 /* private - implementation dependent */ |
|
162 void *data; |
|
163 |
135 }; |
164 }; |
136 |
165 |
137 void ui_init(char *appname, int argc, char **argv); |
166 void ui_init(char *appname, int argc, char **argv); |
138 void ui_exitfunc(ui_callback f, void *udata); |
167 void ui_exitfunc(ui_callback f, void *udata); |
139 |
168 |
161 int ui_document_getint(void *doc, char *name); |
190 int ui_document_getint(void *doc, char *name); |
162 |
191 |
163 // new: |
192 // new: |
164 int ui_getint(UiObject *obj, char *name); |
193 int ui_getint(UiObject *obj, char *name); |
165 |
194 |
|
195 |
|
196 |
|
197 |
|
198 |
|
199 // types |
|
200 UiObserver* ui_observer_new(ui_callback f, void *data); |
|
201 UiObserver* ui_obsvlist_add(UiObserver *list, UiObserver *observer); |
|
202 UiObserver* ui_add_observer(UiObserver *list, ui_callback f, void *data); |
|
203 void ui_notify(UiObserver *observer, void *data); |
|
204 void ui_notify_except(UiObserver *observer, UiObserver *exc, void *data); |
|
205 |
|
206 |
|
207 UiList* ui_list_new(); |
|
208 void* ui_list_first(UiList *list); |
|
209 void* ui_list_next(UiList *list); |
|
210 void* ui_list_get(UiList *list, int i); |
|
211 int ui_list_count(UiList *list); |
|
212 void ui_list_append(UiList *list, void *data); |
|
213 void ui_list_prepend(UiList *list, void *data); |
|
214 void ui_list_addobsv(UiList *list, ui_callback f, void *data); |
|
215 void ui_list_notify(UiList *list); |
166 |
216 |
167 |
217 |
168 #ifdef __cplusplus |
218 #ifdef __cplusplus |
169 } |
219 } |
170 #endif |
220 #endif |