ui/ui/toolkit.h

changeset 14
e2fd132ab781
parent 12
fe94e0fb9ef3
child 16
a499c8a72c15
equal deleted inserted replaced
13:2dbc56c2323b 14:e2fd132ab781
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 */
107 void *document; 109 void *document;
108 void *window; 110 void *window;
109 int intval; 111 int intval;
110 }; 112 };
111 113
114 struct UiObserver {
115 ui_callback callback;
116 void *data;
117 UiObserver *next;
118 };
119
112 struct UiInteger { 120 struct UiInteger {
113 int (*get)(UiInteger*); 121 int (*get)(UiInteger*);
114 void (*set)(UiInteger*, int); 122 void (*set)(UiInteger*, int);
115 int value; 123 int value;
116 void *obj; 124 void *obj;
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

mercurial