95 typedef struct UiString UiString; |
95 typedef struct UiString UiString; |
96 typedef struct UiText UiText; |
96 typedef struct UiText UiText; |
97 typedef struct UiList UiList; |
97 typedef struct UiList UiList; |
98 typedef struct UiRange UiRange; |
98 typedef struct UiRange UiRange; |
99 |
99 |
100 /* private types */ |
100 /* begin opaque types */ |
101 typedef struct UiContext UiContext; |
101 typedef struct UiContext UiContext; |
102 typedef struct UiContainer UiContainer; |
102 typedef struct UiContainer UiContainer; |
|
103 /* end opaque types */ |
103 |
104 |
104 typedef struct UiTabbedPane UiTabbedPane; |
105 typedef struct UiTabbedPane UiTabbedPane; |
105 |
106 |
106 enum UiMouseEventType { UI_PRESS = 0, UI_PRESS2 }; |
107 enum UiMouseEventType { UI_PRESS = 0, UI_PRESS2 }; |
107 |
108 |
108 #define ui_getval(val) (val).get(&(val)) |
109 |
109 #define ui_setval(val, v) (val).set(&(val), v) |
|
110 |
|
111 #define ui_getsubstr(text, begin, end) (text).getsubstr(&(text), begin, end) |
|
112 #define ui_insert(text, begin, str) (text).insert(&(text), begin, str) |
|
113 #define ui_length(text) (text).length(&(text)) |
|
114 #define ui_selection(text, begin, end) (text).selection(&(text), begin, end) |
|
115 #define ui_position(text) (text).position(&(text)) |
|
116 #define ui_remove(text, begin, end) (text).remove(&(text), begin, end) |
|
117 |
110 |
118 typedef void(*ui_callback)(UiEvent*, void*); /* event, user data */ |
111 typedef void(*ui_callback)(UiEvent*, void*); /* event, user data */ |
119 |
112 |
120 typedef void*(*ui_model_getvalue_f)(void*, int); |
113 typedef void*(*ui_model_getvalue_f)(void*, int); |
121 |
114 |
187 }; |
180 }; |
188 |
181 |
189 struct UiInteger { |
182 struct UiInteger { |
190 int (*get)(UiInteger*); |
183 int (*get)(UiInteger*); |
191 void (*set)(UiInteger*, int); |
184 void (*set)(UiInteger*, int); |
|
185 void *obj; |
|
186 |
192 int value; |
187 int value; |
193 void *obj; |
188 UiObserver *observers; |
194 }; |
189 }; |
195 |
190 |
196 struct UiString { |
191 struct UiString { |
197 char* (*get)(UiString*); |
192 char* (*get)(UiString*); |
198 void (*set)(UiString*, char*); |
193 void (*set)(UiString*, char*); |
|
194 void *obj; |
|
195 |
199 char* value; |
196 char* value; |
200 void *obj; |
197 UiObserver *observers; |
201 }; |
198 }; |
202 |
199 |
203 struct UiText { |
200 struct UiText { |
204 void (*set)(UiText*, char*); |
201 void (*set)(UiText*, char*); |
205 char* (*get)(UiText*); |
202 char* (*get)(UiText*); |
206 char* (*getsubstr)(UiText*, int, int); // text, begin, end |
203 char* (*getsubstr)(UiText*, int, int); /* text, begin, end */ |
207 void (*insert)(UiText*, int, char*); |
204 void (*insert)(UiText*, int, char*); |
208 void (*setposition)(UiText*,int); |
205 void (*setposition)(UiText*,int); |
209 int (*position)(UiText*); |
206 int (*position)(UiText*); |
210 void (*selection)(UiText*, int*, int*); // text, begin, end |
207 void (*selection)(UiText*, int*, int*); /* text, begin, end */ |
211 int (*length)(UiText*); |
208 int (*length)(UiText*); |
212 void (*remove)(UiText*, int, int); // text, begin, end |
209 void (*remove)(UiText*, int, int); /* text, begin, end */ |
213 char *value; |
210 char *value; |
214 int pos; |
211 int pos; |
215 void *obj; |
212 void *obj; |
216 void *undomgr; |
213 void *undomgr; |
217 // TODO: replace, ... |
214 // TODO: replacefunc, ... |
|
215 UiObserver *observers; |
218 }; |
216 }; |
219 |
217 |
220 /* |
218 /* |
221 * abstract list |
219 * abstract list |
222 */ |
220 */ |
227 void*(*next)(UiList *list); |
225 void*(*next)(UiList *list); |
228 /* get the nth element */ |
226 /* get the nth element */ |
229 void*(*get)(UiList *list, int i); |
227 void*(*get)(UiList *list, int i); |
230 /* get the number of elements */ |
228 /* get the number of elements */ |
231 int(*count)(UiList *list); |
229 int(*count)(UiList *list); |
232 /* list of observers */ |
|
233 UiObserver *observers; |
|
234 /* iterator changes after first() next() and get() */ |
230 /* iterator changes after first() next() and get() */ |
235 void *iter; |
231 void *iter; |
236 /* private - implementation dependent */ |
232 /* private - implementation dependent */ |
237 void *data; |
233 void *data; |
238 |
234 |
|
235 /* binding function */ |
|
236 void (*update)(UiList *list, int i); |
|
237 /* binding object */ |
|
238 void *obj; |
|
239 |
|
240 /* list of observers */ |
|
241 UiObserver *observers; |
239 }; |
242 }; |
240 |
243 |
241 struct UiRange { |
244 struct UiRange { |
242 double (*get)(UiRange *range); |
245 double (*get)(UiRange *range); |
243 void (*set)(UiRange *range, double value); |
246 void (*set)(UiRange *range, double value); |
267 void ui_show(UiObject *obj); |
269 void ui_show(UiObject *obj); |
268 void ui_close(UiObject *obj); |
270 void ui_close(UiObject *obj); |
269 |
271 |
270 void ui_job(UiObject *obj, ui_threadfunc tf, void *td, ui_callback f, void *fd); |
272 void ui_job(UiObject *obj, ui_threadfunc tf, void *td, ui_callback f, void *fd); |
271 |
273 |
272 void ui_set_enabled(UIWIDGET widget, int enabled); |
274 void* ui_document_new(size_t size); |
273 void ui_set_show_all(UIWIDGET widget, int value); |
275 void ui_document_destroy(void *doc); |
274 void ui_set_visible(UIWIDGET widget, int visible); |
|
275 |
|
276 UIWIDGET ui_vbox(UiObject *obj); |
|
277 UIWIDGET ui_hbox(UiObject *obj); |
|
278 UIWIDGET ui_vbox_sp(UiObject *obj, int margin, int spacing); |
|
279 UIWIDGET ui_hbox_sp(UiObject *obj, int margin, int spacing); |
|
280 |
|
281 UIWIDGET ui_grid(UiObject *obj); |
|
282 UIWIDGET ui_grid_sp(UiObject *obj, int margin, int columnspacing, int rowspacing); |
|
283 |
|
284 UIWIDGET ui_scrolledwindow(UiObject *obj); |
|
285 |
|
286 UIWIDGET ui_sidebar(UiObject *obj); |
|
287 void ui_end(UiObject *obj); |
|
288 |
|
289 UIWIDGET ui_tabview(UiObject *obj); |
|
290 void ui_tab(UiObject *obj, char *title); |
|
291 void ui_select_tab(UIWIDGET tabview, int tab); |
|
292 |
|
293 // box container layout functions |
|
294 void ui_layout_fill(UiObject *obj, UiBool fill); |
|
295 // grid container layout functions |
|
296 void ui_layout_hexpand(UiObject *obj, UiBool expand); |
|
297 void ui_layout_vexpand(UiObject *obj, UiBool expand); |
|
298 void ui_layout_gridwidth(UiObject *obj, int width); |
|
299 void ui_newline(UiObject *obj); |
|
300 |
|
301 |
|
302 UiTabbedPane* ui_tabbed_document_view(UiObject *obj); |
|
303 |
|
304 UiObject* ui_document_tab(UiTabbedPane *view); |
|
305 |
|
306 |
|
307 |
|
308 |
276 |
309 void ui_set_document(UiObject *obj, void *document); |
277 void ui_set_document(UiObject *obj, void *document); |
310 void ui_detach_document(UiObject *obj, void *document); |
278 void ui_detach_document(UiObject *obj); |
311 void* ui_get_document(UiObject *obj); |
279 void* ui_get_document(UiObject *obj); |
312 void ui_set_subdocument(void *document, void *sub); |
280 void ui_set_subdocument(void *document, void *sub); |
313 void ui_detach_subdocument(void *document, void *sub); |
281 void ui_detach_subdocument(void *document, void *sub); |
314 void* ui_get_subdocument(void *document); |
282 void* ui_get_subdocument(void *document); |
315 |
283 |
316 void* ui_document_new(size_t size); |
|
317 void ui_document_destroy(void *doc); |
|
318 |
|
319 UiContext* ui_document_context(void *doc); |
284 UiContext* ui_document_context(void *doc); |
320 |
285 |
321 // TODO: remove |
|
322 void* ui_document_malloc(void *doc, size_t size); |
|
323 void* ui_document_calloc(void *doc, size_t nelem, size_t elsize); |
|
324 void ui_document_free(void *doc, void *ptr); |
|
325 void* ui_document_realloc(void *doc, void *ptr, size_t size); |
|
326 |
|
327 // TODO: remove (or not) |
|
328 void ui_document_addint(void *doc, char *name); |
|
329 void ui_document_regint(void *doc, char *name, UiInteger *i); |
|
330 void ui_document_setint(void *doc, char *name, int val); |
|
331 int ui_document_getint(void *doc, char *name); |
|
332 |
|
333 void ui_document_regtext(void *doc, char *name, UiText *text); |
|
334 void ui_document_reglist(void *doc, char *name, UiList *list); |
|
335 |
|
336 // new: |
|
337 int ui_getint(UiObject *obj, char *name); |
|
338 char *ui_getstr(UiObject *obj, char *name); |
|
339 char* ui_gettext(UiObject *obj, char *name); |
|
340 |
286 |
341 |
287 |
342 void ui_set_group(UiContext *ctx, int group); |
288 void ui_set_group(UiContext *ctx, int group); |
343 void ui_unset_group(UiContext *ctx, int group); |
289 void ui_unset_group(UiContext *ctx, int group); |
344 int* ui_active_groups(UiContext *ctx, int *ngroups); |
290 int* ui_active_groups(UiContext *ctx, int *ngroups); |
347 void* ui_calloc(UiContext *ctx, size_t nelem, size_t elsize); |
293 void* ui_calloc(UiContext *ctx, size_t nelem, size_t elsize); |
348 void ui_free(UiContext *ctx, void *ptr); |
294 void ui_free(UiContext *ctx, void *ptr); |
349 void* ui_realloc(UiContext *ctx, void *ptr, size_t size); |
295 void* ui_realloc(UiContext *ctx, void *ptr, size_t size); |
350 |
296 |
351 // types |
297 // types |
|
298 |
|
299 UiInteger* ui_int_new(UiContext *ctx, char *name); |
|
300 UiString* ui_string_new(UiContext *ctx, char *name); |
|
301 UiText* ui_text_new(UiContext *ctx, char *name); |
|
302 |
352 UiObserver* ui_observer_new(ui_callback f, void *data); |
303 UiObserver* ui_observer_new(ui_callback f, void *data); |
353 UiObserver* ui_obsvlist_add(UiObserver *list, UiObserver *observer); |
304 UiObserver* ui_obsvlist_add(UiObserver *list, UiObserver *observer); |
354 UiObserver* ui_add_observer(UiObserver *list, ui_callback f, void *data); |
305 UiObserver* ui_add_observer(UiObserver *list, ui_callback f, void *data); |
355 void ui_notify(UiObserver *observer, void *data); |
306 void ui_notify(UiObserver *observer, void *data); |
356 void ui_notify_except(UiObserver *observer, UiObserver *exc, void *data); |
307 void ui_notify_except(UiObserver *observer, UiObserver *exc, void *data); |
369 void ui_clipboard_set(char *str); |
320 void ui_clipboard_set(char *str); |
370 char* ui_clipboard_get(); |
321 char* ui_clipboard_get(); |
371 |
322 |
372 void ui_add_image(char *imgname, char *filename); |
323 void ui_add_image(char *imgname, char *filename); |
373 |
324 |
|
325 // general widget functions |
|
326 void ui_set_enabled(UIWIDGET widget, int enabled); |
|
327 void ui_set_show_all(UIWIDGET widget, int value); |
|
328 void ui_set_visible(UIWIDGET widget, int visible); |
|
329 |
|
330 |
374 // label widgets |
331 // label widgets |
375 UIWIDGET ui_label(UiObject *obj, char *label); |
332 UIWIDGET ui_label(UiObject *obj, char *label); |
376 UIWIDGET ui_llabel(UiObject *obj, char *label); |
333 UIWIDGET ui_llabel(UiObject *obj, char *label); |
377 UIWIDGET ui_rlabel(UiObject *obj, char *label); |
334 UIWIDGET ui_rlabel(UiObject *obj, char *label); |
378 UIWIDGET ui_space(UiObject *obj); |
335 UIWIDGET ui_space(UiObject *obj); |