2016-04-13 19:12:44 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
2016-04-19 01:43:28 -07:00
|
|
|
|
|
|
|
#define EFL_PACK_LAYOUT_PROTECTED
|
2016-04-13 19:12:44 -07:00
|
|
|
#include <Elementary.h>
|
|
|
|
|
2017-04-16 21:41:29 -07:00
|
|
|
static void _custom_layout_update(Eo *pack, void *_pd EINA_UNUSED);
|
|
|
|
|
2016-04-13 19:12:44 -07:00
|
|
|
static Evas_Object *objects[7] = {};
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
NONE,
|
|
|
|
NONE_BUT_FILL,
|
|
|
|
EQUAL,
|
|
|
|
ONE,
|
2016-04-18 04:17:24 -07:00
|
|
|
TWO,
|
|
|
|
CUSTOM
|
2016-04-13 19:12:44 -07:00
|
|
|
} Weight_Mode;
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
weights_cb(void *data, const Efl_Event *event)
|
2016-04-13 19:12:44 -07:00
|
|
|
{
|
2017-04-16 21:41:29 -07:00
|
|
|
EFL_OPS_DEFINE(custom_layout_ops,
|
|
|
|
EFL_OBJECT_OP_FUNC(efl_pack_layout_update, _custom_layout_update));
|
|
|
|
|
2016-05-18 08:17:36 -07:00
|
|
|
Weight_Mode mode = elm_radio_state_value_get(event->object);
|
2016-04-18 04:17:24 -07:00
|
|
|
Eo *grid = data;
|
|
|
|
|
|
|
|
if (mode != CUSTOM)
|
2017-04-16 21:41:29 -07:00
|
|
|
efl_object_override(grid, NULL);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
switch (mode)
|
|
|
|
{
|
|
|
|
case NONE:
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(grid, 0.5, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 0; i < 7; i++)
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(objects[i], 0, 0);
|
2016-04-13 19:12:44 -07:00
|
|
|
break;
|
|
|
|
case NONE_BUT_FILL:
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(grid, -1, -1);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 0; i < 7; i++)
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(objects[i], 0, 0);
|
2016-04-13 19:12:44 -07:00
|
|
|
break;
|
|
|
|
case EQUAL:
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(grid, 0.5, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 0; i < 7; i++)
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(objects[i], 1, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
break;
|
|
|
|
case ONE:
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(grid, 0.5, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 0; i < 6; i++)
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(objects[i], 0, 0);
|
|
|
|
efl_gfx_size_hint_weight_set(objects[6], 1, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
break;
|
|
|
|
case TWO:
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(grid, 0.5, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 0; i < 5; i++)
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(objects[i], 0, 0);
|
|
|
|
efl_gfx_size_hint_weight_set(objects[5], 1, 1);
|
|
|
|
efl_gfx_size_hint_weight_set(objects[6], 1, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
break;
|
2016-04-18 04:17:24 -07:00
|
|
|
case CUSTOM:
|
2017-04-16 21:41:29 -07:00
|
|
|
efl_object_override(grid, &custom_layout_ops);
|
2016-04-18 04:17:24 -07:00
|
|
|
break;
|
2016-04-13 19:12:44 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
user_min_slider_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
2016-04-13 19:12:44 -07:00
|
|
|
{
|
2016-05-18 08:17:36 -07:00
|
|
|
int val = elm_slider_value_get(event->object);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 0; i < 6; i++)
|
2017-09-17 22:35:22 -07:00
|
|
|
efl_gfx_size_hint_min_set(objects[i], EINA_SIZE2D(val, val));
|
2016-04-13 19:12:44 -07:00
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
padding_slider_cb(void *data, const Efl_Event *event)
|
2016-04-13 19:12:44 -07:00
|
|
|
{
|
2016-05-18 08:17:36 -07:00
|
|
|
int val = elm_slider_value_get(event->object);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_padding_set(data, val, val, EINA_TRUE);
|
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
margin_slider_cb(void *data, const Efl_Event *event)
|
2016-04-13 19:12:44 -07:00
|
|
|
{
|
2016-05-18 08:17:36 -07:00
|
|
|
int val = elm_slider_value_get(event->object);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_margin_set(data, val, val, val, val);
|
2016-04-13 19:12:44 -07:00
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
btnmargins_slider_cb(void *data, const Efl_Event *event)
|
2016-04-13 19:12:44 -07:00
|
|
|
{
|
2016-05-18 08:17:36 -07:00
|
|
|
int val = elm_slider_value_get(event->object);
|
2016-04-13 19:12:44 -07:00
|
|
|
for (int i = 1; i < 7; i++)
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_margin_set(data, val, val, val, val);
|
2016-04-13 19:12:44 -07:00
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
layout_updated_cb(void *data, const Efl_Event *event)
|
2016-04-14 00:41:57 -07:00
|
|
|
{
|
|
|
|
Elm_Label *o = data;
|
|
|
|
char buf[64];
|
|
|
|
int rows, cols, count;
|
|
|
|
|
2016-05-18 08:17:36 -07:00
|
|
|
efl_pack_grid_size_get(event->object, &cols, &rows);
|
|
|
|
count = efl_content_count(event->object);
|
2016-04-14 00:41:57 -07:00
|
|
|
sprintf(buf, "%d items (%dx%d)", count, cols, rows);
|
|
|
|
elm_object_text_set(o, buf);
|
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
child_evt_cb(void *data, const Efl_Event *event)
|
2016-04-14 00:41:57 -07:00
|
|
|
{
|
|
|
|
Elm_Label *o = data;
|
2016-05-10 04:25:44 -07:00
|
|
|
Efl_Gfx *it = event->info;
|
2016-04-14 00:41:57 -07:00
|
|
|
int col, row, colspan, rowspan;
|
|
|
|
char buf[64];
|
|
|
|
|
2016-05-18 08:17:36 -07:00
|
|
|
efl_pack_grid_position_get(event->object, it, &col, &row, &colspan, &rowspan);
|
2016-04-19 22:55:26 -07:00
|
|
|
if (event->desc == EFL_CONTAINER_EVENT_CONTENT_ADDED)
|
2016-04-14 00:41:57 -07:00
|
|
|
sprintf(buf, "pack %d,%d %dx%d", col, row, colspan, rowspan);
|
|
|
|
else
|
|
|
|
sprintf(buf, "unpack %d,%d %dx%d", col, row, colspan, rowspan);
|
|
|
|
elm_object_text_set(o, buf);
|
|
|
|
}
|
|
|
|
|
2016-04-18 04:17:24 -07:00
|
|
|
static void
|
2017-04-16 21:41:29 -07:00
|
|
|
_custom_layout_update(Eo *pack, void *_pd EINA_UNUSED)
|
2016-04-18 04:17:24 -07:00
|
|
|
{
|
|
|
|
/* Example custom layout for grid:
|
|
|
|
* divide space into regions of same size, place objects in center of their
|
|
|
|
* cells using their min size
|
2017-09-14 20:14:32 -07:00
|
|
|
* Note: This is a TERRIBLE layout function (disregards align, weig.ht, ...)
|
2016-04-18 04:17:24 -07:00
|
|
|
*/
|
|
|
|
|
2017-09-14 20:14:32 -07:00
|
|
|
int rows, cols, c, r, cs, rs, gmw = 0, gmh = 0;
|
2016-04-18 04:17:24 -07:00
|
|
|
Eina_Iterator *it;
|
2017-09-14 20:14:32 -07:00
|
|
|
Eina_Rect g;
|
2016-04-18 04:17:24 -07:00
|
|
|
Eo *item;
|
|
|
|
|
2017-09-14 20:14:32 -07:00
|
|
|
g = efl_gfx_geometry_get(pack);
|
2016-04-18 04:17:24 -07:00
|
|
|
|
|
|
|
efl_pack_grid_size_get(pack, &cols, &rows);
|
|
|
|
if (!cols || !rows) goto end;
|
|
|
|
|
2016-04-19 22:55:26 -07:00
|
|
|
it = efl_content_iterate(pack);
|
2016-04-18 04:17:24 -07:00
|
|
|
EINA_ITERATOR_FOREACH(it, item)
|
|
|
|
{
|
2016-04-25 23:21:21 -07:00
|
|
|
if (efl_pack_grid_position_get(pack, item, &c, &r, &cs, &rs))
|
2016-04-18 04:17:24 -07:00
|
|
|
{
|
2017-09-14 20:14:32 -07:00
|
|
|
Eina_Rect m;
|
2016-04-18 04:17:24 -07:00
|
|
|
|
2017-09-14 20:14:32 -07:00
|
|
|
m.x = g.x + c * g.w / cols + (cs * g.w / cols - m.w) / 2;
|
|
|
|
m.y = g.y + r * g.h / rows + (rs * g.h / rows - m.h) / 2;
|
2017-09-18 00:22:01 -07:00
|
|
|
m.size = efl_gfx_size_hint_combined_min_get(item);
|
2017-09-14 20:14:32 -07:00
|
|
|
efl_gfx_geometry_set(item, m);
|
2016-04-18 04:17:24 -07:00
|
|
|
|
2017-09-14 20:14:32 -07:00
|
|
|
gmw = MAX(gmw, m.w);
|
|
|
|
gmh = MAX(gmh, m.h);
|
2016-04-18 04:17:24 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
eina_iterator_free(it);
|
|
|
|
|
|
|
|
end:
|
2017-09-17 22:35:22 -07:00
|
|
|
efl_gfx_size_hint_min_set(pack, EINA_SIZE2D(gmw * cols, gmh * rows));
|
2016-04-18 04:17:24 -07:00
|
|
|
}
|
|
|
|
|
2016-04-13 19:12:44 -07:00
|
|
|
void
|
|
|
|
test_ui_grid(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *bx, *o, *vbox, *f, *hbox, *chk, *grid;
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
win = elm_win_util_standard_add("ui-grid", "Efl.Ui.Grid");
|
|
|
|
elm_win_autodel_set(win, EINA_TRUE);
|
2017-09-15 02:37:25 -07:00
|
|
|
efl_gfx_size_set(win, EINA_SIZE2D(600, 400));
|
2016-04-13 19:12:44 -07:00
|
|
|
|
2017-08-09 06:36:29 -07:00
|
|
|
vbox = efl_add(EFL_UI_BOX_CLASS, win,
|
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_padding_set(vbox, 10, 10, EINA_TRUE);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(vbox, 1, 1);
|
|
|
|
efl_gfx_size_hint_margin_set(vbox, 5, 5, 5, 5);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_win_resize_object_add(win, vbox);
|
|
|
|
|
|
|
|
|
|
|
|
// create here to pass in cb
|
2016-08-15 06:44:41 -07:00
|
|
|
grid = efl_add(EFL_UI_GRID_CLASS, win);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
|
|
|
|
/* controls */
|
|
|
|
f = elm_frame_add(win);
|
|
|
|
elm_object_text_set(f, "Controls");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(f, -1, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(f, 1, 0);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(vbox, f);
|
|
|
|
efl_gfx_visible_set(f, 1);
|
|
|
|
|
2017-08-09 06:36:29 -07:00
|
|
|
hbox = efl_add(EFL_UI_BOX_CLASS, win,
|
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL));
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_object_content_set(f, hbox);
|
|
|
|
efl_pack_padding_set(hbox, 10, 0, EINA_TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
/* weights radio group */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0, -1);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
|
|
|
|
chk = o = elm_radio_add(win);
|
|
|
|
elm_object_text_set(o, "No weight");
|
2017-05-22 23:41:17 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_radio_state_value_set(o, NONE);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_radio_add(win);
|
|
|
|
elm_object_text_set(o, "No weight + grid fill");
|
2017-05-22 23:41:17 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_radio_state_value_set(o, NONE_BUT_FILL);
|
|
|
|
elm_radio_group_add(o, chk);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_radio_add(win);
|
|
|
|
elm_object_text_set(o, "Equal weights");
|
2017-05-22 23:41:17 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_radio_state_value_set(o, EQUAL);
|
|
|
|
elm_radio_group_add(o, chk);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_radio_add(win);
|
|
|
|
elm_object_text_set(o, "One weight only");
|
2017-05-22 23:41:17 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_radio_state_value_set(o, ONE);
|
|
|
|
elm_radio_group_add(o, chk);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_radio_add(win);
|
|
|
|
elm_object_text_set(o, "Two weights");
|
2017-05-22 23:41:17 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0, 0.5);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_radio_state_value_set(o, TWO);
|
|
|
|
elm_radio_group_add(o, chk);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
2016-04-18 04:17:24 -07:00
|
|
|
o = elm_radio_add(win);
|
|
|
|
elm_object_text_set(o, "Custom layout");
|
2017-05-22 23:41:17 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_RADIO_EVENT_CHANGED, weights_cb, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0, 0.5);
|
2016-04-18 04:17:24 -07:00
|
|
|
elm_radio_state_value_set(o, CUSTOM);
|
|
|
|
elm_radio_group_add(o, chk);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_radio_value_set(chk, EQUAL);
|
|
|
|
|
|
|
|
|
2016-06-09 00:42:09 -07:00
|
|
|
/* min size setter */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0.5, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(bx, 0, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
2016-06-09 00:42:09 -07:00
|
|
|
elm_object_text_set(o, "User min size");
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_slider_add(win);
|
|
|
|
elm_slider_indicator_format_set(o, "%.0fpx");
|
|
|
|
elm_slider_indicator_show_set(o, 1);
|
|
|
|
elm_slider_horizontal_set(o, 0);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0.5, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(o, 1, 1);
|
2017-06-12 00:06:22 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_SLIDER_EVENT_CHANGED, user_min_slider_cb, NULL);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_slider_min_max_set(o, 0, 250);
|
|
|
|
elm_slider_inverted_set(o, 1);
|
|
|
|
elm_slider_value_set(o, 0);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
|
|
|
/* inner box padding */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(bx, 0, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
|
|
|
elm_object_text_set(o, "Padding");
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_slider_add(win);
|
|
|
|
elm_slider_indicator_format_set(o, "%.0fpx");
|
|
|
|
elm_slider_indicator_show_set(o, 1);
|
|
|
|
elm_slider_horizontal_set(o, 0);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0.5, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(o, 1, 1);
|
2017-06-12 00:06:22 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_SLIDER_EVENT_CHANGED, padding_slider_cb, grid);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_slider_min_max_set(o, 0, 40);
|
|
|
|
elm_slider_inverted_set(o, 1);
|
|
|
|
elm_slider_value_set(o, 10);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
|
|
|
/* outer margin */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(bx, 0, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
|
|
|
elm_object_text_set(o, "Margin");
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_slider_add(win);
|
|
|
|
elm_slider_indicator_format_set(o, "%.0fpx");
|
|
|
|
elm_slider_indicator_show_set(o, 1);
|
|
|
|
elm_slider_horizontal_set(o, 0);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0.5, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(o, 1, 1);
|
2017-06-12 00:06:22 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_SLIDER_EVENT_CHANGED, margin_slider_cb, grid);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_slider_min_max_set(o, 0, 40);
|
|
|
|
elm_slider_inverted_set(o, 1);
|
|
|
|
elm_slider_value_set(o, 10);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
|
|
|
/* button margins */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(bx, 1, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
|
|
|
elm_object_text_set(o, "Buttons margins");
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_slider_add(win);
|
|
|
|
elm_slider_indicator_format_set(o, "%.0fpx");
|
|
|
|
elm_slider_indicator_show_set(o, 1);
|
|
|
|
elm_slider_horizontal_set(o, 0);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0.5, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(o, 1, 1);
|
2017-06-12 00:06:22 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_SLIDER_EVENT_CHANGED, btnmargins_slider_cb, grid);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_slider_min_max_set(o, 0, 40);
|
|
|
|
elm_slider_inverted_set(o, 1);
|
|
|
|
elm_slider_value_set(o, 10);
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
2016-04-14 00:41:57 -07:00
|
|
|
/* ro info */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(bx, 1, 1);
|
2016-04-14 00:41:57 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
|
|
|
elm_object_text_set(o, "<b>Properties</>");
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(grid, EFL_PACK_EVENT_LAYOUT_UPDATED, layout_updated_cb, o);
|
2016-04-14 00:41:57 -07:00
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(grid, EFL_CONTAINER_EVENT_CONTENT_ADDED, child_evt_cb, o);
|
|
|
|
efl_event_callback_add(grid, EFL_CONTAINER_EVENT_CONTENT_REMOVED, child_evt_cb, o);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0.5, 0);
|
|
|
|
efl_gfx_size_hint_weight_set(o, 1, 1);
|
2016-04-14 00:41:57 -07:00
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
2016-04-13 19:12:44 -07:00
|
|
|
/* contents */
|
|
|
|
f = elm_frame_add(win);
|
|
|
|
elm_object_text_set(f, "Contents");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(f, -1, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(f, 1, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack(vbox, f);
|
|
|
|
efl_gfx_visible_set(f, 1);
|
|
|
|
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
2016-04-13 19:12:44 -07:00
|
|
|
elm_object_content_set(f, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(grid, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
2016-08-15 06:44:41 -07:00
|
|
|
objects[i++] = o = efl_add(EFL_CANVAS_RECTANGLE_CLASS, win);
|
2017-09-17 22:35:22 -07:00
|
|
|
efl_gfx_size_hint_min_set(o, EINA_SIZE2D(10, 10));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_color_set(o, 64, 96, 128, 255);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 0, 0, 3, 1);
|
|
|
|
|
|
|
|
objects[i++] = o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, "Button 1");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 0, 0, 1, 1);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(o, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
objects[i++] = o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, "Button 2");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 1, 0, 1, 1);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(o, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
objects[i++] = o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, "Button 3");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 2, 0, 1, 1);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(o, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
objects[i++] = o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, "Button 4");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 0, 1, 2, 1);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(o, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
objects[i++] = o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, "Button 5");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 2, 1, 1, 2);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(o, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
|
|
|
objects[i++] = o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, "Button 6");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
efl_gfx_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
2016-04-13 19:12:44 -07:00
|
|
|
efl_pack_grid(grid, o, 0, 2, 2, 1);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(o, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(win, 1);
|
2016-04-13 19:12:44 -07:00
|
|
|
}
|
2016-04-13 22:12:16 -07:00
|
|
|
|
|
|
|
static const char *
|
|
|
|
btn_text(const char *str)
|
|
|
|
{
|
|
|
|
static char buf[64];
|
|
|
|
static int id = 0;
|
|
|
|
sprintf(buf, "%s %d", str ?: "item", ++id);
|
|
|
|
return buf;
|
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
remove_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
2016-04-13 22:12:16 -07:00
|
|
|
{
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_del(ev->object);
|
2016-04-13 22:12:16 -07:00
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
append_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
2016-04-13 22:12:16 -07:00
|
|
|
{
|
|
|
|
Eo *grid = data;
|
|
|
|
Eo *o = elm_button_add(grid);
|
|
|
|
elm_object_text_set(o, btn_text("appended"));
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_EVENT_CLICKED, remove_cb, NULL);
|
2016-04-13 22:12:16 -07:00
|
|
|
elm_object_tooltip_text_set(o, "Click to unpack");
|
|
|
|
efl_pack_end(grid, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-08-30 05:34:10 -07:00
|
|
|
clear_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
2016-04-13 22:12:16 -07:00
|
|
|
{
|
|
|
|
Eo *grid = data;
|
|
|
|
efl_pack_clear(grid);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
test_ui_grid_linear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
2016-04-14 00:41:57 -07:00
|
|
|
Evas_Object *win, *o, *vbox, *f, *hbox, *grid, *ico, *bx;
|
2016-04-13 22:12:16 -07:00
|
|
|
|
|
|
|
win = elm_win_util_standard_add("ui-grid-linear", "Efl.Ui.Grid Linear APIs");
|
|
|
|
elm_win_autodel_set(win, EINA_TRUE);
|
2017-09-15 02:37:25 -07:00
|
|
|
efl_gfx_size_set(win, EINA_SIZE2D(600, 400));
|
2016-04-13 22:12:16 -07:00
|
|
|
|
2017-08-09 06:36:29 -07:00
|
|
|
vbox = efl_add(EFL_UI_BOX_CLASS, win,
|
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack_padding_set(vbox, 10, 10, EINA_TRUE);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_margin_set(vbox, 5, 5, 5, 5);
|
2016-04-13 22:12:16 -07:00
|
|
|
elm_win_resize_object_add(win, vbox);
|
|
|
|
efl_gfx_visible_set(vbox, 1);
|
|
|
|
|
|
|
|
|
|
|
|
// create here to pass in cb
|
2016-08-15 06:44:41 -07:00
|
|
|
grid = efl_add(EFL_UI_GRID_CLASS, win);
|
2016-04-13 22:12:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
/* controls */
|
|
|
|
f = elm_frame_add(win);
|
|
|
|
elm_object_text_set(f, "Controls");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(f, -1, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(f, 1, 0);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(vbox, f);
|
|
|
|
efl_gfx_visible_set(f, 1);
|
|
|
|
|
2017-08-09 06:36:29 -07:00
|
|
|
hbox = efl_add(EFL_UI_BOX_CLASS, win,
|
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL));
|
2016-04-13 22:12:16 -07:00
|
|
|
elm_object_content_set(f, hbox);
|
|
|
|
efl_pack_padding_set(hbox, 5, 0, EINA_TRUE);
|
|
|
|
efl_gfx_visible_set(hbox, 1);
|
|
|
|
|
|
|
|
ico = elm_icon_add(win);
|
|
|
|
elm_icon_standard_set(ico, "list-add");
|
|
|
|
o = elm_button_add(win);
|
|
|
|
elm_object_content_set(o, ico);
|
|
|
|
elm_object_text_set(o, "Append");
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_EVENT_CLICKED, append_cb, grid);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(hbox, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
ico = elm_icon_add(win);
|
|
|
|
elm_icon_standard_set(ico, "edit-clear-all");
|
|
|
|
o = elm_button_add(win);
|
|
|
|
elm_object_content_set(o, ico);
|
|
|
|
elm_object_text_set(o, "Clear");
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_EVENT_CLICKED, clear_cb, grid);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(hbox, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
2016-04-14 00:41:57 -07:00
|
|
|
/* ro info */
|
2016-08-15 06:44:41 -07:00
|
|
|
bx = efl_add(EFL_UI_BOX_CLASS, win,
|
2017-08-22 21:30:33 -07:00
|
|
|
efl_ui_direction_set(efl_added, EFL_UI_DIR_DOWN));
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(bx, 0, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(bx, 1, 1);
|
2016-04-14 00:41:57 -07:00
|
|
|
efl_pack(hbox, bx);
|
|
|
|
efl_gfx_visible_set(bx, 1);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
|
|
|
elm_object_text_set(o, "<b>Properties</>");
|
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(grid, EFL_PACK_EVENT_LAYOUT_UPDATED, layout_updated_cb, o);
|
2016-04-14 00:41:57 -07:00
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_label_add(win);
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(grid, EFL_CONTAINER_EVENT_CONTENT_ADDED, child_evt_cb, o);
|
|
|
|
efl_event_callback_add(grid, EFL_CONTAINER_EVENT_CONTENT_REMOVED, child_evt_cb, o);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(o, 0.5, 0);
|
|
|
|
efl_gfx_size_hint_weight_set(o, 1, 1);
|
2016-04-14 00:41:57 -07:00
|
|
|
efl_pack(bx, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
|
2016-04-13 22:12:16 -07:00
|
|
|
/* contents */
|
|
|
|
f = elm_frame_add(win);
|
|
|
|
elm_object_text_set(f, "Contents");
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_align_set(f, -1, -1);
|
|
|
|
efl_gfx_size_hint_weight_set(f, 1, 1);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(vbox, f);
|
|
|
|
efl_gfx_visible_set(f, 1);
|
|
|
|
|
2016-04-19 01:43:28 -07:00
|
|
|
efl_pack_grid_columns_set(grid, 4);
|
2017-08-09 07:36:02 -07:00
|
|
|
efl_pack_grid_direction_set(grid, EFL_UI_DIR_RIGHT, EFL_UI_DIR_DOWN);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
2016-04-13 22:12:16 -07:00
|
|
|
elm_object_content_set(f, grid);
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(grid, 1);
|
2016-04-13 22:12:16 -07:00
|
|
|
|
|
|
|
o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, btn_text(NULL));
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_EVENT_CLICKED, remove_cb, NULL);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(grid, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, btn_text(NULL));
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_EVENT_CLICKED, remove_cb, NULL);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(grid, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
|
|
|
o = elm_button_add(win);
|
|
|
|
elm_object_text_set(o, btn_text(NULL));
|
2016-08-10 07:23:04 -07:00
|
|
|
efl_event_callback_add(o, EFL_UI_EVENT_CLICKED, remove_cb, NULL);
|
2016-04-13 22:12:16 -07:00
|
|
|
efl_pack(grid, o);
|
|
|
|
efl_gfx_visible_set(o, 1);
|
|
|
|
|
2016-06-09 00:42:09 -07:00
|
|
|
efl_gfx_visible_set(win, 1);
|
2016-04-13 22:12:16 -07:00
|
|
|
}
|