5 rtk_widget *rtk_create_widget(void)
9 if(!(w = calloc(1, sizeof *w))) {
12 w->any.visible = w->any.enabled = 1;
16 void rtk_free_widget(rtk_widget *w)
20 if(w->type == RTK_WIN) {
22 rtk_widget *c = w->win.clist;
23 w->win.clist = w->win.clist->any.next;
32 int rtk_type(rtk_widget *w)
37 void rtk_move(rtk_widget *w, int x, int y)
43 void rtk_pos(rtk_widget *w, int *xptr, int *yptr)
49 void rtk_resize(rtk_widget *w, int xsz, int ysz)
55 void rtk_size(rtk_widget *w, int *xptr, int *yptr)
58 *yptr = w->any.height;
61 int rtk_set_text(rtk_widget *w, const char *str)
63 char *s = strdup(str);
71 const char *rtk_get_text(rtk_widget *w)
76 void rtk_set_callback(rtk_widget *w, rtk_callback cbfunc, void *cls)
78 w->any.cbfunc = cbfunc;
82 void rtk_win_layout(rtk_widget *w, int layout)
84 w->win.layout = layout;
87 void rtk_win_clear(rtk_widget *w)
91 RTK_ASSERT_TYPE(w, RTK_WIN);
95 w->win.clist = w->win.clist->any.next;
99 w->win.clist = w->win.ctail = 0;
102 void rtk_win_add(rtk_widget *par, rtk_widget *child)
104 RTK_ASSERT_TYPE(par, RTK_WIN);
106 if(rtk_win_has(par, child)) {
111 rtk_win_rm(child->any.par, child);
115 par->win.ctail->any.next = child;
116 par->win.ctail = child;
118 par->win.clist = par->win.ctail = child;
122 child->any.par = par;
125 void rtk_win_rm(rtk_widget *par, rtk_widget *child)
127 rtk_widget *prev, dummy;
129 RTK_ASSERT_TYPE(par, RTK_WIN);
131 dummy.any.next = par->win.clist;
133 while(prev->any.next) {
134 if(prev->any.next == child) {
135 if(!child->any.next) {
136 par->win.ctail = prev;
138 prev->any.next = child->any.next;
141 prev = prev->any.next;
143 par->win.clist = dummy.any.next;
146 int rtk_win_has(rtk_widget *par, rtk_widget *child)
150 RTK_ASSERT_TYPE(par, RTK_WIN);
162 rtk_widget *rtk_create_window(rtk_widget *par, const char *title, int x, int y, int w, int h)
167 rtk_widget *rtk_create_button(rtk_widget *par, const char *str, rtk_callback cbfunc)
172 rtk_widget *rtk_create_iconbutton(rtk_widget *par, struct image *img, rtk_callback cbfunc)
177 rtk_widget *rtk_create_label(rtk_widget *par, const char *text)
182 rtk_widget *rtk_create_checkbox(rtk_widget *par, const char *text, int chk, rtk_callback cbfunc)