Ejemplo n.º 1
0
Archivo: basic.c Proyecto: wrl/rutabaga
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);
}
Ejemplo n.º 2
0
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;
}