efl
163 строки · 5.4 Кб
1//Compile with:
2//gcc -g box_example_02.c -o box_example_02 `pkg-config --cflags --libs elementary`
3
4#include <Elementary.h>5
6typedef struct7{
8Eina_List *transitions;9Evas_Object *box;10Evas_Object_Box_Layout last_layout;11} Transitions_Data;12
13static void14_add_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED)15{
16Evas_Object *btn;17Eina_List *children;18Transitions_Data *tdata = data;19
20btn = elm_button_add(tdata->box);21elm_object_text_set(btn, "I do nothing");22children = (Eina_List *)elm_box_children_get(tdata->box);23if (children)24{25elm_box_pack_after(tdata->box, btn, (Evas_Object *)children->data);26eina_list_free(children);27}28else29elm_box_pack_end(tdata->box, btn);30evas_object_show(btn);31}
32
33static void34_clear_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED)35{
36Transitions_Data *tdata = data;37elm_box_clear(tdata->box);38}
39
40static void41_unpack_cb(void *data, Evas_Object *obj, void *ev EINA_UNUSED)42{
43Transitions_Data *tdata = data;44elm_box_unpack(tdata->box, obj);45evas_object_move(obj, 0, 50);46evas_object_color_set(obj, 128, 64, 0, 128);47}
48
49static void50_test_box_transition_change(void *data)51{
52Transitions_Data *tdata = data;53Elm_Box_Transition *layout_data;54Evas_Object_Box_Layout next_layout;55
56if (!data) return;57next_layout = eina_list_data_get(tdata->transitions);58layout_data = elm_box_transition_new(2.0, tdata->last_layout,59NULL, NULL, next_layout, NULL, NULL,60_test_box_transition_change, tdata);61elm_box_layout_set(tdata->box, elm_box_layout_transition, layout_data,62elm_box_transition_free);63tdata->last_layout = next_layout;64
65tdata->transitions = eina_list_demote_list(tdata->transitions,66tdata->transitions);67}
68
69EAPI_MAIN int70elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)71{
72Evas_Object *win, *bigbox, *bx, *bt;73static Transitions_Data tdata = {74.transitions = NULL,75.box = NULL,76.last_layout = NULL77};78
79elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);80
81win = elm_win_util_standard_add("box-transition", "Box Transition");82elm_win_autodel_set(win, EINA_TRUE);83
84bigbox = elm_box_add(win);85evas_object_size_hint_weight_set(bigbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);86elm_win_resize_object_add(win, bigbox);87evas_object_show(bigbox);88
89bx = elm_box_add(win);90elm_box_horizontal_set(bx, EINA_TRUE);91elm_box_pack_end(bigbox, bx);92evas_object_show(bx);93
94bt = elm_button_add(win);95elm_object_text_set(bt, "Add");96elm_box_pack_end(bx, bt);97evas_object_show(bt);98evas_object_smart_callback_add(bt, "clicked", _add_cb, &tdata);99
100bt = elm_button_add(win);101elm_object_text_set(bt, "Clear");102elm_box_pack_end(bx, bt);103evas_object_show(bt);104evas_object_smart_callback_add(bt, "clicked", _clear_cb, &tdata);105
106bx = elm_box_add(win);107evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);108evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);109elm_box_pack_end(bigbox, bx);110evas_object_show(bx);111
112bt = elm_button_add(win);113elm_object_text_set(bt, "Button 1");114evas_object_smart_callback_add(bt, "clicked", _unpack_cb, &tdata);115evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);116evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);117elm_box_pack_end(bx, bt);118evas_object_show(bt);119
120bt = elm_button_add(win);121elm_object_text_set(bt, "Button 2");122evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);123evas_object_size_hint_align_set(bt, 1.0, 0.5);124evas_object_smart_callback_add(bt, "clicked", _unpack_cb, &tdata);125elm_box_pack_end(bx, bt);126evas_object_show(bt);127
128bt = elm_button_add(win);129elm_object_text_set(bt, "Button 3");130evas_object_smart_callback_add(bt, "clicked", _unpack_cb, &tdata);131elm_box_pack_end(bx, bt);132evas_object_show(bt);133
134tdata.box = bx;135tdata.last_layout = evas_object_box_layout_horizontal;136tdata.transitions = eina_list_append(tdata.transitions,137evas_object_box_layout_vertical);138tdata.transitions = eina_list_append(tdata.transitions,139evas_object_box_layout_horizontal);140tdata.transitions = eina_list_append(tdata.transitions,141evas_object_box_layout_stack);142tdata.transitions = eina_list_append(tdata.transitions,143evas_object_box_layout_homogeneous_vertical);144tdata.transitions = eina_list_append(tdata.transitions,145evas_object_box_layout_homogeneous_horizontal);146tdata.transitions = eina_list_append(tdata.transitions,147evas_object_box_layout_flow_vertical);148tdata.transitions = eina_list_append(tdata.transitions,149evas_object_box_layout_flow_horizontal);150tdata.transitions = eina_list_append(tdata.transitions,151evas_object_box_layout_stack);152
153elm_box_layout_set(bx, evas_object_box_layout_horizontal, NULL, NULL);154_test_box_transition_change(&tdata);155
156evas_object_resize(win, 300, 320);157evas_object_show(win);158
159elm_run();160
161return 0;162}
163ELM_MAIN()164