efl
1201 строка · 41.7 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4
5#include <Elementary.h>6
7// FIXME: Some internal APIs are used here...
8#include "elm_interface_scrollable.h"9
10#define PSIZE 31811
12static void13_my_bt_go_300_300(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)14{
15elm_scroller_region_bring_in((Evas_Object *)data, 300, 300, PSIZE, PSIZE);16}
17
18static void19_my_bt_go_900_300(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)20{
21elm_scroller_region_bring_in((Evas_Object *)data, 900, 300, PSIZE, PSIZE);22}
23
24static void25_my_bt_go_300_900(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)26{
27elm_scroller_region_bring_in((Evas_Object *)data, 300, 900, PSIZE, PSIZE);28}
29
30static void31_my_bt_go_900_900(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)32{
33elm_scroller_region_bring_in((Evas_Object *)data, 900, 900, PSIZE, PSIZE);34}
35
36static void37_my_bt_y_minus_one(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)38{
39int x, y, w, h;40elm_scroller_region_get((Evas_Object *)data, &x, &y, &w, &h);41printf("Current region: %d %d %d %d\n", x, y, w, h);42elm_scroller_region_show((Evas_Object *)data, x, y - 1, w, h);43}
44
45static void46_my_bt_y_plus_one(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)47{
48int x, y, w, h;49elm_scroller_region_get((Evas_Object *)data, &x, &y, &w, &h);50printf("Current region: %d %d %d %d\n", x, y, w, h);51elm_scroller_region_show((Evas_Object *)data, x, y + 1, w, h);52}
53
54static void55_my_bt_prev_page(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)56{
57Evas_Object *sc = (Evas_Object *)data;58int page_x = 0, page_y = 0;59elm_scroller_current_page_get(sc, &page_x, &page_y);60elm_scroller_page_bring_in(sc, --page_x, page_y);61}
62
63static void64_my_bt_next_page(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)65{
66Evas_Object *sc = (Evas_Object *)data;67int page_x = 0, page_y = 0;68elm_scroller_current_page_get(sc, &page_x, &page_y);69elm_scroller_page_bring_in(sc, ++page_x, page_y);70}
71
72static void73_my_bt_freeze_toggle(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)74{
75if (elm_check_state_get(obj))76elm_object_scroll_freeze_push((Evas_Object *)data);77else78elm_object_scroll_freeze_pop((Evas_Object *)data);79}
80
81static void82_my_bt_hold_toggle(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)83{
84if (elm_check_state_get(obj))85elm_object_scroll_hold_push((Evas_Object *)data);86else87elm_object_scroll_hold_pop((Evas_Object *)data);88}
89
90static void91_my_bt_block_movements_x_axis(void *data, Evas_Object *obj,92void *event_info EINA_UNUSED)93{
94Elm_Scroller_Movement_Block block;95
96block = elm_scroller_movement_block_get((Evas_Object *)data);97
98if (elm_check_state_get(obj))99{100elm_scroller_movement_block_set((Evas_Object *)data,101ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL |102block);103}104else if (block & ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL)105{106elm_scroller_movement_block_set((Evas_Object *)data,107ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);108}109else110{111elm_scroller_movement_block_set((Evas_Object *)data,112ELM_SCROLLER_MOVEMENT_NO_BLOCK);113}114}
115
116static void117_my_bt_snap_to_pages(void *data,118Evas_Object *obj,119void *event_info EINA_UNUSED)120{
121if (elm_check_state_get(obj))122{123elm_scroller_page_snap_set(data, EINA_TRUE, EINA_TRUE);124}125else126{127elm_scroller_page_snap_set(data, EINA_FALSE, EINA_FALSE);128}129}
130
131static void132_my_bt_block_movements_y_axis(void *data, Evas_Object *obj,133void *event_info EINA_UNUSED)134{
135Elm_Scroller_Movement_Block block;136
137block = elm_scroller_movement_block_get((Evas_Object *)data);138
139if (elm_check_state_get(obj))140{141elm_scroller_movement_block_set((Evas_Object *)data,142ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL |143block);144}145else if (block & ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL)146{147elm_scroller_movement_block_set((Evas_Object *)data,148ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);149}150else151{152elm_scroller_movement_block_set((Evas_Object *)data,153ELM_SCROLLER_MOVEMENT_NO_BLOCK);154}155}
156
157static void158_my_bt_loop_x_axis(void *data, Evas_Object *obj EINA_UNUSED,159void *event_info EINA_UNUSED)160{
161Eina_Bool loop_h, loop_v;162Evas_Object *scroller = (Evas_Object *)data;163
164elm_scroller_loop_get(scroller, &loop_h, &loop_v);165elm_scroller_loop_set(scroller, !loop_h, loop_v);166}
167
168static void169_my_bt_loop_y_axis(void *data, Evas_Object *obj EINA_UNUSED,170void *event_info EINA_UNUSED)171{
172Eina_Bool loop_h, loop_v;173Evas_Object *scroller = (Evas_Object *)data;174
175elm_scroller_loop_get(scroller, &loop_h, &loop_v);176elm_scroller_loop_set(scroller, loop_h, !loop_v);177}
178
179static void180_my_bt_wheel_disable_cb(void *data, Evas_Object *obj EINA_UNUSED,181void *event_info EINA_UNUSED)182{
183Evas_Object *scroller = (Evas_Object *)data;184
185elm_scroller_wheel_disabled_set(scroller, elm_check_state_get(obj));186}
187
188static void189_page_change_cb(void *data EINA_UNUSED,190Evas_Object *obj,191void *event_info EINA_UNUSED)192{
193int page_x = 0, page_y = 0;194
195elm_scroller_current_page_get(obj, &page_x, &page_y);196
197printf("Page changed to %d, %d\n", page_x, page_y);198}
199
200static void201_sc_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)202{
203Evas_Coord x = 0, y = 0;204evas_object_geometry_get(obj, &x, &y, NULL, NULL);205evas_object_move(data, x, y);206}
207
208static void209_sc_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)210{
211Evas_Coord w = 0, h = 0;212evas_object_geometry_get(obj, NULL, NULL, &w, &h);213evas_object_resize(data, w, h);214}
215
216static void217_step_size_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)218{
219Evas_Object *sc = data;220int size = elm_spinner_value_get(obj);221elm_scroller_step_size_set(sc, ELM_SCALE_SIZE(size), ELM_SCALE_SIZE(size));222}
223
224static void225_page_size_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)226{
227Evas_Object *sc = data;228int size = elm_spinner_value_get(obj);229elm_scroller_page_size_set(sc, size, size);230}
231
232void
233test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)234{
235Evas_Object *win, *bg2, *tb, *tb2, *sc, *bt, *ck1, *ck2, *bx, *bx2, *fr,236*ck3, *ck4, *ck5, *ck6, *ck7, *ck8;237int i, j, n;238char buf[PATH_MAX];239Evas_Coord x = 0, y = 0, w = 0, h = 0;240const char *img[9] =241{242"panel_01.jpg",243"plant_01.jpg",244"rock_01.jpg",245"rock_02.jpg",246"sky_01.jpg",247"sky_02.jpg",248"sky_03.jpg",249"sky_04.jpg",250"wood_01.jpg"251};252
253win = elm_win_util_standard_add("scroller", "Scroller");254elm_win_autodel_set(win, EINA_TRUE);255
256bx = elm_box_add(win);257evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);258elm_win_resize_object_add(win, bx);259evas_object_show(bx);260
261fr = elm_frame_add(win);262evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);263evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.0);264elm_object_text_set(fr, "Options");265elm_box_pack_end(bx, fr);266evas_object_show(fr);267
268bx2 = elm_box_add(win);269elm_object_content_set(fr, bx2);270elm_box_horizontal_set(bx2, EINA_TRUE);271evas_object_show(bx2);272
273ck1 = elm_check_add(win);274elm_object_text_set(ck1, "Freeze");275elm_box_pack_end(bx2, ck1);276evas_object_show(ck1);277
278ck2 = elm_check_add(win);279elm_object_text_set(ck2, "Hold");280elm_box_pack_end(bx2, ck2);281evas_object_show(ck2);282
283ck3 = elm_check_add(win);284elm_object_text_set(ck3, "Block movements in X axis");285elm_box_pack_end(bx2, ck3);286evas_object_show(ck3);287
288ck4 = elm_check_add(win);289elm_object_text_set(ck4, "Block movements in Y axis");290elm_box_pack_end(bx2, ck4);291evas_object_show(ck4);292
293ck5 = elm_check_add(win);294elm_object_text_set(ck5, "Snap to pages");295elm_box_pack_end(bx2, ck5);296evas_object_show(ck5);297
298ck6 = elm_check_add(win);299elm_object_text_set(ck6, "Loop in X axis");300elm_box_pack_end(bx2, ck6);301evas_object_show(ck6);302
303ck7 = elm_check_add(win);304elm_object_text_set(ck7, "Loop in Y axis");305elm_box_pack_end(bx2, ck7);306evas_object_show(ck7);307
308ck8 = elm_check_add(win);309elm_object_text_set(ck8, "Wheel Disable");310elm_box_pack_end(bx2, ck8);311evas_object_show(ck8);312
313sc = elm_scroller_add(win);314evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);315evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);316elm_box_pack_end(bx, sc);317
318tb = elm_table_add(win);319
320n = 0;321for (j = 0; j < 12; j++)322{323for (i = 0; i < 12; i++)324{325bg2 = elm_bg_add(win);326snprintf(buf, sizeof(buf), "%s/images/%s",327elm_app_data_dir_get(), img[n]);328n++;329if (n >= 9) n = 0;330elm_bg_file_set(bg2, buf, NULL);331evas_object_size_hint_weight_set(bg2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);332evas_object_size_hint_align_set(bg2, EVAS_HINT_FILL, EVAS_HINT_FILL);333evas_object_size_hint_min_set(bg2, PSIZE, PSIZE);334elm_table_pack(tb, bg2, i, j, 1, 1);335evas_object_show(bg2);336}337}338
339elm_object_content_set(sc, tb);340evas_object_show(tb);341
342elm_scroller_page_size_set(sc, PSIZE, PSIZE);343evas_object_show(sc);344
345evas_object_smart_callback_add346(sc, "scroll,page,changed", _page_change_cb, sc);347
348evas_object_smart_callback_add(ck1, "changed", _my_bt_freeze_toggle, tb);349evas_object_smart_callback_add(ck2, "changed", _my_bt_hold_toggle, tb);350evas_object_smart_callback_add(ck3, "changed", _my_bt_block_movements_x_axis,351sc);352evas_object_smart_callback_add(ck4, "changed", _my_bt_block_movements_y_axis,353sc);354evas_object_smart_callback_add(ck5, "changed", _my_bt_snap_to_pages, sc);355evas_object_smart_callback_add(ck6, "changed", _my_bt_loop_x_axis, sc);356evas_object_smart_callback_add(ck7, "changed", _my_bt_loop_y_axis, sc);357evas_object_smart_callback_add(ck8, "changed", _my_bt_wheel_disable_cb, sc);358
359bx2 = elm_box_add(win);360elm_box_pack_end(bx, bx2);361elm_box_horizontal_set(bx2, EINA_TRUE);362elm_box_padding_set(bx2, 10, 0);363evas_object_show(bx2);364
365bt = elm_spinner_add(win);366elm_spinner_min_max_set(bt, 0, 500);367elm_scroller_step_size_get(sc, &x, &y);368elm_spinner_value_set(bt, x);369elm_spinner_editable_set(bt, EINA_TRUE);370elm_spinner_label_format_set(bt, "Step size: %.0f");371evas_object_smart_callback_add(bt, "changed", _step_size_changed, sc);372elm_box_pack_end(bx2, bt);373evas_object_show(bt);374
375bt = elm_spinner_add(win);376elm_spinner_min_max_set(bt, 0, PSIZE * 2);377elm_scroller_page_size_get(sc, &x, &y);378elm_spinner_value_set(bt, x);379elm_spinner_editable_set(bt, EINA_TRUE);380elm_spinner_label_format_set(bt, "Page size: %.0f");381evas_object_smart_callback_add(bt, "changed", _page_size_changed, sc);382elm_box_pack_end(bx2, bt);383evas_object_show(bt);384
385tb2 = elm_table_add(win);386
387bt = elm_button_add(win);388elm_object_text_set(bt, "to 300 300");389evas_object_smart_callback_add(bt, "clicked", _my_bt_go_300_300, sc);390evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);391evas_object_size_hint_align_set(bt, 0.1, 0.1);392elm_table_pack(tb2, bt, 0, 0, 1, 1);393evas_object_show(bt);394
395bt = elm_button_add(win);396elm_object_text_set(bt, "y -1 px");397evas_object_smart_callback_add(bt, "clicked", _my_bt_y_minus_one, sc);398evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);399evas_object_size_hint_align_set(bt, 0.5, 0.1);400elm_table_pack(tb2, bt, 1, 0, 1, 1);401evas_object_show(bt);402
403bt = elm_button_add(win);404elm_object_text_set(bt, "to 900 300");405evas_object_smart_callback_add(bt, "clicked", _my_bt_go_900_300, sc);406evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);407evas_object_size_hint_align_set(bt, 0.9, 0.1);408elm_table_pack(tb2, bt, 2, 0, 1, 1);409evas_object_show(bt);410
411bt = elm_button_add(win);412elm_object_text_set(bt, "to 300 900");413evas_object_smart_callback_add(bt, "clicked", _my_bt_go_300_900, sc);414evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);415evas_object_size_hint_align_set(bt, 0.1, 0.9);416elm_table_pack(tb2, bt, 0, 2, 1, 1);417evas_object_show(bt);418
419bt = elm_button_add(win);420elm_object_text_set(bt, "y +1 px");421evas_object_smart_callback_add(bt, "clicked", _my_bt_y_plus_one, sc);422evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);423evas_object_size_hint_align_set(bt, 0.5, 0.9);424elm_table_pack(tb2, bt, 1, 2, 1, 1);425evas_object_show(bt);426
427bt = elm_button_add(win);428elm_object_text_set(bt, "to 900 900");429evas_object_smart_callback_add(bt, "clicked", _my_bt_go_900_900, sc);430evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);431evas_object_size_hint_align_set(bt, 0.9, 0.9);432elm_table_pack(tb2, bt, 2, 2, 1, 1);433evas_object_show(bt);434
435bt = elm_button_add(win);436elm_object_text_set(bt, "prev page");437evas_object_smart_callback_add(bt, "clicked", _my_bt_prev_page, sc);438evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);439evas_object_size_hint_align_set(bt, 0.1, 0.5);440elm_table_pack(tb2, bt, 0, 1, 1, 1);441evas_object_show(bt);442
443bt = elm_button_add(win);444elm_object_text_set(bt, "next page");445evas_object_smart_callback_add(bt, "clicked", _my_bt_next_page, sc);446evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);447evas_object_size_hint_align_set(bt, 0.9, 0.5);448elm_table_pack(tb2, bt, 2, 1, 1, 1);449evas_object_show(bt);450
451evas_object_event_callback_add(sc, EVAS_CALLBACK_MOVE, _sc_move_cb, tb2);452evas_object_event_callback_add(sc, EVAS_CALLBACK_RESIZE, _sc_resize_cb, tb2);453evas_object_geometry_get(sc, &x, &y, &w, &h);454evas_object_move(tb2, x, y);455evas_object_resize(tb2, w, h);456evas_object_show(tb2);457
458evas_object_resize(win, 320 * elm_config_scale_get(),459420 * elm_config_scale_get());460evas_object_show(win);461}
462
463static void464_click_through(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)465{
466printf("click went through on %p\n", obj);467}
468
469typedef struct470{
471Evas_Object *scroller;472Evas_Object *it1, *it2;473Ecore_Timer *timer;474int autobounce;475int frames;476int bounce_max;477int y1, y2;478int state;479} Bounce;480
481#ifdef CLOCK_PROCESS_CPUTIME_ID482static void483_bounce_cb_frame(void *data, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED)484{
485Bounce *bounce = data;486bounce->frames++;487}
488#endif489
490static Eina_Bool491_bounce_cb(void *data)492{
493Bounce *bounce = data;494
495if (!bounce->y1)496{497elm_interface_scrollable_bounce_allow_set(bounce->scroller, 0, 1);498bounce->y1 = efl_gfx_entity_position_get(bounce->it1).y;499bounce->y2 = efl_gfx_entity_position_get(bounce->it2).y;500}501
502bounce->state++;503if (bounce->state & 0x1)504elm_interface_scrollable_region_bring_in(bounce->scroller, 0, bounce->y2, 1, 1);505else506elm_interface_scrollable_region_bring_in(bounce->scroller, 0, bounce->y1, 1, 1);507
508#ifdef CLOCK_PROCESS_CPUTIME_ID509static struct timespec t0;510if (bounce->state == 2)511{512evas_event_callback_add(evas_object_evas_get(bounce->scroller),513EVAS_CALLBACK_RENDER_FLUSH_POST,514_bounce_cb_frame, bounce);515clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t0);516}517#endif518
519if (bounce->state > bounce->bounce_max)520{521#ifdef CLOCK_PROCESS_CPUTIME_ID522struct timespec t;523unsigned long long tll, t0ll, tdll, frames;524
525clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t);526t0ll = ((unsigned long long) t0.tv_sec * 1000000000ULL) + t0.tv_nsec;527tll = ((unsigned long long) t.tv_sec * 1000000000ULL) + t.tv_nsec;528tdll = tll - t0ll;529frames = bounce->frames ?: 1;530printf("NS since frame 2 = %llu , %llu frames = %llu / frame\n",531tdll, frames, tdll / frames);532#endif533if (bounce->autobounce) elm_exit();534}535return EINA_TRUE;536}
537
538static void539_scroll2_del_cb(void *data, Evas *e EINA_UNUSED,540Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)541{
542Bounce *bounce = data;543
544#ifdef CLOCK_PROCESS_CPUTIME_ID545evas_event_callback_del_full(evas_object_evas_get(bounce->scroller),546EVAS_CALLBACK_RENDER_FLUSH_POST,547_bounce_cb_frame, bounce);548#endif549
550ecore_timer_del(bounce->timer);551free(bounce);552}
553
554void
555test_scroller2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)556{
557Evas_Object *win, *bt, *bx, *bx2, *sc, *tb, *tb2, *rc;558Bounce *bounce;559int i, j;560
561bounce = calloc(1, sizeof(Bounce));562
563win = elm_win_util_standard_add("scroller2", "Scroller 2");564elm_win_autodel_set(win, EINA_TRUE);565
566bx = elm_box_add(win);567evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);568evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);569
570/* { */571for (i = 0; i < 3; i++)572{573bt = elm_button_add(win);574elm_object_text_set(bt, "Vertical");575evas_object_smart_callback_add(bt, "clicked", _click_through, NULL);576evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);577evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);578elm_box_pack_end(bx, bt);579evas_object_show(bt);580
581if (i == 0) bounce->it1 = bt;582}583/* } */584
585/* { */586sc = elm_scroller_add(win);587evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, 0.0);588evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, 0.5);589elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);590elm_scroller_content_min_limit(sc, 0, 1);591elm_box_pack_end(bx, sc);592evas_object_show(sc);593
594bx2 = elm_box_add(win);595elm_box_horizontal_set(bx2, EINA_TRUE);596
597for (i = 0; i < 10; i++)598{599bt = elm_button_add(win);600elm_object_text_set(bt, "... Horizontal scrolling ...");601evas_object_smart_callback_add(bt, "clicked", _click_through, NULL);602elm_box_pack_end(bx2, bt);603evas_object_show(bt);604}605
606elm_object_content_set(sc, bx2);607evas_object_show(bx2);608/* } */609
610/* { */611for (i = 0; i < 3; i++)612{613bt = elm_button_add(win);614elm_object_text_set(bt, "Vertical");615evas_object_smart_callback_add(bt, "clicked", _click_through, NULL);616evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);617evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);618elm_box_pack_end(bx, bt);619evas_object_show(bt);620}621/* } */622
623/* { */624tb = elm_table_add(win);625evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);626evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);627elm_box_pack_end(bx, tb);628evas_object_show(tb);629
630rc = evas_object_rectangle_add(evas_object_evas_get(win));631evas_object_size_hint_min_set(rc, 200, 120);632elm_table_pack(tb, rc, 0, 0, 1, 1);633
634sc = elm_scroller_add(win);635evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);636evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);637elm_table_pack(tb, sc, 0, 0, 1, 1);638evas_object_show(sc);639
640tb2 = elm_table_add(win);641
642for (j = 0; j < 16; j++)643{644for (i = 0; i < 16; i++)645{646bt = elm_button_add(win);647elm_object_text_set(bt, "Both");648evas_object_smart_callback_add(bt, "clicked", _click_through, NULL);649elm_table_pack(tb2, bt, i, j, 1, 1);650evas_object_show(bt);651}652}653
654elm_object_content_set(sc, tb2);655evas_object_show(tb2);656/* } */657
658for (i = 0; i < 24; i++)659{660bt = elm_button_add(win);661elm_object_text_set(bt, "Vertical");662evas_object_smart_callback_add(bt, "clicked", _click_through, NULL);663evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);664evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);665elm_box_pack_end(bx, bt);666evas_object_show(bt);667
668if (i == 23) bounce->it2 = bt;669}670
671sc = elm_scroller_add(win);672evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);673elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);674elm_win_resize_object_add(win, sc);675elm_object_content_set(sc, bx);676evas_object_show(bx);677evas_object_show(sc);678
679bounce->scroller = sc;680
681evas_object_resize(win, 320 * elm_config_scale_get(),682480 * elm_config_scale_get());683evas_object_show(win);684
685evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _scroll2_del_cb, bounce);686
687if (getenv("ELM_TEST_AUTOBOUNCE"))688{689bounce->autobounce = 1;690bounce->bounce_max = atoi(getenv("ELM_TEST_AUTOBOUNCE"));691bounce->timer = ecore_timer_add(0.5, _bounce_cb, bounce);692_bounce_cb(bounce);693}694}
695
696static void697_scroll_anim_start(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)698{
699int x, y;700elm_scroller_region_get(obj, &x, &y, NULL, NULL);701printf("scroll start: %p x: %d y: %d\n", obj, x, y);702}
703
704static void705_scroll_anim_stop(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)706{
707int x, y;708elm_scroller_region_get(obj, &x, &y, NULL, NULL);709printf("scroll stop: %p x: %d y: %d\n", obj, x, y);710}
711
712void
713test_scroller_simple(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)714{
715Evas_Object *win, *bt, *bx, *sc;716int i;717
718
719win = elm_win_util_standard_add("scroller2", "Scroller Simple");720elm_win_autodel_set(win, EINA_TRUE);721
722bx = elm_box_add(win);723evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0);724evas_object_size_hint_align_set(bx, 0.5, 0);725
726/* { */727sc = elm_scroller_add(win);728evas_object_smart_callback_add(sc, "scroll,anim,start", _scroll_anim_start, NULL);729evas_object_smart_callback_add(sc, "scroll,anim,stop", _scroll_anim_stop, NULL);730evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);731evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);732elm_scroller_bounce_set(sc, EINA_TRUE, EINA_TRUE);733evas_object_show(sc);734evas_object_show(bx);735
736elm_object_content_set(sc, bx);737elm_win_resize_object_add(win, sc);738/* } */739
740for (i = 0; i < 2000; i++)741{742bt = elm_button_add(win);743elm_object_text_set(bt, "Vertical");744evas_object_smart_callback_add(bt, "clicked", _click_through, NULL);745evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);746evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);747elm_box_pack_end(bx, bt);748evas_object_show(bt);749}750evas_object_resize(win, 320 * elm_config_scale_get(),751400 * elm_config_scale_get());752evas_object_show(win);753}
754
755static Ecore_Timer *_timer = NULL;756static int _append = 0;757static int _count = 0;758
759static void760_del_item(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)761{
762evas_object_del(obj);763}
764
765static void766_append_item(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)767{
768Evas_Object *bx = data, *bt;769char buf[PATH_MAX];770
771bt = elm_button_add(bx);772snprintf(buf, sizeof(buf), "Item %d", ++_count);773elm_object_text_set(bt, buf);774elm_box_pack_end(bx, bt);775evas_object_smart_callback_add(bt, "clicked", _del_item, NULL);776evas_object_show(bt);777}
778
779static void780_prepend_item(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)781{
782Evas_Object *bx = data, *bt;783char buf[PATH_MAX];784
785bt = elm_button_add(bx);786snprintf(buf, sizeof(buf), "Item %d", ++_count);787elm_object_text_set(bt, buf);788elm_box_pack_start(bx, bt);789evas_object_smart_callback_add(bt, "clicked", _del_item, NULL);790evas_object_show(bt);791}
792
793static Eina_Bool794_append_cb(void *data)795{
796Evas_Object *bx = data, *bt;797char buf[PATH_MAX];798
799bt = elm_button_add(bx);800snprintf(buf, sizeof(buf), "Item %d", ++_count);801elm_object_text_set(bt, buf);802elm_box_pack_end(bx, bt);803evas_object_smart_callback_add(bt, "clicked", _del_item, NULL);804evas_object_show(bt);805
806_append--;807
808if (_append <= 0)809{810_timer = NULL;811return ECORE_CALLBACK_CANCEL;812}813else814return ECORE_CALLBACK_RENEW;815}
816
817static void818_append_items(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)819{
820_append += 10;821_timer = ecore_timer_add(0.3, _append_cb, data);822}
823
824static void825_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)826{
827Evas_Object *sl = data;828double val = elm_slider_value_get(obj);829elm_scroller_gravity_set(sl, 0.0, val);830printf("Gravity change to %lf\n",val);831}
832
833static void834_win_del_cb(void *data EINA_UNUSED,835Evas *e EINA_UNUSED,836Evas_Object *obj EINA_UNUSED,837void *event_info EINA_UNUSED)838{
839ecore_timer_del(_timer);840_timer = NULL;841}
842
843void
844test_scroller3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)845{
846Evas_Object *win, *bt, *bt2, *bt3, *bx, *bx2, *bx3, *bx4, *sc, *sl;847_count = 0;848
849win = elm_win_util_standard_add("scroller3", "Scroller 3");850elm_win_autodel_set(win, EINA_TRUE);851evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _win_del_cb, NULL);852
853bx = elm_box_add(win);854evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);855elm_win_resize_object_add(win, bx);856evas_object_show(bx);857
858bx2 = elm_box_add(bx);859evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.1);860evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);861elm_box_horizontal_set(bx2, EINA_TRUE);862elm_box_pack_end(bx, bx2);863evas_object_show(bx2);864
865bt = elm_button_add(bx2);866elm_object_text_set(bt, "Append Item");867elm_box_pack_end(bx2, bt);868evas_object_show(bt);869
870bt2 = elm_button_add(bx2);871elm_object_text_set(bt2, "Prepend Item");872elm_box_pack_end(bx2, bt2);873evas_object_show(bt2);874
875bt3 = elm_button_add(bx2);876elm_object_text_set(bt3, "Append 10 Items in 3s");877elm_box_pack_end(bx2, bt3);878evas_object_show(bt3);879
880sl = elm_slider_add(bx);881elm_object_text_set(sl, "Gravity");882elm_slider_unit_format_set(sl, "%1.1f");883elm_slider_indicator_format_set(sl, "%1.1f");884elm_slider_min_max_set(sl, 0, 1);885elm_slider_value_set(sl, 0.0);886evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, EVAS_HINT_FILL);887evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.1);888elm_box_pack_end(bx, sl);889evas_object_show(sl);890
891bx3 = elm_box_add(bx);892evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);893evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.8);894elm_box_pack_end(bx, bx3);895evas_object_show(bx3);896
897sc = elm_scroller_add(bx3);898evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);899evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);900elm_box_pack_end(bx3, sc);901evas_object_show(sc);902
903bx4 = elm_box_add(sc);904elm_box_padding_set(bx4, 0, 5);905evas_object_size_hint_weight_set(bx4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);906elm_object_content_set(sc, bx4);907evas_object_show(bx4);908
909evas_object_smart_callback_add(bt, "clicked", _append_item, bx4);910evas_object_smart_callback_add(bt2, "clicked", _prepend_item, bx4);911evas_object_smart_callback_add(bt3, "clicked", _append_items, bx4);912evas_object_smart_callback_add(sl, "changed", _changed_cb, sc);913
914evas_object_resize(win, 500 * elm_config_scale_get(),915500 * elm_config_scale_get());916evas_object_show(win);917}
918
919void
920test_scroller4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)921{
922Evas_Object *win, *sc, *bx, *ly, *sc2, *rect, *rect2;923char buf[PATH_MAX];924
925win = elm_win_util_standard_add("scroller3", "Scroller 3");926elm_win_autodel_set(win, EINA_TRUE);927
928sc = elm_scroller_add(win);929elm_scroller_loop_set(sc, EINA_TRUE, EINA_FALSE);930evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);931elm_scroller_page_relative_set(sc, 1.0, 0.0);932elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);933elm_scroller_page_scroll_limit_set(sc, 1, 0);934elm_win_resize_object_add(win, sc);935evas_object_show(sc);936
937bx = elm_box_add(sc);938elm_box_horizontal_set(bx, EINA_TRUE);939elm_object_content_set(sc, bx);940evas_object_show(bx);941
942ly = elm_layout_add(bx);943snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());944elm_layout_file_set(ly, buf, "page_layout");945elm_object_part_text_set(ly, "text", "Page1");946elm_box_pack_end(bx, ly);947evas_object_show(ly);948
949sc2 = elm_scroller_add(ly);950elm_object_part_content_set(ly, "page", sc2);951evas_object_show(sc2);952
953rect2 = evas_object_rectangle_add(evas_object_evas_get(sc2));954evas_object_color_set(rect2, 50, 0, 0, 50);955evas_object_size_hint_min_set(rect2, 0, 2000);956elm_object_content_set(sc2, rect2);957evas_object_show(rect2);958
959ly = elm_layout_add(bx);960snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());961elm_layout_file_set(ly, buf, "page_layout");962rect = evas_object_rectangle_add(evas_object_evas_get(ly));963evas_object_color_set(rect, 0, 50, 0, 50);964elm_object_part_content_set(ly, "page", rect);965elm_object_part_text_set(ly, "text", "Page2");966elm_box_pack_end(bx, ly);967evas_object_show(ly);968
969ly = elm_layout_add(bx);970snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());971elm_layout_file_set(ly, buf, "page_layout");972rect = evas_object_rectangle_add(evas_object_evas_get(ly));973evas_object_color_set(rect, 0, 0, 50, 50);974elm_object_part_content_set(ly, "page", rect);975elm_object_part_text_set(ly, "text", "Page3");976elm_box_pack_end(bx, ly);977evas_object_show(ly);978
979evas_object_resize(win, 400 * elm_config_scale_get(),980550 * elm_config_scale_get());981evas_object_show(win);982}
983
984static void985_popup_btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)986{
987evas_object_del(data);988}
989
990static void991_block_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)992{
993evas_object_del(obj);994}
995
996static void997_btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)998{
999Evas_Object *win = data;1000Evas_Object *popup, *scr, *lbl, *btn, *rect, *tbl;1001
1002popup = elm_popup_add(win);1003elm_object_part_text_set(popup, "title,text", "Scroller on Popup");1004evas_object_smart_callback_add(popup, "block,clicked",1005_block_clicked_cb, NULL);1006
1007tbl = elm_table_add(popup);1008elm_object_content_set(popup, tbl);1009evas_object_show(tbl);1010
1011rect = evas_object_rectangle_add(evas_object_evas_get(popup));1012evas_object_size_hint_min_set(rect, 200, 50);1013elm_table_pack(tbl, rect, 0, 0, 1, 1);1014
1015scr = elm_scroller_add(popup);1016elm_object_focus_allow_set(scr, EINA_FALSE);1017evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1018evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);1019evas_object_show(scr);1020
1021lbl = elm_label_add(scr);1022elm_object_text_set(lbl,1023"Do you want close the popup?<br>"1024"Please select cancel button<br><br>"1025"Do you wnat close the popup?<br>"1026"Please select cancel button");1027evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1028evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);1029elm_object_content_set(scr, lbl);1030evas_object_show(lbl);1031
1032elm_table_pack(tbl, scr, 0, 0, 1, 1);1033
1034btn = elm_button_add(popup);1035elm_object_text_set(btn, "Cancel");1036elm_object_part_content_set(popup, "button1", btn);1037evas_object_smart_callback_add(btn, "clicked", _popup_btn_clicked_cb, popup);1038evas_object_show(btn);1039
1040evas_object_show(popup);1041elm_object_focus_set(btn, EINA_TRUE);1042}
1043
1044static void1045_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)1046{
1047printf("focused");1048}
1049
1050void
1051test_scroller5(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)1052{
1053Evas_Object *win, *bx, *btn;1054
1055win = elm_win_util_standard_add("Scroller on Popup", "Scroller on Popup");1056elm_win_autodel_set(win, EINA_TRUE);1057elm_win_focus_highlight_enabled_set(win, EINA_TRUE);1058
1059bx = elm_box_add(win);1060evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1061elm_win_resize_object_add(win, bx);1062evas_object_show(bx);1063
1064btn = elm_button_add(bx);1065elm_object_text_set(btn, "Button 1");1066evas_object_smart_callback_add(btn, "clicked", _btn_clicked_cb, win);1067evas_object_smart_callback_add(btn, "focused", _focused_cb, NULL);1068elm_box_pack_end(bx, btn);1069evas_object_show(btn);1070
1071btn = elm_button_add(bx);1072elm_object_text_set(btn, "Button 2");1073evas_object_smart_callback_add(btn, "clicked", _btn_clicked_cb, win);1074evas_object_smart_callback_add(btn, "focused", _focused_cb, NULL);1075elm_box_pack_end(bx, btn);1076evas_object_show(btn);1077
1078elm_object_focus_set(btn, EINA_TRUE);1079
1080evas_object_resize(win, 400 * elm_config_scale_get(),1081550 * elm_config_scale_get());1082evas_object_show(win);1083}
1084
1085void
1086test_scroller6(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)1087{
1088Evas_Object *win, *scr, *lb, *table, *btn, *btn2;1089
1090win = elm_win_util_standard_add("Scroller with unfocusable content", "Scroller with unfocusable content");1091elm_win_autodel_set(win, EINA_TRUE);1092elm_win_focus_highlight_enabled_set(win, EINA_TRUE);1093
1094table = elm_table_add(win);1095evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1096evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);1097elm_win_resize_object_add(win, table);1098evas_object_show(table);1099
1100scr = elm_scroller_add(win);1101evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1102evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);1103elm_table_pack(table, scr, 0, 0, 1, 1);1104evas_object_show(scr);1105
1106lb = elm_label_add(scr);1107elm_object_text_set(lb, "Enlightenment started out way back in 1996 as a project to build a Window Manager for X11. It has grown much more since then. Enlightenment still produces this Window Manager, but it has evolved to also cover Mobile, Wearable and TV UI requirements for projects such as Tizen as well as the traditional “desktop” UI. We still push out releases. See our download page for more details on the this. Visit our contribute page for our latest source code repositories. The project is currently transitioning from X11 to Wayland. We are fully committed to moving to Wayland eventually, as its the future of graphical display layers on Linux. We still primarily support Linux for Enlightenment, but there is some effort (based on help and support from users and some developers) to support BSD too.");1108elm_object_content_set(scr, lb);1109evas_object_show(lb);1110
1111btn = elm_button_add(table);1112evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);1113evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);1114elm_object_text_set(btn, "Button 2");1115elm_table_pack(table, btn, 0, 1, 2, 1);1116evas_object_show(btn);1117
1118btn2 = elm_button_add(table);1119evas_object_size_hint_weight_set(btn2, 0.0, EVAS_HINT_EXPAND);1120evas_object_size_hint_align_set(btn2, 0.0, EVAS_HINT_FILL);1121elm_object_text_set(btn2, "Button 3");1122elm_table_pack(table, btn2, 1, 0, 1, 1);1123evas_object_show(btn2);1124
1125evas_object_resize(win, 400 * elm_config_scale_get(),1126550 * elm_config_scale_get());1127evas_object_show(win);1128}
1129
1130void
1131test_scroller7(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)1132{
1133Evas_Object *win, *scr, *lb, *table, *btn, *btn2, *inner_table, *o;1134
1135win = elm_win_util_standard_add("Scroller with unfocusable content", "Scroller with unfocusable content");1136elm_win_autodel_set(win, EINA_TRUE);1137elm_win_focus_highlight_enabled_set(win, EINA_TRUE);1138
1139table = elm_table_add(win);1140evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1141evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);1142elm_win_resize_object_add(win, table);1143evas_object_show(table);1144
1145scr = elm_scroller_add(win);1146evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1147evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);1148elm_table_pack(table, scr, 0, 0, 1, 1);1149evas_object_show(scr);1150
1151inner_table = o = elm_table_add(win);1152evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);1153evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);1154elm_object_content_set(scr, inner_table);1155evas_object_show(scr);1156
1157lb = elm_label_add(scr);1158elm_object_text_set(lb, "Enlightenment started out way back in 1996 as a project to build a Window Manager for X11. It has grown much more since then. Enlightenment still produces this Window Manager, but it has evolved to also cover Mobile, Wearable and TV UI requirements for projects such as Tizen as well as the traditional “desktop” UI. We still push out releases. See our download page for more details on the this. Visit our contribute page for our latest source code repositories. The project is currently transitioning from X11 to Wayland. We are fully committed to moving to Wayland eventually, as its the future of graphical display layers on Linux. We still primarily support Linux for Enlightenment, but there is some effort (based on help and support from users and some developers) to support BSD too.");1159elm_table_pack(inner_table, lb, 0, 1, 1, 1);1160evas_object_show(lb);1161
1162lb = elm_label_add(scr);1163elm_object_text_set(lb, "Enlightenment started out way back in 1996 as a project to build a Window Manager for X11. It has grown much more since then. Enlightenment still produces this Window Manager, but it has evolved to also cover Mobile, Wearable and TV UI requirements for projects such as Tizen as well as the traditional “desktop” UI. We still push out releases. See our download page for more details on the this. Visit our contribute page for our latest source code repositories. The project is currently transitioning from X11 to Wayland. We are fully committed to moving to Wayland eventually, as its the future of graphical display layers on Linux. We still primarily support Linux for Enlightenment, but there is some effort (based on help and support from users and some developers) to support BSD too.");1164elm_table_pack(inner_table, lb, 1, 0, 1, 1);1165evas_object_show(lb);1166
1167lb = elm_label_add(scr);1168elm_object_text_set(lb, "Enlightenment started out way back in 1996 as a project to build a Window Manager for X11. It has grown much more since then. Enlightenment still produces this Window Manager, but it has evolved to also cover Mobile, Wearable and TV UI requirements for projects such as Tizen as well as the traditional “desktop” UI. We still push out releases. See our download page for more details on the this. Visit our contribute page for our latest source code repositories. The project is currently transitioning from X11 to Wayland. We are fully committed to moving to Wayland eventually, as its the future of graphical display layers on Linux. We still primarily support Linux for Enlightenment, but there is some effort (based on help and support from users and some developers) to support BSD too.");1169elm_table_pack(inner_table, lb, 1, 2, 1, 1);1170evas_object_show(lb);1171
1172lb = elm_label_add(scr);1173elm_object_text_set(lb, "Enlightenment started out way back in 1996 as a project to build a Window Manager for X11. It has grown much more since then. Enlightenment still produces this Window Manager, but it has evolved to also cover Mobile, Wearable and TV UI requirements for projects such as Tizen as well as the traditional “desktop” UI. We still push out releases. See our download page for more details on the this. Visit our contribute page for our latest source code repositories. The project is currently transitioning from X11 to Wayland. We are fully committed to moving to Wayland eventually, as its the future of graphical display layers on Linux. We still primarily support Linux for Enlightenment, but there is some effort (based on help and support from users and some developers) to support BSD too.");1174elm_table_pack(inner_table, lb, 2, 1, 1, 1);1175evas_object_show(lb);1176
1177btn = elm_button_add(table);1178evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);1179evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);1180elm_object_text_set(btn, "Button 2");1181elm_table_pack(inner_table, btn, 1, 1, 1, 1);1182evas_object_show(btn);1183
1184btn = elm_button_add(table);1185evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);1186evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);1187elm_object_text_set(btn, "Button 2");1188elm_table_pack(table, btn, 0, 1, 2, 1);1189evas_object_show(btn);1190
1191btn2 = elm_button_add(table);1192evas_object_size_hint_weight_set(btn2, 0.0, EVAS_HINT_EXPAND);1193evas_object_size_hint_align_set(btn2, 0.0, EVAS_HINT_FILL);1194elm_object_text_set(btn2, "Button 3");1195elm_table_pack(table, btn2, 1, 0, 1, 1);1196evas_object_show(btn2);1197
1198evas_object_resize(win, 400 * elm_config_scale_get(),1199550 * elm_config_scale_get());1200evas_object_show(win);1201}
1202