int main(int argc, char **argv) { struct rutabaga *delicious; struct rtb_window *win; struct rtb_button click_me; delicious = rtb_new(); assert(delicious); win = rtb_window_open(delicious, 600, 700, "rtb basic demo"); assert(win); rtb_elem_set_size_cb(RTB_ELEMENT(win), rtb_size_hfit_children); rtb_elem_set_layout(RTB_ELEMENT(win), rtb_layout_hpack_center); rtb_label_init(&click_counter); rtb_button_init(&click_me); click_counter.align = RTB_ALIGN_MIDDLE; click_me.align = RTB_ALIGN_MIDDLE; click_me.flags |= RTB_ELEM_CLICK_FOCUS; rtb_button_set_label(&click_me, "click me"); update_label(); rtb_register_handler(RTB_ELEMENT(&click_me), RTB_BUTTON_CLICK, button_clicked, NULL); rtb_elem_add_child(RTB_ELEMENT(win), RTB_ELEMENT(&click_counter), RTB_ADD_TAIL); rtb_elem_add_child(RTB_ELEMENT(win), RTB_ELEMENT(&click_me), RTB_ADD_TAIL); rtb_event_loop(delicious); rtb_window_lock(win); rtb_label_fini(&click_counter); rtb_window_close(delicious->win); rtb_free(delicious); }
int rtb_button_init(struct rtb_button *self) { if (RTB_SUBCLASS(RTB_ELEMENT(self), rtb_elem_init, &super)) return -1; rtb_label_init(&self->label); rtb_elem_add_child(RTB_ELEMENT(self), RTB_ELEMENT(&self->label), RTB_ADD_HEAD); self->label.align = RTB_ALIGN_MIDDLE; self->outer_pad.x = self->outer_pad.y = 0.f; self->on_event = on_event; self->attached = attached; self->layout_cb = rtb_layout_hpack_center; self->size_cb = rtb_size_hfit_children; self->reflow = reflow; return 0; }