Exactness: Removed useless bin dir. Merging that into elm_test.

SVN revision: 67934
This commit is contained in:
Tom Hacohen 2012-02-14 13:52:58 +00:00
parent bb8a3bfc46
commit f51a7e4835
63 changed files with 1 additions and 19964 deletions

View File

@ -42,7 +42,6 @@ PKG_CHECK_MODULES([EFL],
AC_OUTPUT([ AC_OUTPUT([
Makefile Makefile
src/Makefile src/Makefile
src/bin/Makefile
src/lib/Makefile src/lib/Makefile
src/scripts/Makefile src/scripts/Makefile
data/Makefile data/Makefile

View File

@ -1,4 +1,4 @@
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in
SUBDIRS = bin lib scripts SUBDIRS = lib scripts

View File

@ -1,69 +0,0 @@
MAINTAINERCLEANFILES = Makefile.in
AM_CPPFLAGS = \
-I$(top_srcdir)/src/lib \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
-DLOCALE_DIR=\"$(datadir)/locale\" \
@EFL_CFLAGS@
bin_PROGRAMS = exactness_raw
exactness_raw_SOURCES = \
tsuite.c \
../lib/tsuite_file_data.c \
test_3d.c \
test_actionslider.c \
test_panel.c \
test_anchorblock.c \
test_panes.c \
test_anchorview.c \
test_focus.c \
test_bg.c \
test_gengrid.c \
test_box.c \
test_genlist.c \
test_progressbar.c \
test_bubble.c \
test_radio.c \
test_button.c \
test_scaling.c \
test_calendar.c \
test_grid.c \
test_segment_control.c \
test_check.c \
test_hover.c \
test_separator.c \
test_hoversel.c \
test_slider.c \
test_colorselector.c \
test_conform.c \
test_spinner.c \
test_ctxpopup.c \
test_index.c \
test_table.c \
test_inwin.c \
test_diskselector.c \
test_label.c \
test_toggle.c \
test_entry.c \
test_toolbar.c \
test_fileselector_button.c \
test_tooltip.c \
test_fileselector.c \
test_list.c \
test_fileselector_entry.c \
test_menu.c \
test_naviframe.c \
test_notify.c \
test_scroller.c \
test_pager.c
exactness_raw_LDADD = @EFL_LIBS@
EXTRA_DIST = \
tsuite.h

View File

@ -1,338 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _Point
{
Evas_Coord x, y, z, u, v;
} Point;
typedef struct _Side
{
Evas_Object *o;
Point pt[4];
} Side;
typedef struct _Cube
{
Side side[6];
} Cube;
static Cube *cube;
static double rotx = 0.0, roty = 0.0, rotz = 0.0;
static double cxo = 0.0, cyo = 0.0, focv = 256.0, z0v = 0.0;
#define POINT(n, p, xx, yy, zz, uu, vv) \
c->side[n].pt[p].x = xx; \
c->side[n].pt[p].y = yy; \
c->side[n].pt[p].z = zz; \
c->side[n].pt[p].u = uu; \
c->side[n].pt[p].v = vv
static Cube *
_cube_new(Evas *evas, Evas_Coord w, Evas_Coord h, Evas_Coord d)
{
Cube *c;
int i;
w -= (w / 2);
h -= (h / 2);
d -= (d / 2);
c = calloc(1, sizeof(Cube));
for (i = 0; i < 6; i++)
{
Evas_Object *o;
char buf[PATH_MAX];
o = evas_object_image_add(evas);
c->side[i].o = o;
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "twofish.jpg");
evas_object_image_file_set(o, buf, NULL);
evas_object_image_fill_set(o, 0, 0, 256, 256);
evas_object_resize(o, 256, 256);
evas_object_image_smooth_scale_set(o, 0);
evas_object_show(o);
}
POINT(0, 0, -w, -h, -d, 0, 0);
POINT(0, 1, w, -h, -d, 256, 0);
POINT(0, 2, w, h, -d, 256, 256);
POINT(0, 3, -w, h, -d, 0, 256);
POINT(1, 0, w, -h, -d, 0, 0);
POINT(1, 1, w, -h, d, 256, 0);
POINT(1, 2, w, h, d, 256, 256);
POINT(1, 3, w, h, -d, 0, 256);
POINT(2, 0, w, -h, d, 0, 0);
POINT(2, 1, -w, -h, d, 256, 0);
POINT(2, 2, -w, h, d, 256, 256);
POINT(2, 3, w, h, d, 0, 256);
POINT(3, 0, -w, -h, d, 0, 0);
POINT(3, 1, -w, -h, -d, 256, 0);
POINT(3, 2, -w, h, -d, 256, 256);
POINT(3, 3, -w, h, d, 0, 256);
POINT(4, 0, -w, -h, d, 0, 0);
POINT(4, 1, w, -h, d, 256, 0);
POINT(4, 2, w, -h, -d, 256, 256);
POINT(4, 3, -w, -h, -d, 0, 256);
POINT(5, 0, -w, h, -d, 0, 0);
POINT(5, 1, w, h, -d, 256, 0);
POINT(5, 2, w, h, d, 256, 256);
POINT(5, 3, -w, h, d, 0, 256);
return c;
}
static void
_cube_pos(Cube *c,
Evas_Coord x, Evas_Coord y, Evas_Coord z,
double dx, double dy, double dz,
Evas_Coord cx, Evas_Coord cy, Evas_Coord foc, Evas_Coord z0)
{
Evas_Map *m;
int i, j, order[6], sorted;
Evas_Coord mz[6];
m = evas_map_new(4);
evas_map_smooth_set(m, 0);
for (i = 0; i < 6; i++)
{
Evas_Coord tz[4];
for (j = 0; j < 4; j++)
{
evas_map_point_coord_set(m, j,
c->side[i].pt[j].x + x,
c->side[i].pt[j].y + y,
c->side[i].pt[j].z + z);
evas_map_point_image_uv_set(m, j,
c->side[i].pt[j].u,
c->side[i].pt[j].v);
evas_map_point_color_set(m, j, 255, 255, 255, 255);
}
evas_map_util_3d_rotate(m, dx, dy, dz, x, y, z);
evas_map_util_3d_lighting(m, -1000, -1000, -1000,
255, 255, 255,
20, 20, 20);
evas_map_util_3d_perspective(m, cx, cy, foc, z0);
if (evas_map_util_clockwise_get(m))
{
evas_object_map_enable_set(c->side[i].o, 1);
evas_object_map_set(c->side[i].o, m);
evas_object_show(c->side[i].o);
}
else
evas_object_hide(c->side[i].o);
order[i] = i;
for (j = 0; j < 4; j++)
evas_map_point_coord_get(m, j, NULL, NULL, &(tz[j]));
mz[i] = (tz[0] + tz[1] + tz[2] + tz[3]) / 4;
}
sorted = 0;
do
{
sorted = 1;
for (i = 0; i < 5; i++)
{
if (mz[order[i]] > mz[order[i + 1]])
{
j = order[i];
order[i] = order[i + 1];
order[i + 1] = j;
sorted = 0;
}
}
}
while (!sorted);
evas_object_raise(c->side[order[0]].o);
for (i = 1; i < 6; i++)
evas_object_stack_below(c->side[order[i]].o, c->side[order[i - 1]].o);
evas_map_free(m);
}
/*
static void
_cube_free(Cube *c)
{
int i;
for (i = 0; i < 6; i++) evas_object_del(c->side[i].o);
free(c);
}
*/
static void
_cube_update(Evas_Object *win, Cube *c)
{
Evas_Coord w, h;
evas_object_geometry_get(win, NULL, NULL, &w, &h);
_cube_pos(c,
(w / 2), (h / 2), 512,
rotx, roty, rotz,
(w / 2) + cxo, (h / 2) + cyo, z0v, focv);
}
void
_ch_rot_x(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
rotx = elm_slider_value_get(obj);
_cube_update(win, cube);
}
void
_ch_rot_y(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
roty = elm_slider_value_get(obj);
_cube_update(win, cube);
}
void
_ch_rot_z(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
rotz = elm_slider_value_get(obj);
_cube_update(win, cube);
}
void
_ch_cx(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
cxo = elm_slider_value_get(obj);
_cube_update(win, cube);
}
void
_ch_cy(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
cyo = elm_slider_value_get(obj);
_cube_update(win, cube);
}
void
_ch_foc(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
focv = elm_slider_value_get(obj);
_cube_update(win, cube);
}
void
_ch_z0(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
z0v = elm_slider_value_get(obj);
_cube_update(win, cube);
}
TEST_START(test_3d)
{
Evas_Object *bg, *bx, *sl;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
cube = _cube_new(evas_object_evas_get(win), 240, 240, 240);
bx = elm_box_add(win);
evas_object_layer_set(bx, 10);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Rot X");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, 0, 360);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_rot_x, win);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Rot Y");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, 0, 360);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_rot_y, win);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Rot Z");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, 0, 360);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_rot_z, win);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "CX Off");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, -320, 320);
elm_slider_value_set(sl, cxo);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_cx, win);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "CY Off");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, -320, 320);
elm_slider_value_set(sl, cyo);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_cy, win);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Foc");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, 1, 2000);
elm_slider_value_set(sl, focv);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_foc, win);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Z0");
elm_slider_unit_format_set(sl, "%1.0f units");
elm_slider_span_size_set(sl, 360);
elm_slider_min_max_set(sl, -2000, 2000);
elm_slider_value_set(sl, z0v);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_smart_callback_add(sl, "changed", _ch_z0, win);
evas_object_show(sl);
evas_object_resize(win, 480, 480);
_cube_update(win, cube);
evas_object_show(win);
}
TEST_END

View File

@ -1,175 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void _pos_selected_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info)
{
printf("Selection: %s\n", (char *)event_info);
printf("Label selected: %s\n", elm_actionslider_selected_label_get(obj));
}
static void
_position_change_magnetic_cb(void *data __UNUSED__, Evas_Object * obj, void *event_info)
{
if (!strcmp((char *)event_info, "left"))
elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_LEFT);
else if (!strcmp((char *)event_info, "right"))
elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_RIGHT);
}
static void
_magnet_enable_disable_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info)
{
if (!strcmp((char *)event_info, "left"))
elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_CENTER);
else if (!strcmp((char *)event_info, "right"))
elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_NONE);
}
enum _api_state
{
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
switch(api->state)
{ /* Put all api-changes under switch */
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
a->state++;
set_api_state(a);
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_actionslider)
{
Evas_Object *bg, *bx, *as;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, 0);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
as = elm_actionslider_add(win);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_actionslider_indicator_pos_set(as, ELM_ACTIONSLIDER_RIGHT);
elm_actionslider_magnet_pos_set(as, ELM_ACTIONSLIDER_RIGHT);
elm_object_part_text_set(as, "left", "Snooze");
elm_object_part_text_set(as, "center", NULL);
elm_object_part_text_set(as, "right", "Stop");
elm_actionslider_enabled_pos_set(as, ELM_ACTIONSLIDER_LEFT |
ELM_ACTIONSLIDER_RIGHT);
evas_object_smart_callback_add(as, "pos_changed",
_position_change_magnetic_cb, NULL);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
elm_box_pack_end(bx, as);
as = elm_actionslider_add(win);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_actionslider_indicator_pos_set(as, ELM_ACTIONSLIDER_CENTER);
elm_actionslider_magnet_pos_set(as, ELM_ACTIONSLIDER_CENTER);
elm_object_part_text_set(as, "left", "Snooze");
elm_object_part_text_set(as, "center", NULL);
elm_object_part_text_set(as, "right", "Stop");
elm_actionslider_enabled_pos_set(as, ELM_ACTIONSLIDER_LEFT |
ELM_ACTIONSLIDER_RIGHT);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
elm_box_pack_end(bx, as);
as = elm_actionslider_add(win);
elm_object_style_set(as, "bar");
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_actionslider_indicator_pos_set(as, ELM_ACTIONSLIDER_LEFT);
elm_actionslider_magnet_pos_set(as, ELM_ACTIONSLIDER_CENTER|
ELM_ACTIONSLIDER_RIGHT);
elm_actionslider_enabled_pos_set(as, ELM_ACTIONSLIDER_CENTER |
ELM_ACTIONSLIDER_RIGHT);
elm_object_part_text_set(as, "left", NULL);
elm_object_part_text_set(as, "center", "Accept");
elm_object_part_text_set(as, "right", "Reject");
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
elm_box_pack_end(bx, as);
as = elm_actionslider_add(win);
elm_object_style_set(as, "bar");
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_actionslider_indicator_pos_set(as, ELM_ACTIONSLIDER_LEFT);
elm_actionslider_magnet_pos_set(as, ELM_ACTIONSLIDER_LEFT);
elm_object_part_text_set(as, "left", NULL);
elm_object_part_text_set(as, "center", "Accept");
elm_object_part_text_set(as, "right", "Reject");
elm_object_text_set(as, "Go");
evas_object_smart_callback_add(as, "pos_changed",
_position_change_magnetic_cb, NULL);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
elm_box_pack_end(bx, as);
as = elm_actionslider_add(win);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_actionslider_indicator_pos_set(as, ELM_ACTIONSLIDER_LEFT);
elm_actionslider_magnet_pos_set(as, ELM_ACTIONSLIDER_ALL);
elm_object_part_text_set(as, "left", "Left");
elm_object_part_text_set(as, "center", "Center");
elm_object_part_text_set(as, "right", "Right");
elm_object_text_set(as, "Go");
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
elm_box_pack_end(bx, as);
as = elm_actionslider_add(win);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_actionslider_indicator_pos_set(as, ELM_ACTIONSLIDER_CENTER);
elm_actionslider_magnet_pos_set(as, ELM_ACTIONSLIDER_CENTER);
elm_object_part_text_set(as, "left", "Enable");
elm_object_part_text_set(as, "center", "Magnet");
elm_object_part_text_set(as, "right", "Disable");
evas_object_smart_callback_add(as, "pos_changed",
_magnet_enable_disable_cb, NULL);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
elm_box_pack_end(bx, as);
evas_object_resize(win, 320, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,275 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_print_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("bubble clicked\n");
}
static void
my_anchorblock_bt(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *av = data;
elm_anchorblock_hover_end(av);
}
static void
my_anchorblock_anchor(void *data, Evas_Object *obj, void *event_info)
{
Evas_Object *av = data;
Elm_Entry_Anchorblock_Info *ei = event_info;
Evas_Object *bt, *bx;
bt = elm_button_add(obj);
elm_object_text_set(bt, ei->name);
elm_hover_content_set(ei->hover, "middle", bt);
evas_object_show(bt);
// hints as to where we probably should put hover contents (buttons etc.).
if (ei->hover_top)
{
bx = elm_box_add(obj);
bt = elm_button_add(obj);
elm_object_text_set(bt, "Top 1");
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorblock_bt, av);
evas_object_show(bt);
bt = elm_button_add(obj);
elm_object_text_set(bt, "Top 2");
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorblock_bt, av);
evas_object_show(bt);
bt = elm_button_add(obj);
elm_object_text_set(bt, "Top 3");
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorblock_bt, av);
evas_object_show(bt);
elm_hover_content_set(ei->hover, "top", bx);
evas_object_show(bx);
}
if (ei->hover_bottom)
{
bt = elm_button_add(obj);
elm_object_text_set(bt, "Bot");
elm_hover_content_set(ei->hover, "bottom", bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorblock_bt, av);
evas_object_show(bt);
}
if (ei->hover_left)
{
bt = elm_button_add(obj);
elm_object_text_set(bt, "Left");
elm_hover_content_set(ei->hover, "left", bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorblock_bt, av);
evas_object_show(bt);
}
if (ei->hover_right)
{
bt = elm_button_add(obj);
elm_object_text_set(bt, "Right");
elm_hover_content_set(ei->hover, "right", bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorblock_bt, av);
evas_object_show(bt);
}
}
static void
my_anchorblock_edge_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("left\n");
}
static void
my_anchorblock_edge_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("right\n");
}
static void
my_anchorblock_edge_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("top\n");
}
static void
my_anchorblock_edge_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("bottom\n");
}
static void
my_anchorblock_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Coord x, y, w, h, vw, vh;
elm_scroller_region_get(obj, &x, &y, &w, &h);
elm_scroller_child_size_get(obj, &vw, &vh);
printf("scroll %ix%i +%i+%i in %ix%i\n", w, h, x, y, vw, vh);
}
enum _api_state
{
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
switch(api->state)
{ /* Put all api-changes under switch */
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
a->state++;
set_api_state(a);
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_anchorblock)
{
Evas_Object *bg, *av, *sc, *bx, *bb, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, sc);
evas_object_smart_callback_add(sc, "edge_left", my_anchorblock_edge_left, NULL);
evas_object_smart_callback_add(sc, "edge_right", my_anchorblock_edge_right, NULL);
evas_object_smart_callback_add(sc, "edge_top", my_anchorblock_edge_top, NULL);
evas_object_smart_callback_add(sc, "edge_bottom", my_anchorblock_edge_bottom, NULL);
evas_object_smart_callback_add(sc, "scroll", my_anchorblock_scroll, NULL);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
elm_object_text_set(bb, "Message 3");
elm_object_part_text_set(bb, "info", "10:32 4/11/2008");
elm_object_part_content_set(bb, "icon", ic);
evas_object_smart_callback_add(bb, "clicked", _print_clicked, NULL);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
av = elm_anchorblock_add(win);
elm_anchorblock_hover_style_set(av, "popout");
elm_anchorblock_hover_parent_set(av, win);
elm_object_text_set(av,
"Hi there. This is the most recent message in the "
"list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
"(phone number) to click on.");
evas_object_smart_callback_add(av, "anchor,clicked",
my_anchorblock_anchor, av);
elm_object_content_set(bb, av);
evas_object_show(av);
elm_box_pack_end(bx, bb);
evas_object_show(bb);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bb = elm_bubble_add(win);
elm_object_text_set(bb, "Message 2");
elm_object_part_text_set(bb, "info", "7:16 27/10/2008");
elm_object_part_content_set(bb, "icon", ic);
evas_object_smart_callback_add(bb, "clicked", _print_clicked, NULL);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
av = elm_anchorblock_add(win);
elm_anchorblock_hover_style_set(av, "popout");
elm_anchorblock_hover_parent_set(av, win);
elm_object_text_set(av,
"Hey what are you doing? This is the second last message "
"Hi there. This is the most recent message in the "
"list. It's a longer one so it can wrap more and "
"contains a <a href=contact:john>John</a> contact "
"link in it to test popups on links. The idea is that "
"all SMS's are scanned for things that look like phone "
"numbers or names that are in your contacts list, and "
"if they are, they become clickable links that pop up "
"a menus of obvious actions to perform on this piece "
"of information. This of course can be later explicitly "
"done by links maybe running local apps or even being "
"web URL's too that launch the web browser and point it "
"to that URL. <item relsize=16x16 vsize=full href=emoticon/omg></item>");
evas_object_smart_callback_add(av, "anchor,clicked", my_anchorblock_anchor, av);
elm_object_content_set(bb, av);
evas_object_show(av);
elm_box_pack_end(bx, bb);
evas_object_show(bb);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
elm_object_text_set(bb, "Message 1");
elm_object_part_text_set(bb, "info", "20:47 18/6/2008");
elm_object_part_content_set(bb, "icon", ic);
evas_object_smart_callback_add(bb, "clicked", _print_clicked, NULL);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
av = elm_anchorblock_add(win);
elm_anchorblock_hover_style_set(av, "popout");
elm_anchorblock_hover_parent_set(av, win);
elm_object_text_set(av, "This is a short message. <item relsize=16x16 vsize=full href=emoticon/haha></item>");
evas_object_smart_callback_add(av, "anchor,clicked",
my_anchorblock_anchor, av);
elm_object_content_set(bb, av);
evas_object_show(av);
elm_box_pack_end(bx, bb);
evas_object_show(bb);
elm_object_content_set(sc, bx);
evas_object_show(bx);
evas_object_show(sc);
evas_object_resize(win, 320, 520);
elm_object_focus_set(win, EINA_TRUE);
evas_object_show(win);
}
TEST_END

View File

@ -1,148 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
my_anchorview_bt(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *av = data;
elm_anchorview_hover_end(av);
}
static void
my_anchorview_anchor(void *data, Evas_Object *obj, void *event_info)
{
Evas_Object *av = data;
Elm_Entry_Anchorview_Info *ei = event_info;
Evas_Object *bt, *bx;
bt = elm_button_add(obj);
elm_object_text_set(bt, ei->name);
elm_hover_content_set(ei->hover, "middle", bt);
evas_object_show(bt);
// hints as to where we probably should put hover contents (buttons etc.).
if (ei->hover_top)
{
bx = elm_box_add(obj);
bt = elm_button_add(obj);
elm_object_text_set(bt, "Top 1");
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorview_bt, av);
evas_object_show(bt);
bt = elm_button_add(obj);
elm_object_text_set(bt, "Top 2");
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorview_bt, av);
evas_object_show(bt);
bt = elm_button_add(obj);
elm_object_text_set(bt, "Top 3");
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorview_bt, av);
evas_object_show(bt);
elm_hover_content_set(ei->hover, "top", bx);
evas_object_show(bx);
}
if (ei->hover_bottom)
{
bt = elm_button_add(obj);
elm_object_text_set(bt, "Bot");
elm_hover_content_set(ei->hover, "bottom", bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorview_bt, av);
evas_object_show(bt);
}
if (ei->hover_left)
{
bt = elm_button_add(obj);
elm_object_text_set(bt, "Left");
elm_hover_content_set(ei->hover, "left", bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorview_bt, av);
evas_object_show(bt);
}
if (ei->hover_right)
{
bt = elm_button_add(obj);
elm_object_text_set(bt, "Right");
elm_hover_content_set(ei->hover, "right", bt);
evas_object_smart_callback_add(bt, "clicked", my_anchorview_bt, av);
evas_object_show(bt);
}
}
enum _api_state
{
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
switch(api->state)
{ /* Put all api-changes under switch */
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
a->state++;
set_api_state(a);
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_anchorview)
{
Evas_Object *bg, *bx, *av;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx); /* Resize BOX to size of window */
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
av = elm_anchorview_add(win);
elm_anchorview_hover_style_set(av, "popout");
elm_anchorview_hover_parent_set(av, win);
elm_object_text_set(av,
"This is an entry widget in this window that<br>"
"uses markup <b>like this</> for styling and<br>"
"formatting <em>like this</>, as well as<br>"
"<a href=X><link>links in the text</></a>, so enter text<br>"
"in here to edit it. By the way, links are<br>"
"called <a href=anc-02>Anchors</a> so you will need<br>"
"to refer to them this way. <item relsize=16x16 vsize=full href=emoticon/guilty-smile></item>");
evas_object_size_hint_weight_set(av, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(av, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(av, "anchor,clicked", my_anchorview_anchor, av);
elm_box_pack_end(bx, av);
evas_object_show(av);
evas_object_show(bx);
evas_object_resize(win, 320, 300);
elm_object_focus_set(win, EINA_TRUE);
evas_object_show(win);
}
TEST_END

View File

@ -1,194 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_cb_radio_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
{
Evas_Object *o_bg = data;
elm_bg_option_set(o_bg, elm_radio_value_get((Evas_Object *)obj));
}
static void
_cb_overlay_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
{
Evas_Object *o_bg = data;
if (elm_check_state_get(obj))
{
Evas_Object *parent, *over;
char buff[PATH_MAX];
snprintf(buff, sizeof(buff), "%s/objects/test.edj", elm_app_data_dir_get());
parent = elm_object_parent_widget_get(o_bg);
over = edje_object_add(evas_object_evas_get(parent));
edje_object_file_set(over, buff, "bg_overlay");
elm_object_content_set(o_bg, over);
}
else
elm_object_content_set(o_bg, NULL);
}
static void
_cb_color_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
{
Evas_Object *o_bg = data;
double val = 0.0;
val = elm_spinner_value_get(obj);
if (val == 1.0)
elm_bg_color_set(o_bg, 255, 255, 255);
else if (val == 2.0)
elm_bg_color_set(o_bg, 255, 0, 0);
else if (val == 3.0)
elm_bg_color_set(o_bg, 0, 0, 255);
else if (val == 4.0)
elm_bg_color_set(o_bg, 0, 255, 0);
}
TEST_START(test_bg_plain)
{
Evas_Object *bg;
bg = elm_bg_add(win);
/* allow bg to expand in x & y */
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
/* set size hints. a minimum size for the bg. this should propagate back
* to the window thus limiting its size based off the bg as the bg is one
* of the window's resize objects. */
evas_object_size_hint_min_set(bg, 160, 160);
/* and set a maximum size. not needed very often. normally used together
* with evas_object_size_hint_min_set() at the same size to make a
* window not resizable */
evas_object_size_hint_max_set(bg, 640, 640);
/* and now just resize the window to a size you want. normally widgets
* will determine the initial size though */
evas_object_resize(win, 320, 320);
/* and show the window */
evas_object_show(win);
}
TEST_END
TEST_START(test_bg_image)
{
Evas_Object *bg;
char buf[PATH_MAX];
bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_bg_file_set(bg, buf, NULL);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
evas_object_size_hint_min_set(bg, 160, 160);
evas_object_size_hint_max_set(bg, 640, 640);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END
TEST_START(test_bg_options)
{
Evas_Object *bg;
Evas_Object *box, *hbox, *o_bg;
Evas_Object *rd, *rdg;
char buf[PATH_MAX];
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, box);
evas_object_show(box);
o_bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_bg_file_set(o_bg, buf, NULL);
evas_object_size_hint_weight_set(o_bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o_bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, o_bg);
evas_object_show(o_bg);
hbox = elm_box_add(win);
elm_box_horizontal_set(hbox, EINA_TRUE);
evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, ELM_BG_OPTION_CENTER);
elm_object_text_set(rd, "Center");
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_smart_callback_add(rd, "changed", _cb_radio_changed, o_bg);
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
rdg = rd;
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, ELM_BG_OPTION_SCALE);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Scale");
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_smart_callback_add(rd, "changed", _cb_radio_changed, o_bg);
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, ELM_BG_OPTION_STRETCH);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Stretch");
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_smart_callback_add(rd, "changed", _cb_radio_changed, o_bg);
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, ELM_BG_OPTION_TILE);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Tile");
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_smart_callback_add(rd, "changed", _cb_radio_changed, o_bg);
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
elm_radio_value_set(rdg, ELM_BG_OPTION_SCALE);
rd = elm_check_add(win);
elm_object_text_set(rd, "Show Overlay");
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
evas_object_smart_callback_add(rd, "changed", _cb_overlay_changed, o_bg);
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
/* color choices ... this is ghetto, but we don't have a 'colorpicker'
* widget yet :( */
rd = elm_spinner_add(win);
elm_object_style_set(rd, "vertical");
elm_spinner_min_max_set(rd, 1, 4);
elm_spinner_label_format_set(rd, "%.0f");
elm_spinner_editable_set(rd, EINA_FALSE);
elm_spinner_special_value_add(rd, 1, "White");
elm_spinner_special_value_add(rd, 2, "Red");
elm_spinner_special_value_add(rd, 3, "Blue");
elm_spinner_special_value_add(rd, 4, "Green");
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(rd, "changed", _cb_color_changed, o_bg);
elm_box_pack_end(hbox, rd);
evas_object_show(rd);
elm_box_pack_end(box, hbox);
evas_object_show(hbox);
evas_object_size_hint_min_set(bg, 160, 160);
evas_object_size_hint_max_set(bg, 640, 640);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END

View File

@ -1,393 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
enum _api_state
{
BOX_PACK_START,
BOX_PACK_BEFORE,
BOX_PACK_AFTER,
BOX_PADDING_SET,
BOX_ALIGN_SET,
BOX_HOMOGENEOUS_SET,
BOX_UNPACK_ALL,
BOX_CLEAR,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
if(!eina_list_count(items))
return;
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case BOX_PACK_START: /* Move last item to begining */
elm_box_unpack(api->data, eina_list_data_get(eina_list_last(items)));
elm_box_pack_start(api->data, eina_list_data_get(eina_list_last(items)));
break;
case BOX_PACK_BEFORE:
if(eina_list_count(items) > 1)
{ /* Put last item before the one preceeding it */
elm_box_unpack(api->data, eina_list_data_get(eina_list_last(items)));
elm_box_pack_before(api->data,
eina_list_data_get(eina_list_last(items)),
eina_list_nth(items, eina_list_count(items)-2));
}
break;
case BOX_PACK_AFTER:
if(eina_list_count(items) > 1)
{ /* Put item before last to last */
elm_box_unpack(api->data, eina_list_nth(items,
eina_list_count(items)-2));
elm_box_pack_after(api->data,
eina_list_nth(items, eina_list_count(items)-2),
eina_list_data_get(eina_list_last(items)));
}
break;
case BOX_PADDING_SET:
elm_box_padding_set(api->data, 30, 15);
break;
case BOX_ALIGN_SET:
elm_box_align_set(api->data, 0.25, 0.75);
break;
case BOX_HOMOGENEOUS_SET:
elm_box_homogeneous_set(api->data, EINA_TRUE);
break;
case BOX_UNPACK_ALL:
{
Eina_List *l;
Evas_Object *data;
elm_box_unpack_all(api->data);
EINA_LIST_REVERSE_FOREACH(items, l, data)
elm_box_pack_end(api->data, data);
}
break;
case BOX_CLEAR:
elm_box_clear(api->data);
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_box_vert)
{
Evas_Object *bg, *bx, *bxx, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
api->data = bx;
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_01.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_02.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_align_set(ic, 0.0, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_03.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_align_set(ic, EVAS_HINT_EXPAND, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
evas_object_show(win);
}
TEST_END
static void
_del_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
elm_box_unpack(data, obj);
evas_object_move(obj, 0, 0);
evas_object_color_set(obj, 128, 64, 0, 128);
// evas_object_del(obj);
}
TEST_START(test_box_vert2)
{
Evas_Object *bg, *bx, *bt;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
elm_box_padding_set(bx, 10, 10);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 4");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 5");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END
TEST_START(test_box_horiz)
{
Evas_Object *bg, *bx, *bxx, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_01.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_02.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_align_set(ic, 0.5, 0.0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_03.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
evas_object_show(win);
}
TEST_END
typedef struct
{
Eina_List *transitions;
Evas_Object *box;
Evas_Object_Box_Layout last_layout;
} Transitions_Data;
static void
_test_box_transition_change(void *data)
{
Transitions_Data *tdata = data;
Elm_Box_Transition *layout_data;
Evas_Object_Box_Layout next_layout;
if (!data) return;
next_layout = eina_list_data_get(tdata->transitions);
layout_data = elm_box_transition_new(2.0, tdata->last_layout,
NULL, NULL, next_layout, NULL, NULL,
_test_box_transition_change, tdata);
elm_box_layout_set(tdata->box, elm_box_layout_transition, layout_data, elm_box_transition_free);
tdata->last_layout = next_layout;
tdata->transitions = eina_list_demote_list(tdata->transitions, tdata->transitions);
}
static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Transitions_Data *tdata = data;
if (!data) return;
free(tdata);
}
void
test_box_transition(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win, *bg, *bx, *bt;
Transitions_Data *tdata;
win = elm_win_add(NULL, "box-transition", ELM_WIN_BASIC);
elm_win_title_set(win, "Box Transition");
elm_win_autodel_set(win, EINA_TRUE);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, 1.0, 1.0);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, 1.0, 1.0);
evas_object_show(bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_resize(bt, 100, 100);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_resize(bt, 100, 100);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
elm_box_pack_end(bx, bt);
evas_object_resize(bt, 100, 100);
evas_object_show(bt);
tdata = calloc(1, sizeof(Transitions_Data));
tdata->box = bx;
tdata->last_layout = evas_object_box_layout_horizontal;
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_vertical);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_horizontal);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_stack);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_homogeneous_vertical);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_homogeneous_horizontal);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_flow_vertical);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_flow_horizontal);
tdata->transitions = eina_list_append(tdata->transitions,
evas_object_box_layout_stack);
evas_object_resize(win, 300, 300);
evas_object_resize(bx, 300, 300);
evas_object_smart_callback_add(win, "delete,request", _win_del, tdata);
evas_object_show(win);
elm_box_layout_set(bx, evas_object_box_layout_horizontal, NULL, NULL);
_test_box_transition_change(tdata);
}

View File

@ -1,155 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_print_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("bubble clicked\n");
}
enum _api_state
{
BUBBLE_SET_CORNER_1,
BUBBLE_SET_CORNER_2,
BUBBLE_SET_ICON_CONTENT,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
if(!eina_list_count(items))
return;
switch(api->state)
{ /* Put all api-changes under switch */
case BUBBLE_SET_CORNER_1:
elm_bubble_corner_set(eina_list_nth(items, 0), "bottom_left");
elm_object_text_set(elm_object_content_get(eina_list_nth(items, 0)),
"Corner: base (bottom-left) - with icon");
elm_bubble_corner_set(eina_list_nth(items, 1), "top_right");
elm_object_text_set(elm_object_content_get(eina_list_nth(items, 1)),
"Corner: base (top-right) - no icon");
break;
case BUBBLE_SET_CORNER_2:
elm_bubble_corner_set(eina_list_nth(items, 0), "top_right");
elm_object_text_set(elm_object_content_get(eina_list_nth(items, 0)),
"Corner: base (top-right) - with icon");
elm_bubble_corner_set(eina_list_nth(items, 1), "bottom_left");
elm_object_text_set(elm_object_content_get(eina_list_nth(items, 1)),
"Corner: base (bottom-left) - no icon");
break;
case BUBBLE_SET_ICON_CONTENT:
{
char buf[PATH_MAX];
Evas_Object *ct, *ic = elm_icon_add(api->win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
elm_object_content_set(eina_list_nth(items, 0), ic);
ct = elm_label_add(api->win);
elm_object_text_set(ct, "Using icon as top-bubble content");
elm_object_content_set(eina_list_nth(items, 1), ct);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
evas_object_show(ic);
}
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_bubble)
{
Evas_Object *bg, *bx, *bxx, *ic, *bb, *ct;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
elm_object_text_set(bb, "Message 1");
elm_object_part_text_set(bb, "info", "Corner: bottom_right");
elm_object_part_content_set(bb, "icon", ic);
elm_bubble_corner_set(bb, "bottom_right");
evas_object_smart_callback_add(bb, "clicked", _print_clicked, NULL);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ct = elm_label_add(win);
elm_object_text_set(ct,
"\"The future of the art: R or G or B?\", by Rusty");
elm_object_content_set(bb, ct);
elm_box_pack_end(bx, bb);
evas_object_show(bb);
bb = elm_bubble_add(win);
elm_object_text_set(bb, "Message 2");
elm_object_part_text_set(bb, "info", "10:32 4/11/2008");
evas_object_smart_callback_add(bb, "clicked", _print_clicked, NULL);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ct = elm_label_add(win);
elm_object_text_set(ct, "Corner: base (top-left) - no icon");
elm_object_content_set(bb, ct);
elm_box_pack_end(bx, bb);
evas_object_show(bb);
evas_object_show(win);
}
TEST_END

View File

@ -1,206 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_bt_repeated(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
static int count;
char buf[16];
snprintf(buf, sizeof(buf), "count=%d", count++);
if (count >= 10000)
count = 0;
elm_object_text_set(obj, buf);
}
static void
_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
int param = (int)(data);
printf("clicked event on Button:%d\n", param);
}
static void
_bt_unpressed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
int param = (int)(data);
printf("unpressed event on Button:%d\n", param);
}
enum _api_state
{
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api __UNUSED__)
{
return;
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_button)
{
Evas_Object *bg, *bx, *bxx, *scr,*ic, *bt;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
scr = elm_scroller_add(win);
elm_scroller_bounce_set(scr, EINA_FALSE, EINA_TRUE);
elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
evas_object_show(scr);
evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(scr, bx);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_text_set(bt, "Icon sized to button");
elm_object_content_set(bt, ic);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)1);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)1);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
ic = elm_icon_add(bx);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
bt = elm_button_add(win);
elm_object_text_set(bt, "Icon no scale");
elm_object_content_set(bt, ic);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)2);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)2);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_text_set(bt, "Disabled Button");
elm_object_content_set(bt, ic);
elm_object_disabled_set(bt, 1);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)3);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)3);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_content_set(bt, ic);
elm_object_disabled_set(bt, 1);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)4);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)4);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
bt = elm_button_add(win);
elm_object_text_set(bt, "Label Only");
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)5);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)5);
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "repeated", _bt_repeated, NULL);
elm_button_autorepeat_set(bt, 1);
elm_button_autorepeat_initial_timeout_set(bt, 2.0);
elm_button_autorepeat_gap_timeout_set(bt, 0.5);
evas_object_show(bt);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
bt = elm_button_add(win);
elm_object_content_set(bt, ic);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)6);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)6);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
bt = elm_button_add(win);
elm_object_style_set(bt, "anchor");
elm_object_text_set(bt, "Anchor style");
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)7);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)7);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_style_set(bt, "anchor");
elm_object_content_set(bt, ic);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)8);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)8);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_access_info_set(bt, "This is some custom text describing this widget");
elm_object_style_set(bt, "anchor");
elm_object_content_set(bt, ic);
elm_object_disabled_set(bt, 1);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)9);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)9);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
}
TEST_END

View File

@ -1,144 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
enum _api_state
{
STATE_MARK_MONTHLY,
STATE_MARK_WEEKLY,
STATE_SUNDAY_HIGHLIGHT,
STATE_SELECT_DATE_DISABLED_WITH_MARKS,
STATE_SELECT_DATE_DISABLED_NO_MARKS,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
static Elm_Calendar_Mark *m = NULL;
if(!eina_list_count(items))
return;
switch(api->state)
{ /* Put all api-changes under switch */
case STATE_MARK_MONTHLY:
{
Evas_Object *cal = eina_list_nth(items, 0);
time_t sec_per_day = (60*60*24);
time_t sec_per_year = sec_per_day * 365;
time_t the_time = (sec_per_year * 41) + (sec_per_day * 9); /* Set date to DEC 31, 2010 */
elm_calendar_min_max_year_set(cal, 2010, 2011);
m = elm_calendar_mark_add(cal, "checked", gmtime(&the_time), ELM_CALENDAR_MONTHLY);
elm_calendar_selected_time_set(cal, gmtime(&the_time));
}
break;
case STATE_MARK_WEEKLY:
{
Evas_Object *cal = eina_list_nth(items, 0);
time_t sec_per_day = (60*60*24);
time_t sec_per_year = sec_per_day * 365;
time_t the_time = (sec_per_year * 41) + (sec_per_day * 4); /* Set date to DEC 26, 2010 */
elm_calendar_mark_del(m);
m = elm_calendar_mark_add(cal, "checked", gmtime(&the_time), ELM_CALENDAR_WEEKLY);
elm_calendar_selected_time_set(cal, gmtime(&the_time));
}
break;
case STATE_SUNDAY_HIGHLIGHT:
{
Evas_Object *cal = eina_list_nth(items, 0);
time_t sec_per_day = (60*60*24);
time_t sec_per_year = sec_per_day * 365;
time_t the_time = (sec_per_year * 41) + (sec_per_day * 3); /* Set date to DEC 25, 2010 */
/* elm_calendar_mark_del(m); */
m = elm_calendar_mark_add(cal, "holiday", gmtime(&the_time), ELM_CALENDAR_WEEKLY);
elm_calendar_selected_time_set(cal, gmtime(&the_time));
}
break;
case STATE_SELECT_DATE_DISABLED_WITH_MARKS:
{
Evas_Object *cal = eina_list_nth(items, 0);
time_t sec_per_day = (60*60*24);
time_t sec_per_year = sec_per_day * 365;
time_t the_time = (sec_per_year * 41) + (sec_per_day * 10); /* Set date to JAN 01, 2011 */
elm_calendar_day_selection_enabled_set(cal, EINA_FALSE);
elm_calendar_selected_time_set(cal, gmtime(&the_time));
}
break;
case STATE_SELECT_DATE_DISABLED_NO_MARKS:
{
Evas_Object *cal = eina_list_nth(items, 0);
time_t sec_per_day = (60*60*24);
time_t sec_per_year = sec_per_day * 365;
time_t the_time = (sec_per_year * 41) + (sec_per_day * 40); /* Set date to FEB 01, 2011 */
elm_calendar_marks_clear(cal);
elm_calendar_day_selection_enabled_set(cal, EINA_FALSE);
elm_calendar_selected_time_set(cal, gmtime(&the_time));
}
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
/* A simple test, just displaying calendar in it's default state */
TEST_START(test_calendar)
{
Evas_Object *bg, *bx, *bxx, *cal;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
cal = elm_calendar_add(win);
evas_object_size_hint_weight_set(cal, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, cal);
time_t sec_per_day = (60*60*24);
time_t sec_per_year = sec_per_day * 365;
time_t the_time = (sec_per_year * 41) + (sec_per_day * 9); /* Set date to DEC 31, 2010 */
elm_calendar_selected_time_set(cal, gmtime(&the_time));
elm_calendar_min_max_year_set(cal, 2010, 2010);
evas_object_show(cal);
evas_object_show(win);
}
TEST_END

View File

@ -1,76 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_check)
{
Evas_Object *bg, *bx, *ic, *ck;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
ck = elm_check_add(win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
elm_object_text_set(ck, "Icon sized to check");
elm_object_content_set(ck, ic);
elm_check_state_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
ck = elm_check_add(win);
elm_object_text_set(ck, "Icon no scale");
elm_object_content_set(ck, ic);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_show(ic);
ck = elm_check_add(win);
elm_object_text_set(ck, "Label Only");
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
ck = elm_check_add(win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
elm_object_text_set(ck, "Disabled check");
elm_object_content_set(ck, ic);
elm_check_state_set(ck, 1);
elm_box_pack_end(bx, ck);
elm_object_disabled_set(ck, 1);
evas_object_show(ck);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
ck = elm_check_add(win);
elm_object_content_set(ck, ic);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_show(ic);
evas_object_show(win);
}
TEST_END

View File

@ -1,239 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
enum _api_state
{
CLOCK_HIDE_SEC,
CLOCK_SHOW_AM_PM,
CLOCK_SHOW_SEC,
CLOCK_EDIT_MIN,
CLOCK_EDIT_HOUR,
CLOCK_EDIT_ALL,
CLOCK_EDIT_ALL_ARMY,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
Evas_Object *ck = eina_list_nth(items, 0);
if(!eina_list_count(items))
return;
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case CLOCK_HIDE_SEC:
elm_clock_show_seconds_set(ck, EINA_FALSE);
break;
case CLOCK_SHOW_AM_PM:
elm_clock_show_am_pm_set(ck, EINA_TRUE);
break;
case CLOCK_SHOW_SEC:
elm_clock_show_seconds_set(ck, EINA_TRUE);
break;
case CLOCK_EDIT_MIN:
elm_clock_edit_set(ck, ELM_CLOCK_MIN_DECIMAL | ELM_CLOCK_MIN_UNIT);
break;
case CLOCK_EDIT_HOUR:
elm_clock_edit_set(ck, ELM_CLOCK_NONE);
elm_clock_edit_set(ck, ELM_CLOCK_HOUR_DECIMAL | ELM_CLOCK_HOUR_UNIT);
break;
case CLOCK_EDIT_ALL:
elm_clock_edit_set(ck, ELM_CLOCK_ALL);
break;
case CLOCK_EDIT_ALL_ARMY:
elm_clock_show_am_pm_set(ck, EINA_FALSE);
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_clock)
{
Evas_Object *bg, *bx, *bxx, *ck;
unsigned int digedit;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, EINA_TRUE);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
ck = elm_clock_add(win);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
elm_clock_show_am_pm_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
elm_clock_show_seconds_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
elm_clock_show_seconds_set(ck, 1);
elm_clock_show_am_pm_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
elm_clock_show_seconds_set(ck, 1);
elm_clock_show_am_pm_set(ck, 0);
elm_clock_time_set(ck, 23, 59, 57);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
elm_clock_edit_set(ck, 1);
elm_clock_show_seconds_set(ck, 1);
elm_clock_show_am_pm_set(ck, 1);
elm_clock_time_set(ck, 10, 11, 12);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
elm_clock_show_seconds_set(ck, 1);
elm_clock_edit_set(ck, 1);
digedit = ELM_CLOCK_HOUR_UNIT | ELM_CLOCK_MIN_UNIT | ELM_CLOCK_SEC_UNIT;
elm_clock_digit_edit_set(ck, digedit);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_show(win);
}
TEST_END
static void
_edit_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *ck = data;
if (!elm_clock_edit_get(ck)) {
elm_object_text_set(obj, "Done");
elm_clock_edit_set(ck, 1);
return;
}
elm_object_text_set(obj, "Edit");
elm_clock_edit_set(ck, 0);
}
static void
_hmode_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *ck = data;
if (!elm_clock_show_am_pm_get(ck)) {
elm_object_text_set(obj, "24h");
elm_clock_show_am_pm_set(ck, 1);
return;
}
elm_object_text_set(obj, "12h");
elm_clock_show_am_pm_set(ck, 0);
}
TEST_START(test_clock2)
{
Evas_Object *bg, *bx, *bxx, *hbx, *ck, *bt;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
ck = elm_clock_add(win);
elm_clock_time_set(ck, 0, 15, 3);
elm_clock_digit_edit_set(ck, ELM_CLOCK_NONE);
elm_clock_show_seconds_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
hbx = elm_box_add(win);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_horizontal_set(hbx, EINA_TRUE);
elm_box_pack_end(bx, hbx);
evas_object_show(hbx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Edit");
evas_object_smart_callback_add(bt, "clicked", _edit_bt_clicked, ck);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "24h");
evas_object_smart_callback_add(bt, "clicked", _hmode_bt_clicked, ck);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END

View File

@ -1,89 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_colorselector_clicked_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *re = data;
int r, g, b, a;
elm_colorselector_color_get(obj, &r, &g, &b, &a);
printf("Current Color [r=%d g=%d b=%d a=%d]\n",r, g, b, a);
/* Fix Alpha pre multiplication by edje */
r = (r * a) / 255;
g = (g * a) / 255;
b = (b * a) / 255;
evas_object_color_set(re, r, g, b, a);
}
TEST_START(test_colorselector)
{
Evas_Object *bg, *bx, *cp, *fr, *ly, *re;
char buf[PATH_MAX];
int r, g, b, a;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_color_set(bg, 255, 255, 255, 255);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fr = elm_frame_add(win);
evas_object_size_hint_weight_set(fr, 1.0, 0.5);
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(fr, "Color View");
elm_box_pack_end(bx, fr);
evas_object_show(fr);
ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/colorpreview.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "main");
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(fr, ly);
evas_object_show(ly);
re = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_show(re);
elm_object_part_content_set(ly, "ColorPreview", re);
fr = elm_frame_add(win);
evas_object_size_hint_weight_set(fr, 1.0, 0);
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0);
elm_object_text_set(fr, "Color Selector");
elm_box_pack_end(bx, fr);
evas_object_show(fr);
cp = elm_colorselector_add(win);
a = 180;
r = 255;
g = 160;
b = 132;
elm_colorselector_color_set(cp, r, g, b, a);
evas_object_size_hint_weight_set(cp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(cp, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(fr, cp);
evas_object_show(cp);
evas_object_smart_callback_add(cp, "changed", _colorselector_clicked_cb, re);
elm_colorselector_color_get(cp, &r, &g, &b, &a);
/* Fix Alpha pre multiplication by edje */
r = (r * a) / 255;
g = (g * a) / 255;
b = (b * a) / 255;
evas_object_color_set(re, r, g, b, a);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,200 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_conformant)
{
Evas_Object *bg, *conform, *btn, *bx, *en;
elm_win_conformant_set(win, 1);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
conform = elm_conformant_add(win);
elm_win_resize_object_add(win, conform);
evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(conform);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_single_line_set(en, 1);
elm_entry_bounce_set(en, 1, 0);
elm_entry_entry_set(en, "This is the top entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
evas_object_show(en);
elm_box_pack_end(bx, en);
btn = elm_button_add(win);
elm_object_text_set(btn, "Test Conformant");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_single_line_set(en, 1);
elm_entry_bounce_set(en, 1, 0);
elm_entry_entry_set(en, "This is the middle entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
evas_object_show(en);
elm_box_pack_end(bx, en);
btn = elm_button_add(win);
elm_object_text_set(btn, "Test Conformant");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_bounce_set(en, 0, 1);
elm_entry_entry_set(en,
"This is a multi-line entry at the bottom<br>"
"This can contain more than 1 line of text and be "
"scrolled around to allow for entering of lots of "
"content. It is also to test to see that autoscroll "
"moves to the right part of a larger multi-line "
"text entry that is inside of a scroller than can be "
"scrolled around, thus changing the expected position "
"as well as cursor changes updating auto-scroll when "
"it is enabled.");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(en);
elm_box_pack_end(bx, en);
elm_object_content_set(conform, bx);
evas_object_show(bx);
evas_object_resize(win, 240, 240);
evas_object_show(win);
}
TEST_END
static void
popobj(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
{
elm_pager_content_pop(data);
}
TEST_START(test_conformant2)
{
Evas_Object *bg, *conform, *btn, *bx, *en, *pg;
elm_win_conformant_set(win, 1);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_single_line_set(en, 1);
elm_entry_bounce_set(en, 1, 0);
elm_entry_entry_set(en, "This is the top entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, en);
evas_object_show(en);
btn = elm_button_add(win);
elm_object_focus_allow_set(btn, 0);
elm_object_text_set(btn, "Delete Below");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
pg = elm_pager_add(win);
evas_object_size_hint_weight_set(pg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(pg, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, pg);
evas_object_show(pg);
evas_object_smart_callback_add(btn, "clicked", popobj, pg);
conform = elm_conformant_add(win);
evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_pager_content_push(pg, conform);
evas_object_show(conform);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_bounce_set(en, 0, 1);
elm_entry_entry_set(en, "This entry and button below get deleted.");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(en);
elm_box_pack_end(bx, en);
btn = elm_button_add(win);
elm_object_focus_allow_set(btn, 0);
elm_object_text_set(btn, "Delete this bottom bit 1");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked", popobj, pg);
elm_object_content_set(conform, bx);
evas_object_show(bx);
conform = elm_conformant_add(win);
evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_pager_content_push(pg, conform);
evas_object_show(conform);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_bounce_set(en, 0, 1);
elm_entry_entry_set(en, "This entry and button below get deleted.");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(en);
elm_box_pack_end(bx, en);
btn = elm_button_add(win);
elm_object_focus_allow_set(btn, 0);
elm_object_text_set(btn, "Delete this bottom bit 2");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked", popobj, pg);
elm_object_content_set(conform, bx);
evas_object_show(bx);
evas_object_resize(win, 240, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,240 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_dismissed(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
evas_object_del(obj);
}
static void
_print_current_dir(Evas_Object *obj)
{
Elm_Ctxpopup_Direction dir;
dir = elm_ctxpopup_direction_get(obj);
switch(dir)
{
case ELM_CTXPOPUP_DIRECTION_LEFT:
printf("ctxpopup direction: left!\n");
break;
case ELM_CTXPOPUP_DIRECTION_RIGHT:
printf("ctxpopup direction: right!\n");
break;
case ELM_CTXPOPUP_DIRECTION_UP:
printf("ctxpopup direction: up!\n");
break;
case ELM_CTXPOPUP_DIRECTION_DOWN:
printf("ctxpopup direction: down!\n");
break;
case ELM_CTXPOPUP_DIRECTION_UNKNOWN:
printf("ctxpopup direction: unknow!\n");
break;
}
}
static void
_ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("ctxpopup item selected: %s\n",
elm_object_item_text_get(event_info));
}
#define ITEM_NEW(_hov, _label, _icon) \
if(_icon) \
{ \
ic = elm_icon_add(obj); \
elm_icon_standard_set(ic, _icon); \
elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE); \
} \
else \
ic = NULL; \
it = elm_ctxpopup_item_append(_hov, _label, ic, _ctxpopup_item_cb, NULL); \
static void
_list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
Elm_Object_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
evas_object_smart_callback_add(ctxpopup,
"dismissed",
_dismissed,
NULL);
ITEM_NEW(ctxpopup, "Go to home folder", "home");
ITEM_NEW(ctxpopup, "Save file", "file");
ITEM_NEW(ctxpopup, "Delete file", "delete");
ITEM_NEW(ctxpopup, "Navigate to folder", "folder");
elm_object_item_disabled_set(it, EINA_TRUE);
ITEM_NEW(ctxpopup, "Edit entry", "edit");
ITEM_NEW(ctxpopup, "Set date and time", "clock");
elm_object_item_disabled_set(it, EINA_TRUE);
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_size_hint_max_set(ctxpopup, 240, 240);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
_print_current_dir(ctxpopup);
}
static void
_list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
Elm_Object_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
evas_object_smart_callback_add(ctxpopup,
"dismissed",
_dismissed,
NULL);
ITEM_NEW(ctxpopup, NULL, "home");
ITEM_NEW(ctxpopup, NULL, "file");
ITEM_NEW(ctxpopup, NULL, "delete");
ITEM_NEW(ctxpopup, NULL, "folder");
ITEM_NEW(ctxpopup, NULL, "edit");
elm_object_item_disabled_set(it, EINA_TRUE);
ITEM_NEW(ctxpopup, NULL, "clock");
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_size_hint_max_set(ctxpopup, 240, 240);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
_print_current_dir(ctxpopup);
}
static void
_list_item_cb3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
Elm_Object_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
evas_object_smart_callback_add(ctxpopup,
"dismissed",
_dismissed,
NULL);
ITEM_NEW(ctxpopup, "Eina", NULL);
ITEM_NEW(ctxpopup, "Eet", NULL);
ITEM_NEW(ctxpopup, "Evas", NULL);
ITEM_NEW(ctxpopup, "Ecore", NULL);
elm_object_item_disabled_set(it, EINA_TRUE);
ITEM_NEW(ctxpopup, "Embryo", NULL);
ITEM_NEW(ctxpopup, "Edje", NULL);
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
_print_current_dir(ctxpopup);
}
static void
_list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
Elm_Object_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
evas_object_smart_callback_add(ctxpopup,
"dismissed",
_dismissed,
NULL);
elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE);
ITEM_NEW(ctxpopup, NULL, "home");
ITEM_NEW(ctxpopup, NULL, "file");
ITEM_NEW(ctxpopup, NULL, "delete");
ITEM_NEW(ctxpopup, NULL, "folder");
ITEM_NEW(ctxpopup, NULL, "edit");
ITEM_NEW(ctxpopup, NULL, "clock");
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_size_hint_max_set(ctxpopup, 240, 240);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
_print_current_dir(ctxpopup);
}
static void
_list_item_cb5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *btn, *sc, *bx;
Evas_Coord x,y;
bx = elm_box_add(obj);
evas_object_size_hint_min_set(bx, 150, 150);
sc = elm_scroller_add(bx);
elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(sc);
btn = elm_button_add(sc);
elm_object_text_set(btn, "Enlightenment");
evas_object_size_hint_min_set(btn, 140, 140);
elm_object_content_set(sc, btn);
elm_box_pack_end(bx, sc);
ctxpopup = elm_ctxpopup_add(obj);
evas_object_smart_callback_add(ctxpopup,
"dismissed",
_dismissed,
NULL);
elm_object_content_set(ctxpopup, bx);
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
_print_current_dir(ctxpopup);
}
static void _list_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
elm_list_item_selected_set(event_info, EINA_FALSE);
}
TEST_START(test_ctxpopup)
{
Evas_Object *bg, *list;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
list = elm_list_add(win);
elm_win_resize_object_add(win, list);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_list_mode_set(list, ELM_LIST_COMPRESS);
evas_object_smart_callback_add(list, "selected", _list_clicked, NULL);
#undef ITEM_NEW
elm_list_item_append(list, "Ctxpopup with icons and labels", NULL, NULL,
_list_item_cb, NULL);
elm_list_item_append(list, "Ctxpopup with icons only", NULL, NULL,
_list_item_cb2, NULL);
elm_list_item_append(list, "Ctxpopup with labels only", NULL, NULL,
_list_item_cb3, NULL);
elm_list_item_append(list, "Ctxpopup at horizontal mode", NULL, NULL,
_list_item_cb4, NULL);
elm_list_item_append(list, "Ctxpopup with user content", NULL, NULL,
_list_item_cb5, NULL);
evas_object_show(list);
elm_list_go(list);
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,335 +0,0 @@
#include <Elementary.h>
#include <Elementary_Cursor.h>
#include "tsuite.h"
static void
_disk_sel(void *data __UNUSED__, Evas_Object * obj __UNUSED__, void *event_info)
{
Elm_Object_Item *ds_it = event_info;
printf("Equinox: %s\n", elm_diskselector_item_label_get(ds_it));
}
static void
_disk_next(void *data __UNUSED__, Evas_Object * obj __UNUSED__, void *event_info)
{
Elm_Object_Item *next_ds_it, *prev_ds_it, *ds_it = event_info;
prev_ds_it = elm_diskselector_item_prev_get(ds_it);
next_ds_it = elm_diskselector_item_next_get(ds_it);
printf("Prev: %s, Next: %s\n",
elm_diskselector_item_label_get(prev_ds_it),
elm_diskselector_item_label_get(next_ds_it));
}
static void
_print_disk_info_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
Elm_Object_Item *ds_it = event_info;
printf("Selected label: %s\n", elm_diskselector_item_label_get(ds_it));
}
static Evas_Object *
_disk_create(Evas_Object *win, Eina_Bool round)
{
Elm_Object_Item *ds_it;
Evas_Object *di;
di = elm_diskselector_add(win);
elm_diskselector_item_append(di, "January", NULL, NULL, NULL);
elm_diskselector_item_append(di, "February", NULL, _disk_next, NULL);
elm_diskselector_item_append(di, "March", NULL, _disk_sel, NULL);
elm_diskselector_item_append(di, "April", NULL, NULL, NULL);
elm_diskselector_item_append(di, "May", NULL, NULL, NULL);
elm_diskselector_item_append(di, "June", NULL, NULL, NULL);
elm_diskselector_item_append(di, "July", NULL, NULL, NULL);
ds_it = elm_diskselector_item_append(di, "August", NULL, NULL, NULL);
elm_diskselector_item_append(di, "September", NULL, _disk_sel, NULL);
elm_diskselector_item_append(di, "October", NULL, NULL, NULL);
elm_diskselector_item_append(di, "November", NULL, NULL, NULL);
elm_diskselector_item_append(di, "December", NULL, NULL, NULL);
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
elm_diskselector_round_set(di, round);
return di;
}
enum _api_state
{
SCROLLER_POLICY_SET_ON,
SCROLLER_POLICY_SET_OFF,
BOUNCE_SET,
ITEM_LABEL_SET,
TOOLTIP_TEXT_SET,
ITEM_TOOLTIP_UNSET,
ITEM_CURSOR_SET,
ITEM_CURSOR_UNSET,
ITEM_ICON_SET,
SELECTED_SET,
ITEM_PREV_GET,
ITEM_DEL_NOT_SELECTED,
ITEM_DEL, /* delete when selected */
CLEAR,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *disks = elm_box_children_get(api->data);
if(!eina_list_count(disks))
return;
switch(api->state)
{ /* Put all api-changes under switch */
case SCROLLER_POLICY_SET_ON: /* 0 */
{ /* Get first disk */
Evas_Object *disk = eina_list_nth(disks, 0);
elm_diskselector_scroller_policy_set(disk, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
}
break;
case SCROLLER_POLICY_SET_OFF: /* 1 */
{ /* Get first disk */
Evas_Object *disk = eina_list_nth(disks, 0);
elm_diskselector_scroller_policy_set(disk, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
}
break;
case BOUNCE_SET: /* 2 */
{ /* Get second disk, cancel bounce */
Evas_Object *disk = eina_list_nth(disks, 1);
elm_diskselector_bounce_set(disk, EINA_FALSE, EINA_FALSE);
}
break;
case ITEM_LABEL_SET: /* 3 */
elm_diskselector_item_label_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), "Label from API");
break;
case TOOLTIP_TEXT_SET: /* 4 */
elm_diskselector_item_tooltip_text_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), "Tooltip from API");
break;
case ITEM_TOOLTIP_UNSET: /* 5 */
elm_diskselector_item_tooltip_unset(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)));
break;
case ITEM_CURSOR_SET: /* 6 */
elm_diskselector_item_cursor_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), ELM_CURSOR_HAND2);
break;
case ITEM_CURSOR_UNSET: /* 7 */
elm_diskselector_item_cursor_unset(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)));
break;
case ITEM_ICON_SET: /* 8 */
{ /* Set icon of selected item in first disk */
char buf[PATH_MAX];
Evas_Object *ic = elm_icon_add(elm_object_parent_widget_get(eina_list_nth(disks, 0)));
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_diskselector_item_icon_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), ic);
evas_object_show(ic);
}
break;
case SELECTED_SET: /* 9 */
{ /* Select NEXT item of third disk */
elm_diskselector_item_selected_set(elm_diskselector_item_next_get(elm_diskselector_selected_item_get(eina_list_nth(disks, 2))), EINA_TRUE);
}
break;
case ITEM_PREV_GET: /* 10 */
{ /* Select PREV item of third disk */
elm_diskselector_item_selected_set(elm_diskselector_item_prev_get(elm_diskselector_selected_item_get(eina_list_nth(disks, 2))), EINA_TRUE);
}
break;
case ITEM_DEL_NOT_SELECTED: /* 11 */
{ /* Remove selected item of third disk */
elm_diskselector_item_del(elm_diskselector_item_prev_get(elm_diskselector_selected_item_get(eina_list_nth(disks, 2))));
}
break;
case ITEM_DEL: /* 12 */
{ /* Remove selected item of first disk */
elm_diskselector_item_del(elm_diskselector_selected_item_get(eina_list_nth(disks, 1)));
}
break;
case CLEAR: /* 13 */
elm_diskselector_clear(eina_list_nth(disks, 0));
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_diskselector)
{
Evas_Object *bg, *bx, *bxx, *disk, *ic;
Elm_Object_Item *ds_it;
char buf[PATH_MAX];
int idx = 0;
char *month_list[] = {
"Jan", "Feb", "Mar",
"Apr", "May", "Jun",
"Jul", "Aug", "Sep",
"Oct", "Nov", "Dec"
};
char date[3];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
disk = _disk_create(win, EINA_TRUE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
ds_it = elm_diskselector_selected_item_get(disk);
elm_diskselector_item_selected_set(ds_it, EINA_FALSE);
disk = _disk_create(win, EINA_FALSE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
ds_it = elm_diskselector_first_item_get(disk);
ds_it = elm_diskselector_item_next_get(ds_it);
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
disk = _disk_create(win, EINA_FALSE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
elm_diskselector_side_label_length_set(disk, 4);
disk = elm_diskselector_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 1, 1);
elm_diskselector_item_append(disk, "Sunday", ic, NULL, NULL);
elm_diskselector_item_append(disk, "Monday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Tuesday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Wednesday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Thursday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Friday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Saturday", NULL, NULL, NULL);
elm_diskselector_round_set(disk, EINA_TRUE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
disk = elm_diskselector_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 1, 1);
elm_diskselector_item_append(disk, "머리스타일", ic, NULL, NULL);
elm_diskselector_item_append(disk, "プロが伝授する", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "生上访要求政府", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "English", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "والشريعة", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "עִבְרִית", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Grüßen", NULL, NULL, NULL);
elm_diskselector_round_set(disk, EINA_TRUE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
// displayed item number setting example
disk = elm_diskselector_add(win);
elm_diskselector_display_item_num_set(disk, 5);
printf("Number of Items in DiskSelector : %d\n",
elm_diskselector_display_item_num_get(disk));
for (idx = 0; idx < (int)(sizeof(month_list) / sizeof(month_list[0])); idx++)
{
ds_it = elm_diskselector_item_append(disk, month_list[idx], NULL, NULL,
NULL);
}
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
elm_diskselector_round_set(disk, EINA_TRUE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
// displayed item number setting example
disk = elm_diskselector_add(win);
elm_diskselector_display_item_num_set(disk, 7);
printf("Number of Items in DiskSelector : %d\n", elm_diskselector_display_item_num_get(disk));
for (idx = 1; idx < 31; idx++)
{
snprintf(date, sizeof(date), "%d", idx);
ds_it = elm_diskselector_item_append(disk, date, NULL, NULL, NULL);
}
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
elm_diskselector_round_set(disk, EINA_TRUE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

File diff suppressed because it is too large Load Diff

View File

@ -1,281 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
my_fileselector_done(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info)
{
/* event_info conatin the full path of the selected file
* or NULL if none is selected or cancel is pressed */
const char *selected = event_info;
if (selected)
printf("Selected file: %s\n", selected);
/* else test window deleted in tsuite_cleanup
evas_object_del(data); delete the test window */
}
static void
my_fileselector_selected(void *data __UNUSED__,
Evas_Object *obj,
void *event_info)
{
/* event_info conatin the full path of the selected file */
const char *selected = event_info;
printf("Selected file: %s\n", selected);
/* or you can query the selection */
printf("or: %s\n", elm_fileselector_selected_get(obj));
}
static void
_is_save_clicked(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs = data;
printf("Toggle Is save\n");
if (elm_fileselector_is_save_get(fs))
elm_fileselector_is_save_set(fs, EINA_FALSE);
else
elm_fileselector_is_save_set(fs, EINA_TRUE);
}
static void
_folder_only_clicked(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs = data;
printf("Toggle Folder only\n");
if (elm_fileselector_folder_only_get(fs))
elm_fileselector_folder_only_set(fs, EINA_FALSE);
else
elm_fileselector_folder_only_set(fs, EINA_TRUE);
}
static void
_expandable_clicked(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs = data;
printf("Toggle Expandable\n");
if (elm_fileselector_expandable_get(fs))
elm_fileselector_expandable_set(fs, EINA_FALSE);
else
elm_fileselector_expandable_set(fs, EINA_TRUE);
}
static void
_sel_get_clicked(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs = data;
printf("Get Selected: %s\n", elm_fileselector_selected_get(fs));
}
static void
_path_get_clicked(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs = data;
printf("Get Path: %s\n", elm_fileselector_path_get(fs));
}
static void
_mode_cycle_clicked(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs = data;
Elm_Fileselector_Mode mode;
mode = (elm_fileselector_mode_get(fs) + 1) % ELM_FILESELECTOR_LAST;
elm_fileselector_mode_set(fs, mode);
printf("Setting mode to: %d\n", mode);
}
enum _api_state
{
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
if(!eina_list_count(items))
return;
/* Get first item of list of vbox children
Evas_Object *fs_bt = eina_list_nth(items, 0); */
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
static void
create_dir_struct(void)
{
FILE *fp;
mkdir("/tmp/test_fs_bt", S_IRWXU);
fp = fopen("/tmp/test_fs_bt/a_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/k_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/m_file.txt", "w");
if (fp) fclose(fp);
mkdir("/tmp/test_fs_bt/a_subdir", S_IRWXU);
fp = fopen("/tmp/test_fs_bt/a_subdir/d_sub_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/a_subdir/j_sub_file.txt", "w");
if (fp) fclose(fp);
}
TEST_START(test_fileselector)
{
Evas_Object *fs, *bg, *vbox, *hbox, *bxx, *bt, *sep;
/* Set the locale according to the system pref.
* If you dont do so the file selector will order the files list in
* a case sensitive manner
*/
setlocale(LC_ALL, "");
elm_need_ethumb();
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
vbox = elm_box_add(win);
api->data = vbox;
// elm_win_resize_object_add(win, vbox);
evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(vbox);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, vbox);
create_dir_struct(); /* Create a dir struct in /tmp */
fs = elm_fileselector_add(win);
/* enable the fs file name entry */
elm_fileselector_is_save_set(fs, EINA_TRUE);
/* make the file list a tree with dir expandable in place */
elm_fileselector_expandable_set(fs, EINA_FALSE);
/* start the fileselector in the test dir */
elm_fileselector_path_set(fs, "/tmp/test_fs_bt");
/* allow fs to expand in x & y */
evas_object_size_hint_weight_set(fs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fs, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(vbox, fs);
evas_object_show(fs); // TODO fix this is the widget
/* the 'done' cb is called when the user press ok/cancel */
evas_object_smart_callback_add(fs, "done", my_fileselector_done, win);
/* the 'selected' cb is called when the user click on a file/dir */
evas_object_smart_callback_add(fs, "selected", my_fileselector_selected,
win);
/* test buttons */
sep = elm_separator_add(win);
elm_separator_horizontal_set(sep, EINA_TRUE);
elm_box_pack_end(vbox, sep);
evas_object_show(sep);
hbox = elm_box_add(win);
elm_box_horizontal_set(hbox, EINA_TRUE);
elm_box_pack_end(vbox, hbox);
evas_object_show(hbox);
bt = elm_check_add(win);
elm_object_text_set(bt, "is save");
elm_check_state_set(bt, elm_fileselector_is_save_get(fs));
evas_object_smart_callback_add(bt, "changed", _is_save_clicked, fs);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_check_add(win);
elm_object_text_set(bt, "folder only");
elm_check_state_set(bt, elm_fileselector_folder_only_get(fs));
evas_object_smart_callback_add(bt, "changed", _folder_only_clicked, fs);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_check_add(win);
elm_object_text_set(bt, "expandable");
elm_check_state_set(bt, elm_fileselector_expandable_get(fs));
evas_object_smart_callback_add(bt, "changed", _expandable_clicked, fs);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
hbox = elm_box_add(win);
elm_box_horizontal_set(hbox, EINA_TRUE);
elm_box_pack_end(vbox, hbox);
evas_object_show(hbox);
bt = elm_button_add(win);
elm_object_text_set(bt, "selected get");
evas_object_smart_callback_add(bt, "clicked", _sel_get_clicked, fs);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "path get");
evas_object_smart_callback_add(bt, "clicked", _path_get_clicked, fs);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "mode cycle");
evas_object_smart_callback_add(bt, "clicked", _mode_cycle_clicked, fs);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
evas_object_resize(win, 240, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,227 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_file_chosen(void *data,
Evas_Object *obj __UNUSED__,
void *event_info)
{
Evas_Object *entry = data;
const char *file = event_info;
if (file)
{
elm_entry_entry_set(entry, file);
printf("File chosen: %s\n", file);
}
else
printf("File selection canceled.\n");
}
static void
_inwin_mode_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_bt = data;
Eina_Bool value = elm_fileselector_button_inwin_mode_get(fs_bt);
elm_fileselector_button_inwin_mode_set(fs_bt, !value);
printf("Inwin mode set to: %s\n", value ? "false" : "true");
}
static void
_current_sel_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_bt = data;
Eina_Bool value = elm_fileselector_button_is_save_get(fs_bt);
elm_fileselector_button_is_save_set(fs_bt, !value);
printf("Current selection editable entry set to: %s\n",
value ? "false" : "true");
}
static void
_folder_only_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_bt = data;
Eina_Bool value = elm_fileselector_button_folder_only_get(fs_bt);
elm_fileselector_button_folder_only_set(fs_bt, !value);
printf("Folder only flag set to: %s\n", value ? "false" : "true");
}
static void
_expandable_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_bt = data;
Eina_Bool value = elm_fileselector_button_expandable_get(fs_bt);
elm_fileselector_button_expandable_set(fs_bt, !value);
printf("Expandable flag set to: %s\n", value ? "false" : "true");
}
enum _api_state
{
ICON_UNSET,
WINDOW_TITLE_SET,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
if(!eina_list_count(items))
return;
/* Get first item of list of vbox children */
Evas_Object *fs_bt = eina_list_nth(items, 0);
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case ICON_UNSET:
elm_fileselector_button_icon_unset(fs_bt);
break;
case WINDOW_TITLE_SET:
elm_fileselector_button_window_title_set(fs_bt, "Custom title from API");
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
static void
create_dir_struct(void)
{
FILE *fp;
mkdir("/tmp/test_fs_bt", S_IRWXU);
fp = fopen("/tmp/test_fs_bt/a_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/k_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/m_file.txt", "w");
if (fp) fclose(fp);
mkdir("/tmp/test_fs_bt/a_subdir", S_IRWXU);
fp = fopen("/tmp/test_fs_bt/a_subdir/d_sub_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/a_subdir/j_sub_file.txt", "w");
if (fp) fclose(fp);
}
TEST_START(test_fileselector_button)
{
Evas_Object *bg, *vbox, *hbox, *bxx, *ic, *bt, *fs_bt, *en, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
vbox = elm_box_add(win);
api->data = vbox;
evas_object_show(vbox);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, vbox);
create_dir_struct(); /* Create a dir struct in /tmp */
/* file selector button */
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "file");
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
fs_bt = elm_fileselector_button_add(win);
elm_object_text_set(fs_bt, "Select a file");
elm_fileselector_button_icon_set(fs_bt, ic);
elm_fileselector_button_path_set(fs_bt, "/tmp/test_fs_bt");
elm_box_pack_end(vbox, fs_bt);
evas_object_show(fs_bt);
evas_object_show(ic);
/* attribute setting buttons */
hbox = elm_box_add(win);
elm_box_horizontal_set(hbox, EINA_TRUE);
elm_box_pack_end(vbox, hbox);
evas_object_show(hbox);
bt = elm_check_add(win);
elm_object_style_set(bt, "toggle");
elm_object_text_set(bt, "current selection text entry");
evas_object_smart_callback_add(bt, "changed", _current_sel_toggle, fs_bt);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_check_add(win);
elm_object_style_set(bt, "toggle");
elm_object_text_set(bt, "Inwin mode");
elm_check_state_set (bt, EINA_TRUE);
evas_object_smart_callback_add(bt, "changed", _inwin_mode_toggle, fs_bt);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_check_add(win);
elm_object_style_set(bt, "toggle");
elm_object_text_set(bt, "Folder only mode");
evas_object_smart_callback_add(bt, "changed", _folder_only_toggle, fs_bt);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_check_add(win);
elm_object_style_set(bt, "toggle");
elm_object_text_set(bt, "Expandable mode");
evas_object_smart_callback_add(bt, "changed", _expandable_toggle, fs_bt);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
lb = elm_label_add(win);
elm_object_text_set(lb, "Last selection:");
elm_box_pack_end(vbox, lb);
evas_object_show(lb);
en = elm_entry_add(win);
elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
elm_entry_editable_set(en, EINA_FALSE);
evas_object_smart_callback_add(fs_bt, "file,chosen", _file_chosen, en);
elm_box_pack_end(vbox, en);
evas_object_show(en);
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,236 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_file_chosen(void *data,
Evas_Object *obj __UNUSED__,
void *event_info)
{
Evas_Object *entry = data;
char *file = event_info;
elm_entry_entry_set(entry, file);
printf("File chosen: %s\n", file);
}
static void
_inwin_mode_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_en = data;
Eina_Bool value = elm_fileselector_entry_inwin_mode_get(fs_en);
elm_fileselector_entry_inwin_mode_set(fs_en, !value);
printf("Inwin mode set to: %s\n", value ? "false" : "true");
}
static void
_folder_only_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_en = data;
Evas_Object *ic = elm_fileselector_entry_button_icon_get(fs_en);
Eina_Bool value = elm_fileselector_entry_folder_only_get(fs_en);
elm_fileselector_entry_folder_only_set(fs_en, !value);
printf("Folder only flag set to: %s\n", value ? "false" : "true");
if (!value)
{
elm_icon_standard_set(ic, "folder");
elm_object_text_set(fs_en, "Select a folder");
}
else
{
elm_icon_standard_set(ic, "file");
elm_object_text_set(fs_en, "Select a file");
}
}
static void
_expandable_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_en = data;
Eina_Bool value = elm_fileselector_entry_expandable_get(fs_en);
elm_fileselector_entry_expandable_set(fs_en, !value);
printf("Expandable flag set to: %s\n", value ? "false" : "true");
}
static void
_disabled_toggle(void *data,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
Evas_Object *fs_en = data;
Eina_Bool value = elm_object_disabled_get(fs_en);
elm_object_disabled_set(fs_en, !value);
printf("Disabled flag set to: %s\n", value ? "false" : "true");
}
enum _api_state
{
ICON_UNSET,
WINDOW_TITLE_SET,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
if(!eina_list_count(items))
return;
/* Get first item of list of vbox children */
Evas_Object *fs_bt = eina_list_nth(items, 0);
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case ICON_UNSET:
elm_fileselector_entry_button_icon_unset(fs_bt);
break;
case WINDOW_TITLE_SET:
elm_fileselector_entry_window_title_set(fs_bt, "Custom title from API");
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
static void
create_dir_struct(void)
{
FILE *fp;
mkdir("/tmp/test_fs_bt", S_IRWXU);
fp = fopen("/tmp/test_fs_bt/a_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/k_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/m_file.txt", "w");
if (fp) fclose(fp);
mkdir("/tmp/test_fs_bt/a_subdir", S_IRWXU);
fp = fopen("/tmp/test_fs_bt/a_subdir/d_sub_file.txt", "w");
if (fp) fclose(fp);
fp = fopen("/tmp/test_fs_bt/a_subdir/j_sub_file.txt", "w");
if (fp) fclose(fp);
}
TEST_START(test_fileselector_entry)
{
Evas_Object *bg, *vbox, *hbox, *bxx, *ic, *bt, *fs_en, *en, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
vbox = elm_box_add(win);
evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
api->data = vbox;
evas_object_show(vbox);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, vbox);
create_dir_struct(); /* Create a dir struct in /tmp */
/* file selector entry */
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "file");
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
fs_en = elm_fileselector_entry_add(win);
elm_fileselector_entry_path_set(fs_en, "/tmp/test_fs_bt");
elm_object_text_set(fs_en, "Select a file");
elm_fileselector_entry_button_icon_set(fs_en, ic);
evas_object_size_hint_weight_set(fs_en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(fs_en, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(vbox, fs_en);
evas_object_show(fs_en);
evas_object_show(ic);
/* attribute setting buttons */
hbox = elm_box_add(win);
elm_box_horizontal_set(hbox, EINA_TRUE);
elm_box_pack_end(vbox, hbox);
evas_object_show(hbox);
bt = elm_button_add(win);
elm_object_text_set(bt, "Toggle inwin mode");
evas_object_smart_callback_add(bt, "clicked", _inwin_mode_toggle, fs_en);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Toggle folder only mode");
evas_object_smart_callback_add(bt, "clicked", _folder_only_toggle, fs_en);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Toggle expandable mode");
evas_object_smart_callback_add(bt, "clicked", _expandable_toggle, fs_en);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
lb = elm_label_add(win);
elm_object_text_set(lb, "Last selection:");
elm_box_pack_end(vbox, lb);
evas_object_show(lb);
hbox = elm_box_add(win);
elm_box_horizontal_set(hbox, EINA_TRUE);
elm_box_pack_end(vbox, hbox);
evas_object_show(hbox);
bt = elm_button_add(win);
elm_object_text_set(bt, "Toggle disabled");
evas_object_smart_callback_add(bt, "clicked", _disabled_toggle, fs_en);
elm_box_pack_end(hbox, bt);
evas_object_show(bt);
en = elm_entry_add(win);
elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
elm_entry_editable_set(en, EINA_FALSE);
evas_object_smart_callback_add(fs_en, "file,chosen", _file_chosen, en);
elm_box_pack_end(vbox, en);
evas_object_show(en);
evas_object_resize(win, 400, 500);
evas_object_show(win);
}
TEST_END

View File

@ -1,611 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
void
my_fl_1(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_ROTATE_Y_CENTER_AXIS);
}
void
my_fl_2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_ROTATE_X_CENTER_AXIS);
}
void
my_fl_3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_ROTATE_XZ_CENTER_AXIS);
}
void
my_fl_4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_ROTATE_YZ_CENTER_AXIS);
}
void
my_fl_5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_CUBE_LEFT);
}
void
my_fl_6(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_CUBE_RIGHT);
}
void
my_fl_7(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_CUBE_UP);
}
void
my_fl_8(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *fl = data;
elm_flip_go(fl, ELM_FLIP_CUBE_DOWN);
}
TEST_START(test_flip)
{
Evas_Object *bg, *bx, *bx2, *fl, *o, *bt, *ly;
char buf[PATH_MAX];
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fl = elm_flip_add(win);
evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, fl);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_01.jpg");
elm_bg_file_set(o, buf, NULL);
elm_flip_content_front_set(fl, o);
evas_object_show(o);
ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "layout");
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_flip_content_back_set(fl, ly);
evas_object_show(ly);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
elm_object_part_content_set(ly, "element1", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
elm_object_part_content_set(ly, "element2", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
elm_object_part_content_set(ly, "element3", bt);
evas_object_show(bt);
evas_object_show(fl);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
bt = elm_button_add(win);
elm_object_text_set(bt, "1");
evas_object_smart_callback_add(bt, "clicked", my_fl_1, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "2");
evas_object_smart_callback_add(bt, "clicked", my_fl_2, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "3");
evas_object_smart_callback_add(bt, "clicked", my_fl_3, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "4");
evas_object_smart_callback_add(bt, "clicked", my_fl_4, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
bt = elm_button_add(win);
elm_object_text_set(bt, "5");
evas_object_smart_callback_add(bt, "clicked", my_fl_5, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "6");
evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "7");
evas_object_smart_callback_add(bt, "clicked", my_fl_7, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "8");
evas_object_smart_callback_add(bt, "clicked", my_fl_8, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END
TEST_START(test_flip2)
{
Evas_Object *bg, *bx, *bx2, *fl, *o, *bt, *tb, *li, *en;
char buf[PATH_MAX];
bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_01.jpg");
elm_bg_file_set(bg, buf, NULL);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fl = elm_flip_add(win);
evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, fl);
o = elm_box_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
elm_toolbar_item_append(tb, "arrow_left", "Hello", NULL, NULL);
elm_toolbar_item_append(tb, "arrow_right", "Out", NULL, NULL);
elm_toolbar_item_append(tb, "home", "There", NULL, NULL);
elm_toolbar_item_append(tb, "refresh", "World", NULL, NULL);
elm_box_pack_end(o, tb);
evas_object_show(tb);
li = elm_list_add(win);
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_list_item_append(li, "This is a list", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Second item", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "3rd", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Fourth", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Number five is alive!", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "The quick brown fox jumps over the lazy dog", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Booyah", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "And another item", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "More of them", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Get with it", NULL, NULL, NULL, NULL);
elm_list_go(li);
elm_box_pack_end(o, li);
evas_object_show(li);
elm_flip_content_front_set(fl, o);
evas_object_show(o);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
snprintf(buf, sizeof(buf),
"This is an entry widget in this window that<br>"
"uses markup <b>like this</> for styling and<br>"
"formatting <em>like this</>, as well as<br>"
"<a href=X><link>links in the text</></a>, so enter text<br>"
"in here to edit it. By the way, links are<br>"
"called <a href=anc-02>Anchors</a> so you will need<br>"
"to refer to them this way.<br>"
"<br>"
"Also you can stick in items with (relsize + ascent): "
"<item relsize=16x16 vsize=ascent href=emoticon/evil-laugh></item>"
" (full) "
"<item relsize=16x16 vsize=full href=emoticon/guilty-smile></item>"
" (to the left)<br>"
"Also (size + ascent): "
"<item size=16x16 vsize=ascent href=emoticon/haha></item>"
" (full) "
"<item size=16x16 vsize=full href=emoticon/happy-panting></item>"
" (before this)<br>"
"And as well (absize + ascent): "
"<item absize=64x64 vsize=ascent href=emoticon/knowing-grin></item>"
" (full) "
"<item absize=64x64 vsize=full href=emoticon/not-impressed></item>"
" or even paths to image files on disk too like: "
"<item absize=96x128 vsize=full href=file://%s/images/sky_01.jpg></item>"
" ... end."
, elm_app_data_dir_get()
);
elm_entry_entry_set(en, buf);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_flip_content_back_set(fl, en);
evas_object_show(en);
evas_object_show(fl);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
bt = elm_button_add(win);
elm_object_text_set(bt, "1");
evas_object_smart_callback_add(bt, "clicked", my_fl_1, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "2");
evas_object_smart_callback_add(bt, "clicked", my_fl_2, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "3");
evas_object_smart_callback_add(bt, "clicked", my_fl_3, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "4");
evas_object_smart_callback_add(bt, "clicked", my_fl_4, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "5");
evas_object_smart_callback_add(bt, "clicked", my_fl_5, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "6");
evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END
TEST_START(test_flip3)
{
Evas_Object *bg, *bx, *bx2, *fl, *fl_f, *fl_b, *o, *bt, *fr;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fl = elm_flip_add(win);
evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, fl);
evas_object_show(fl);
fr = elm_frame_add(win);
elm_object_text_set(fr, "Front");
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_flip_content_front_set(fl, fr);
evas_object_show(fr);
fl_f = elm_flip_add(win);
evas_object_size_hint_align_set(fl_f, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl_f, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(fr, fl_f);
evas_object_show(fl_f);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_01.jpg");
elm_bg_file_set(o, buf, NULL);
elm_flip_content_front_set(fl_f, o);
evas_object_show(o);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_02.jpg");
elm_bg_file_set(o, buf, NULL);
elm_flip_content_back_set(fl_f, o);
evas_object_show(o);
fr = elm_frame_add(win);
elm_object_text_set(fr, "Back");
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_flip_content_back_set(fl, fr);
evas_object_show(fr);
fl_b = elm_flip_add(win);
evas_object_size_hint_align_set(fl_b, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl_b, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(fr, fl_b);
evas_object_show(fl_b);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_03.jpg");
elm_bg_file_set(o, buf, NULL);
elm_flip_content_front_set(fl_b, o);
evas_object_show(o);
o = elm_bg_add(win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_04.jpg");
elm_bg_file_set(o, buf, NULL);
elm_flip_content_back_set(fl_b, o);
evas_object_show(o);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
bt = elm_button_add(win);
elm_object_text_set(bt, "Main Flip");
evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Front Flip");
evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl_f);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Back Flip");
evas_object_smart_callback_add(bt, "clicked", my_fl_6, fl_b);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END
static void
my_fl_go(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *fl = evas_object_data_get(win, "fl");
elm_flip_go(fl, ELM_FLIP_PAGE_LEFT);
}
static void
my_fl_ch(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *fl = evas_object_data_get(win, "fl");
Evas_Object *rdg = evas_object_data_get(win, "rdg");
elm_flip_interaction_set(fl, elm_radio_value_get(rdg));
}
TEST_START(test_flip4)
{
Evas_Object *bg, *bx, *fl, *im, *li, *bt, *rd, *rdg;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fl = elm_flip_add(win);
evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, fl);
evas_object_data_set(win, "fl", fl);
elm_flip_interaction_set(fl, ELM_FLIP_INTERACTION_NONE);
elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_UP, EINA_TRUE);
elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_DOWN, EINA_TRUE);
elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_LEFT, EINA_TRUE);
elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_RIGHT, EINA_TRUE);
elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_UP, 0.25);
elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_DOWN, 0.25);
elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_LEFT, 0.25);
elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_RIGHT, 0.25);
evas_object_show(fl);
im = evas_object_image_filled_add(evas_object_evas_get(win));
evas_object_size_hint_weight_set(im, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "twofish.jpg");
evas_object_image_file_set(im, buf, NULL);
elm_flip_content_front_set(fl, im);
evas_object_show(im);
#if 0
im = evas_object_image_filled_add(evas_object_evas_get(win));
evas_object_size_hint_weight_set(im, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "sky_04.jpg");
evas_object_image_file_set(im, buf, NULL);
elm_flip_content_back_set(fl, im);
evas_object_show(im);
#else
li = elm_list_add(win);
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_list_item_append(li, "Item 0", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Item 1", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Item 2", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Item 3 (Which is very long just for testing purposes)", NULL, NULL, NULL, NULL);
elm_list_go(li);
elm_flip_content_back_set(fl, li);
evas_object_show(li);
#endif
rd = elm_radio_add(win);
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
elm_radio_state_value_set(rd, ELM_FLIP_INTERACTION_NONE);
elm_object_text_set(rd, "None");
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", my_fl_ch, win);
rdg = rd;
evas_object_data_set(win, "rdg", rdg);
rd = elm_radio_add(win);
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
elm_radio_state_value_set(rd, ELM_FLIP_INTERACTION_ROTATE);
elm_object_text_set(rd, "Rotate");
elm_radio_group_add(rd, rdg);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", my_fl_ch, win);
rd = elm_radio_add(win);
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
elm_radio_state_value_set(rd, ELM_FLIP_INTERACTION_CUBE);
elm_object_text_set(rd, "Cube");
elm_radio_group_add(rd, rdg);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", my_fl_ch, win);
rd = elm_radio_add(win);
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
elm_radio_state_value_set(rd, ELM_FLIP_INTERACTION_PAGE);
elm_object_text_set(rd, "Page");
elm_radio_group_add(rd, rdg);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_smart_callback_add(rd, "changed", my_fl_ch, win);
bt = elm_button_add(win);
elm_object_text_set(bt, "Go");
evas_object_smart_callback_add(bt, "clicked", my_fl_go, win);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,914 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _State State;
typedef struct _Slice Slice;
typedef struct _Vertex2 Vertex2;
typedef struct _Vertex3 Vertex3;
struct _State
{
Evas_Object *front, *back;
Evas_Coord down_x, down_y, x, y;
Eina_Bool down : 1;
Eina_Bool backflip : 1;
Ecore_Animator *anim;
Ecore_Job *job;
Evas_Coord ox, oy, w, h;
int slices_w, slices_h;
Slice **slices, **slices2;
int dir; // 0 == left, 1 == right, 2 == up, 3 == down
int finish;
};
struct _Slice
{
Evas_Object *obj;
// (0)---(1)
// | |
// | |
// (3)---(2)
double u[4], v[4], x[4], y[4], z[4];
};
struct _Vertex2
{
double x, y;
};
struct _Vertex3
{
double x, y, z;
};
static State state =
{
NULL, NULL,
0, 0, 0, 0,
0,
0,
NULL,
NULL,
0, 0, 0, 0,
0, 0,
NULL, NULL,
-1,
0
};
static Slice *
_slice_new(State *st __UNUSED__, Evas_Object *obj)
{
Slice *sl;
sl = calloc(1, sizeof(Slice));
if (!sl) return NULL;
sl->obj = evas_object_image_add(evas_object_evas_get(obj));
evas_object_image_smooth_scale_set(sl->obj, 0);
evas_object_pass_events_set(sl->obj, 1);
evas_object_image_source_set(sl->obj, obj);
return sl;
}
static void
_slice_free(Slice *sl)
{
evas_object_del(sl->obj);
free(sl);
}
static void
_slice_apply(State *st, Slice *sl,
Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__, Evas_Coord w, Evas_Coord h __UNUSED__,
Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh)
{
Evas_Map *m;
int i;
m = evas_map_new(4);
if (!m) return;
evas_map_smooth_set(m, 0);
for (i = 0; i < 4; i++)
{
evas_map_point_color_set(m, i, 255, 255, 255, 255);
if (st->dir == 0)
{
int p[4] = { 0, 1, 2, 3 };
evas_map_point_coord_set(m, i, ox + sl->x[p[i]], oy + sl->y[p[i]], sl->z[p[i]]);
evas_map_point_image_uv_set(m, i, sl->u[p[i]] , sl->v[p[i]]);
}
else if (st->dir == 1)
{
int p[4] = { 1, 0, 3, 2 };
evas_map_point_coord_set(m, i, ox + (w - sl->x[p[i]]), oy + sl->y[p[i]], sl->z[p[i]]);
evas_map_point_image_uv_set(m, i, ow - sl->u[p[i]] , sl->v[p[i]]);
}
else if (st->dir == 2)
{
int p[4] = { 1, 0, 3, 2 };
evas_map_point_coord_set(m, i, ox + sl->y[p[i]], oy + sl->x[p[i]], sl->z[p[i]]);
evas_map_point_image_uv_set(m, i, sl->v[p[i]] , sl->u[p[i]]);
}
else if (st->dir == 3)
{
int p[4] = { 0, 1, 2, 3 };
evas_map_point_coord_set(m, i, ox + sl->y[p[i]], oy + (w - sl->x[p[i]]), sl->z[p[i]]);
evas_map_point_image_uv_set(m, i, sl->v[p[i]] , oh - sl->u[p[i]]);
}
}
evas_object_map_enable_set(sl->obj, EINA_TRUE);
evas_object_image_fill_set(sl->obj, 0, 0, ow, oh);
evas_object_map_set(sl->obj, m);
evas_map_free(m);
}
static void
_slice_3d(State *st __UNUSED__, Slice *sl, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{
Evas_Map *m = (Evas_Map *)evas_object_map_get(sl->obj);
int i;
if (!m) return;
// vanishing point is center of page, and focal dist is 1024
evas_map_util_3d_perspective(m, x + (w / 2), y + (h / 2), 0, 1024);
for (i = 0; i < 4; i++)
{
Evas_Coord x, y, z;
evas_map_point_coord_get(m, i, &x, &y, &z);
evas_map_point_coord_set(m, i, x, y, 0);
}
if (evas_map_util_clockwise_get(m)) evas_object_show(sl->obj);
else evas_object_hide(sl->obj);
evas_object_map_set(sl->obj, m);
}
static void
_slice_light(State *st __UNUSED__, Slice *sl, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{
Evas_Map *m = (Evas_Map *)evas_object_map_get(sl->obj);
int i;
if (!m) return;
evas_map_util_3d_lighting(m,
// light position
// (centered over page 10 * h toward camera)
x + (w / 2) , y + (h / 2) , -10000,
255, 255, 255, // light color
0 , 0 , 0); // ambient minimum
// multiply brightness by 1.2 to make lightish bits all white so we dont
// add shading where we could otherwise be pure white
for (i = 0; i < 4; i++)
{
int r, g, b, a;
evas_map_point_color_get(m, i, &r, &g, &b, &a);
r = (double)r * 1.2; if (r > 255) r = 255;
g = (double)g * 1.2; if (g > 255) g = 255;
b = (double)b * 1.2; if (b > 255) b = 255;
evas_map_point_color_set(m, i, r, g, b, a);
}
evas_object_map_set(sl->obj, m);
}
static void
_slice_xyz(State *st __UNUSED__, Slice *sl,
double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3,
double x4, double y4, double z4)
{
sl->x[0] = x1; sl->y[0] = y1; sl->z[0] = z1;
sl->x[1] = x2; sl->y[1] = y2; sl->z[1] = z2;
sl->x[2] = x3; sl->y[2] = y3; sl->z[2] = z3;
sl->x[3] = x4; sl->y[3] = y4; sl->z[3] = z4;
}
static void
_slice_uv(State *st __UNUSED__, Slice *sl,
double u1, double v1,
double u2, double v2,
double u3, double v3,
double u4, double v4)
{
sl->u[0] = u1; sl->v[0] = v1;
sl->u[1] = u2; sl->v[1] = v2;
sl->u[2] = u3; sl->v[2] = v3;
sl->u[3] = u4; sl->v[3] = v4;
}
static void
_deform_point(Vertex2 *vi, Vertex3 *vo, double rho, double theta, double A)
{
// ^Y
// |
// | X
// +---->
// theta == cone angle (0 -> PI/2)
// A == distance of cone apex from origin
// rho == angle of cone from vertical axis (...-PI/2 to PI/2...)
Vertex3 v1;
double d, r, b;
d = sqrt((vi->x * vi->x) + pow(vi->y - A, 2));
r = d * sin(theta);
b = asin(vi->x / d) / sin(theta);
v1.x = r * sin(b);
v1.y = d + A - (r * (1 - cos(b)) * sin(theta));
v1.z = r * (1 - cos(b)) * cos(theta);
vo->x = (v1.x * cos(rho)) - (v1.z * sin(rho));
vo->y = v1.y;
vo->z = (v1.x * sin(rho)) + (v1.z * cos(rho));
}
static void
_interp_point(Vertex3 *vi1, Vertex3 *vi2, Vertex3 *vo, double v)
{
vo->x = (v * vi2->x) + ((1.0 - v) * vi1->x);
vo->y = (v * vi2->y) + ((1.0 - v) * vi1->y);
vo->z = (v * vi2->z) + ((1.0 - v) * vi1->z);
}
static void
_state_slices_clear(State *st)
{
int i, j, num;
if (st->slices)
{
num = 0;
for (j = 0; j < st->slices_h; j++)
{
for (i = 0; i < st->slices_w; i++)
{
if (st->slices[num]) _slice_free(st->slices[num]);
if (st->slices2[num]) _slice_free(st->slices2[num]);
num++;
}
}
free(st->slices);
free(st->slices2);
st->slices = NULL;
st->slices2 = NULL;
}
st->slices_w = 0;
st->slices_h = 0;
}
static int
_slice_obj_color_sum(Slice *s, int p, int *r, int *g, int *b, int *a)
{
Evas_Map *m;
int rr = 0, gg = 0, bb = 0, aa = 0;
if (!s) return 0;
m = (Evas_Map *)evas_object_map_get(s->obj);
if (!m) return 0;
evas_map_point_color_get(m, p, &rr, &gg, &bb, &aa);
*r += rr; *g += gg; *b += bb; *a += aa;
return 1;
}
static void
_slice_obj_color_set(Slice *s, int p, int r, int g, int b, int a)
{
Evas_Map *m;
if (!s) return;
m = (Evas_Map *)evas_object_map_get(s->obj);
if (!m) return;
evas_map_point_color_set(m, p, r, g, b, a);
evas_object_map_set(s->obj, m);
}
static void
_slice_obj_vert_color_merge(Slice *s1, int p1, Slice *s2, int p2,
Slice *s3, int p3, Slice *s4, int p4)
{
int r = 0, g = 0, b = 0, a = 0, n = 0;
n += _slice_obj_color_sum(s1, p1, &r, &g, &b, &a);
n += _slice_obj_color_sum(s2, p2, &r, &g, &b, &a);
n += _slice_obj_color_sum(s3, p3, &r, &g, &b, &a);
n += _slice_obj_color_sum(s4, p4, &r, &g, &b, &a);
if (n < 1) return;
r /= n; g /= n; b /= n; a /= n;
_slice_obj_color_set(s1, p1, r, g, b, a);
_slice_obj_color_set(s2, p2, r, g, b, a);
_slice_obj_color_set(s3, p3, r, g, b, a);
_slice_obj_color_set(s4, p4, r, g, b, a);
}
static int
_state_update(State *st)
{
Evas_Coord x1, y1, x2, y2, mx, my, dst, dx, dy;
Evas_Coord x, y, w, h, ox, oy, ow, oh;
int i, j, num, nn, jump, num2;
Slice *sl;
double b, minv = 0.0, minva, mgrad;
int gx, gy, gszw, gszh, gw, gh, col, row, nw, nh;
double rho, A, theta, perc, percm, n, rhol, Al, thetal;
Vertex3 *tvo, *tvol;
st->backflip = 0;
evas_object_geometry_get(st->front, &x, &y, &w, &h);
ox = x; oy = y; ow = w; oh = h;
x1 = st->down_x;
y1 = st->down_y;
x2 = st->x;
y2 = st->y;
dx = x2 - x1;
dy = y2 - y1;
dst = sqrt((dx * dx) + (dy * dy));
if (st->dir == -1)
{
if (dst < 20) // MAGIC: 20 == drag hysterisis
return 0;
}
if (st->dir == -1)
{
if ((x1 > (w / 2)) && (dx < 0) && (abs(dx) > abs(dy))) st->dir = 0; // left
else if ((x1 < (w / 2)) && (dx >= 0) && (abs(dx) > abs(dy))) st->dir = 1; // right
else if ((y1 > (h / 2)) && (dy < 0) && (abs(dy) >= abs(dx))) st->dir = 2; // up
else if ((y1 < (h / 2)) && (dy >= 0) && (abs(dy) >= abs(dx))) st->dir = 3; // down
if (st->dir == -1) return 0;
}
if (st->dir == 0)
{
// no nothing. left drag is standard
}
else if (st->dir == 1)
{
x1 = (w - 1) - x1;
x2 = (w - 1) - x2;
}
else if (st->dir == 2)
{
Evas_Coord tmp;
tmp = x1; x1 = y1; y1 = tmp;
tmp = x2; x2 = y2; y2 = tmp;
tmp = w; w = h; h = tmp;
}
else if (st->dir == 3)
{
Evas_Coord tmp;
tmp = x1; x1 = y1; y1 = tmp;
tmp = x2; x2 = y2; y2 = tmp;
tmp = w; w = h; h = tmp;
x1 = (w - 1) - x1;
x2 = (w - 1) - x2;
}
if (x2 >= x1) x2 = x1 - 1;
mx = (x1 + x2) / 2;
my = (y1 + y2) / 2;
if (mx < 0) mx = 0;
else if (mx >= w) mx = w - 1;
if (my < 0) my = 0;
else if (my >= h) my = h - 1;
mgrad = (double)(y1 - y2) / (double)(x1 - x2);
if (mx < 1) mx = 1; // quick hack to keep curl line visible
if (mgrad == 0.0) // special horizontal case
mgrad = 0.001; // quick dirty hack for now
// else
{
minv = 1.0 / mgrad;
// y = (m * x) + b
b = my + (minv * mx);
}
if ((b >= -5) && (b <= (h + 5)))
{
if (minv > 0.0) // clamp to h
{
minv = (double)(h + 5 - my) / (double)(mx);
b = my + (minv * mx);
}
else // clamp to 0
{
minv = (double)(-5 - my) / (double)(mx);
b = my + (minv * mx);
}
}
perc = (double)x2 / (double)x1;
percm = (double)mx / (double)x1;
if (perc < 0.0) perc = 0.0;
else if (perc > 1.0) perc = 1.0;
if (percm < 0.0) percm = 0.0;
else if (percm > 1.0) percm = 1.0;
minva = atan(minv) / (M_PI / 2);
if (minva < 0.0) minva = -minva;
// A = apex of cone
if (b <= 0) A = b;
else A = h - b;
if (A < -(h * 20)) A = -h * 20;
//--//
Al = -5;
// rho = is how much the page is turned
n = 1.0 - perc;
n = 1.0 - cos(n * M_PI / 2.0);
n = n * n;
rho = -(n * M_PI);
//--//
rhol = -(n * M_PI);
// theta == curliness (how much page culrs in on itself
n = sin((1.0 - perc) * M_PI);
n = n * 1.2;
theta = 7.86 + n;
//--//
n = sin((1.0 - perc) * M_PI);
n = 1.0 - n;
n = n * n;
n = 1.0 - n;
thetal = 7.86 + n;
nw = 16;
nh = 16;
if (nw < 1) nw = 1;
if (nh < 1) nh = 1;
gszw = w / nw;
gszh = h / nh;
if (gszw < 4) gszw = 4;
if (gszh < 4) gszh = 4;
nw = (w + gszw - 1) / gszw;
nh = (h + gszh - 1) / gszh;
if ((st->slices_w != nw) || (st->slices_h != nh)) _state_slices_clear(st);
st->slices_w = nw;
st->slices_h = nh;
if (!st->slices)
{
st->slices = calloc(st->slices_w * st->slices_h, sizeof(Slice *));
if (!st->slices) return 0;
st->slices2 = calloc(st->slices_w * st->slices_h, sizeof(Slice *));
if (!st->slices2)
{
free(st->slices);
st->slices = NULL;
return 0;
}
}
num = (st->slices_w + 1) * (st->slices_h + 1);
tvo = alloca(sizeof(Vertex3) * num);
tvol = alloca(sizeof(Vertex3) * (st->slices_w + 1));
for (col = 0, gx = 0; gx <= (w + gszw - 1); gx += gszw, col++)
{
Vertex2 vil;
vil.x = gx;
vil.y = h - gx;
_deform_point(&vil, &(tvol[col]), rhol, thetal, Al);
}
n = minva * sin(perc * M_PI);
n = n * n;
num = 0;
for (col = 0, gx = 0; gx <= (w + gszw - 1); gx += gszw, col++)
{
for (gy = 0; gy <= (h + gszh - 1); gy += gszh)
{
Vertex2 vi;
Vertex3 vo, tvo1;
if (gx > w) vi.x = w;
else vi.x = gx;
if (gy > h) vi.y = h;
else vi.y = gy;
_deform_point(&vi, &vo, rho, theta, A);
tvo1 = tvol[col];
if (gy > h) tvo1.y = h;
else tvo1.y = gy;
_interp_point(&vo, &tvo1, &(tvo[num]), n);
num++;
}
}
jump = st->slices_h + 1;
for (col = 0, gx = 0; gx < w; gx += gszw, col++)
{
num = st->slices_h * col;
num2 = jump * col;
gw = gszw;
if ((gx + gw) > w) gw = w - gx;
for (row = 0, gy = 0; gy < h; gy += gszh, row++)
{
Vertex3 vo[4];
if (b > 0) nn = num + st->slices_h - row - 1;
else nn = num + row;
gh = gszh;
if ((gy + gh) > h) gh = h - gy;
vo[0] = tvo[num2 + row];
vo[1] = tvo[num2 + row + jump];
vo[2] = tvo[num2 + row + jump + 1];
vo[3] = tvo[num2 + row + 1];
#define SWP(a, b) do {typeof(a) vt; vt = (a); (a) = (b); (b) = vt;} while (0)
if (b > 0)
{
SWP(vo[0], vo[3]);
SWP(vo[1], vo[2]);
vo[0].y = h - vo[0].y;
vo[1].y = h - vo[1].y;
vo[2].y = h - vo[2].y;
vo[3].y = h - vo[3].y;
}
// FRONT
sl = st->slices[nn];
if (!sl)
{
sl = _slice_new(st, st->front);
st->slices[nn] = sl;
}
_slice_xyz(st, sl,
vo[0].x, vo[0].y, vo[0].z,
vo[1].x, vo[1].y, vo[1].z,
vo[2].x, vo[2].y, vo[2].z,
vo[3].x, vo[3].y, vo[3].z);
if (b <= 0)
_slice_uv(st, sl,
gx, gy, gx + gw, gy,
gx + gw, gy + gh, gx, gy + gh);
else
_slice_uv(st, sl,
gx, h - (gy + gh), gx + gw, h - (gy + gh),
gx + gw, h - gy, gx, h - gy);
// BACK
sl = st->slices2[nn];
if (!sl)
{
sl = _slice_new(st, st->back);
st->slices2[nn] = sl;
}
_slice_xyz(st, sl,
vo[1].x, vo[1].y, vo[1].z,
vo[0].x, vo[0].y, vo[0].z,
vo[3].x, vo[3].y, vo[3].z,
vo[2].x, vo[2].y, vo[2].z);
if (st->backflip)
{
if (b <= 0)
_slice_uv(st, sl,
gx + gw, gy, gx, gy,
gx, gy + gh, gx + gw, gy + gh);
else
_slice_uv(st, sl,
gx + gw, h - (gy + gh), gx, h - (gy + gh),
gx, h - gy, gx + gw, h - gy);
}
else
{
if (b <= 0)
_slice_uv(st, sl,
w - (gx + gw), gy, w - (gx), gy,
w - (gx), gy + gh, w - (gx + gw), gy + gh);
else
_slice_uv(st, sl,
w - (gx + gw), h - (gy + gh), w - (gx), h - (gy + gh),
w - (gx), h - gy, w - (gx + gw), h - gy);
}
}
}
num = 0;
for (j = 0; j < st->slices_h; j++)
{
for (i = 0; i < st->slices_w; i++)
{
_slice_apply(st, st->slices[num], x, y, w, h, ox, oy, ow, oh);
_slice_apply(st, st->slices2[num], x, y, w, h, ox, oy, ow, oh);
_slice_light(st, st->slices[num], ox, oy, ow, oh);
_slice_light(st, st->slices2[num], ox, oy, ow, oh);
num++;
}
}
for (i = 0; i <= st->slices_w; i++)
{
num = i * st->slices_h;
for (j = 0; j <= st->slices_h; j++)
{
Slice *s[4];
s[0] = s[1] = s[2] = s[3] = NULL;
if ((i > 0) && (j > 0))
s[0] = st->slices[num - 1 - st->slices_h];
if ((i < st->slices_w) && (j > 0))
s[1] = st->slices[num - 1];
if ((i > 0) && (j < st->slices_h))
s[2] = st->slices[num - st->slices_h];
if ((i < st->slices_w) && (j < st->slices_h))
s[3] = st->slices[num];
if (st->dir == 0)
_slice_obj_vert_color_merge(s[0], 2, s[1], 3,
s[2], 1, s[3], 0);
else if (st->dir == 1)
_slice_obj_vert_color_merge(s[0], 3, s[1], 2,
s[2], 0, s[3], 1);
else if (st->dir == 2)
_slice_obj_vert_color_merge(s[0], 3, s[1], 2,
s[2], 0, s[3], 1);
else if (st->dir == 3)
_slice_obj_vert_color_merge(s[0], 2, s[1], 3,
s[2], 1, s[3], 0);
s[0] = s[1] = s[2] = s[3] = NULL;
if ((i > 0) && (j > 0))
s[0] = st->slices2[num - 1 - st->slices_h];
if ((i < st->slices_w) && (j > 0))
s[1] = st->slices2[num - 1];
if ((i > 0) && (j < st->slices_h))
s[2] = st->slices2[num - st->slices_h];
if ((i < st->slices_w) && (j < st->slices_h))
s[3] = st->slices2[num];
if (st->dir == 0)
_slice_obj_vert_color_merge(s[0], 3, s[1], 2,
s[2], 0, s[3], 1);
else if (st->dir == 1)
_slice_obj_vert_color_merge(s[0], 2, s[1], 3,
s[2], 1, s[3], 0);
else if (st->dir == 2)
_slice_obj_vert_color_merge(s[0], 2, s[1], 3,
s[2], 1, s[3], 0);
else if (st->dir == 3)
_slice_obj_vert_color_merge(s[0], 3, s[1], 2,
s[2], 0, s[3], 1);
num++;
}
}
num = 0;
for (i = 0; i < st->slices_w; i++)
{
for (j = 0; j < st->slices_h; j++)
{
_slice_3d(st, st->slices[num], ox, oy, ow, oh);
_slice_3d(st, st->slices2[num], ox, oy, ow, oh);
num++;
}
}
return 1;
}
static void
_state_end(State *st)
{
_state_slices_clear(st);
}
static Eina_Bool
_state_anim(void *data, double pos)
{
State *st = data;
double p;
p = ecore_animator_pos_map(pos, ECORE_POS_MAP_ACCELERATE, 0.0, 0.0);
if (st->finish)
{
if (st->dir == 0)
st->x = st->ox * (1.0 - p);
else if (st->dir == 1)
st->x = st->ox + ((st->w - st->ox) * p);
else if (st->dir == 2)
st->y = st->oy * (1.0 - p);
else if (st->dir == 3)
st->y = st->oy + ((st->h - st->oy) * p);
}
else
{
if (st->dir == 0)
st->x = st->ox + ((st->w - st->ox) * p);
else if (st->dir == 1)
st->x = st->ox * (1.0 - p);
else if (st->dir == 2)
st->y = st->oy + ((st->h - st->oy) * p);
else if (st->dir == 3)
st->y = st->oy * (1.0 - p);
}
_state_update(st);
if (pos < 1.0) return EINA_TRUE;
evas_object_show(st->front);
evas_object_show(st->back);
_state_end(st);
st->anim = NULL;
return EINA_FALSE;
}
static void
_update_curl_job(void *data)
{
State *st = data;
st->job = NULL;
if (_state_update(st))
{
evas_object_hide(st->front);
evas_object_hide(st->back);
}
}
static void
im_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
State *st = &state;
Evas_Event_Mouse_Down *ev = event_info;
Evas_Coord x, y, w, h;
if (ev->button != 1) return;
st->front = data;
st->back = evas_object_data_get(data, "im2");
st->backflip = 1;
st->down = 1;
evas_object_geometry_get(st->front, &x, &y, &w, &h);
st->x = ev->canvas.x - x;
st->y = ev->canvas.y - y;
st->w = w;
st->h = h;
st->down_x = st->x;
st->down_y = st->y;
st->dir = -1;
if (_state_update(st))
{
evas_object_hide(st->front);
evas_object_hide(st->back);
}
}
static void
im_up_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
State *st = &state;
Evas_Event_Mouse_Up *ev = event_info;
Evas_Coord x, y, w, h;
double tm = 0.5;
if (ev->button != 1) return;
st->down = 0;
evas_object_geometry_get(st->front, &x, &y, &w, &h);
st->x = ev->canvas.x - x;
st->y = ev->canvas.y - y;
st->w = w;
st->h = h;
st->ox = st->x;
st->oy = st->y;
if (st->job)
{
ecore_job_del(st->job);
st->job = NULL;
}
if (st->anim) ecore_animator_del(st->anim);
st->finish = 0;
if (st->dir == 0)
{
tm = (double)st->x / (double)st->w;
if (st->x < (st->w / 2)) st->finish = 1;
}
else if (st->dir == 1)
{
if (st->x > (st->w / 2)) st->finish = 1;
tm = 1.0 - ((double)st->x / (double)st->w);
}
else if (st->dir == 2)
{
if (st->y < (st->h / 2)) st->finish = 1;
tm = (double)st->y / (double)st->h;
}
else if (st->dir == 3)
{
if (st->y > (st->h / 2)) st->finish = 1;
tm = 1.0 - ((double)st->y / (double)st->h);
}
if (tm < 0.01) tm = 0.01;
else if (tm > 0.99) tm = 0.99;
if (!st->finish) tm = 1.0 - tm;
tm *= 0.5;
st->anim = ecore_animator_timeline_add(tm, _state_anim, st);
_state_anim(st, 0.0);
}
static void
im_move_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
State *st = &state;
Evas_Event_Mouse_Move *ev = event_info;
Evas_Coord x, y, w, h;
if (!st->down) return;
evas_object_geometry_get(st->front, &x, &y, &w, &h);
st->x = ev->cur.canvas.x - x;
st->y = ev->cur.canvas.y - y;
st->w = w;
st->h = h;
if (st->job) ecore_job_del(st->job);
st->job = ecore_job_add(_update_curl_job, st);
}
TEST_START(test_flip_page)
{
Evas_Object *bg, *im, *im2, *rc;
char buf[PATH_MAX];
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
im2 = evas_object_image_filled_add(evas_object_evas_get(win));
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "sky_04.jpg");
evas_object_image_file_set(im2, buf, NULL);
evas_object_move(im2, 40, 40);
evas_object_resize(im2, 400, 400);
evas_object_show(im2);
#if 0
im = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(im, buf, "layout");
#else
im = evas_object_image_filled_add(evas_object_evas_get(win));
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "twofish.jpg");
evas_object_image_file_set(im, buf, NULL);
#endif
evas_object_move(im, 40, 40);
evas_object_resize(im, 400, 400);
evas_object_show(im);
evas_object_data_set(im, "im2", im2);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 0, 0, 0, 0);
evas_object_move(rc, 40, 340);
evas_object_resize(rc, 400, 100);
evas_object_show(rc);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_DOWN, im_down_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_UP, im_up_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_MOVE, im_move_cb, im);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 0, 0, 0, 0);
evas_object_move(rc, 40, 40);
evas_object_resize(rc, 400, 100);
evas_object_show(rc);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_DOWN, im_down_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_UP, im_up_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_MOVE, im_move_cb, im);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 0, 0, 0, 0);
evas_object_move(rc, 340, 40);
evas_object_resize(rc, 100, 400);
evas_object_show(rc);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_DOWN, im_down_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_UP, im_up_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_MOVE, im_move_cb, im);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 0, 0, 0, 0);
evas_object_move(rc, 40, 40);
evas_object_resize(rc, 100, 400);
evas_object_show(rc);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_DOWN, im_down_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_UP, im_up_cb, im);
evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_MOVE, im_move_cb, im);
evas_object_resize(win, 480, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,107 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
void
_sel_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
Elm_Flipselector_Item *it;
it = event_info;
printf("label of selected item is: %s\n", elm_flipselector_item_label_get(it));
}
void
_unsel_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Elm_Flipselector_Item *it;
Evas_Object *fp = data;
it = elm_flipselector_selected_item_get(fp);
elm_flipselector_item_selected_set(it, EINA_FALSE);
}
void
_third_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Elm_Flipselector_Item *it;
Evas_Object *fp = data;
it = elm_flipselector_first_item_get(fp);
it = elm_flipselector_item_next_get(it);
it = elm_flipselector_item_next_get(it);
elm_flipselector_item_selected_set(it, EINA_TRUE);
}
void
_underflow_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("underflow!\n");
}
void
_overflow_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("overflow!\n");
}
TEST_START(test_flipselector)
{
char buf[8];
unsigned int i;
Evas_Object *bg, *bx, *fp, *bt;
static const char *lbl[] = {
"Elementary",
"Evas",
"Eina",
"Edje",
"Eet",
"Ecore",
"Efreet",
"Edbus"
};
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fp = elm_flipselector_add(win);
evas_object_size_hint_weight_set(fp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_smart_callback_add(fp, "selected", _sel_cb, NULL);
evas_object_smart_callback_add(fp, "underflowed", _overflow_cb, NULL);
evas_object_smart_callback_add(fp, "overflowed", _underflow_cb, NULL);
for (i = 0; i < sizeof(lbl)/sizeof(char *); i++)
elm_flipselector_item_append(fp, lbl[i], NULL, NULL);
elm_box_pack_end(bx, fp);
evas_object_show(fp);
fp = elm_flipselector_add(win);
evas_object_smart_callback_add(fp, "underflowed", _overflow_cb, NULL);
evas_object_smart_callback_add(fp, "overflowed", _underflow_cb, NULL);
evas_object_size_hint_weight_set(fp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
for (i = 2099; i >= 1990; i--)
{
snprintf(buf, 8, "%d", i);
elm_flipselector_item_append(fp, buf, _sel_cb, NULL);
}
elm_box_pack_end(bx, fp);
evas_object_show(fp);
bt = elm_button_add(win);
elm_object_text_set(bt, "Select 2097");
evas_object_smart_callback_add(bt, "clicked", _third_cb, fp);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Unselect year");
evas_object_smart_callback_add(bt, "clicked", _unsel_cb, fp);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END

View File

@ -1,371 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static Eina_Bool
_event(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Evas_Object *src __UNUSED__, Evas_Callback_Type type, void *event_info)
{
if (type == EVAS_CALLBACK_KEY_DOWN)
printf ("Key Down:");
else if (type == EVAS_CALLBACK_KEY_UP)
printf ("Key Up:");
else
return EINA_FALSE;
Evas_Event_Key_Down *ev = event_info;
printf("%s\n", ev->key);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
static void
_on_key_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *einfo __UNUSED__)
{
//Evas_Event_Key_Down *event = einfo;
//printf("%s %p Key %s Parent %p\n", evas_object_type_get(obj),
// obj, event->keyname, evas_object_smart_parent_get(obj));
}
static void
_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *bt = data;
elm_object_disabled_set(bt, EINA_TRUE);
}
static void
_enable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *bt = data;
elm_object_disabled_set(bt, EINA_FALSE);
}
static inline void
my_show(Evas_Object *obj)
{
evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN,
_on_key_down, NULL);
evas_object_show(obj);
}
TEST_START(test_focus)
{
unsigned int i, j;
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
evas_object_resize(win, 800, 600);
elm_object_event_callback_add(win, _event, NULL);
my_show(win);
{
Evas_Object *bg;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
my_show(bg);
}
Evas_Object *mainbx = elm_box_add(win);
elm_box_horizontal_set(mainbx, EINA_TRUE);
elm_win_resize_object_add(win, mainbx);
evas_object_size_hint_weight_set(mainbx, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
my_show(mainbx);
{ //First Col
Evas_Object *bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_box_pack_end(mainbx, bx);
my_show(bx);
{
Evas_Object *lb = elm_label_add(win);
elm_object_text_set(lb,
"<b>Use Tab, Shift+Tab, and<br>"
"Arrow Keys</b>"
);
evas_object_size_hint_weight_set(lb, 0.0, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_box_pack_end(bx, lb);
my_show(lb);
}
{
Evas_Object *tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_part_text_set(tg, "on", "Yes");
elm_object_part_text_set(tg, "off", "No");
elm_box_pack_end(bx, tg);
my_show(tg);
}
{
Evas_Object *en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_entry_set(en, "This is a single line");
elm_entry_single_line_set(en, 1);
elm_box_pack_end(bx, en);
my_show(en);
}
{
Evas_Object *bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
elm_box_pack_end(bx, bx2);
for (i = 2; i; i--)
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Box");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
if (i%2)
elm_object_disabled_set(bt, EINA_TRUE);
elm_box_pack_end(bx2, bt);
my_show(bt);
}
{
Evas_Object *sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_scroller_bounce_set(sc, 1, 1);
elm_scroller_content_min_limit(sc, 1, 1);
elm_box_pack_end(bx2, sc);
my_show(sc);
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Scroller");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
elm_object_event_callback_add(bt, _event, NULL);
elm_object_content_set(sc, bt);
my_show(bt);
elm_object_event_callback_del(bt, _event, NULL);
}
}
my_show(bx2);
}
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Box");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
elm_box_pack_end(bx, bt);
my_show(bt);
}
{
Evas_Object *bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
elm_box_pack_end(bx, bx2);
my_show(bx2);
for (i = 2; i; i--)
{
Evas_Object *bx3 = elm_box_add(win);
evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx3, 0.0, 0.0);
elm_box_pack_end(bx2, bx3);
my_show(bx3);
for (j = 3; j; j--)
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Box");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
elm_box_pack_end(bx3, bt);
my_show(bt);
}
}
{
Evas_Object *sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_scroller_bounce_set(sc, 0, 1);
elm_scroller_content_min_limit(sc, 1, 0);
elm_box_pack_end(bx2, sc);
my_show(sc);
Evas_Object *bx3 = elm_box_add(win);
evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx3, 0.0, 0.0);
elm_object_content_set(sc, bx3);
my_show(bx3);
for (i = 5; i; i--)
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "BX Scroller");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
elm_box_pack_end(bx3, bt);
my_show(bt);
}
}
}
}
{//Second Col
char buf[PATH_MAX];
Evas_Object *ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "twolines");
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_box_pack_end(mainbx, ly);
my_show(ly);
{
Evas_Object *bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
elm_object_part_content_set(ly, "element1", bx2);
my_show(bx2);
for (i = 3; i; i--)
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Layout");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
elm_box_pack_end(bx2, bt);
my_show(bt);
elm_object_focus_custom_chain_prepend(bx2, bt, NULL);
}
}
{
Evas_Object *bx2 = elm_box_add(win);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
elm_object_part_content_set(ly, "element2", bx2);
my_show(bx2);
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Disable");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_smart_callback_add(bt, "clicked", _disable, bt);
my_show(bt);
elm_object_focus_custom_chain_prepend(bx2, bt, NULL);
Evas_Object *bt2;
bt2 = elm_button_add(win);
elm_object_text_set(bt2, "Enable");
evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt2, 0.0, 0.0);
elm_box_pack_end(bx2, bt2);
evas_object_smart_callback_add(bt2, "clicked", _enable, bt);
my_show(bt2);
elm_object_focus_custom_chain_append(bx2, bt2, NULL);
}
}
}
{//Third Col
Evas_Object *bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_box_pack_end(mainbx, bx);
my_show(bx);
{
Evas_Object *fr = elm_frame_add(win);
elm_object_text_set(fr, "Frame");
elm_box_pack_end(bx, fr);
evas_object_show(fr);
{
Evas_Object *tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(fr, tb);
my_show(tb);
for (j = 0; j < 1; j++)
for (i = 0; i < 2; i++)
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Table");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_table_pack(tb, bt, i, j, 1, 1);
my_show(bt);
}
}
}
{
Evas_Object *fr = elm_bubble_add(win);
elm_object_text_set(fr, "Bubble");
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_box_pack_end(bx, fr);
evas_object_show(fr);
{
Evas_Object *tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(fr, tb);
my_show(tb);
for (j = 0; j < 2; j++)
for (i = 0; i < 1; i++)
{
Evas_Object *bt;
bt = elm_button_add(win);
elm_object_text_set(bt, "Table");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_table_pack(tb, bt, i, j, 1, 1);
my_show(bt);
}
}
}
}
}
TEST_END

View File

@ -1,472 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _Testitem
{
Elm_Gengrid_Item *item;
const char *path;
int mode;
int onoff;
} Testitem;
static const char *img[9] =
{
"panel_01.jpg",
"plant_01.jpg",
"rock_01.jpg",
"rock_02.jpg",
"sky_01.jpg",
"sky_02.jpg",
"sky_03.jpg",
"sky_04.jpg",
"wood_01.jpg",
};
static Elm_Gengrid_Item_Class gic;
static int photo_idx = 0;
static void
_horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *grid = data;
elm_gengrid_horizontal_set(grid, elm_check_state_get(obj));
}
static void
grid_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Drag up: %p\n", event_info);
}
static void
grid_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Drag right: %p\n", event_info);
}
static void
grid_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Drag down: %p\n", event_info);
}
static void
grid_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Drag left: %p\n", event_info);
}
static void
grid_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Drag stop: %p\n", event_info);
}
static void
grid_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Selected: %p\n", event_info);
}
static void
grid_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("Double clicked: %p\n", event_info);
}
static void
grid_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("longpress %p\n", event_info);
}
static void
grid_moved(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("moved %p\n", event_info);
}
static void
grid_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Testitem *ti = data;
ti->onoff = elm_check_state_get(obj);
printf("item %p onoff = %i\n", ti, ti->onoff);
}
char *
grid_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
const Testitem *ti = data;
char buf[256];
snprintf(buf, sizeof(buf), "Photo %s", ti->path);
return strdup(buf);
}
Evas_Object *
grid_content_get(void *data, Evas_Object *obj, const char *part)
{
const Testitem *ti = data;
if (!strcmp(part, "elm.swallow.icon"))
{
Evas_Object *icon = elm_bg_add(obj);
elm_bg_file_set(icon, ti->path, NULL);
evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
evas_object_show(icon);
return icon;
}
else if (!strcmp(part, "elm.swallow.end"))
{
Evas_Object *ck;
ck = elm_check_add(obj);
evas_object_propagate_events_set(ck, 0);
elm_check_state_set(ck, ti->onoff);
evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
evas_object_show(ck);
return ck;
}
return NULL;
}
Eina_Bool
grid_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
}
void
grid_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
{
}
static void
grid_sel(void *data, Evas_Object *obj, void *event_info)
{
printf("sel item data [%p] on grid obj [%p], pointer [%p]\n", data, obj, event_info);
}
enum _api_state
{
GRID_ALIGN_SET,
GRID_BRING_IN,
GRID_NO_SELECT_MODE,
GRID_NO_BOUNCE,
GRID_PAGE_RELATIVE,
GRID_PAGE_SIZE,
GRID_TOOLTIP_SET_TEXT,
GRID_TOOLTIP_UNSET,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
Evas_Object *grid = api->data;
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case GRID_ALIGN_SET: /* 0 */
elm_gengrid_align_set(grid, 0.2, 0.8);
break;
case GRID_BRING_IN: /* 1 */
elm_gengrid_item_bring_in(elm_gengrid_first_item_get(grid));
break;
case GRID_NO_SELECT_MODE: /* 2 */
elm_gengrid_no_select_mode_set(grid, EINA_TRUE);
break;
case GRID_NO_BOUNCE: /* 3 */
elm_gengrid_bounce_set(grid, EINA_TRUE, EINA_FALSE);
break;
case GRID_PAGE_RELATIVE: /* 4 */
elm_gengrid_bounce_set(grid, EINA_TRUE, EINA_TRUE);
elm_gengrid_page_relative_set(grid, 0.5, 0.5);
break;
case GRID_PAGE_SIZE: /* 5 */
elm_gengrid_page_size_set(grid, 50, 25);
break;
case GRID_TOOLTIP_SET_TEXT: /* 6 */
{
Elm_Gengrid_Item *item = elm_gengrid_first_item_get(grid);
elm_gengrid_item_tooltip_text_set(item, "This is the first item");
}
break;
case GRID_TOOLTIP_UNSET: /* 7 */
{
Elm_Gengrid_Item *item = elm_gengrid_first_item_get(grid);
elm_gengrid_item_tooltip_unset(item);
}
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_gengrid)
{
Evas_Object *bg, *bxx, *grid;
static Testitem ti[144];
int i, n;
char buf[PATH_MAX];
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
grid = elm_gengrid_add(win);
elm_gengrid_item_size_set(grid, 150, 150);
elm_gengrid_horizontal_set(grid, EINA_FALSE);
elm_gengrid_multi_select_set(grid, EINA_TRUE);
elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL);
evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
evas_object_smart_callback_add(grid, "moved", grid_moved, NULL);
evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
api->data = grid;
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, grid);
gic.item_style = "default";
gic.func.text_get = grid_text_get;
gic.func.content_get = grid_content_get;
gic.func.state_get = grid_state_get;
gic.func.del = grid_del;
n = 0;
for (i = 0; i < 12 * 12; i++)
{
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
n = (n + 1) % 9;
ti[i].mode = i;
ti[i].path = eina_stringshare_add(buf);
ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
if (!(i % 5))
elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
}
evas_object_show(grid);
evas_object_resize(win, 600, 600);
evas_object_show(win);
}
TEST_END
static void
_before_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Testitem *ti;
Evas_Object *grid = data;
Elm_Gengrid_Item *sel;
char buf[PATH_MAX];
sel = elm_gengrid_selected_item_get(grid);
if (!sel)
return;
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[(photo_idx++) % 9]);
ti = malloc(sizeof(*ti));
ti->mode = 0;
ti->path = eina_stringshare_add(buf);
ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
NULL);
}
static void
_after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Testitem *ti;
Evas_Object *grid = data;
Elm_Gengrid_Item *sel;
char buf[PATH_MAX];
sel = elm_gengrid_selected_item_get(grid);
if (!sel)
return;
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[(photo_idx++) % 9]);
ti = malloc(sizeof(*ti));
ti->mode = 0;
ti->path = eina_stringshare_add(buf);
ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
NULL);
}
static void
_delete_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *grid = data;
Eina_List *l, *l2, *l3;
Elm_Gengrid_Item *it;
l = (Eina_List*)elm_gengrid_selected_items_get(grid);
if (!l) return;
EINA_LIST_FOREACH_SAFE(l, l2, l3, it)
elm_gengrid_item_del(it);
}
static void
_prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Testitem *ti;
Evas_Object *grid = data;
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[(photo_idx++) % 9]);
ti = malloc(sizeof(*ti));
ti->mode = 0;
ti->path = eina_stringshare_add(buf);
ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
}
static void
_append_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Testitem *ti;
Evas_Object *grid = data;
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[(photo_idx++) % 9]);
ti = malloc(sizeof(*ti));
ti->mode = 0;
ti->path = eina_stringshare_add(buf);
ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
}
static void
_size_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *grid = data;
int size = elm_spinner_value_get(obj);
elm_gengrid_item_size_set(grid, size, size);
}
TEST_START(test_gengrid2)
{
Evas_Object *bg, *grid, *bx, *hbx, *bt, *ck;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
grid = elm_gengrid_add(win);
elm_gengrid_item_size_set(grid, 150, 150);
elm_gengrid_horizontal_set(grid, EINA_FALSE);
elm_gengrid_multi_select_set(grid, EINA_FALSE);
evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_min_set(grid, 600, 500);
elm_box_pack_end(bx, grid);
evas_object_show(grid);
hbx = elm_box_add(win);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_horizontal_set(hbx, EINA_TRUE);
elm_box_pack_end(bx, hbx);
evas_object_show(hbx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Append");
evas_object_smart_callback_add(bt, "clicked", _append_bt_clicked, grid);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Prepend");
evas_object_smart_callback_add(bt, "clicked", _prepend_bt_clicked, grid);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Insert before");
evas_object_smart_callback_add(bt, "clicked", _before_bt_clicked, grid);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Insert after");
evas_object_smart_callback_add(bt, "clicked", _after_bt_clicked, grid);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Delete");
evas_object_smart_callback_add(bt, "clicked", _delete_bt_clicked, grid);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
bt = elm_spinner_add(win);
elm_spinner_min_max_set(bt, 10, 1024);
elm_spinner_value_set(bt, 150);
elm_spinner_label_format_set(bt, "Item size: %.0f");
evas_object_smart_callback_add(bt, "changed", _size_changed, grid);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(hbx, bt);
evas_object_show(bt);
ck = elm_check_add(win);
elm_object_text_set(ck, "Horizontal Mode");
evas_object_smart_callback_add(ck, "changed", _horizontal_grid, grid);
elm_box_pack_end(hbx, ck);
evas_object_show(ck);
gic.item_style = "default";
gic.func.text_get = grid_text_get;
gic.func.content_get = grid_content_get;
gic.func.state_get = grid_state_get;
gic.func.del = grid_del;
evas_object_resize(win, 600, 600);
evas_object_show(win);
}
TEST_END

File diff suppressed because it is too large Load Diff

View File

@ -1,626 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
#ifndef M_PI
#define M_PI 3.14159265
#endif
typedef struct _Gear Gear;
typedef struct _GLData GLData;
struct _Gear
{
GLfloat *vertices;
GLuint vbo;
int count;
};
// GL related data here..
struct _GLData
{
Evas_GL_API *glapi;
GLuint program;
GLuint vtx_shader;
GLuint fgmt_shader;
int initialized : 1;
int mouse_down : 1;
// Gear Stuff
GLfloat view_rotx;
GLfloat view_roty;
GLfloat view_rotz;
Gear *gear1;
Gear *gear2;
Gear *gear3;
GLfloat angle;
GLuint proj_location;
GLuint light_location;
GLuint color_location;
GLfloat proj[16];
GLfloat light[3];
};
static void gears_init(GLData *gld);
static void free_gear(Gear *gear);
static void gears_reshape(GLData *gld, int width, int height);
static void render_gears(GLData *gld);
//--------------------------------//
// Gear Stuff....
static GLfloat *
vert(GLfloat *p, GLfloat x, GLfloat y, GLfloat z, GLfloat *n)
{
p[0] = x;
p[1] = y;
p[2] = z;
p[3] = n[0];
p[4] = n[1];
p[5] = n[2];
return p + 6;
}
/* Draw a gear wheel. You'll probably want to call this function when
* building a display list since we do a lot of trig here.
*
* Input: inner_radius - radius of hole at center
* outer_radius - radius at center of teeth
* width - width of gear
* teeth - number of teeth
* tooth_depth - depth of tooth
*/
static Gear *
make_gear(GLData *gld, GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
GLint teeth, GLfloat tooth_depth)
{
GLint i;
GLfloat r0, r1, r2;
GLfloat da;
GLfloat *v;
Gear *gear;
double s[5], c[5];
GLfloat normal[3];
const int tris_per_tooth = 20;
Evas_GL_API *gl = gld->glapi;
gear = (Gear*)malloc(sizeof(Gear));
if (gear == NULL)
return NULL;
r0 = inner_radius;
r1 = outer_radius - tooth_depth / 2.0;
r2 = outer_radius + tooth_depth / 2.0;
da = 2.0 * M_PI / teeth / 4.0;
gear->vertices = calloc(teeth * tris_per_tooth * 3 * 6,
sizeof *gear->vertices);
s[4] = 0;
c[4] = 1;
v = gear->vertices;
for (i = 0; i < teeth; i++)
{
s[0] = s[4];
c[0] = c[4];
s[1] = sin(i * 2.0 * M_PI / teeth + da);
c[1] = cos(i * 2.0 * M_PI / teeth + da);
s[2] = sin(i * 2.0 * M_PI / teeth + da * 2);
c[2] = cos(i * 2.0 * M_PI / teeth + da * 2);
s[3] = sin(i * 2.0 * M_PI / teeth + da * 3);
c[3] = cos(i * 2.0 * M_PI / teeth + da * 3);
s[4] = sin(i * 2.0 * M_PI / teeth + da * 4);
c[4] = cos(i * 2.0 * M_PI / teeth + da * 4);
normal[0] = 0.0;
normal[1] = 0.0;
normal[2] = 1.0;
v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal);
v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal);
v = vert(v, r2 * c[2], r2 * s[2], width * 0.5, normal);
v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal);
v = vert(v, r1 * c[3], r1 * s[3], width * 0.5, normal);
v = vert(v, r0 * c[0], r0 * s[0], width * 0.5, normal);
v = vert(v, r1 * c[4], r1 * s[4], width * 0.5, normal);
v = vert(v, r0 * c[4], r0 * s[4], width * 0.5, normal);
v = vert(v, r0 * c[4], r0 * s[4], width * 0.5, normal);
v = vert(v, r0 * c[0], r0 * s[0], width * 0.5, normal);
v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal);
v = vert(v, r0 * c[0], r0 * s[0], -width * 0.5, normal);
normal[0] = 0.0;
normal[1] = 0.0;
normal[2] = -1.0;
v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal);
v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal);
v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal);
v = vert(v, r0 * c[0], r0 * s[0], -width * 0.5, normal);
v = vert(v, r1 * c[3], r1 * s[3], -width * 0.5, normal);
v = vert(v, r1 * c[0], r1 * s[0], -width * 0.5, normal);
v = vert(v, r2 * c[2], r2 * s[2], -width * 0.5, normal);
v = vert(v, r2 * c[1], r2 * s[1], -width * 0.5, normal);
v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal);
v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal);
v = vert(v, r1 * c[0], r1 * s[0], -width * 0.5, normal);
v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal);
v = vert(v, r2 * c[1], r2 * s[1], -width * 0.5, normal);
v = vert(v, r2 * c[2], r2 * s[2], width * 0.5, normal);
v = vert(v, r2 * c[2], r2 * s[2], -width * 0.5, normal);
v = vert(v, r1 * c[3], r1 * s[3], width * 0.5, normal);
v = vert(v, r1 * c[3], r1 * s[3], -width * 0.5, normal);
v = vert(v, r1 * c[4], r1 * s[4], width * 0.5, normal);
v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal);
v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal);
}
gear->count = (v - gear->vertices) / 6;
gl->glGenBuffers(1, &gear->vbo);
gl->glBindBuffer(GL_ARRAY_BUFFER, gear->vbo);
gl->glBufferData(GL_ARRAY_BUFFER, gear->count * 6 * 4,
gear->vertices, GL_STATIC_DRAW);
return gear;
}
static void
free_gear(Gear *gear)
{
free(gear->vertices);
free(gear);
gear = NULL;
}
static void
multiply(GLfloat *m, const GLfloat *n)
{
GLfloat tmp[16];
const GLfloat *row, *column;
div_t d;
int i, j;
for (i = 0; i < 16; i++)
{
tmp[i] = 0;
d = div(i, 4);
row = n + d.quot * 4;
column = m + d.rem;
for (j = 0; j < 4; j++)
tmp[i] += row[j] * column[j * 4];
}
memcpy(m, &tmp, sizeof tmp);
}
static void
rotate(GLfloat *m, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
double s, c;
s = sin(angle);
c = cos(angle);
GLfloat r[16] =
{
x * x * (1 - c) + c, y * x * (1 - c) + z * s, x * z * (1 - c) - y * s, 0,
x * y * (1 - c) - z * s, y * y * (1 - c) + c, y * z * (1 - c) + x * s, 0,
x * z * (1 - c) + y * s, y * z * (1 - c) - x * s, z * z * (1 - c) + c, 0,
0, 0, 0, 1
};
multiply(m, r);
}
static void
translate(GLfloat *m, GLfloat x, GLfloat y, GLfloat z)
{
GLfloat t[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1 };
multiply(m, t);
}
static void
draw_gear(GLData *gld, Gear *gear, GLfloat *m,
GLfloat x, GLfloat y, GLfloat angle, const GLfloat *color)
{
Evas_GL_API *gl = gld->glapi;
GLfloat tmp[16];
memcpy(tmp, m, sizeof tmp);
translate(tmp, x, y, 0);
rotate(tmp, 2 * M_PI * angle / 360.0, 0, 0, 1);
gl->glUniformMatrix4fv(gld->proj_location, 1, GL_FALSE, tmp);
gl->glUniform3fv(gld->light_location, 1, gld->light);
gl->glUniform4fv(gld->color_location, 1, color);
gl->glBindBuffer(GL_ARRAY_BUFFER, gear->vbo);
gl->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
6 * sizeof(GLfloat), NULL);
gl->glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE,
6 * sizeof(GLfloat), (GLfloat *) 0 + 3);
gl->glEnableVertexAttribArray(0);
gl->glEnableVertexAttribArray(1);
gl->glDrawArrays(GL_TRIANGLE_STRIP, 0, gear->count);
}
static void
gears_draw(GLData *gld)
{
Evas_GL_API *gl = gld->glapi;
static const GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 };
static const GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 };
static const GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 };
GLfloat m[16];
gl->glClearColor(0.8, 0.8, 0.1, 0.5);
gl->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
memcpy(m, gld->proj, sizeof m);
rotate(m, 2 * M_PI * gld->view_rotx / 360.0, 1, 0, 0);
rotate(m, 2 * M_PI * gld->view_roty / 360.0, 0, 1, 0);
rotate(m, 2 * M_PI * gld->view_rotz / 360.0, 0, 0, 1);
draw_gear(gld, gld->gear1, m, -3.0, -2.0, gld->angle, red);
draw_gear(gld, gld->gear2, m, 3.1, -2.0, -2 * gld->angle - 9.0, green);
draw_gear(gld, gld->gear3, m, -3.1, 4.2, -2 * gld->angle - 25.0, blue);
}
static void render_gears(GLData *gld)
{
gears_draw(gld);
gld->angle += 2.0;
}
/* new window size or exposure */
static void
gears_reshape(GLData *gld, int width, int height)
{
Evas_GL_API *gl = gld->glapi;
GLfloat ar, m[16] = {
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 0.1, 0.0,
0.0, 0.0, 0.0, 1.0
};
if (width < height)
ar = width;
else
ar = height;
m[0] = 0.1 * ar / width;
m[5] = 0.1 * ar / height;
memcpy(gld->proj, m, sizeof gld->proj);
gl->glViewport(0, 0, (GLint) width, (GLint) height);
}
static const char vertex_shader[] =
"uniform mat4 proj;\n"
"attribute vec4 position;\n"
"attribute vec4 normal;\n"
"varying vec3 rotated_normal;\n"
"varying vec3 rotated_position;\n"
"vec4 tmp;\n"
"void main()\n"
"{\n"
" gl_Position = proj * position;\n"
" rotated_position = gl_Position.xyz;\n"
" tmp = proj * normal;\n"
" rotated_normal = tmp.xyz;\n"
"}\n";
static const char fragment_shader[] =
"#ifdef GL_ES\n"
"precision mediump float;\n"
"#endif\n"
"uniform vec4 color;\n"
"uniform vec3 light;\n"
"varying vec3 rotated_normal;\n"
"varying vec3 rotated_position;\n"
"vec3 light_direction;\n"
"vec4 white = vec4(0.5, 0.5, 0.5, 1.0);\n"
"void main()\n"
"{\n"
" light_direction = normalize(light - rotated_position);\n"
" gl_FragColor = color + white * dot(light_direction, rotated_normal);\n"
"}\n";
static void
gears_init(GLData *gld)
{
Evas_GL_API *gl = gld->glapi;
const char *p;
char msg[512];
gl->glEnable(GL_CULL_FACE);
gl->glEnable(GL_DEPTH_TEST);
p = vertex_shader;
gld->vtx_shader = gl->glCreateShader(GL_VERTEX_SHADER);
gl->glShaderSource(gld->vtx_shader, 1, &p, NULL);
gl->glCompileShader(gld->vtx_shader);
gl->glGetShaderInfoLog(gld->vtx_shader, sizeof msg, NULL, msg);
printf("vertex shader info: %s\n", msg);
p = fragment_shader;
gld->fgmt_shader = gl->glCreateShader(GL_FRAGMENT_SHADER);
gl->glShaderSource(gld->fgmt_shader, 1, &p, NULL);
gl->glCompileShader(gld->fgmt_shader);
gl->glGetShaderInfoLog(gld->fgmt_shader, sizeof msg, NULL, msg);
printf("fragment shader info: %s\n", msg);
gld->program = gl->glCreateProgram();
gl->glAttachShader(gld->program, gld->vtx_shader);
gl->glAttachShader(gld->program, gld->fgmt_shader);
gl->glBindAttribLocation(gld->program, 0, "position");
gl->glBindAttribLocation(gld->program, 1, "normal");
gl->glLinkProgram(gld->program);
gl->glGetProgramInfoLog(gld->program, sizeof msg, NULL, msg);
printf("info: %s\n", msg);
gl->glUseProgram(gld->program);
gld->proj_location = gl->glGetUniformLocation(gld->program, "proj");
gld->light_location = gl->glGetUniformLocation(gld->program, "light");
gld->color_location = gl->glGetUniformLocation(gld->program, "color");
/* make the gears */
gld->gear1 = make_gear(gld, 1.0, 4.0, 1.0, 20, 0.7);
gld->gear2 = make_gear(gld, 0.5, 2.0, 2.0, 10, 0.7);
gld->gear3 = make_gear(gld, 1.3, 2.0, 0.5, 10, 0.7);
}
static void
gldata_init(GLData *gld)
{
gld->initialized = 0;
gld->mouse_down = 0;
gld->view_rotx = -20.0;
gld->view_roty = -30.0;
gld->view_rotz = 0.0;
gld->angle = 0.0;
gld->light[0] = 1.0;
gld->light[1] = 1.0;
gld->light[2] = -5.0;
}
//-------------------------//
static void
_init_gl(Evas_Object *obj)
{
GLData *gld = evas_object_data_get(obj, "gld");
gears_init(gld);
}
static void
_del_gl(Evas_Object *obj)
{
GLData *gld = evas_object_data_get(obj, "gld");
if (!gld)
{
printf("Unable to get GLData. \n");
return;
}
Evas_GL_API *gl = gld->glapi;
gl->glDeleteShader(gld->vtx_shader);
gl->glDeleteShader(gld->fgmt_shader);
gl->glDeleteProgram(gld->program);
gl->glDeleteBuffers(1, &gld->gear1->vbo);
gl->glDeleteBuffers(1, &gld->gear2->vbo);
gl->glDeleteBuffers(1, &gld->gear3->vbo);
free_gear(gld->gear1);
free_gear(gld->gear2);
free_gear(gld->gear3);
evas_object_data_del((Evas_Object*)obj, "..gld");
free(gld);
}
static void
_resize_gl(Evas_Object *obj)
{
int w, h;
GLData *gld = evas_object_data_get(obj, "gld");
elm_glview_size_get(obj, &w, &h);
// GL Viewport stuff. you can avoid doing this if viewport is all the
// same as last frame if you want
gears_reshape(gld, w,h);
}
static void
_draw_gl(Evas_Object *obj)
{
Evas_GL_API *gl = elm_glview_gl_api_get(obj);
GLData *gld = evas_object_data_get(obj, "gld");
if (!gld) return;
render_gears(gld);
gl->glFinish();
}
static Eina_Bool
_anim(void *data)
{
elm_glview_changed_set(data);
return EINA_TRUE;
}
static void
_on_done(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
evas_object_del((Evas_Object*)data);
}
static void
_del(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Ecore_Animator *ani = evas_object_data_get(obj, "ani");
ecore_animator_del(ani);
}
static void
_key_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Key_Down *ev;
ev = (Evas_Event_Key_Down *)event_info;
GLData *gld = evas_object_data_get(obj, "gld");
if (strcmp(ev->keyname, "Left") == 0)
{
gld->view_roty += 5.0;
return;
}
if (strcmp(ev->keyname, "Right") == 0)
{
gld->view_roty -= 5.0;
return;
}
if (strcmp(ev->keyname, "Up") == 0)
{
gld->view_rotx += 5.0;
return;
}
if (strcmp(ev->keyname, "Down") == 0)
{
gld->view_rotx -= 5.0;
return;
}
if ((strcmp(ev->keyname, "Escape") == 0) ||
(strcmp(ev->keyname, "Return") == 0))
{
//_on_done(data, obj, event_info);
return;
}
}
static void
_mouse_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
GLData *gld = evas_object_data_get(obj, "gld");
gld->mouse_down = 1;
}
static void
_mouse_move(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Event_Mouse_Move *ev;
ev = (Evas_Event_Mouse_Move *)event_info;
GLData *gld = evas_object_data_get(obj, "gld");
float dx = 0, dy = 0;
if (gld->mouse_down)
{
dx = ev->cur.canvas.x - ev->prev.canvas.x;
dy = ev->cur.canvas.y - ev->prev.canvas.y;
gld->view_roty += -1.0 * dx;
gld->view_rotx += -1.0 * dy;
}
}
static void
_mouse_up(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
GLData *gld = evas_object_data_get(obj, "gld");
gld->mouse_down = 0;
}
TEST_START(test_glview)
{
Evas_Object *bg, *bx, *bt, *gl;
Ecore_Animator *ani;
GLData *gld = NULL;
// alloc a data struct to hold our relevant gl info in
if (!(gld = calloc(1, sizeof(GLData)))) return;
gldata_init(gld);
// new window - do the usual and give it a name, title and delete handler
// add a standard bg
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
// Add a GLView
gl = elm_glview_add(win);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_glview_mode_set(gl, ELM_GLVIEW_ALPHA|ELM_GLVIEW_DEPTH);
elm_glview_resize_policy_set(gl, ELM_GLVIEW_RESIZE_POLICY_RECREATE);
elm_glview_render_policy_set(gl, ELM_GLVIEW_RENDER_POLICY_ALWAYS);
elm_glview_init_func_set(gl, _init_gl);
elm_glview_del_func_set(gl, _del_gl);
elm_glview_resize_func_set(gl, _resize_gl);
elm_glview_render_func_set(gl, (Elm_GLView_Func_Cb)_draw_gl);
elm_box_pack_end(bx, gl);
evas_object_show(gl);
// Add Mouse/Key Event Callbacks
elm_object_focus_set(gl, EINA_TRUE);
evas_object_event_callback_add(gl, EVAS_CALLBACK_KEY_DOWN, _key_down, gl);
evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, gl);
evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_UP, _mouse_up, gl);
evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move, gl);
// Animator and other vars
ani = ecore_animator_add(_anim, gl);
gld->glapi = elm_glview_gl_api_get(gl);
evas_object_data_set(gl, "ani", ani);
evas_object_data_set(gl, "gld", gld);
evas_object_event_callback_add(gl, EVAS_CALLBACK_DEL, _del, gl);
/* add an ok button */
bt = elm_button_add(win);
elm_object_text_set(bt, "OK");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked", _on_done, win);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,282 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _GLData GLData;
// GL related data here..
struct _GLData
{
Evas_GL_API *glapi;
GLuint program;
GLuint vtx_shader;
GLuint fgmt_shader;
GLuint vbo;
int initialized : 1;
};
static float red = 1.0;
//--------------------------------//
static GLuint
load_shader( GLData *gld, GLenum type, const char *shader_src )
{
Evas_GL_API *gl = gld->glapi;
GLuint shader;
GLint compiled;
// Create the shader object
shader = gl->glCreateShader(type);
if (shader==0)
return 0;
// Load/Compile shader source
gl->glShaderSource(shader, 1, &shader_src, NULL);
gl->glCompileShader(shader);
gl->glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
if (!compiled)
{
GLint info_len = 0;
gl->glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &info_len);
if (info_len > 1)
{
char* info_log = malloc(sizeof(char) * info_len);
gl->glGetShaderInfoLog(shader, info_len, NULL, info_log);
printf("Error compiling shader:\n%s\n======\n%s\n======\n", info_log, shader_src );
free(info_log);
}
gl->glDeleteShader(shader);
return 0;
}
return shader;
}
// Initialize the shader and program object
static int
init_shaders(GLData *gld)
{
Evas_GL_API *gl = gld->glapi;
GLbyte vShaderStr[] =
"attribute vec4 vPosition; \n"
"void main() \n"
"{ \n"
" gl_Position = vPosition; \n"
"} \n";
GLbyte fShaderStr[] =
"#ifdef GL_ES \n"
"precision mediump float; \n"
"#endif \n"
"void main() \n"
"{ \n"
" gl_FragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 );\n"
"} \n";
GLint linked;
// Load the vertex/fragment shaders
gld->vtx_shader = load_shader(gld, GL_VERTEX_SHADER, (const char*)vShaderStr);
gld->fgmt_shader = load_shader(gld, GL_FRAGMENT_SHADER, (const char*)fShaderStr);
// Create the program object
gld->program = gl->glCreateProgram( );
if (gld->program==0)
return 0;
gl->glAttachShader(gld->program, gld->vtx_shader);
gl->glAttachShader(gld->program, gld->fgmt_shader);
gl->glBindAttribLocation(gld->program, 0, "vPosition");
gl->glLinkProgram(gld->program);
gl->glGetProgramiv(gld->program, GL_LINK_STATUS, &linked);
if (!linked)
{
GLint info_len = 0;
gl->glGetProgramiv(gld->program, GL_INFO_LOG_LENGTH, &info_len);
if (info_len > 1)
{
char* info_log = malloc(sizeof(char) * info_len);
gl->glGetProgramInfoLog(gld->program, info_len, NULL, info_log);
printf("Error linking program:\n%s\n", info_log);
free(info_log);
}
gl->glDeleteProgram(gld->program);
return 0;
}
return 1;
}
// Callbacks
static void
_init_gl(Evas_Object *obj)
{
GLData *gld = evas_object_data_get(obj, "gld");
Evas_GL_API *gl = gld->glapi;
GLfloat vVertices[] = { 0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f };
if (!init_shaders(gld))
{
printf("Error Initializing Shaders\n");
return;
}
gl->glGenBuffers(1, &gld->vbo);
gl->glBindBuffer(GL_ARRAY_BUFFER, gld->vbo);
gl->glBufferData(GL_ARRAY_BUFFER, 3 * 3 * 4, vVertices, GL_STATIC_DRAW);
}
static void
_del_gl(Evas_Object *obj)
{
GLData *gld = evas_object_data_get(obj, "gld");
if (!gld)
{
printf("Unable to get GLData. \n");
return;
}
Evas_GL_API *gl = gld->glapi;
gl->glDeleteShader(gld->vtx_shader);
gl->glDeleteShader(gld->fgmt_shader);
gl->glDeleteProgram(gld->program);
gl->glDeleteBuffers(1, &gld->vbo);
evas_object_data_del((Evas_Object*)obj, "..gld");
free(gld);
}
static void
_resize_gl(Evas_Object *obj)
{
int w, h;
GLData *gld = evas_object_data_get(obj, "gld");
Evas_GL_API *gl = gld->glapi;
elm_glview_size_get(obj, &w, &h);
// GL Viewport stuff. you can avoid doing this if viewport is all the
// same as last frame if you want
gl->glViewport(0, 0, w, h);
}
static void
_draw_gl(Evas_Object *obj)
{
Evas_GL_API *gl = elm_glview_gl_api_get(obj);
GLData *gld = evas_object_data_get(obj, "gld");
if (!gld) return;
int w, h;
elm_glview_size_get(obj, &w, &h);
gl->glViewport(0, 0, w, h);
gl->glClearColor(red,0.8,0.3,1);
gl->glClear(GL_COLOR_BUFFER_BIT);
// Draw a Triangle
gl->glEnable(GL_BLEND);
gl->glUseProgram(gld->program);
gl->glBindBuffer(GL_ARRAY_BUFFER, gld->vbo);
gl->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
0, 0);
gl->glEnableVertexAttribArray(0);
gl->glDrawArrays(GL_TRIANGLES, 0, 3);
// Optional - Flush the GL pipeline
gl->glFinish();
red -= 0.1;
if (red < 0.0) red = 1.0;
}
static Eina_Bool
_anim(void *data)
{
elm_glview_changed_set(data);
return EINA_TRUE;
}
static void
_on_done(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
evas_object_del((Evas_Object*)data);
}
static void
_del(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Ecore_Animator *ani = evas_object_data_get(obj, "ani");
ecore_animator_del(ani);
}
TEST_START(test_glview_simple)
{
Evas_Object *bg, *bx, *bt, *gl;
Ecore_Animator *ani;
GLData *gld = NULL;
if (!(gld = calloc(1, sizeof(GLData)))) return;
// Set the engine to opengl_x11
elm_engine_set("opengl_x11");
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
gl = elm_glview_add(win);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_glview_mode_set(gl, ELM_GLVIEW_ALPHA | ELM_GLVIEW_DEPTH);
elm_glview_resize_policy_set(gl, ELM_GLVIEW_RESIZE_POLICY_RECREATE);
elm_glview_render_policy_set(gl, ELM_GLVIEW_RENDER_POLICY_ON_DEMAND);
elm_glview_init_func_set(gl, _init_gl);
elm_glview_del_func_set(gl, _del_gl);
elm_glview_resize_func_set(gl, _resize_gl);
elm_glview_render_func_set(gl, _draw_gl);
elm_box_pack_end(bx, gl);
evas_object_show(gl);
elm_object_focus_set(gl, EINA_TRUE);
ani = ecore_animator_add(_anim, gl);
gld->glapi = elm_glview_gl_api_get(gl);
evas_object_data_set(gl, "ani", ani);
evas_object_data_set(gl, "gld", gld);
evas_object_event_callback_add(gl, EVAS_CALLBACK_DEL, _del, gl);
bt = elm_button_add(win);
elm_object_text_set(bt, "OK");
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked", _on_done, win);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,176 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_ch_grid(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
int x, y, w, h;
elm_grid_pack_get(obj, &x, &y, &w, &h);
elm_grid_pack_set(obj, x - 1, y - 1, w + 2, h + 2);
}
struct _Api_Data
{
Evas_Object *grid;
Evas_Object *child;
};
typedef struct _Api_Data Api_Data;
enum _api_state
{
GRID_PACK_SET,
GRID_UNPACK,
GRID_SIZE,
GRID_CLEAR,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
Api_Data *dt = api->data;
int w, h;
switch(api->state)
{ /* Put all api-changes under switch */
case GRID_PACK_SET: /* 0 */
elm_grid_pack_set(dt->child, 5, 15, 60, 40);
break;
case GRID_UNPACK: /* 1 */
elm_grid_unpack(dt->grid, dt->child);
evas_object_del(dt->child);
break;
case GRID_SIZE: /* 2 */
elm_grid_size_get(dt->grid, &w, &h);
printf("size w=<%d> h=<%d>\n", w, h);
w = h = 100; /* grid size returns wrong values */
w += 30;
h += 10;
elm_grid_size_set(dt->grid, w, h);
break;
case GRID_CLEAR: /* 3 */
elm_grid_clear(dt->grid, EINA_TRUE);
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_grid)
{
Evas_Object *bg, *gd, *bt, *rc, *en;
Api_Data *dt = malloc(sizeof(Api_Data));
api->data = dt;
api->free_data = EINA_TRUE;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
gd = elm_grid_add(win);
elm_grid_size_set(gd, 100, 100);
elm_win_resize_object_add(win, gd);
evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
dt->grid = gd;
evas_object_show(gd);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_entry_set(en, "Entry text");
elm_entry_single_line_set(en, 1);
elm_grid_pack(gd, en, 50, 10, 40, 10);
evas_object_show(en);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_entry_set(en, "Entry text 2");
elm_entry_single_line_set(en, 1);
elm_grid_pack(gd, en, 60, 20, 30, 10);
evas_object_show(en);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_grid_pack(gd, api->bt, 30, 0, 40, 10);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
elm_grid_pack(gd, bt, 0, 0, 20, 20);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
elm_grid_pack(gd, bt, 10, 10, 40, 20);
dt->child = bt;
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
elm_grid_pack(gd, bt, 10, 30, 20, 50);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
elm_grid_pack(gd, bt, 80, 80, 20, 20);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Change");
elm_grid_pack(gd, bt, 40, 40, 20, 20);
evas_object_smart_callback_add(bt, "clicked", _ch_grid, gd);
evas_object_show(bt);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 128, 0, 0, 128);
elm_grid_pack(gd, rc, 40, 70, 20, 10);
evas_object_show(rc);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 0, 128, 0, 128);
elm_grid_pack(gd, rc, 60, 70, 10, 10);
evas_object_show(rc);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 0, 0, 128, 128);
elm_grid_pack(gd, rc, 40, 80, 10, 10);
evas_object_show(rc);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 128, 0, 128, 128);
elm_grid_pack(gd, rc, 50, 80, 10, 10);
evas_object_show(rc);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rc, 128, 64, 0, 128);
elm_grid_pack(gd, rc, 60, 80, 10, 10);
evas_object_show(rc);
evas_object_resize(win, 480, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,162 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
my_hover_bt(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *hv = data;
evas_object_show(hv);
}
TEST_START(test_hover)
{
Evas_Object *bg, *bx, *bt, *hv, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
hv = elm_hover_add(win);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
evas_object_smart_callback_add(bt, "clicked", my_hover_bt, hv);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_hover_parent_set(hv, win);
elm_hover_target_set(hv, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Popup");
elm_hover_content_set(hv, "middle", bt);
evas_object_show(bt);
bx = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 1");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 2");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 3");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(bx);
elm_hover_content_set(hv, "top", bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Bottom");
elm_hover_content_set(hv, "bottom", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Left");
elm_hover_content_set(hv, "left", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Right");
elm_hover_content_set(hv, "right", bt);
evas_object_show(bt);
evas_object_size_hint_min_set(bg, 160, 160);
evas_object_size_hint_max_set(bg, 640, 640);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END
TEST_START(test_hover2)
{
Evas_Object *bg, *bx, *bt, *hv, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
hv = elm_hover_add(win);
elm_object_style_set(hv, "popout");
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
evas_object_smart_callback_add(bt, "clicked", my_hover_bt, hv);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_hover_parent_set(hv, win);
elm_hover_target_set(hv, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Popup");
elm_hover_content_set(hv, "middle", bt);
evas_object_show(bt);
bx = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 1");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 2");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 3");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(bx);
elm_hover_content_set(hv, "top", bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Bot");
elm_hover_content_set(hv, "bottom", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Left");
elm_hover_content_set(hv, "left", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Right");
elm_hover_content_set(hv, "right", bt);
evas_object_show(bt);
evas_object_size_hint_min_set(bg, 160, 160);
evas_object_size_hint_max_set(bg, 640, 640);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END

View File

@ -1,190 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
enum _api_state
{
HOVERSEL_HORIZ,
HOVERSEL_END,
HOVERSEL_LABAL_SET,
HOVERSEL_ICON_UNSET,
HOVERSEL_CLEAR_OPEN,
HOVERSEL_CLEAR,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
const Eina_List *items = elm_box_children_get(api->data);
if(!eina_list_count(items))
return;
/* use elm_box_children_get() to get list of children */
switch(api->state)
{ /* Put all api-changes under switch */
case HOVERSEL_HORIZ: /* Make first hover horiz (0) */
elm_hoversel_horizontal_set(eina_list_nth(items, 0), EINA_TRUE);
elm_hoversel_hover_begin(eina_list_nth(items, 0));
break;
case HOVERSEL_END: /* Make first hover horiz (1) */
elm_hoversel_hover_begin(eina_list_nth(items, 1));
elm_hoversel_hover_end(eina_list_nth(items, 1));
break;
case HOVERSEL_LABAL_SET: /* set second hover label (2) */
elm_object_text_set(eina_list_nth(items, 1), "Label from API");
break;
case HOVERSEL_ICON_UNSET: /* 3 */
elm_object_text_set(eina_list_nth(items, 5), "Label only");
elm_object_part_content_unset(eina_list_nth(items, 5), "icon");
break;
case HOVERSEL_CLEAR_OPEN: /* 4 */
elm_hoversel_hover_begin(eina_list_nth(items, 1));
elm_hoversel_clear(eina_list_nth(items, 1));
break;
case HOVERSEL_CLEAR: /* 5 */
elm_hoversel_clear(eina_list_nth(items, 0));
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_hoversel)
{
Evas_Object *bg, *bx, *bxx, *bt, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
api->data = bx;
evas_object_show(bx);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, bx);
bt = elm_hoversel_add(win);
// FIXME: need to add horizontal hoversel theme to default some day
// elm_hoversel_horizontal_set(bt, 1);
elm_hoversel_hover_parent_set(bt, win);
elm_object_text_set(bt, "Labels");
elm_hoversel_item_add(bt, "Item 1", NULL, ELM_ICON_NONE, NULL, NULL);
elm_hoversel_item_add(bt, "Item 2", NULL, ELM_ICON_NONE, NULL, NULL);
elm_hoversel_item_add(bt, "Item 3", NULL, ELM_ICON_NONE, NULL, NULL);
elm_hoversel_item_add(bt, "Item 4 - Long Label Here", NULL, ELM_ICON_NONE, NULL, NULL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_hoversel_add(win);
elm_hoversel_hover_parent_set(bt, win);
elm_object_text_set(bt, "Some Icons");
elm_hoversel_item_add(bt, "Item 1", NULL, ELM_ICON_NONE, NULL, NULL);
elm_hoversel_item_add(bt, "Item 2", NULL, ELM_ICON_NONE, NULL, NULL);
elm_hoversel_item_add(bt, "Item 3", "home", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 4", "close", ELM_ICON_STANDARD, NULL, NULL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_hoversel_add(win);
elm_hoversel_hover_parent_set(bt, win);
elm_object_text_set(bt, "All Icons");
elm_hoversel_item_add(bt, "Item 1", "apps", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 2", "arrow_down", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 3", "home", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 4", "close", ELM_ICON_STANDARD, NULL, NULL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_hoversel_add(win);
elm_hoversel_hover_parent_set(bt, win);
elm_object_text_set(bt, "All Icons");
elm_hoversel_item_add(bt, "Item 1", "apps", ELM_ICON_STANDARD, NULL, NULL);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_hoversel_item_add(bt, "Item 2", buf, ELM_ICON_FILE, NULL, NULL);
elm_hoversel_item_add(bt, "Item 3", "home", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 4", "close", ELM_ICON_STANDARD, NULL, NULL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_hoversel_add(win);
elm_hoversel_hover_parent_set(bt, win);
elm_object_text_set(bt, "Disabled Hoversel");
elm_hoversel_item_add(bt, "Item 1", "apps", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 2", "close", ELM_ICON_STANDARD, NULL, NULL);
elm_object_disabled_set(bt, 1);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_hoversel_add(win);
elm_hoversel_hover_parent_set(bt, win);
elm_object_text_set(bt, "Icon + Label");
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_object_part_content_set(bt, "icon", ic);
evas_object_show(ic);
elm_hoversel_item_add(bt, "Item 1", "apps", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 2", "arrow_down", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 3", "home", ELM_ICON_STANDARD, NULL, NULL);
elm_hoversel_item_add(bt, "Item 4", "close", ELM_ICON_STANDARD, NULL, NULL);
evas_object_size_hint_weight_set(bt, 0.0, 0.0);
evas_object_size_hint_align_set(bt, 0.5, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END

View File

@ -1,31 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
icon_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("clicked!\n");
}
TEST_START(test_icon)
{
Evas_Object *ic;
char buf[PATH_MAX];
elm_win_alpha_set(win, 1);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
elm_icon_no_scale_set(ic, 1);
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(ic, 0.5, 0.5);
elm_win_resize_object_add(win, ic);
evas_object_show(ic);
evas_object_smart_callback_add(ic, "clicked", icon_clicked, NULL);
evas_object_show(win);
}
TEST_END

View File

@ -1,98 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static Elm_Genlist_Item_Class it_desk;
static char *
desk_gl_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
#ifdef ELM_EFREET
Efreet_Desktop *d = (Efreet_Desktop *)data;
return strdup(d->name);
#else
return NULL;
(void)data;
#endif
}
static Evas_Object *
desk_gl_content_get(void *data, Evas_Object *obj, const char *part)
{
#ifdef ELM_EFREET
Efreet_Desktop *d = (Efreet_Desktop *)data;
Evas_Object *ic;
ic = elm_icon_add(obj);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
if (!(!strcmp(part, "elm.swallow.icon"))) return ic;
if (!d->icon) return ic;
elm_icon_standard_set(ic, d->icon);
return ic;
#else
return NULL;
(void)data;
(void)obj;
(void)part;
#endif
}
static void
desk_gl_del(void *data, Evas_Object *obj __UNUSED__)
{
#ifdef ELM_EFREET
Efreet_Desktop *d = (Efreet_Desktop *)data;
efreet_desktop_free(d);
#else
return;
(void)data;
#endif
}
#ifdef ELM_EFREET
static void
desktop_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("sel\n");
}
#endif
TEST_START(test_icon_desktops)
{
Evas_Object *bg, *gl;
#ifdef ELM_EFREET
Eina_List *desktops;
#endif
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
it_desk.item_style = "default";
it_desk.func.label_get = desk_gl_label_get;
it_desk.func.content_get = desk_gl_content_get;
it_desk.func.state_get = NULL;
it_desk.func.del = desk_gl_del;
gl = elm_genlist_add(win);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, gl);
evas_object_show(gl);
#ifdef ELM_EFREET
if (elm_need_efreet())
{
desktops = efreet_util_desktop_name_glob_list("*");
if (desktops)
{
Efreet_Desktop *d;
EINA_LIST_FREE(desktops, d)
elm_genlist_item_append(gl, &it_desk, d,
NULL, ELM_GENLIST_ITEM_NONE,
desktop_sel, NULL);
}
}
#endif
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,350 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static Elm_Genlist_Item_Class itci;
char *gli_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
char buf[256];
int j = (long)data;
snprintf(buf, sizeof(buf), "%c%c",
'A' + ((j >> 4) & 0xf),
'a' + ((j ) & 0xf)
);
return strdup(buf);
}
void
index_changed2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
// called on a change but delayed in case multiple changes happen in a
// short timespan
elm_genlist_item_top_bring_in(elm_index_item_data_get(event_info));
}
void
index_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
// this is calld on every change, no matter how often
// elm_genlist_item_bring_in(event_info);
}
void
index_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
// called on final select
elm_genlist_item_top_bring_in(elm_index_item_data_get(event_info));
}
struct _Idx_Data_Type
{
Evas_Object *id; /* Pointer to Index */
Elm_Object_Item *item; /* Item we use for search */
};
typedef struct _Idx_Data_Type Idx_Data_Type;
enum _api_state
{
INDEX_LEVEL_SET,
INDEX_ACTIVE_SET,
INDEX_APPEND_RELATIVE,
INDEX_PREPEND,
INDEX_ITEM_DEL,
INDEX_ITEM_FIND,
INDEX_CLEAR,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
Idx_Data_Type *d = api->data;
switch(api->state)
{ /* Put all api-changes under switch */
case INDEX_LEVEL_SET: /* 0 */
elm_index_active_set(d->id, EINA_TRUE);
elm_index_item_level_set(d->id, (elm_index_item_level_get(d->id) ? 0 : 1));
break;
case INDEX_ACTIVE_SET: /* 1 */
elm_index_active_set(d->id, EINA_FALSE);
break;
case INDEX_APPEND_RELATIVE: /* 2 */
elm_index_item_append_relative(d->id, "W", d->item, elm_index_item_find(d->id, d->item));
break;
case INDEX_PREPEND: /* 3 */
elm_index_item_prepend(d->id, "D", d->item);
break;
case INDEX_ITEM_DEL: /* 4 */
elm_index_item_del(d->id, elm_index_item_find(d->id, d->item));
break;
case INDEX_ITEM_FIND: /* 5 */
{
Elm_Object_Item *i = elm_index_item_find(d->id, d->item);
if(i)
{
printf("Item Find - Found Item.\n");
elm_index_item_del(d->id, i);
}
}
break;
case INDEX_CLEAR: /* 6 */
elm_index_item_clear(d->id);
break;
case API_STATE_LAST:
break;
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_index)
{
Evas_Object *bg, *bxx, *gl, *id;
Elm_Object_Item *glit;
int i, j;
Idx_Data_Type *dt = malloc(sizeof(Idx_Data_Type));
api->data = dt;
api->free_data = EINA_TRUE;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bxx = elm_box_add(win);
elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
gl = elm_genlist_add(win);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(gl);
dt->id = id = elm_index_add(win);
evas_object_size_hint_weight_set(id, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(id, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_win_resize_object_add(win, id);
api->bt = elm_button_add(win);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
elm_box_pack_end(bxx, gl);
evas_object_show(id);
itci.item_style = "default";
itci.func.text_get = gli_text_get;
itci.func.content_get = NULL;
itci.func.state_get = NULL;
itci.func.del = NULL;
j = 0;
for (i = 0; i < 100; i++)
{
glit = elm_genlist_item_append(gl, &itci,
(void *)(long)j/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
NULL/* func */, NULL/* func data */);
if (!(j & 0xf))
{
char buf[32];
snprintf(buf, sizeof(buf), "%c", 'A' + ((j >> 4) & 0xf));
elm_index_item_append(id, buf, glit);
}
j += 2;
}
evas_object_smart_callback_add(id, "delay,changed", index_changed2, NULL);
evas_object_smart_callback_add(id, "changed", index_changed, NULL);
evas_object_smart_callback_add(id, "selected", index_selected, NULL);
elm_index_item_go(id, 0);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END
/***********/
typedef struct _Test_Index2_Elements
{
Evas_Object *entry, *lst, *id;
} Test_Index2_Elements;
void
test_index2_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
/* FIXME it won't be called if elm_test main window is closed */
free(data);
}
int
test_index2_cmp(const void *data1, const void *data2)
{
const char *label1, *label2;
const Elm_Object_Item *list_it1 = data1;
const Elm_Object_Item *list_it2 = data2;
label1 = elm_list_item_label_get(list_it1);
label2 = elm_list_item_label_get(list_it2);
return strcasecmp(label1, label2);
}
int
test_index2_icmp(const void *data1, const void *data2)
{
const char *label1, *label2;
const Elm_Object_Item *index_it1 = data1;
const Elm_Object_Item *index_it2 = data2;
label1 = elm_index_item_letter_get(index_it1);
label2 = elm_index_item_letter_get(index_it2);
return strcasecmp(label1, label2);
}
void
test_index2_it_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Test_Index2_Elements *gui = data;
Elm_Object_Item *list_it;
const char *label;
char letter[2];
label = elm_entry_entry_get(gui->entry);
snprintf(letter, sizeof(letter), "%c", label[0]);
list_it = elm_list_item_sorted_insert(gui->lst, label, NULL, NULL, NULL,
NULL, test_index2_cmp);
elm_index_item_sorted_insert(gui->id, letter, list_it, test_index2_icmp,
test_index2_cmp);
elm_list_go(gui->lst);
/* FIXME it's not showing the recently added item */
elm_list_item_show(list_it);
}
void
test_index2_it_del(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Test_Index2_Elements *gui = data;
const char *label, *label_next;
Elm_Object_Item *lit, *lit_next;
lit = elm_list_selected_item_get(obj);
lit_next = elm_list_item_next(lit);
if (!lit_next)
{
elm_index_item_del(gui->id, elm_index_item_find(gui->id, lit));
elm_list_item_del(lit);
return;
}
label = elm_list_item_label_get(lit);
label_next = elm_list_item_label_get(lit_next);
if (label[0] == label_next[0])
{
Elm_Object_Item *iit;
iit = elm_index_item_find(gui->id, lit);
elm_index_item_data_set(iit, lit_next);
}
else
elm_index_item_del(gui->id, elm_index_item_find(gui->id, lit));
elm_list_item_del(lit);
}
void
test_index2_id_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
elm_list_item_show(event_info);
}
TEST_START(test_index2)
{
Evas_Object *bg, *box, *bt;
Test_Index2_Elements *gui;
gui = malloc(sizeof(*gui));
evas_object_smart_callback_add(win, "delete,request", test_index2_del, gui);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, box);
evas_object_show(box);
gui->id = elm_index_add(win);
evas_object_size_hint_weight_set(gui->id, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, gui->id);
evas_object_smart_callback_add(gui->id, "delay,changed",
test_index2_id_changed, NULL);
evas_object_show(gui->id);
gui->entry = elm_entry_add(win);
elm_entry_scrollable_set(gui->entry, EINA_TRUE);
elm_entry_entry_set(gui->entry, "Label");
elm_entry_single_line_set(gui->entry, EINA_TRUE);
evas_object_size_hint_weight_set(gui->entry, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_fill_set(gui->entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, gui->entry);
evas_object_show(gui->entry);
bt = elm_button_add(win);
elm_object_text_set(bt, "Add");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, bt);
evas_object_smart_callback_add(bt, "clicked", test_index2_it_add, gui);
evas_object_show(bt);
gui->lst = elm_list_add(win);
elm_box_pack_end(box, gui->lst);
evas_object_size_hint_weight_set(gui->lst, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(gui->lst, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(gui->lst, "selected", test_index2_it_del,
gui);
elm_list_go(gui->lst);
evas_object_show(gui->lst);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,114 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
enum _api_state
{
CONTENT_UNSET,
API_STATE_LAST
};
typedef enum _api_state api_state;
static void
set_api_state(api_data *api)
{
Evas_Object *t;
switch(api->state)
{
case CONTENT_UNSET:
t = elm_win_inwin_content_unset(api->data);
evas_object_del(t);
t = elm_label_add(elm_object_parent_widget_get(api->data));
elm_object_text_set(t, "Content was unset.<br>DONE!");
elm_win_inwin_content_set(api->data, t);
evas_object_show(t);
default:
return;
}
}
static void
_api_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
char str[128];
printf("clicked event on API Button: api_state=<%d>\n", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
elm_object_text_set(a->bt, str);
elm_object_disabled_set(a->bt, a->state == API_STATE_LAST);
}
TEST_START(test_inwin)
{
Evas_Object *bg, *bxx, *inwin, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
inwin = elm_win_inwin_add(win);
api->data = inwin;
evas_object_show(inwin);
bxx = elm_box_add(inwin);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx);
api->bt = elm_button_add(inwin);
elm_object_text_set(api->bt, "Next API function");
evas_object_smart_callback_add(api->bt, "clicked", _api_bt_clicked, (void *) api);
elm_box_pack_end(bxx, api->bt);
elm_object_disabled_set(api->bt, api->state == API_STATE_LAST);
evas_object_show(api->bt);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is an \"inwin\" - a window in a<br>"
"window. This is handy for quick popups<br>"
"you want centered, taking over the window<br>"
"until dismissed somehow. Unlike hovers they<br>"
"don't hover over their target.");
elm_box_pack_end(bxx, lb);
elm_win_inwin_content_set(inwin, bxx);
evas_object_show(lb);
evas_object_resize(win, 320, 240);
evas_object_show(win);
}
TEST_END
TEST_START(test_inwin2)
{
Evas_Object *bg, *inwin, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
inwin = elm_win_inwin_add(win);
elm_object_style_set(inwin, "minimal_vertical");
evas_object_show(inwin);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is an \"inwin\" - a window in a<br>"
"window. This is handy for quick popups<br>"
"you want centered, taking over the window<br>"
"until dismissed somehow. Unlike hovers they<br>"
"don't hover over their target.<br>"
"<br>"
"This inwin style compacts itself vertically<br>"
"to the size of its contents minimum size.");
elm_win_inwin_content_set(inwin, lb);
evas_object_show(lb);
evas_object_resize(win, 320, 240);
evas_object_show(win);
}
TEST_END

View File

@ -1,68 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_label)
{
Evas_Object *bg, *bx, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
lb = elm_label_add(win);
elm_object_text_set(lb,
"<b>This is a small label</b>"
);
evas_object_size_hint_weight_set(lb, 0.0, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is a larger label with newlines<br>"
"to make it bigger, bit it won't expand or wrap<br>"
"just be a block of text that can't change its<br>"
"formatting as it's fixed based on text<br>"
);
evas_object_size_hint_weight_set(lb, 0.0, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
lb = elm_label_add(win);
elm_label_line_wrap_set(lb, ELM_WRAP_CHAR);
elm_object_text_set(lb,
"<b>"
"This is more text designed to line-wrap here as "
"This object is resized horizontally. As it is "
"resized vertically though, nothing should change. "
"The amount of space allocated vertically should "
"change as horizontal size changes."
"</b>"
);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This small label set to wrap"
);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
evas_object_resize(win, 320, 300);
evas_object_show(bx);
evas_object_show(win);
elm_win_resize_object_add(win, bx);
}
TEST_END

View File

@ -1,906 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
mode_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
if (elm_mapbuf_enabled_get(mb))
elm_mapbuf_enabled_set(mb, 0);
else
elm_mapbuf_enabled_set(mb, 1);
}
}
static void
full_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win));
}
static void
alpha_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
elm_mapbuf_alpha_set(mb, elm_check_state_get(obj));
}
}
static void
smooth_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
elm_mapbuf_smooth_set(mb, elm_check_state_get(obj));
}
}
static void
close_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
evas_object_del(data);
}
static Eina_Bool
tim_cb(void *data)
{
Evas_Object *tb, *sc, *mb;
Eina_List *list, *l;
evas_object_data_del(data, "timer");
tb = evas_object_data_get(data, "tb");
sc = evas_object_data_get(data, "sc");
elm_object_scroll_freeze_push(sc);
evas_object_data_set(data, "dragging", (void *)(long)(1));
evas_object_color_set(data, 255, 255, 255, 255);
list = (Eina_List *)evas_object_data_get
(elm_object_top_widget_get(data), "mbs");
EINA_LIST_FOREACH(list, l, mb)
evas_object_color_set(mb, 128, 128, 128, 128);
elm_table_unpack(tb, data);
return EINA_FALSE;
}
static void
ic_del_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Ecore_Timer *tim;
tim = evas_object_data_get(obj, "timer");
if (tim)
{
evas_object_data_del(obj, "timer");
ecore_timer_del(tim);
}
}
static void
ic_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
Ecore_Timer *tim;
Evas_Coord x, y, w, h;
evas_object_color_set(data, 128, 0, 0, 128);
tim = evas_object_data_get(obj, "timer");
if (tim) evas_object_data_del(obj, "timer");
tim = ecore_timer_add(1.0, tim_cb, obj);
evas_object_data_set(obj, "timer", tim);
evas_object_geometry_get(data, &x, &y, &w, &h);
evas_object_data_set(obj, "x", (void *)(long)(ev->canvas.x));
evas_object_data_set(obj, "y", (void *)(long)(ev->canvas.y));
evas_object_data_set(obj, "px", (void *)(long)(x));
evas_object_data_set(obj, "py", (void *)(long)(y));
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
{
printf("double click %p\n", obj);
}
}
static void
ic_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Up *ev = event_info;
Ecore_Timer *tim;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
evas_object_color_set(data, 255, 255, 255, 255);
tim = evas_object_data_get(obj, "timer");
if (tim)
{
evas_object_data_del(obj, "timer");
ecore_timer_del(tim);
}
if (evas_object_data_get(obj, "dragging"))
{
Evas_Object *tb, *sc, *mb;
Eina_List *list, *l;
int tbx, tby;
evas_object_data_del(obj, "dragging");
tb = evas_object_data_get(obj, "tb");
sc = evas_object_data_get(obj, "sc");
elm_object_scroll_freeze_pop(sc);
tbx = (int)(long)evas_object_data_get(obj, "tbx");
tby = (int)(long)evas_object_data_get(obj, "tby");
elm_table_pack(tb, obj, tbx, tby, 1, 1);
list = (Eina_List *)evas_object_data_get
(elm_object_top_widget_get(obj), "mbs");
EINA_LIST_FOREACH(list, l, mb)
evas_object_color_set(mb, 255, 255, 255, 255);
}
}
static void
ic_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Move *ev = event_info;
if (evas_object_data_get(obj, "dragging"))
{
Evas_Coord x, y, px, py;
x = (Evas_Coord)(long)evas_object_data_get(obj, "x");
y = (Evas_Coord)(long)evas_object_data_get(obj, "y");
px = (Evas_Coord)(long)evas_object_data_get(obj, "px");
py = (Evas_Coord)(long)evas_object_data_get(obj, "py");
evas_object_move(obj,
px + ev->cur.canvas.x - x,
py + ev->cur.canvas.y - y);
}
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
Ecore_Timer *tim;
tim = evas_object_data_get(obj, "timer");
if (tim)
{
evas_object_data_del(obj, "timer");
ecore_timer_del(tim);
}
evas_object_color_set(data, 255, 255, 255, 255);
return;
}
}
TEST_START(test_launcher)
{
Evas_Object *bg, *sc, *tb, *pad, *bt, *ic, *lb, *tb2, *mb, *ck, *bx, *bx2;
int i, j, k, n, m;
char buf[PATH_MAX];
const char *names[] =
{
"Hello", "World", "Spam", "Egg",
"Ham", "Good", "Bad", "Milk",
"Smell", "Of", "Sky", "Gold",
"Hole", "Pig", "And", "Calm"
};
Eina_List *mbs = NULL;
bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
elm_bg_file_set(bg, buf, NULL);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
elm_box_homogeneous_set(bx, EINA_TRUE);
elm_box_horizontal_set(bx, EINA_TRUE);
sc = elm_scroller_add(win);
elm_scroller_bounce_set(sc, 1, 0);
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
n = 0; m = 0;
for (k = 0 ; k < 8; k++)
{
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, 0.5, 0.5);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 470, 4);
evas_object_size_hint_weight_set(pad, 0.0, 0.0);
evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, pad, 1, 0, 5, 1);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 470, 4);
evas_object_size_hint_weight_set(pad, 0.0, 0.0);
evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, pad, 1, 11, 5, 1);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 4, 4);
evas_object_size_hint_weight_set(pad, 0.0, 0.0);
evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, pad, 0, 1, 1, 10);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 4, 4);
evas_object_size_hint_weight_set(pad, 0.0, 0.0);
evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, pad, 6, 1, 1, 10);
mb = elm_mapbuf_add(win);
elm_object_content_set(mb, tb);
evas_object_show(tb);
for (j = 0; j < 5; j++)
{
for (i = 0; i < 5; i++)
{
ic = elm_icon_add(win);
elm_object_scale_set(ic, 0.5);
snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), n);
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_table_pack(tb, ic, 1 + i, 1 + (j * 2), 1, 1);
evas_object_show(ic);
lb = elm_label_add(win);
elm_object_style_set(lb, "marker");
elm_object_text_set(lb, names[m]);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(lb, 0.5, 0.5);
elm_table_pack(tb, lb, 1 + i, 1 + (j * 2) + 1, 1, 1);
evas_object_show(lb);
evas_object_event_callback_add(ic, EVAS_CALLBACK_DEL, ic_del_cb, ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_DOWN, ic_down_cb, ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_UP, ic_up_cb, ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_MOVE, ic_move_cb, ic);
evas_object_data_set(ic, "lb", lb);
evas_object_data_set(ic, "tb", tb);
evas_object_data_set(ic, "sc", sc);
evas_object_data_set(ic, "bx", bx);
evas_object_data_set(ic, "mb", mb);
evas_object_data_set(ic, "tbx", (void *)(long)(1 + i));
evas_object_data_set(ic, "tby", (void *)(long)(1 + (j * 2)));
n++; if (n > 23) n = 0;
m++; if (m > 15) m = 0;
}
}
elm_box_pack_end(bx, mb);
evas_object_show(mb);
mbs = eina_list_append(mbs, mb);
}
// fixme: free mbs
evas_object_data_set(win, "mbs", mbs);
bx2 = elm_box_add(win);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_horizontal_set(bx2, EINA_FALSE);
elm_win_resize_object_add(win, bx2);
evas_object_show(bx2);
elm_object_content_set(sc, bx);
evas_object_show(bx);
elm_scroller_page_relative_set(sc, 1.0, 1.0);
evas_object_show(sc);
tb2 = elm_table_add(win);
evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_fill_set(tb2, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx2, tb2);
elm_box_pack_end(bx2, sc);
ck = elm_check_add(win);
elm_object_text_set(ck, "Map");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", mode_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.05, 0.99);
elm_table_pack(tb2, ck, 0, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "A");
elm_check_state_set(ck, 1);
evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.20, 0.99);
elm_table_pack(tb2, ck, 1, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "Smo");
elm_check_state_set(ck, 1);
evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.40, 0.99);
elm_table_pack(tb2, ck, 2, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "FS");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", full_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
elm_table_pack(tb2, ck, 3, 0, 1, 1);
evas_object_show(ck);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", close_cb, win);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.95, 0.99);
elm_table_pack(tb2, bt, 4, 0, 1, 1);
evas_object_show(bt);
evas_object_show(tb2);
evas_object_resize(win, 480, 800);
evas_object_show(win);
}
TEST_END
TEST_START(test_launcher2)
{
Evas_Object *bg, *sc, *bt, *tb2, *mb, *ck, *bx, *ly;
int k;
char buf[PATH_MAX];
Eina_List *mbs = NULL;
bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
elm_bg_file_set(bg, buf, NULL);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
elm_box_homogeneous_set(bx, EINA_TRUE);
elm_box_horizontal_set(bx, EINA_TRUE);
for (k = 0 ; k < 8; k++)
{
ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "layout");
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
elm_object_part_content_set(ly, "element1", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
elm_object_part_content_set(ly, "element2", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
elm_object_part_content_set(ly, "element3", bt);
evas_object_show(bt);
mb = elm_mapbuf_add(win);
elm_object_content_set(mb, ly);
evas_object_show(ly);
elm_box_pack_end(bx, mb);
evas_object_show(mb);
mbs = eina_list_append(mbs, mb);
}
// fixme: free mbs
evas_object_data_set(win, "mbs", mbs);
sc = elm_scroller_add(win);
elm_scroller_bounce_set(sc, 1, 0);
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, sc);
elm_object_content_set(sc, bx);
evas_object_show(bx);
elm_scroller_page_relative_set(sc, 1.0, 1.0);
evas_object_show(sc);
tb2 = elm_table_add(win);
evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, tb2);
ck = elm_check_add(win);
elm_object_text_set(ck, "Map");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", mode_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.05, 0.99);
elm_table_pack(tb2, ck, 0, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "A");
elm_check_state_set(ck, 1);
evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.20, 0.99);
elm_table_pack(tb2, ck, 1, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "Smo");
elm_check_state_set(ck, 1);
evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.40, 0.99);
elm_table_pack(tb2, ck, 2, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "FS");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", full_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
elm_table_pack(tb2, ck, 3, 0, 1, 1);
evas_object_show(ck);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", close_cb, win);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.95, 0.99);
elm_table_pack(tb2, bt, 4, 0, 1, 1);
evas_object_show(bt);
evas_object_show(tb2);
evas_object_resize(win, 480, 800);
evas_object_show(win);
}
TEST_END
static void
l3_mode_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
if (elm_mapbuf_enabled_get(mb))
elm_mapbuf_enabled_set(mb, 0);
else
elm_mapbuf_enabled_set(mb, 1);
}
}
static void
l3_full_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win));
}
static void
l3_alpha_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
elm_mapbuf_alpha_set(mb, elm_check_state_get(obj));
}
}
static void
l3_smooth_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
elm_mapbuf_smooth_set(mb, elm_check_state_get(obj));
}
}
static void
l3_hidden_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *mb;
Eina_List *mbs, *l;
mbs = evas_object_data_get(win, "mbs");
EINA_LIST_FOREACH(mbs, l, mb)
{
if (evas_object_visible_get(mb)) evas_object_hide(mb);
else evas_object_show(mb);
}
}
static void
l3_close_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
evas_object_del(data);
}
static Eina_Bool
l3_tim_cb(void *data)
{
Evas_Object *ly, *ly2, *sc, *mb;
Eina_List *list, *l;
char buf[256];
int slx, sly;
evas_object_data_del(data, "timer");
ly = evas_object_data_get(data, "ly");
ly2 = evas_object_data_get(data, "ly2");
sc = evas_object_data_get(data, "sc");
elm_object_scroll_freeze_push(sc);
evas_object_data_set(data, "dragging", (void *)(long)1);
evas_object_color_set(data, 255, 255, 255, 255);
list = (Eina_List *)evas_object_data_get
(elm_object_top_widget_get(data), "mbs");
EINA_LIST_FOREACH(list, l, mb)
evas_object_color_set(mb, 128, 128, 128, 128);
slx = (int)(long)evas_object_data_get(data, "slx");
sly = (int)(long)evas_object_data_get(data, "sly");
snprintf(buf, sizeof(buf), "slot.%i.%i", slx, sly);
elm_object_content_part_unset(ly, buf);
edje_object_signal_emit(elm_layout_edje_get(ly2), "drag", "app");
return EINA_FALSE;
}
static void
l3_ic_del_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Ecore_Timer *tim;
tim = evas_object_data_get(obj, "timer");
if (tim)
{
evas_object_data_del(obj, "timer");
ecore_timer_del(tim);
}
}
static void
l3_ic_down_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
Ecore_Timer *tim;
Evas_Coord x, y, w, h;
Evas_Object *ly2;
tim = evas_object_data_get(obj, "timer");
if (tim) evas_object_data_del(obj, "timer");
tim = ecore_timer_add(1.0, l3_tim_cb, obj);
evas_object_data_set(obj, "timer", tim);
ly2 = evas_object_data_get(obj, "ly2");
evas_object_geometry_get(ly2, &x, &y, &w, &h);
evas_object_data_set(obj, "x", (void *)(long)(ev->canvas.x));
evas_object_data_set(obj, "y", (void *)(long)(ev->canvas.y));
evas_object_data_set(obj, "px", (void *)(long)(x));
evas_object_data_set(obj, "py", (void *)(long)(y));
edje_object_signal_emit(elm_layout_edje_get(ly2), "click", "app");
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
{
printf("double click %p\n", obj);
}
}
static void
l3_ic_up_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Up *ev = event_info;
Ecore_Timer *tim;
Evas_Object *ly2;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
ly2 = evas_object_data_get(obj, "ly2");
tim = evas_object_data_get(obj, "timer");
if (tim)
{
evas_object_data_del(obj, "timer");
ecore_timer_del(tim);
}
if (evas_object_data_get(obj, "dragging"))
{
Evas_Object *ly, *sc, *mb;
Eina_List *list, *l;
int slx, sly;
char buf[256];
evas_object_data_del(obj, "dragging");
ly = evas_object_data_get(obj, "ly");
sc = evas_object_data_get(obj, "sc");
elm_object_scroll_freeze_pop(sc);
slx = (int)(long)evas_object_data_get(obj, "slx");
sly = (int)(long)evas_object_data_get(obj, "sly");
snprintf(buf, sizeof(buf), "slot.%i.%i", slx, sly);
elm_object_part_content_set(ly, buf, ly2);
list = (Eina_List *)evas_object_data_get
(elm_object_top_widget_get(obj), "mbs");
EINA_LIST_FOREACH(list, l, mb)
evas_object_color_set(mb, 255, 255, 255, 255);
edje_object_signal_emit(elm_layout_edje_get(ly2), "drop", "app");
}
else
edje_object_signal_emit(elm_layout_edje_get(ly2), "unclick", "app");
}
static void
l3_ic_move_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Move *ev = event_info;
Evas_Object *ly2;
ly2 = evas_object_data_get(obj, "ly2");
if (evas_object_data_get(obj, "dragging"))
{
Evas_Coord x, y, px, py;
x = (Evas_Coord)(long)evas_object_data_get(obj, "x");
y = (Evas_Coord)(long)evas_object_data_get(obj, "y");
px = (Evas_Coord)(long)evas_object_data_get(obj, "px");
py = (Evas_Coord)(long)evas_object_data_get(obj, "py");
evas_object_move(ly2,
px + ev->cur.canvas.x - x,
py + ev->cur.canvas.y - y);
}
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
Ecore_Timer *tim;
tim = evas_object_data_get(obj, "timer");
if (tim)
{
evas_object_data_del(obj, "timer");
ecore_timer_del(tim);
}
edje_object_signal_emit(elm_layout_edje_get(ly2), "cancel", "app");
return;
}
}
TEST_START(test_launcher3)
{
Evas_Object *bg, *sc, *tb, *pad, *bt, *ic, *tb2, *mb, *ck, *bx, *bx2, *ly, *ly2;
int i, j, k, n, m;
char buf[PATH_MAX];
const char *names[] =
{
"Hello", "World", "Spam", "Egg",
"Ham", "Good", "Bad", "Milk",
"Smell", "Of", "Sky", "Gold",
"Hole", "Pig", "And", "Calm"
};
Eina_List *mbs = NULL;
bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
elm_bg_file_set(bg, buf, NULL);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_homogeneous_set(bx, EINA_TRUE);
elm_box_horizontal_set(bx, EINA_TRUE);
sc = elm_scroller_add(win);
elm_scroller_bounce_set(sc, 1, 0);
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
n = 0; m = 0;
for (k = 0 ; k < 8; k++)
{
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 450, 10);
elm_table_pack(tb, pad, 1, 0, 1, 1);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 450, 10);
elm_table_pack(tb, pad, 1, 2, 1, 1);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 10, 450);
elm_table_pack(tb, pad, 0, 1, 1, 1);
pad = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(pad, 10, 450);
elm_table_pack(tb, pad, 2, 1, 1, 1);
mb = elm_mapbuf_add(win);
mbs = eina_list_append(mbs, mb);
elm_object_content_set(mb, tb);
evas_object_show(tb);
elm_box_pack_end(bx, mb);
evas_object_show(mb);
ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "launcher_page");
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, ly, 1, 1, 1, 1);
evas_object_show(ly);
for (j = 0; j < 4; j++)
{
for (i = 0; i < 4; i++)
{
ly2 = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly2, buf, "launcher_icon");
evas_object_size_hint_weight_set(ly2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ly2, EVAS_HINT_FILL, EVAS_HINT_FILL);
edje_object_part_text_set(elm_layout_edje_get(ly2), "label", names[m]);
ic = elm_icon_add(win);
elm_object_scale_set(ic, 0.5);
snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), n);
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_object_part_content_set(ly2, "slot", ic);
evas_object_show(ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_DEL, l3_ic_del_cb, ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_DOWN, l3_ic_down_cb, ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_UP, l3_ic_up_cb, ic);
evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_MOVE, l3_ic_move_cb, ic);
evas_object_data_set(ic, "ly", ly);
evas_object_data_set(ic, "ly2", ly2);
evas_object_data_set(ic, "sc", sc);
evas_object_data_set(ic, "bx", bx);
evas_object_data_set(ic, "mb", mb);
evas_object_data_set(ic, "slx", (void *)(long)(i));
evas_object_data_set(ic, "sly", (void *)(long)(j));
snprintf(buf, sizeof(buf), "slot.%i.%i", i, j);
elm_object_part_content_set(ly, buf, ly2);
evas_object_show(ly2);
n++; if (n > 23) n = 0;
m++; if (m > 15) m = 0;
}
}
}
// fixme: free mbs
evas_object_data_set(win, "mbs", mbs);
bx2 = elm_box_add(win);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_horizontal_set(bx2, EINA_FALSE);
elm_win_resize_object_add(win, bx2);
evas_object_show(bx2);
elm_object_content_set(sc, bx);
evas_object_show(bx);
elm_scroller_page_relative_set(sc, 1.0, 1.0);
evas_object_show(sc);
tb2 = elm_table_add(win);
evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_fill_set(tb2, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx2, tb2);
elm_box_pack_end(bx2, sc);
ck = elm_check_add(win);
elm_object_text_set(ck, "Map");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", l3_mode_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.05, 0.99);
elm_table_pack(tb2, ck, 0, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "A");
elm_check_state_set(ck, 1);
evas_object_smart_callback_add(ck, "changed", l3_alpha_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.20, 0.99);
elm_table_pack(tb2, ck, 1, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "Smo");
elm_check_state_set(ck, 1);
evas_object_smart_callback_add(ck, "changed", l3_smooth_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.40, 0.99);
elm_table_pack(tb2, ck, 2, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "FS");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", l3_full_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
elm_table_pack(tb2, ck, 3, 0, 1, 1);
evas_object_show(ck);
ck = elm_check_add(win);
elm_object_text_set(ck, "Hid");
elm_check_state_set(ck, 0);
evas_object_smart_callback_add(ck, "changed", l3_hidden_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
elm_table_pack(tb2, ck, 4, 0, 1, 1);
evas_object_show(ck);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", l3_close_cb, win);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.95, 0.99);
elm_table_pack(tb2, bt, 5, 0, 1, 1);
evas_object_show(bt);
evas_object_show(tb2);
evas_object_resize(win, 480, 800);
evas_object_show(win);
}
TEST_END

View File

@ -1,74 +0,0 @@
#include <Elementary.h>
#include <Elementary_Cursor.h>
#include "tsuite.h"
static void
_clicked_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
elm_object_part_text_set(data, "text", elm_object_text_get(obj));
}
TEST_START(test_layout)
{
Evas_Object *bg, *box, *ly, *bt;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_win_resize_object_add(win, box);
evas_object_show(box);
ly = elm_layout_add(win);
elm_layout_theme_set(ly, "layout", "application", "titlebar");
elm_object_text_set(ly, "Some title");
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, ly);
evas_object_show(ly);
bt = elm_icon_add(win);
elm_icon_standard_set(bt, "chat");
evas_object_size_hint_min_set(bt, 20, 20);
elm_layout_icon_set(ly, bt);
bt = elm_icon_add(win);
elm_icon_standard_set(bt, "close");
evas_object_size_hint_min_set(bt, 20, 20);
elm_layout_end_set(ly, bt);
ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "layout");
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(box, ly);
//elm_win_resize_object_add(win, ly);
evas_object_show(ly);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
elm_object_part_content_set(ly, "element1", bt);
evas_object_smart_callback_add(bt, "clicked", _clicked_cb, ly);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
elm_object_part_content_set(ly, "element2", bt);
evas_object_smart_callback_add(bt, "clicked", _clicked_cb, ly);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
elm_object_part_content_set(ly, "element3", bt);
evas_object_smart_callback_add(bt, "clicked", _clicked_cb, ly);
evas_object_show(bt);
elm_layout_part_cursor_set(ly, "text", ELM_CURSOR_WATCH);
evas_object_show(win);
}
TEST_END

File diff suppressed because it is too large Load Diff

View File

@ -1,121 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static Evas_Object *bg, *menu, *rect;
static void
_show(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
elm_menu_move(data, ev->canvas.x, ev->canvas.y);
evas_object_show(data);
}
static void
_populate_4(Elm_Object_Item *menu_it)
{
Elm_Object_Item *menu_it2;
elm_menu_item_add(menu, menu_it, "go-bottom", "menu 2", NULL, NULL);
elm_menu_item_add(menu, menu_it, "go-first", "menu 3", NULL, NULL);
elm_menu_item_separator_add(menu, menu_it);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-last", "Disabled item", NULL,
NULL);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-next", "Disabled item", NULL,
NULL);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-up", "Disabled item", NULL,
NULL);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
}
static void
_populate_3(Elm_Object_Item *menu_it)
{
Elm_Object_Item *menu_it2;
elm_menu_item_add(menu, menu_it, "media-eject", "menu 2", NULL, NULL);
elm_menu_item_add(menu, menu_it, "media-playback-start", "menu 3", NULL,
NULL);
elm_menu_item_separator_add(menu, menu_it);
menu_it2 = elm_menu_item_add(menu, menu_it, "media-playback-stop",
"Disabled item", NULL, NULL);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
}
static void
_populate_2(Elm_Object_Item *menu_it)
{
Elm_Object_Item *menu_it2, *menu_it3;
elm_menu_item_add(menu, menu_it, "system-reboot", "menu 2", NULL, NULL);
menu_it2 = elm_menu_item_add(menu, menu_it, "system-shutdown", "menu 3",
NULL, NULL);
_populate_3(menu_it2);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
menu_it2 = elm_menu_item_add(menu, menu_it, "system-lock-screen", "menu 2",
NULL, NULL);
elm_menu_item_separator_add(menu, menu_it);
menu_it3 = elm_menu_item_add(menu, menu_it, "system-run", "Disabled item",
NULL, NULL);
elm_object_item_disabled_set(menu_it3, EINA_TRUE);
_populate_4(menu_it2);
}
static void
_populate_1(Evas_Object *win, Elm_Object_Item *menu_it)
{
Elm_Object_Item *menu_it2;
Evas_Object *radio;
radio = elm_radio_add(win);
elm_radio_state_value_set(radio, 0);
elm_radio_value_set(radio, 0);
elm_object_text_set(radio, "radio in menu");
menu_it2 = elm_menu_item_add(menu, menu_it, "object-rotate-left", "menu 1",
NULL, NULL);
elm_menu_item_add_object(menu, menu_it, radio, NULL, NULL);
_populate_2(menu_it2);
}
TEST_START(test_menu)
{
Elm_Object_Item *menu_it;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
rect = evas_object_rectangle_add(evas_object_evas_get(win));
elm_win_resize_object_add(win, rect);
evas_object_color_set(rect, 0, 0, 0, 0);
evas_object_show(rect);
menu = elm_menu_add(win);
elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL);
menu_it = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item",
NULL, NULL);
_populate_1(win, menu_it);
elm_menu_item_add(menu, menu_it, "window-new", "sub menu", NULL, NULL);
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu);
evas_object_resize(win, 350, 200);
evas_object_show(win);
}
TEST_END

View File

@ -1,241 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
struct _Test_Data
{
char *img1;
char *img2;
char *img3;
char *img4;
char *img5;
};
typedef struct _Test_Data Test_Data;
static Test_Data *tdata = NULL;
static char *
_get_str(char *dest, const char *str)
{ /* dest should be not null and big enough */
sprintf(dest, "%s/%s", elm_app_data_dir_get(), str);
return dest;
}
static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Test_Data *tdata = data;
if (!data) return;
free(tdata->img1);
free(tdata->img2);
free(tdata->img3);
free(tdata->img4);
free(tdata->img5);
free(tdata);
}
Evas_Object *
_content_new(Evas_Object *parent, const char *img)
{
Evas_Object *photo = elm_photo_add(parent);
elm_photo_file_set(photo, img);
elm_photo_fill_inside_set(photo, EINA_TRUE);
elm_object_style_set(photo, "shadow");
return photo;
}
void
_navi_pop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_naviframe_item_pop(data);
}
void
_navi_it_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_naviframe_item_del(data);
}
void
_title_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("Title Clicked!\n");
}
void
_title_visible(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_naviframe_item_title_visible_set(data,
!elm_naviframe_item_title_visible_get(data));
}
void
_promote(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_naviframe_item_promote(data);
}
void
_page5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *bt, *bt2, *content, *nf = data;
Elm_Object_Item *it;
bt = elm_button_add(nf);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(bt, "Prev");
bt2 = elm_button_add(nf);
evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(bt2, "Page 1");
evas_object_smart_callback_add(bt2, "clicked", _promote,
evas_object_data_get(nf, "page1"));
content = _content_new(nf, tdata->img5);
it = elm_naviframe_item_insert_after(elm_naviframe_top_item_get(nf),
"Page 5",
bt,
bt2,
content,
NULL);
evas_object_smart_callback_add(bt, "clicked", _navi_it_del, it);
}
void
_page4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *bt, *ic, *content, *nf = data;
char buf[PATH_MAX];
Elm_Object_Item *it;
ic = elm_icon_add(nf);
snprintf(buf, sizeof(buf), "%s/images/icon_right_arrow.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(nf);
evas_object_smart_callback_add(bt, "clicked", _page5, nf);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_part_content_set(bt, "icon", ic);
content = _content_new(nf, tdata->img4);
it = elm_naviframe_item_push(nf,
"Page 4",
NULL,
bt,
content,
NULL);
ic = elm_icon_add(nf);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
elm_object_item_part_content_set(it, "icon", ic);
elm_naviframe_item_title_visible_set(it, EINA_FALSE);
evas_object_smart_callback_add(content, "clicked", _title_visible, it);
}
void
_page3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *bt, *bt2, *ic, *content, *nf = data;
char buf[PATH_MAX];
Elm_Object_Item *it;
bt = elm_button_add(nf);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(bt, "Prev");
evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);
bt2 = elm_button_add(nf);
evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(bt2, "Next");
evas_object_smart_callback_add(bt2, "clicked", _page4, nf);
content = _content_new(nf, tdata->img3);
it = elm_naviframe_item_push(nf,
"Page 3",
bt,
bt2,
content,
NULL);
ic = elm_icon_add(nf);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
elm_object_item_part_content_set(it, "icon", ic);
}
void
_page2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *bt, *content, *ic, *nf = data;
char buf[PATH_MAX];
Elm_Object_Item *it;
bt = elm_button_add(nf);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(bt, "clicked", _page3, nf);
ic = elm_icon_add(nf);
snprintf(buf, sizeof(buf), "%s/images/icon_right_arrow.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
elm_object_part_content_set(bt, "icon", ic);
content = _content_new(nf, tdata->img2);
it = elm_naviframe_item_push(nf, "Page 2", NULL, bt, content, NULL);
elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!");
}
TEST_START(test_naviframe)
{
Evas_Object *bg, *nf, *btn, *content;
Elm_Object_Item *it;
char buf[1024];
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
tdata = malloc(sizeof(Test_Data));
tdata->img1 = strdup(_get_str(buf, "images/logo.png"));
tdata->img2 = strdup(_get_str(buf, "images/plant_01.jpg"));
tdata->img3 = strdup(_get_str(buf, "images/rock_01.jpg"));
tdata->img4 = strdup(_get_str(buf, "images/rock_02.jpg"));
tdata->img5 = strdup(_get_str(buf, "images/sky_01.jpg"));
evas_object_smart_callback_add(win, "delete,request", _win_del, tdata);
nf = elm_naviframe_add(win);
elm_win_resize_object_add(win, nf);
evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(nf);
evas_object_smart_callback_add(nf, "title,clicked", _title_clicked, 0);
btn = elm_button_add(nf);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(btn, "clicked", _page2, nf);
elm_object_text_set(btn, "Next");
evas_object_show(btn);
content = _content_new(nf, tdata->img1);
it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);
evas_object_data_set(nf, "page1", it);
evas_object_resize(win, 400, 600);
evas_object_show(win);
}
TEST_END

View File

@ -1,295 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
_bt(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *notify = data;
evas_object_show(notify);
}
static void
_bt_close(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *notify = data;
evas_object_hide(notify);
}
static void
_bt_timer_close(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *notify = data;
elm_notify_timeout_set(notify, 2.0);
}
static void
_notify_timeout(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("Notify timed out!\n");
}
static void
_notify_block(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("Notify block area clicked!!\n");
}
TEST_START(test_notify)
{
Evas_Object *bg, *bx, *tb, *notify, *bt, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
tb = elm_table_add(win);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(tb);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "This position is the default.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 1, 0, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
elm_notify_repeat_events_set(notify, EINA_FALSE);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
elm_notify_timeout_set(notify, 5.0);
evas_object_smart_callback_add(notify, "timeout", _notify_timeout, NULL);
evas_object_smart_callback_add(notify, "block,clicked", _notify_block, NULL);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Bottom position. This notify use a timeout of 5 sec.<br>"
"<b>The events outside the window are blocked.</b>");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Bottom");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 1, 2, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_LEFT);
elm_notify_timeout_set(notify, 10.0);
evas_object_smart_callback_add(notify, "timeout", _notify_timeout, NULL);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Left position. This notify use a timeout of 10 sec.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Left");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 0, 1, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_CENTER);
elm_notify_timeout_set(notify, 10.0);
evas_object_smart_callback_add(notify, "timeout", _notify_timeout, NULL);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Center position. This notify use a timeout of 10 sec.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Center");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 1, 1, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_RIGHT);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Right position.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Right");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 2, 1, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_TOP_LEFT);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Top Left position.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top Left");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 0, 0, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_TOP_RIGHT);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Top Right position.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top Right");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 2, 0, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM_LEFT);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Bottom Left position.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close");
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Bottom Left");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 0, 2, 1, 1);
evas_object_show(bt);
notify = elm_notify_add(win);
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM_RIGHT);
bx = elm_box_add(win);
elm_object_content_set(notify, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb, "Bottom Right position.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Close in 2s");
evas_object_smart_callback_add(bt, "clicked", _bt_timer_close, notify);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Bottom Right");
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
elm_table_pack(tb, bt, 2, 2, 1, 1);
evas_object_show(bt);
evas_object_show(win);
evas_object_resize(win, 300, 350);
}
TEST_END

View File

@ -1,320 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _Pginfo Pginfo;
struct _Pginfo
{
Evas_Object *win, *pager, *pg1, *pg2, *pg3, *pg4;
};
static void
my_pager_1(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Pginfo *info = data;
elm_pager_content_promote(info->pager, info->pg2);
}
static void
my_pager_2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Pginfo *info = data;
elm_pager_content_promote(info->pager, info->pg3);
}
static void
my_pager_3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Pginfo *info = data;
elm_pager_content_promote(info->pager, info->pg4);
}
static void
my_pager_4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Pginfo *info = data;
elm_pager_content_promote(info->pager, info->pg1);
}
static void
my_pager_pop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Pginfo *info = data;
elm_pager_content_pop(info->pager);
}
struct style_tuple {
const char *label;
const char *name;
};
static const struct style_tuple styles[] = {
{ "Default", "default"},
{ "Slide", "slide"},
{ "Slide Invisible", "slide_invisible"},
{ "Fade", "fade"},
{ "Fade Translucide", "fade_translucide"},
{ "Fade Invisible", "fade_invisible"},
{ "Flip", "flip"},
};
static void
_style(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Evas_Object *pg = data;
elm_object_style_set(pg, styles[elm_radio_value_get(obj)].name);
}
TEST_START(test_pager)
{
Evas_Object *bg, *pg, *bx, *lb, *bt;
static Pginfo info;
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
info.win = win;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
pg = elm_pager_add(win);
evas_object_size_hint_weight_set(pg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, pg);
evas_object_show(pg);
info.pager = pg;
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is page 1 in a pager stack.<br>"
"<br>"
"So what is a pager stack? It is a stack<br>"
"of pages that hold widgets in it. The<br>"
"pages can be pushed and popped on and<br>"
"off the stack, activated and otherwise<br>"
"activated if already in the stack<br>"
"(activated means promoted to the top of<br>"
"the stack).<br>"
"<br>"
"The theme may define the animation how<br>"
"show and hide of pages. Select one theme style:");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
unsigned int i = 0;
Evas_Object *rdg = NULL, *rd;
for (i = 0; i < (sizeof(styles) / sizeof(struct style_tuple)); i++)
{
rd = elm_radio_add(win);
elm_object_text_set(rd, styles[i].label);
elm_radio_state_value_set(rd, i);
if (rdg)
elm_radio_group_add(rd, rdg);
else
rdg = rd;
evas_object_smart_callback_add(rd, "changed", _style, pg);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
}
elm_radio_value_set(rd, 0);
bt = elm_button_add(win);
elm_object_text_set(bt, "Flip to 2");
evas_object_smart_callback_add(bt, "clicked", my_pager_1, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Popme");
evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_pager_content_push(pg, bx);
info.pg1 = bx;
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is page 2 in a pager stack.<br>"
"<br>"
"This is just like the previous page in<br>"
"the pager stack."
);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Flip to 3");
evas_object_smart_callback_add(bt, "clicked", my_pager_2, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Popme");
evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_pager_content_push(pg, bx);
info.pg2 = bx;
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is page 3 in a pager stack.<br>"
"<br>"
"This is just like the previous page in<br>"
"the pager stack.");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Flip to 1");
evas_object_smart_callback_add(bt, "clicked", my_pager_3, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Popme");
evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_pager_content_push(pg, bx);
info.pg3 = bx;
Evas_Object *ly, *ly2;
char buf[4096];
ly = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly, buf, "test/layout");
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(ly);
ly2 = elm_layout_add(win);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(ly2, buf, "layout2");
evas_object_size_hint_weight_set(ly2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
//elm_win_resize_object_add(win, ly2);
evas_object_show(ly2);
bt = elm_button_add(win);
elm_object_text_set(bt, "Flip to 1");
evas_object_smart_callback_add(bt, "clicked", my_pager_4, &info);
elm_object_part_content_set(ly2, "element1", bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Popme");
evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
evas_object_show(bt);
elm_object_part_content_set(ly2, "element2", bt);
elm_object_part_content_set(ly, "swallow", ly2);
evas_object_show(ly);
elm_pager_content_push(pg, ly);
info.pg4 = ly2;
evas_object_show(win);
}
TEST_END
static void
my_pager_push(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Pginfo *info = data;
Evas_Object *bx, *bt, *lb;
static int count = 2;
char buf[32];
bx = elm_box_add(info->win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
lb = elm_label_add(info->win);
snprintf(buf, sizeof(buf), "This is page %d in the slide pager<br><br>", count++);
elm_object_text_set(lb, buf);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(info->win);
elm_object_text_set(bt, "Push a new page");
evas_object_smart_callback_add(bt, "clicked", my_pager_push, info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(info->win);
elm_object_text_set(bt, "Go back (pop)");
evas_object_smart_callback_add(bt, "clicked", my_pager_pop, info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_pager_content_push(info->pager, bx);
}
TEST_START(test_pager_slide)
{
Evas_Object *bg, *pg, *bx, *lb, *bt;
static Pginfo info;
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
info.win = win;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
pg = elm_pager_add(win);
elm_win_resize_object_add(win, pg);
elm_object_style_set(pg, "slide");
evas_object_show(pg);
info.pager = pg;
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is page 1 in a slide pager.<br>"
"<br>"
"The slide pager style is useful for browsing<br>"
"a hierarchy of objects, as it makes clear<br>"
"the direction of the browse.<br>"
"This is the 'slide' style, also available<br>"
"a fully transparent style named 'slide_invisble'.<br>"
"<br>");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Push a new page");
evas_object_smart_callback_add(bt, "clicked", my_pager_push, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Go back (pop)");
evas_object_smart_callback_add(bt, "clicked", my_pager_pop, &info);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
elm_pager_content_push(pg, bx);
evas_object_show(win);
}
TEST_END

View File

@ -1,253 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static Elm_Genlist_Item_Class itc;
static void _bstatus(void *data, Evas_Object *obj, void *event_info);
static void _tstatus(void *data, Evas_Object *obj, void *event_info);
static char *_text_get(void *data, Evas_Object *obj, const char *source);
static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *source);
static Eina_Bool _state_get(void *data, Evas_Object *obj, const char *source);
static void _item_del(void *data, Evas_Object *obj);
static void _fill_list(Evas_Object *obj);
static Eina_Bool _dir_has_subs(const char *path);
static void
_tstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Object_Item *tb_it;
const char *status;
if (elm_panel_hidden_get((Evas_Object*)data))
status = "hidden";
else
status = "shown";
printf("The top panel is currently %s\n", status);
tb_it = elm_toolbar_selected_item_get(obj);
elm_toolbar_item_selected_set(tb_it, EINA_FALSE);
}
static void
_bstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Object_Item *tb_it;
const char *status;
if (elm_panel_hidden_get((Evas_Object*)data))
status = "hidden";
else
status = "shown";
printf("The bottom panel is currently %s\n", status);
tb_it = elm_toolbar_selected_item_get(obj);
elm_toolbar_item_selected_set(tb_it, EINA_FALSE);
}
static char *
_text_get(void *data, Evas_Object *obj __UNUSED__, const char *source __UNUSED__)
{
return strdup(ecore_file_file_get(data));
}
static Evas_Object *
_content_get(void *data, Evas_Object *obj, const char *source)
{
if (!strcmp(source, "elm.swallow.icon"))
{
Evas_Object *ic;
ic = elm_icon_add(obj);
if (ecore_file_is_dir((char *)data))
elm_icon_standard_set(ic, "folder");
else
elm_icon_standard_set(ic, "file");
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
evas_object_show(ic);
return ic;
}
return NULL;
}
static Eina_Bool
_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *source __UNUSED__)
{
return EINA_FALSE;
}
static void
_item_del(void *data, Evas_Object *obj __UNUSED__)
{
eina_stringshare_del(data);
}
static void
_fill_list(Evas_Object *obj)
{
DIR *d;
struct dirent *de;
Eina_List *dirs = NULL, *l;
char *real;
if (!(d = opendir(getenv("HOME")))) return;
while ((de = readdir(d)))
{
char buff[PATH_MAX];
if (de->d_name[0] == '.') continue;
snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name);
if (!ecore_file_is_dir(buff)) continue;
real = ecore_file_realpath(buff);
dirs = eina_list_append(dirs, real);
}
closedir(d);
dirs = eina_list_sort(dirs, eina_list_count(dirs), EINA_COMPARE_CB(strcoll));
EINA_LIST_FOREACH(dirs, l, real)
{
Eina_Bool result = EINA_FALSE;
result = _dir_has_subs(real);
if (!result)
elm_genlist_item_append(obj, &itc, eina_stringshare_add(real),
NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
else
elm_genlist_item_append(obj, &itc, eina_stringshare_add(real),
NULL, ELM_GENLIST_ITEM_SUBITEMS,
NULL, NULL);
free(real);
}
eina_list_free(dirs);
}
static Eina_Bool
_dir_has_subs(const char *path)
{
DIR *d;
struct dirent *de;
Eina_Bool result = EINA_FALSE;
if (!path) return result;
if (!(d = opendir(path))) return result;
while ((de = readdir(d)))
{
char buff[PATH_MAX];
if (de->d_name[0] == '.') continue;
snprintf(buff, sizeof(buff), "%s/%s", path, de->d_name);
if (ecore_file_is_dir(buff))
{
result = EINA_TRUE;
break;
}
}
closedir(d);
return result;
}
TEST_START(test_panel)
{
Evas_Object *bg, *panel, *bx, *vbx, *toolbar;
Evas_Object *list;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
vbx = elm_box_add(win);
elm_win_resize_object_add(win, vbx);
evas_object_size_hint_weight_set(vbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(vbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(vbx);
bx = elm_box_add(win);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bx);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_TOP);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
toolbar = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(toolbar, 0);
elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_NONE);
evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(toolbar);
elm_toolbar_item_append(toolbar, "home", "Hello", _tstatus, panel);
elm_object_content_set(panel, toolbar);
elm_box_pack_end(vbx, panel);
evas_object_show(panel);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_LEFT);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(panel, 0, EVAS_HINT_FILL);
itc.item_style = "default";
itc.func.text_get = _text_get;
itc.func.content_get = _content_get;
itc.func.state_get = _state_get;
itc.func.del = _item_del;
list = elm_genlist_add(win);
evas_object_size_hint_min_set(list, 100, -1);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(list);
elm_object_content_set(panel, list);
elm_box_pack_end(bx, panel);
evas_object_show(panel);
_fill_list(list);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_RIGHT);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(panel, 1, EVAS_HINT_FILL);
elm_panel_hidden_set(panel, EINA_TRUE);
list = elm_genlist_add(win);
evas_object_size_hint_min_set(list, 100, -1);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(list);
elm_object_content_set(panel, list);
elm_box_pack_end(bx, panel);
evas_object_show(panel);
_fill_list(list);
elm_box_pack_end(vbx, bx);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_BOTTOM);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_panel_hidden_set(panel, EINA_TRUE);
toolbar = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(toolbar, 0);
elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_NONE);
evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(toolbar);
elm_toolbar_item_append(toolbar, "home", "Hello", _bstatus, panel);
elm_object_content_set(panel, toolbar);
elm_box_pack_end(vbx, panel);
evas_object_show(panel);
evas_object_resize(win, 320, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,107 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static double size = 0.0;
static void
_press(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("press\n");
}
static void
_unpress(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
printf("unpress, size : %f\n", elm_panes_content_left_size_get(obj));
}
static void
_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
printf("clicked\n");
}
static void
_clicked_double(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
printf("clicked double\n");
if(elm_panes_content_left_size_get(obj) > 0)
{
size = elm_panes_content_left_size_get(obj);
elm_panes_content_left_size_set(obj, 0.0);
}
else
elm_panes_content_left_size_set(obj, size);
}
TEST_START(test_panes)
{
Evas_Object *bg, *panes, *panes_h, *bt;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
evas_object_show(bg);
panes = elm_panes_add(win);
elm_win_resize_object_add(win, panes);
evas_object_size_hint_weight_set(panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(panes, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(panes);
evas_object_smart_callback_add(panes, "clicked", _clicked, panes);
evas_object_smart_callback_add(panes, "clicked,double", _clicked_double, panes);
evas_object_smart_callback_add(panes, "press", _press, panes);
evas_object_smart_callback_add(panes, "unpress", _unpress, panes);
//
bt = elm_button_add(win);
elm_object_text_set(bt, "Left");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
evas_object_show(bt);
elm_object_part_content_set(panes, "left", bt);
//
//
panes_h = elm_panes_add(win);
elm_panes_horizontal_set(panes_h, EINA_TRUE);
evas_object_size_hint_weight_set(panes_h, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(panes_h, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(panes_h);
evas_object_smart_callback_add(panes_h, "clicked", _clicked, panes_h);
evas_object_smart_callback_add(panes_h, "clicked,double", _clicked_double, panes_h);
evas_object_smart_callback_add(panes_h, "press", _press, panes_h);
evas_object_smart_callback_add(panes_h, "unpress", _unpress, panes_h);
elm_object_part_content_set(panes, "right", panes_h);
//
//
bt = elm_button_add(win);
elm_object_text_set(bt, "Up");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bt);
elm_object_part_content_set(panes_h, "left", bt);
//
//
bt = elm_button_add(win);
elm_object_text_set(bt, "Down");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bt);
elm_object_part_content_set(panes_h, "right", bt);
//
evas_object_resize(win, 320, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,199 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct Progressbar
{
Evas_Object *pb1;
Evas_Object *pb2;
Evas_Object *pb3;
Evas_Object *pb4;
Evas_Object *pb5;
Evas_Object *pb6;
Evas_Object *pb7;
Eina_Bool run;
Ecore_Timer *timer;
} Progressbar;
static Progressbar _test_progressbar;
static Eina_Bool
_my_progressbar_value_set (void *data __UNUSED__)
{
double progress;
progress = elm_progressbar_value_get (_test_progressbar.pb1);
if (progress < 1.0) progress += 0.0123;
else progress = 0.0;
elm_progressbar_value_set(_test_progressbar.pb1, progress);
elm_progressbar_value_set(_test_progressbar.pb4, progress);
elm_progressbar_value_set(_test_progressbar.pb3, progress);
elm_progressbar_value_set(_test_progressbar.pb6, progress);
if (progress < 1.0) return ECORE_CALLBACK_RENEW;
_test_progressbar.run = 0;
return ECORE_CALLBACK_CANCEL;
}
static void
my_progressbar_test_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_progressbar_pulse(_test_progressbar.pb2, EINA_TRUE);
elm_progressbar_pulse(_test_progressbar.pb5, EINA_TRUE);
elm_progressbar_pulse(_test_progressbar.pb7, EINA_TRUE);
if (!_test_progressbar.run)
{
_test_progressbar.timer = ecore_timer_add(0.1, _my_progressbar_value_set, NULL);
_test_progressbar.run = EINA_TRUE;
}
}
static void
my_progressbar_test_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_progressbar_pulse(_test_progressbar.pb2, EINA_FALSE);
elm_progressbar_pulse(_test_progressbar.pb5, EINA_FALSE);
elm_progressbar_pulse(_test_progressbar.pb7, EINA_FALSE);
if (_test_progressbar.run)
{
ecore_timer_del(_test_progressbar.timer);
_test_progressbar.run = EINA_FALSE;
}
}
static void
my_progressbar_destroy(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
my_progressbar_test_stop(NULL, NULL, NULL);
evas_object_del(obj);
}
TEST_START(test_progressbar)
{
Evas_Object *bg, *pb, *bx, *hbx, *bt, *bt_bx, *ic1, *ic2;
char buf[PATH_MAX];
evas_object_smart_callback_add(win, "delete,request",
my_progressbar_destroy, NULL);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
pb = elm_progressbar_add(win);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, pb);
// elm_progressbar_horizontal_set(pb, EINA_TRUE);
// elm_object_text_set(pb, "Progression %");
// elm_progressbar_unit_format_set(pb, NULL);
evas_object_show(pb);
_test_progressbar.pb1 = pb;
pb = elm_progressbar_add(win);
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_text_set(pb, "Infinite bounce");
elm_progressbar_pulse_set(pb, EINA_TRUE);
elm_box_pack_end(bx, pb);
evas_object_show(pb);
_test_progressbar.pb2 = pb;
ic1 = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic1, buf, NULL);
evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
pb = elm_progressbar_add(win);
elm_object_text_set(pb, "Label");
elm_object_content_set(pb, ic1);
elm_progressbar_inverted_set(pb, 1);
elm_progressbar_unit_format_set(pb, "%1.1f units");
elm_progressbar_span_size_set(pb, 200);
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, pb);
evas_object_show(ic1);
evas_object_show(pb);
_test_progressbar.pb3 = pb;
hbx = elm_box_add(win);
elm_box_horizontal_set(hbx, EINA_TRUE);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, hbx);
evas_object_show(hbx);
pb = elm_progressbar_add(win);
elm_progressbar_horizontal_set(pb, EINA_FALSE);
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(hbx, pb);
elm_progressbar_span_size_set(pb, 60);
elm_object_text_set(pb, "percent");
evas_object_show(pb);
_test_progressbar.pb4 = pb;
pb = elm_progressbar_add(win);
elm_progressbar_horizontal_set(pb, EINA_FALSE);
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_progressbar_span_size_set(pb, 80);
elm_progressbar_pulse_set(pb, EINA_TRUE);
elm_progressbar_unit_format_set(pb, NULL);
elm_object_text_set(pb, "Infinite bounce");
elm_box_pack_end(hbx, pb);
evas_object_show(pb);
_test_progressbar.pb5 = pb;
ic2 = elm_icon_add(win);
elm_icon_file_set(ic2, buf, NULL);
evas_object_size_hint_aspect_set(ic2, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
pb = elm_progressbar_add(win);
elm_progressbar_horizontal_set(pb, EINA_FALSE);
elm_object_text_set(pb, "Label");
elm_object_content_set(pb, ic2);
elm_progressbar_inverted_set(pb, 1);
elm_progressbar_unit_format_set(pb, "%1.2f%%");
elm_progressbar_span_size_set(pb, 200);
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(hbx, pb);
evas_object_show(ic2);
evas_object_show(pb);
_test_progressbar.pb6 = pb;
pb = elm_progressbar_add(win);
elm_object_style_set(pb, "wheel");
elm_object_text_set(pb, "Style: wheel");
evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, pb);
evas_object_show(pb);
_test_progressbar.pb7 = pb;
bt_bx = elm_box_add(win);
elm_box_horizontal_set(bt_bx, EINA_TRUE);
evas_object_size_hint_weight_set(bt_bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, bt_bx);
evas_object_show(bt_bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Start");
evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_start, NULL);
elm_box_pack_end(bt_bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Stop");
evas_object_smart_callback_add(bt, "clicked", my_progressbar_test_stop, NULL);
elm_box_pack_end(bt_bx, bt);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END

View File

@ -1,94 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_radio)
{
Evas_Object *bg, *bx, *ic, *rd, *rdg;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 0);
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
elm_object_text_set(rd, "Icon sized to radio");
elm_object_content_set(rd, ic);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_show(ic);
rdg = rd;
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 1);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Icon no scale");
elm_object_content_set(rd, ic);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_show(ic);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 2);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Label Only");
elm_box_pack_end(bx, rd);
evas_object_show(rd);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 3);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Disabled");
elm_object_disabled_set(rd, 1);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 4);
elm_radio_group_add(rd, rdg);
elm_object_content_set(rd, ic);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 5);
elm_radio_group_add(rd, rdg);
elm_object_content_set(rd, ic);
elm_object_disabled_set(rd, 1);
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_show(ic);
elm_radio_value_set(rdg, 2);
evas_object_show(win);
}
TEST_END

View File

@ -1,114 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_scaling)
{
Evas_Object *bg, *bx, *bt;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Scale: 0.5");
elm_object_scale_set(bt, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Scale: 0.75");
elm_object_scale_set(bt, 0.75);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Scale: 1.0");
elm_object_scale_set(bt, 1.0);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Scale: 1.5");
elm_object_scale_set(bt, 1.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Scale: 2.0");
elm_object_scale_set(bt, 2.0);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Scale: 3.0");
elm_object_scale_set(bt, 3.0);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END
TEST_START(test_scaling2)
{
Evas_Object *bg, *bx, *fr, *lb;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
fr = elm_frame_add(win);
elm_object_scale_set(fr, 0.5);
elm_object_text_set(fr, "Scale: 0.5");
lb = elm_label_add(win);
elm_object_text_set(lb,
"Parent frame scale<br>"
"is 0.5. Child should<br>"
"inherit it.");
elm_object_content_set(fr, lb);
evas_object_show(lb);
elm_box_pack_end(bx, fr);
evas_object_show(fr);
fr = elm_frame_add(win);
elm_object_text_set(fr, "Scale: 1.0");
lb = elm_label_add(win);
elm_object_text_set(lb,
"Parent frame scale<br>"
"is 1.0. Child should<br>"
"inherit it.");
elm_object_content_set(fr, lb);
evas_object_show(lb);
elm_object_scale_set(fr, 1.0);
elm_box_pack_end(bx, fr);
evas_object_show(fr);
fr = elm_frame_add(win);
elm_object_text_set(fr, "Scale: 2.0");
lb = elm_label_add(win);
elm_object_text_set(lb,
"Parent frame scale<br>"
"is 2.0. Child should<br>"
"inherit it.");
elm_object_content_set(fr, lb);
evas_object_show(lb);
elm_object_scale_set(fr, 2.0);
elm_box_pack_end(bx, fr);
evas_object_show(fr);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END

View File

@ -1,260 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
void
my_bt_go_300_300(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_scroller_region_bring_in((Evas_Object *)data, 300, 300, 318, 318);
}
void
my_bt_go_900_300(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_scroller_region_bring_in((Evas_Object *)data, 900, 300, 318, 318);
}
void
my_bt_go_300_900(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_scroller_region_bring_in((Evas_Object *)data, 300, 900, 318, 318);
}
void
my_bt_go_900_900(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_scroller_region_bring_in((Evas_Object *)data, 900, 900, 318, 318);
}
TEST_START(test_scroller)
{
/******* HOW TO TEST *******************
Do NOT Exit test window while testing
This causes scroller to get redundent
event that breaks this test.
******** HOW TO TEST ******************/
Evas_Object *bg2, *tb, *tb2, *bg, *sc, *bt;
int i, j, n;
char buf[PATH_MAX];
const char *img[9] =
{
"panel_01.jpg",
"plant_01.jpg",
"rock_01.jpg",
"rock_02.jpg",
"sky_01.jpg",
"sky_02.jpg",
"sky_03.jpg",
"sky_04.jpg",
"wood_01.jpg"
};
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
n = 0;
for (j = 0; j < 12; j++)
{
for (i = 0; i < 12; i++)
{
bg2 = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), img[n]);
n++;
if (n >= 9) n = 0;
elm_bg_file_set(bg2, buf, NULL);
evas_object_size_hint_weight_set(bg2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bg2, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_min_set(bg2, 318, 318);
elm_table_pack(tb, bg2, i, j, 1, 1);
evas_object_show(bg2);
}
}
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, sc);
elm_object_content_set(sc, tb);
evas_object_show(tb);
elm_scroller_page_relative_set(sc, 1.0, 1.0);
// elm_scroller_page_size_set(sc, 200, 200);
evas_object_show(sc);
tb2 = elm_table_add(win);
evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, tb2);
bt = elm_button_add(win);
elm_object_text_set(bt, "to 300 300");
evas_object_smart_callback_add(bt, "clicked", my_bt_go_300_300, sc);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.1, 0.1);
elm_table_pack(tb2, bt, 0, 0, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "to 900 300");
evas_object_smart_callback_add(bt, "clicked", my_bt_go_900_300, sc);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.9, 0.1);
elm_table_pack(tb2, bt, 1, 0, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "to 300 900");
evas_object_smart_callback_add(bt, "clicked", my_bt_go_300_900, sc);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.1, 0.9);
elm_table_pack(tb2, bt, 0, 1, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "to 900 900");
evas_object_smart_callback_add(bt, "clicked", my_bt_go_900_900, sc);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, 0.9, 0.9);
elm_table_pack(tb2, bt, 1, 1, 1, 1);
evas_object_show(bt);
evas_object_show(tb2);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
TEST_END
void
click_through(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
printf("click went through on %p\n", obj);
}
TEST_START(test_scroller2)
{
Evas_Object *bt, *bx, *bx2, *bg, *sc, *tb, *tb2, *rc;
int i, j;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
/* { */
for (i = 0; i < 3; i++)
{
bt = elm_button_add(win);
elm_object_text_set(bt, "Vertical");
evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
}
/* } */
/* { */
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, 0.5);
elm_scroller_bounce_set(sc, 1, 0);
elm_scroller_content_min_limit(sc, 0, 1);
elm_box_pack_end(bx, sc);
evas_object_show(sc);
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
for (i = 0; i < 10; i++)
{
bt = elm_button_add(win);
elm_object_text_set(bt, "... Horizontal scrolling ...");
evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
}
elm_object_content_set(sc, bx2);
evas_object_show(bx2);
/* } */
/* { */
for (i = 0; i < 3; i++)
{
bt = elm_button_add(win);
elm_object_text_set(bt, "Vertical");
evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
}
/* } */
/* { */
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
rc = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_size_hint_min_set(rc, 200, 120);
elm_table_pack(tb, rc, 0, 0, 1, 1);
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, sc, 0, 0, 1, 1);
evas_object_show(sc);
tb2 = elm_table_add(win);
for (j = 0; j < 16; j++)
{
for (i = 0; i < 16; i++)
{
bt = elm_button_add(win);
elm_object_text_set(bt, "Both");
evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
elm_table_pack(tb2, bt, i, j, 1, 1);
evas_object_show(bt);
}
}
elm_object_content_set(sc, tb2);
evas_object_show(tb2);
/* } */
for (i = 0; i < 24; i++)
{
bt = elm_button_add(win);
elm_object_text_set(bt, "Vertical");
evas_object_smart_callback_add(bt, "clicked", click_through, NULL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
}
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_scroller_bounce_set(sc, 0, 1);
elm_win_resize_object_add(win, sc);
elm_object_content_set(sc, bx);
evas_object_show(bx);
evas_object_show(sc);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,96 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_segment_control)
{
Evas_Object *bg, *ic, *ic1, *ic2, *ic3, *ic4, *ic5;
Elm_Object_Item *seg_it;
Evas_Object * in_layout;
Evas_Object *segment1, *segment2, *segment3, *segment4;
char buf[PATH_MAX];
char buf1[PATH_MAX];
char buf2[PATH_MAX];
char buf3[PATH_MAX];
char buf4[PATH_MAX];
char buf5[PATH_MAX];
char buf6[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
in_layout = elm_layout_add( win );
elm_win_resize_object_add(win, in_layout);
snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
elm_layout_file_set(in_layout, buf, "segment_test");
evas_object_size_hint_weight_set(in_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
ic = elm_icon_add(in_layout);
snprintf(buf1, sizeof(buf1), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf1, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
ic1 = elm_icon_add(in_layout);
snprintf(buf2, sizeof(buf2), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic1, buf2, NULL);
evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
segment1 = elm_segment_control_add(win);
elm_segment_control_item_add(segment1, NULL, "Only Text");
seg_it = elm_segment_control_item_add(segment1, ic, NULL);
elm_segment_control_item_selected_set(seg_it, EINA_TRUE);
elm_segment_control_item_add(segment1, ic1, "Text_Icon_test");
elm_segment_control_item_add(segment1, NULL, "Seg4");
elm_segment_control_item_add(segment1, NULL, "Seg5");
segment2 = elm_segment_control_add(win);
elm_segment_control_item_add(segment2, NULL, "SegmentItem");
seg_it = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
elm_segment_control_item_selected_set(seg_it, EINA_TRUE);
elm_segment_control_item_add(segment2, NULL, "SegmentControlItem");
elm_segment_control_item_add(segment2, NULL, "SegmentItem");
ic2 = elm_icon_add(in_layout);
snprintf(buf3, sizeof(buf3), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic2, buf3, NULL);
evas_object_size_hint_aspect_set(ic2, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
ic3 = elm_icon_add(in_layout);
snprintf(buf4, sizeof(buf4), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic3, buf4, NULL);
evas_object_size_hint_aspect_set(ic3, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
ic4 = elm_icon_add(in_layout);
snprintf(buf5, sizeof(buf5), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic4, buf5, NULL);
evas_object_size_hint_aspect_set(ic4, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
segment3 = elm_segment_control_add(win);
elm_segment_control_item_add(segment3, ic2, NULL);
seg_it = elm_segment_control_item_add(segment3, ic3, NULL);
elm_segment_control_item_selected_set(seg_it, EINA_TRUE);
elm_segment_control_item_add(segment3, ic4, NULL);
ic5 = elm_icon_add(in_layout);
snprintf(buf6, sizeof(buf6), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic5, buf6, NULL);
evas_object_size_hint_aspect_set(ic5, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
segment4 = elm_segment_control_add(win);
elm_segment_control_item_add(segment4, NULL, "Disabled");
seg_it = elm_segment_control_item_add(segment4, ic5, "Disabled");
elm_segment_control_item_selected_set(seg_it, EINA_TRUE);
elm_segment_control_item_add(segment4, NULL, "Disabled");
elm_object_disabled_set(segment4, EINA_TRUE);
elm_object_part_content_set(in_layout, "segment1", segment1);
elm_object_part_content_set(in_layout, "segment2", segment2);
elm_object_part_content_set(in_layout, "segment3", segment3);
elm_object_part_content_set(in_layout, "segment4", segment4);
evas_object_show(in_layout);
evas_object_show(win);
}
TEST_END

View File

@ -1,66 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_separator)
{
Evas_Object *bg, *bx0, *bx, *bt, *sp;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx0 = elm_box_add(win);
evas_object_size_hint_weight_set(bx0, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_horizontal_set(bx0, 1);
elm_win_resize_object_add(win, bx0);
evas_object_show(bx0);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx0, bx);
evas_object_show(bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Left upper corner");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, 1); // by default, separator is vertical, we must set it horizontal
elm_box_pack_end(bx, sp);
evas_object_show(sp);
bt = elm_button_add(win);
elm_object_text_set(bt, "Left lower corner");
elm_object_disabled_set(bt, 1);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
sp = elm_separator_add(win); // now we need vertical separator
elm_box_pack_end(bx0, sp);
evas_object_show(sp);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx0, bx);
evas_object_show(bx);
bt = elm_button_add(win);
elm_object_text_set(bt, "Right upper corner");
elm_object_disabled_set(bt, 1);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, 1);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
bt = elm_button_add(win);
elm_object_text_set(bt, "Right lower corner");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END

View File

@ -1,190 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
void
_change_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
double val = elm_slider_value_get(obj);
elm_slider_value_set(data, val);
}
TEST_START(test_slider)
{
Evas_Object *bg, *bx, *sl, *ic, *sl1, *bx2;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
sl = elm_slider_add(win);
sl1 = sl;
elm_object_text_set(sl, "Horizontal");
elm_object_part_content_set(sl, "icon", ic);
elm_slider_unit_format_set(sl, "%1.1f units");
elm_slider_span_size_set(sl, 120);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_show(ic);
evas_object_show(sl);
/* horizontal disable state */
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Disabled");
elm_object_part_content_set(sl, "icon", ic);
elm_slider_unit_format_set(sl, "%1.1f units");
elm_slider_span_size_set(sl, 120);
elm_slider_min_max_set(sl, 50, 150);
elm_slider_value_set(sl, 80);
elm_object_disabled_set(sl, EINA_TRUE);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sl);
evas_object_show(ic);
evas_object_show(sl);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Horizontal inverted");
elm_object_part_content_set(sl, "end", ic);
elm_slider_span_size_set(sl, 80);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_slider_indicator_format_set(sl, "%3.0f");
elm_slider_min_max_set(sl, 50, 150);
elm_slider_value_set(sl, 80);
elm_slider_inverted_set(sl, EINA_TRUE);
evas_object_size_hint_align_set(sl, 0.5, 0.5);
evas_object_size_hint_weight_set(sl, 0.0, 0.0);
elm_box_pack_end(bx, sl);
evas_object_show(ic);
evas_object_show(sl);
/* label2 disable */
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Disabled inverted");
elm_object_part_content_set(sl, "end", ic);
elm_slider_span_size_set(sl, 80);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_slider_indicator_format_set(sl, "%3.0f");
elm_slider_min_max_set(sl, 50, 150);
elm_slider_value_set(sl, 80);
elm_slider_inverted_set(sl, EINA_TRUE);
elm_object_disabled_set(sl, EINA_TRUE);
evas_object_size_hint_align_set(sl, 0.5, 0.5);
evas_object_size_hint_weight_set(sl, 0.0, 0.0);
elm_box_pack_end(bx, sl);
evas_object_show(ic);
evas_object_show(sl);
sl = elm_slider_add(win);
elm_slider_indicator_show_set(sl, EINA_FALSE);
elm_object_text_set(sl, "Scale doubled");
elm_slider_unit_format_set(sl, "%3.0f units");
elm_slider_span_size_set(sl, 40);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_slider_indicator_format_set(sl, "%3.0f");
elm_slider_min_max_set(sl, 50, 150);
elm_slider_value_set(sl, 80);
elm_slider_inverted_set(sl, EINA_TRUE);
elm_object_scale_set(sl, 2.0);
elm_box_pack_end(bx, sl);
evas_object_show(ic);
evas_object_show(sl);
bx2 = elm_box_add(win);
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_horizontal_set(bx2, EINA_TRUE);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
sl = elm_slider_add(win);
elm_object_part_content_set(sl, "icon", ic);
elm_object_text_set(sl, "Vertical inverted");
elm_slider_inverted_set(sl, EINA_TRUE);
elm_slider_unit_format_set(sl, "units");
elm_slider_span_size_set(sl, 60);
evas_object_size_hint_align_set(sl, 0.5, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(sl, 0.0, EVAS_HINT_EXPAND);
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_value_set(sl, 0.2);
elm_object_scale_set(sl, 1.0);
elm_slider_horizontal_set(sl, 0);
elm_box_pack_end(bx2, sl);
evas_object_show(ic);
evas_object_show(sl);
evas_object_smart_callback_add(sl1, "changed", _change_cb, sl);
sl = elm_slider_add(win);
elm_object_text_set(sl, "Vertical");
elm_slider_unit_format_set(sl, "units");
elm_slider_span_size_set(sl, 60);
evas_object_size_hint_align_set(sl, 0.5, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(sl, 0.0, EVAS_HINT_EXPAND);
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_value_set(sl, 0.2);
elm_object_scale_set(sl, 1.0);
elm_slider_horizontal_set(sl, EINA_FALSE);
elm_box_pack_end(bx2, sl);
evas_object_show(ic);
evas_object_show(sl);
/* vertical disable state */
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
sl = elm_slider_add(win);
elm_object_part_content_set(sl, "icon", ic);
elm_object_text_set(sl, "Disabled vertical");
elm_slider_inverted_set(sl, EINA_TRUE);
elm_slider_unit_format_set(sl, "units");
elm_slider_span_size_set(sl, 100);
evas_object_size_hint_align_set(sl, 0.5, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(sl, 0.0, EVAS_HINT_EXPAND);
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_value_set(sl, 0.2);
elm_object_scale_set(sl, 1.0);
elm_slider_horizontal_set(sl, 0);
elm_object_disabled_set(sl, EINA_TRUE);
elm_box_pack_end(bx2, sl);
evas_object_show(ic);
evas_object_show(sl);
evas_object_show(win);
}
TEST_END

View File

@ -1,204 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static Evas_Object *slideshow, *bt_start, *bt_stop;
static Elm_Slideshow_Item_Class itc;
static void
_notify_show(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
evas_object_show(data);
}
static void
_next(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_slideshow_next(data);
}
static void
_previous(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_slideshow_previous(data);
}
static void
_mouse_in(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_notify_timeout_set(data, 0.0);
evas_object_show(data);
}
static void
_mouse_out(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_notify_timeout_set(data, 3.0);
}
static void
_hv_select(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
elm_slideshow_transition_set(slideshow, data);
elm_object_text_set(obj, data);
}
static void
_layout_select(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
elm_slideshow_layout_set(slideshow, data);
elm_object_text_set(obj, data);
}
static void
_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_slideshow_timeout_set(slideshow, elm_spinner_value_get(data));
elm_object_disabled_set(bt_start, EINA_TRUE);
elm_object_disabled_set(bt_stop, EINA_FALSE);
}
static void
_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_slideshow_timeout_set(slideshow, 0.0);
elm_object_disabled_set(bt_start, EINA_FALSE);
elm_object_disabled_set(bt_stop, EINA_TRUE);
}
static void
_spin(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
if (elm_slideshow_timeout_get(slideshow) > 0)
elm_slideshow_timeout_set(slideshow, elm_spinner_value_get(data));
}
static Evas_Object *
_get(void *data, Evas_Object *obj)
{
//Evas_Object *photo = elm_photocam_add(obj);
//elm_photocam_file_set(photo, data);
//elm_photocam_zoom_mode_set(photo, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
Evas_Object *photo = elm_photo_add(obj);
elm_photo_file_set(photo, data);
elm_photo_fill_inside_set(photo, EINA_TRUE);
elm_object_style_set(photo, "shadow");
return photo;
}
static char *
_get_str(char *dest, const char *str)
{ /* dest should be not null and big enough */
sprintf(dest, "%s/%s", elm_app_data_dir_get(), str);
return dest;
}
TEST_START(test_slideshow)
{
Evas_Object *bg, *notify, *bx, *bt, *hv, *spin;
const Eina_List *l;
const char *transition, *layout;
char buf[1024];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
slideshow = elm_slideshow_add(win);
elm_slideshow_loop_set(slideshow, EINA_TRUE);
elm_win_resize_object_add(win, slideshow);
evas_object_size_hint_weight_set(slideshow, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(slideshow);
itc.func.get = _get;
itc.func.del = NULL;
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/logo.png"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/plant_01.jpg"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/rock_01.jpg"));
elm_slideshow_item_add(slideshow,&itc,get_str(buf,"images/rock_02.jpg"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/sky_01.jpg"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/sky_04.jpg"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/wood_01.jpg"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/mystrale.jpg"));
elm_slideshow_item_add(slideshow,&itc,_get_str(buf,"images/mystrale_2.jpg"));
notify = elm_notify_add(win);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
elm_win_resize_object_add(win, notify);
elm_notify_timeout_set(notify, 3.0);
bx = elm_box_add(win);
elm_box_horizontal_set(bx, EINA_TRUE);
elm_object_content_set(notify, bx);
evas_object_show(bx);
evas_object_event_callback_add(bx, EVAS_CALLBACK_MOUSE_IN, _mouse_in,
notify);
evas_object_event_callback_add(bx, EVAS_CALLBACK_MOUSE_OUT, _mouse_out,
notify);
bt = elm_button_add(win);
elm_object_text_set(bt, "Previous");
evas_object_smart_callback_add(bt, "clicked", _previous, slideshow);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Next");
evas_object_smart_callback_add(bt, "clicked", _next, slideshow);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
hv = elm_hoversel_add(win);
elm_box_pack_end(bx, hv);
elm_hoversel_hover_parent_set(hv, win);
EINA_LIST_FOREACH(elm_slideshow_transitions_get(slideshow), l, transition)
elm_hoversel_item_add(hv, transition, NULL, 0, _hv_select, transition);
elm_object_text_set(hv, eina_list_data_get(elm_slideshow_transitions_get(slideshow)));
evas_object_show(hv);
hv = elm_hoversel_add(win);
elm_box_pack_end(bx, hv);
elm_hoversel_hover_parent_set(hv, win);
EINA_LIST_FOREACH(elm_slideshow_layouts_get(slideshow), l, layout)
elm_hoversel_item_add(hv, layout, NULL, 0, _layout_select, layout);
elm_object_text_set(hv, elm_slideshow_layout_get(slideshow));
evas_object_show(hv);
spin = elm_spinner_add(win);
elm_spinner_label_format_set(spin, "%2.0f secs.");
evas_object_smart_callback_add(spin, "changed", _spin, spin);
elm_spinner_step_set(spin, 1);
elm_spinner_min_max_set(spin, 1, 30);
elm_spinner_value_set(spin, 3);
elm_box_pack_end(bx, spin);
evas_object_show(spin);
bt = elm_button_add(win);
bt_start = bt;
elm_object_text_set(bt, "Start");
evas_object_smart_callback_add(bt, "clicked", _start, spin);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
bt_stop = bt;
elm_object_text_set(bt, "Stop");
evas_object_smart_callback_add(bt, "clicked", _stop, spin);
elm_box_pack_end(bx, bt);
elm_object_disabled_set(bt, EINA_TRUE);
evas_object_show(bt);
evas_object_event_callback_add(slideshow, EVAS_CALLBACK_MOUSE_UP,
_notify_show, notify);
evas_object_event_callback_add(slideshow, EVAS_CALLBACK_MOUSE_MOVE,
_notify_show, notify);
evas_object_resize(win, 500, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,81 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_spinner)
{
Evas_Object *bg, *bx, *sp;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
sp = elm_spinner_add(win);
elm_spinner_label_format_set(sp, "%1.1f units");
elm_spinner_step_set(sp, 1.3);
elm_spinner_wrap_set(sp, ELM_WRAP_CHAR);
elm_spinner_min_max_set(sp, -50.0, 250.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
sp = elm_spinner_add(win);
elm_spinner_label_format_set(sp, "Percentage %%%1.2f something");
elm_spinner_step_set(sp, 5.0);
elm_spinner_wrap_set(sp, ELM_WRAP_CHAR);
elm_spinner_min_max_set(sp, 0.0, 100.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
sp = elm_spinner_add(win);
elm_spinner_label_format_set(sp, "%1.1f units");
elm_spinner_step_set(sp, 1.3);
elm_spinner_wrap_set(sp, ELM_WRAP_CHAR);
elm_object_style_set (sp, "vertical");
elm_spinner_min_max_set(sp, -50.0, 250.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
sp = elm_spinner_add(win);
elm_spinner_label_format_set(sp, "Disabled %.0f");
elm_object_disabled_set(sp, 1);
elm_spinner_min_max_set(sp, -50.0, 250.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
sp = elm_spinner_add(win);
elm_spinner_min_max_set(sp, 1, 12);
elm_spinner_label_format_set(sp, "%.0f");
elm_spinner_step_set(sp, 1.0);
elm_spinner_editable_set(sp, EINA_FALSE);
elm_spinner_special_value_add(sp, 1, "January");
elm_spinner_special_value_add(sp, 2, "February");
elm_spinner_special_value_add(sp, 3, "March");
elm_spinner_special_value_add(sp, 4, "April");
elm_spinner_special_value_add(sp, 5, "May");
elm_spinner_special_value_add(sp, 6, "June");
elm_spinner_special_value_add(sp, 7, "July");
elm_spinner_special_value_add(sp, 8, "August");
elm_spinner_special_value_add(sp, 9, "September");
elm_spinner_special_value_add(sp, 10, "October");
elm_spinner_special_value_add(sp, 11, "November");
elm_spinner_special_value_add(sp, 12, "December");
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
evas_object_show(win);
}
TEST_END

View File

@ -1,340 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_table)
{
Evas_Object *bg, *tb, *bt;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(tb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 0, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 0, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 2, 0, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 4");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 1, 2, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 5");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 2, 1, 1, 2);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button a");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 2, 2, 1);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END
TEST_START(test_table2)
{
Evas_Object *bg, *tb, *bt;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
elm_table_homogeneous_set(tb, EINA_TRUE);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(tb);
bt = elm_button_add(win);
elm_object_text_set(bt, "A");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 1, 2, 2);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Blah blah blah");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 3, 0, 2, 3);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Hallow");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 3, 10, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "B");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 2, 5, 2, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "C");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 8, 8, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Wide");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 7, 7, 2);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END
static void
my_tb_ch(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win = data;
Evas_Object *tb = evas_object_data_get(win, "tb");
Evas_Object *b2 = evas_object_data_get(win, "b2");
elm_table_unpack(tb, b2);
elm_table_pack(tb, b2, 1, 0, 1, 2);
}
TEST_START(test_table3)
{
Evas_Object *bg, *tb, *bt;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_data_set(win, "tb", tb);
evas_object_show(tb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 0, 1, 1);
evas_object_data_set(win, "b1", bt);
evas_object_smart_callback_add(bt, "clicked", my_tb_ch, win);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 0, 1, 1);
evas_object_data_set(win, "b2", bt);
evas_object_smart_callback_add(bt, "clicked", my_tb_ch, win);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 1, 1, 1);
evas_object_data_set(win, "b3", bt);
evas_object_smart_callback_add(bt, "clicked", my_tb_ch, win);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END
TEST_START(test_table4)
{
Evas_Object *bg, *tb, *bt;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_data_set(win, "tb", tb);
evas_object_show(tb);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 1");
evas_object_size_hint_weight_set(bt, 0.25, 0.25);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 0, 1, 1);
evas_object_data_set(win, "b1", bt);
evas_object_smart_callback_add(bt, "clicked", my_tb_ch, win);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 2");
evas_object_size_hint_weight_set(bt, 0.75, 0.25);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 0, 1, 1);
evas_object_data_set(win, "b2", bt);
evas_object_smart_callback_add(bt, "clicked", my_tb_ch, win);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button 3");
evas_object_size_hint_weight_set(bt, 0.25, 0.75);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 1, 1, 1);
evas_object_data_set(win, "b3", bt);
evas_object_smart_callback_add(bt, "clicked", my_tb_ch, win);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END
TEST_START(test_table5)
{
Evas_Object *bg, *tb, *bt;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
elm_table_homogeneous_set(tb, EINA_TRUE);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(tb);
bt = elm_button_add(win);
elm_object_text_set(bt, "A");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 33, 0, 34, 33);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "B");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 67, 33, 33, 34);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "C");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 33, 67, 34, 33);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "D");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 33, 33, 34);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "X");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 33, 33, 34, 34);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END
TEST_START(test_table6)
{
Evas_Object *bg, *tb, *bt;
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
tb = elm_table_add(win);
elm_table_homogeneous_set(tb, EINA_TRUE);
elm_win_resize_object_add(win, tb);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(tb);
bt = elm_button_add(win);
elm_object_text_set(bt, "C");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 1, 2, 2);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "A");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 1, 2, 2);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Blah blah blah");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 3, 0, 2, 3);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Hallow");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 0, 3, 10, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "B");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 1, 1, 1);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Wide");
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_table_pack(tb, bt, 1, 7, 7, 2);
evas_object_show(bt);
evas_object_show(win);
}
TEST_END

View File

@ -1,85 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
TEST_START(test_toggle)
{
Evas_Object *bg, *bx, *ic, *tg;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, 0.5);
elm_object_text_set(tg, "Icon sized to toggle");
elm_object_content_set(tg, ic);
elm_check_state_set(tg, 1);
elm_object_part_text_set(tg, "on", "Yes");
elm_object_part_text_set(tg, "off", "No");
elm_box_pack_end(bx, tg);
evas_object_show(tg);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_text_set(tg, "Icon no scale");
elm_object_content_set(tg, ic);
elm_box_pack_end(bx, tg);
evas_object_show(tg);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_text_set(tg, "Icon no scale");
elm_object_content_set(tg, ic);
elm_object_disabled_set(tg, 1);
elm_box_pack_end(bx, tg);
evas_object_show(tg);
evas_object_show(ic);
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_text_set(tg, "Label Only");
elm_object_part_text_set(tg, "on", "Big long fun times label");
elm_object_part_text_set(tg, "off", "Small long happy fun label");
elm_box_pack_end(bx, tg);
evas_object_show(tg);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_content_set(tg, ic);
elm_box_pack_end(bx, tg);
evas_object_show(tg);
evas_object_show(ic);
evas_object_show(win);
}
TEST_END

View File

@ -1,699 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
static void
tb_1(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(data, buf);
}
static void
tb_2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(data, buf);
}
static void
tb_3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/wood_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(data, buf);
}
static void
tb_3a(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
tb_3(data, obj, event_info);
elm_toolbar_item_state_set(event_info, elm_toolbar_item_state_next(event_info));
}
static void
tb_3b(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
tb_3(data, obj, event_info);
elm_toolbar_item_state_unset(event_info);
}
static void
tb_4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
elm_photo_file_set(data, buf);
}
static void
tb_4a(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_toolbar_item_state_set(event_info, elm_toolbar_item_state_prev(event_info));
}
static void
tb_5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_photo_file_set(data, NULL);
}
TEST_START(test_toolbar)
{
Evas_Object *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Object_Item *tb_it;
Elm_Object_Item *menu_it;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
tb_it = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(tb_it, EINA_TRUE);
elm_toolbar_item_priority_set(tb_it, 100);
tb_it = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(tb_it, -100);
tb_it = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(tb_it, 150);
tb_it = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(tb_it, 0);
tb_it = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(tb_it, 1);
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb = elm_table_add(win);
//elm_table_homogeneous_set(tb, 1);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph = ph1;
elm_photo_size_set(ph, 40);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 0, 1, 1);
evas_object_show(ph);
ph = ph2;
elm_photo_size_set(ph, 80);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 0, 1, 1);
evas_object_show(ph);
ph = ph3;
elm_photo_size_set(ph, 20);
snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 1, 1, 1);
evas_object_show(ph);
ph = ph4;
elm_photo_size_set(ph, 60);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 1, 1, 1);
evas_object_show(ph);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END
TEST_START(test_toolbar2)
{
Evas_Object *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Object_Item *item;
Elm_Object_Item *menu_it;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_SCROLL);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
item = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(item, EINA_TRUE);
elm_toolbar_item_priority_set(item, -100);
item = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(item, 100);
item = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(item, -150);
item = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(item, -200);
item = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(item, 0);
item = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(item, 1);
elm_toolbar_item_priority_set(item, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Scroll", tb_5, ph4);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb = elm_table_add(win);
//elm_table_homogeneous_set(tb, 1);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph = ph1;
elm_photo_size_set(ph, 40);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 0, 1, 1);
evas_object_show(ph);
ph = ph2;
elm_photo_size_set(ph, 80);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 0, 1, 1);
evas_object_show(ph);
ph = ph3;
elm_photo_size_set(ph, 20);
snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 1, 1, 1);
evas_object_show(ph);
ph = ph4;
elm_photo_size_set(ph, 60);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 1, 1, 1);
evas_object_show(ph);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END
TEST_START(test_toolbar3)
{
Evas_Object *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Object_Item *tb_it;
Elm_Object_Item *menu_it;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_NONE);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
tb_it = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(tb_it, EINA_TRUE);
elm_toolbar_item_priority_set(tb_it, 0);
tb_it = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(tb_it, 1);
tb_it = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(tb_it, -10);
tb_it = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(tb_it, 50);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(tb_it, 1);
elm_toolbar_item_priority_set(tb_it, 999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "None", tb_5, ph4);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph = ph1;
elm_photo_size_set(ph, 40);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 0, 1, 1);
evas_object_show(ph);
ph = ph2;
elm_photo_size_set(ph, 80);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 0, 1, 1);
evas_object_show(ph);
ph = ph3;
elm_photo_size_set(ph, 20);
snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 1, 1, 1);
evas_object_show(ph);
ph = ph4;
elm_photo_size_set(ph, 60);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 1, 1, 1);
evas_object_show(ph);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END
/* The same test of toolbar, but using hide shrink mode instead of menu */
TEST_START(test_toolbar4)
{
Evas_Object *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Object_Item *tb_it;
Elm_Object_Item *menu_it;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_HIDE);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
tb_it = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(tb_it, EINA_TRUE);
elm_toolbar_item_priority_set(tb_it, 100);
tb_it = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(tb_it, -100);
tb_it = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(tb_it, 150);
tb_it = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(tb_it, 0);
tb_it = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(tb_it, 1);
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph = ph1;
elm_photo_size_set(ph, 40);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 0, 1, 1);
evas_object_show(ph);
ph = ph2;
elm_photo_size_set(ph, 80);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 0, 1, 1);
evas_object_show(ph);
ph = ph3;
elm_photo_size_set(ph, 20);
snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 1, 1, 1);
evas_object_show(ph);
ph = ph4;
elm_photo_size_set(ph, 60);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 1, 1, 1);
evas_object_show(ph);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END
/* Toolbar with multiple state buttons */
TEST_START(test_toolbar5)
{
Evas_Object *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Object_Item *tb_it;
Elm_Object_Item *menu_it;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
elm_toolbar_no_select_mode_set(tb, EINA_TRUE);
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
tb_it = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(tb_it, EINA_TRUE);
elm_toolbar_item_priority_set(tb_it, 100);
snprintf(buf, sizeof(buf), "%s/images/icon_04.pngj", elm_app_data_dir_get());
tb_it = elm_toolbar_item_append(tb, buf, "World", tb_2, ph1);
elm_toolbar_item_priority_set(tb_it, -100);
tb_it = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3a, ph4);
elm_toolbar_item_state_add(tb_it, "object-rotate-left", "H2", tb_3b, ph4);
elm_toolbar_item_priority_set(tb_it, 150);
tb_it = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4a, ph4);
elm_toolbar_item_state_add(tb_it, "emptytrash", "Comes2", tb_4a, ph4);
elm_toolbar_item_state_add(tb_it, "trashcan_full", "Comes3", tb_4a, ph4);
elm_toolbar_item_priority_set(tb_it, 0);
tb_it = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(tb_it, 1);
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph = ph1;
elm_photo_size_set(ph, 40);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 0, 1, 1);
evas_object_show(ph);
ph = ph2;
elm_photo_size_set(ph, 80);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 0, 1, 1);
evas_object_show(ph);
ph = ph3;
elm_photo_size_set(ph, 20);
snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 1, 1, 1);
evas_object_show(ph);
ph = ph4;
elm_photo_size_set(ph, 60);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 1, 1, 1);
evas_object_show(ph);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END
TEST_START(test_toolbar6)
{
Evas_Object *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Object_Item *tb_it;
Elm_Object_Item *menu_it;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_horizontal_set(tb, EINA_FALSE);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
tb_it = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(tb_it, EINA_TRUE);
elm_toolbar_item_priority_set(tb_it, 100);
tb_it = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(tb_it, -100);
tb_it = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(tb_it, 150);
tb_it = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(tb_it, 0);
tb_it = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(tb_it, 1);
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb = elm_table_add(win);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
ph = ph1;
elm_photo_size_set(ph, 40);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 0, 1, 1);
evas_object_show(ph);
ph = ph2;
elm_photo_size_set(ph, 80);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 0, 1, 1);
evas_object_show(ph);
ph = ph3;
elm_photo_size_set(ph, 20);
snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 0, 1, 1, 1);
evas_object_show(ph);
ph = ph4;
elm_photo_size_set(ph, 60);
snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
elm_photo_file_set(ph, buf);
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, 0.5, 0.5);
elm_table_pack(tb, ph, 1, 1, 1, 1);
evas_object_show(ph);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
evas_object_resize(win, 320, 300);
evas_object_show(win);
}
TEST_END

View File

@ -1,600 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _Testitem
{
Elm_Gengrid_Item *item;
const char *path;
int mode;
int onoff;
} Testitem;
static Elm_Gengrid_Item_Class gic;
char *
grdt_lbl_get(void *data,
Evas_Object *obj __UNUSED__,
const char *part __UNUSED__)
{
const Testitem *ti = data;
char buf[256];
snprintf(buf, sizeof(buf), "Photo %s", ti->path);
return strdup(buf);
}
Evas_Object *
grdt_content_get(void *data,
Evas_Object *obj,
const char *part)
{
const Testitem *ti = data;
if (!strcmp(part, "elm.swallow.icon"))
{
Evas_Object *icon = elm_bg_add(obj);
elm_bg_file_set(icon, ti->path, NULL);
evas_object_size_hint_aspect_set(icon,
EVAS_ASPECT_CONTROL_VERTICAL,
1, 1);
evas_object_show(icon);
return icon;
}
return NULL;
}
static Elm_Genlist_Item_Class itct;
static void
gltt_exp(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info)
{
Elm_Object_Item *glit = event_info;
Evas_Object *gl = elm_genlist_item_genlist_get(glit);
int val = (int)(long)elm_genlist_item_data_get(glit);
Elm_Object_Item *glit1, *glit2, *glit3;
val *= 10;
glit1 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 1), glit,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
glit2 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 2), glit,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
glit3 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 3), glit,
ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
elm_genlist_item_tooltip_text_set(glit1, "Testing A");
elm_genlist_item_tooltip_text_set(glit2, "Testing B");
elm_genlist_item_tooltip_text_set(glit3, "Testing C");
}
static void
gltt_con(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_subitems_clear(glit);
}
static void
gltt_exp_req(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_expanded_set(glit, EINA_TRUE);
}
static void
gltt_con_req(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_expanded_set(glit, EINA_FALSE);
}
char *
gltt_text_get(void *data,
Evas_Object *obj __UNUSED__,
const char *part __UNUSED__)
{
char buf[256];
snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
return strdup(buf);
}
static Evas_Object *
_tt_item_icon(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
Evas_Object *tt,
void *item __UNUSED__)
{
Evas_Object *ic = elm_icon_add(tt);
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_resize(ic, 64, 64);
return ic;
}
static Evas_Object *
_tt_item_icon2(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
Evas_Object *tt,
void *item __UNUSED__)
{
Evas_Object *ic = elm_icon_add(tt);
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
return ic;
}
static Evas_Object *
_tt_item_icon3(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
Evas_Object *tt,
void *item __UNUSED__)
{
int w, h, sw, sh;
Evas_Object *ic = elm_icon_add(tt);
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/insanely_huge_test_image.jpg", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_size_get(ic, &w, &h);
elm_win_screen_size_get(tt, NULL, NULL, &sw, &sh);
if ((w > sw) || (h > sh))
{
float sc = 0;
if ((float)w / (float)sw >= 0.8)
sc = ((float)sw * 0.8) / (float)w;
else if ((float)h / (float)sh >= 0.8)
sc = ((float)sh * 0.8) / (float)h;
if (sc) elm_object_scale_set(ic, sc);
}
return ic;
}
static Evas_Object *
_tt_item_label(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
Evas_Object *tt,
void *item __UNUSED__)
{
Evas_Object *l = elm_label_add(tt);
elm_object_text_set(l, "Something useful here?<ps>"
"No probably not, but this is a super long label<ps>"
"which probably breaks on your system, now doesn't it?<ps>"
"Yeah, I thought so.");
elm_label_line_wrap_set(l, ELM_WRAP_MIXED);
return l;
}
static void
_tt_item_icon_del(void *data,
Evas_Object *obj __UNUSED__,
void *event_info)
{
// test to check for del_cb behavior!
printf("_tt_icon_del: data=%ld (== 456?), event_info=%p\n",
(long)data, event_info);
}
static void
_tt_text_replace(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
static int count = 0;
char buf[64];
snprintf(buf, sizeof(buf), "count=%d", count);
count++;
elm_object_tooltip_text_set(obj, buf);
}
static void
_tt_timer_del(void *data __UNUSED__,
Evas *e __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
Ecore_Timer *timer = evas_object_data_del(obj, "test-timer");
if (!timer) return;
ecore_timer_del(timer);
}
static Eina_Bool
_tt_text_replace_timer_cb(void *data)
{
_tt_text_replace(NULL, data, NULL);
return EINA_TRUE;
}
static void
_tt_text_replace_timed(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
Ecore_Timer *timer = evas_object_data_get(obj, "test-timer");
if (timer)
{
ecore_timer_del(timer);
evas_object_data_del(obj, "test-timer");
elm_object_text_set(obj, "Simple text tooltip, click to start"
" changed timed");
return;
}
timer = ecore_timer_add(1.5, _tt_text_replace_timer_cb, obj);
evas_object_data_set(obj, "test-timer", timer);
elm_object_text_set(obj, "Simple text tooltip, click to stop changed"
" timed");
}
static Evas_Object *
_tt_icon(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
Evas_Object *tt)
{
Evas_Object *ic = elm_icon_add(tt);
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_resize(ic, 64, 64);
return ic;
}
static Evas_Object *
_tt_icon2(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
Evas_Object *tt)
{
Evas_Object *ic = elm_icon_add(tt);
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/icon_00.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
elm_icon_scale_set(ic, 0, 0);
evas_object_resize(ic, 64, 64);
return ic;
}
static void
_tt_icon_del(void *data,
Evas_Object *obj __UNUSED__,
void *event_info)
{
// test to check for del_cb behavior!
printf("_tt_icon_del: data=%ld (== 123?), event_info=%p\n",
(long)data, event_info);
}
static Eina_Bool
_tt_icon_replace_timer_cb(void *data)
{
static int current = 0;
elm_object_tooltip_content_cb_set
(data, current ? _tt_icon2 : _tt_icon, NULL, NULL);
current = !current;
return EINA_TRUE;
}
static void
_tt_icon_replace_timed(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
Ecore_Timer *timer = evas_object_data_get(obj, "test-timer");
if (timer)
{
ecore_timer_del(timer);
evas_object_data_del(obj, "test-timer");
elm_object_text_set(obj, "Icon tooltip, click to start changed"
" timed");
return;
}
timer = ecore_timer_add(1.5, _tt_icon_replace_timer_cb, obj);
evas_object_data_set(obj, "test-timer", timer);
elm_object_text_set(obj, "Icon tooltip, click to stop changed timed");
}
static Eina_Bool
_tt_style_replace_timer_cb(void *data)
{
static int current = 0;
elm_object_tooltip_style_set(data, current ? NULL : "transparent");
current = !current;
return EINA_TRUE;
}
static void
_tt_style_replace_timed(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
Ecore_Timer *timer = evas_object_data_get(obj, "test-timer");
if (timer)
{
ecore_timer_del(timer);
evas_object_data_del(obj, "test-timer");
elm_object_text_set(obj, "Icon tooltip style, click to start"
" changed timed");
return;
}
timer = ecore_timer_add(1.5, _tt_style_replace_timer_cb, obj);
evas_object_data_set(obj, "test-timer", timer);
elm_object_text_set(obj, "Icon tooltip style, click to stop changed"
" timed");
}
static void
_tt_visible_lock_toggle(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
static int locked = 0;
locked = !locked;
if (locked)
{
elm_object_text_set(obj, "Locked tooltip visibility");
elm_object_tooltip_text_set(obj, "This tooltip is locked"
" visible,<br> click the button"
" to unlock!");
elm_object_tooltip_show(obj);
}
else
{
elm_object_text_set(obj, "Unlocked tooltip visibility");
elm_object_tooltip_text_set(obj, "This tooltip is unlocked"
" visible,<br> click the button"
" to lock!");
elm_object_tooltip_hide(obj);
}
}
TEST_START(test_tooltip)
{
Evas_Object *bg, *bx, *tb, *bt, *se, *lst;
Elm_Object_Item *tb_it;
Elm_Object_Item *li;
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
tb = elm_toolbar_add(win);
elm_toolbar_homogeneous_set(tb, 0);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
elm_box_pack_end(bx, tb);
evas_object_show(tb);
tb_it = elm_toolbar_item_append(tb, NULL, "Open", NULL, NULL);
elm_toolbar_item_tooltip_text_set(tb_it, "Opens a file");
tb_it = elm_toolbar_item_append(tb, NULL, "Icon", NULL, NULL);
elm_toolbar_item_tooltip_content_cb_set
(tb_it, _tt_item_icon, (void *)456L, _tt_item_icon_del);
elm_toolbar_item_tooltip_style_set(tb_it, "transparent");
bt = elm_button_add(win);
elm_object_text_set(bt, "Simple text tooltip");
elm_object_tooltip_text_set(bt, "Simple text tooltip");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Simple text tooltip, click to change");
elm_object_tooltip_text_set(bt, "Initial");
evas_object_smart_callback_add(bt, "clicked", _tt_text_replace, NULL);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Simple text tooltip, click to start"
" changed timed");
elm_object_tooltip_text_set(bt, "Initial");
evas_object_smart_callback_add(bt, "clicked", _tt_text_replace_timed,
NULL);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _tt_timer_del,
NULL);
bt = elm_button_add(win);
elm_object_text_set(bt, "Icon tooltip");
elm_object_tooltip_content_cb_set(bt, _tt_icon, (void *)123L,
_tt_icon_del);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Icon tooltip, click to start changed timed");
elm_object_tooltip_content_cb_set(bt, _tt_icon, NULL, NULL);
evas_object_smart_callback_add(bt, "clicked", _tt_icon_replace_timed,
NULL);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _tt_timer_del,
NULL);
bt = elm_button_add(win);
elm_object_text_set(bt, "Transparent Icon tooltip");
elm_object_tooltip_content_cb_set(bt, _tt_icon, NULL, NULL);
elm_object_tooltip_style_set(bt, "transparent");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Icon tooltip style, click to start changed"
" timed");
elm_object_tooltip_content_cb_set(bt, _tt_icon, NULL, NULL);
evas_object_smart_callback_add(bt, "clicked", _tt_style_replace_timed,
NULL);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _tt_timer_del,
NULL);
bt = elm_button_add(win);
elm_object_text_set(bt, "Unlocked tooltip visibility");
elm_object_tooltip_text_set(bt, "This tooltip is unlocked visible,<br>"
" click the button to lock!");
evas_object_smart_callback_add(bt, "clicked", _tt_visible_lock_toggle,
NULL);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
se = elm_entry_add(win);
elm_entry_scrollable_set(se, EINA_TRUE);
evas_object_size_hint_weight_set(se, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(se, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(se, ELM_SCROLLER_POLICY_OFF,
ELM_SCROLLER_POLICY_OFF);
elm_entry_entry_set(se, "Hello, some scrolled entry here!");
elm_object_tooltip_text_set(se, "Type something here!");
elm_entry_single_line_set(se, 1);
elm_box_pack_end(bx, se);
evas_object_show(se);
lst = elm_list_add(win);
li = elm_list_item_append(lst, "Hello", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_content_cb_set(li, _tt_item_label, NULL, NULL);
elm_list_item_tooltip_window_mode_set(li, EINA_TRUE);
li = elm_list_item_append(lst, "Icon Tooltip", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_content_cb_set(li, _tt_item_icon, NULL, NULL);
li = elm_list_item_append(lst, "Big Icon Tooltip", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_content_cb_set(li, _tt_item_icon2, NULL, NULL);
elm_list_item_tooltip_style_set(li, "transparent");
elm_list_item_tooltip_window_mode_set(li, EINA_TRUE);
li = elm_list_item_append(lst, "Insanely Big Icon Tooltip", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_content_cb_set(li, _tt_item_icon3, NULL, NULL);
elm_list_item_tooltip_style_set(li, "transparent");
elm_list_item_tooltip_window_mode_set(li, EINA_TRUE);
evas_object_size_hint_weight_set(lst, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(lst, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_min_set(lst, 100, 100);
elm_list_go(lst);
elm_box_pack_end(bx, lst);
evas_object_show(lst);
evas_object_resize(win, 320, 580);
evas_object_show(win);
}
TEST_END
TEST_START(test_tooltip2)
{
Evas_Object *bg, *bx, *grid, *gl;
Elm_Object_Item *glit1, *glit2, *glit3;
static Testitem ti[144];
int i, n;
char buf[PATH_MAX];
const char *img[9] =
{
"panel_01.jpg",
"plant_01.jpg",
"rock_01.jpg",
"rock_02.jpg",
"sky_01.jpg",
"sky_02.jpg",
"sky_03.jpg",
"sky_04.jpg",
"wood_01.jpg",
};
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
grid = elm_gengrid_add(win);
elm_gengrid_item_size_set(grid, 100, 100);
elm_gengrid_horizontal_set(grid, EINA_FALSE);
elm_gengrid_multi_select_set(grid, EINA_TRUE);
evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
gic.item_style = "default";
gic.func.text_get = grdt_lbl_get;
gic.func.content_get = grdt_content_get;
n = 0;
for (i = 0; i < 9; i++)
{
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(),
img[n]);
n++;
ti[i].mode = i;
ti[i].path = eina_stringshare_add(buf);
ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), NULL,
NULL);
if (n % 2)
elm_gengrid_item_tooltip_text_set(ti[i].item, "Testing X");
else
elm_gengrid_item_tooltip_text_set(ti[i].item, "Testing Y");
if (!(i % 5))
elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
}
elm_box_pack_end(bx, grid);
evas_object_show(grid);
gl = elm_genlist_add(win);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
itct.item_style = "default";
itct.func.text_get = gltt_text_get;
glit1 = elm_genlist_item_append(gl, &itct, (void *)1, NULL,
ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
glit2 = elm_genlist_item_append(gl, &itct, (void *)2, NULL,
ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
glit3 = elm_genlist_item_append(gl, &itct, (void *)3, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_tooltip_text_set(glit1, "Testing 1");
elm_genlist_item_tooltip_text_set(glit2, "Testing 2");
elm_genlist_item_tooltip_text_set(glit3, "Testing 3");
evas_object_smart_callback_add(gl, "expand,request", gltt_exp_req, gl);
evas_object_smart_callback_add(gl, "contract,request", gltt_con_req,
gl);
evas_object_smart_callback_add(gl, "expanded", gltt_exp, gl);
evas_object_smart_callback_add(gl, "contracted", gltt_con, gl);
elm_box_pack_end(bx, gl);
evas_object_show(gl);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
TEST_END

View File

@ -1,590 +0,0 @@
#include <Elementary.h>
#include "tsuite.h"
typedef struct _Custom_Effect Custom_Effect;
struct _Custom_Effect
{
struct _size
{
Evas_Coord w, h;
} from, to;
};
static void
_custom_op(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress)
{
if (!effect) return;
Evas_Coord w, h;
Evas_Object *obj;
const Eina_List *elist;
Custom_Effect *custom_effect = effect;
const Eina_List *objs = elm_transit_objects_get(transit);
if (progress < 0.5)
{
h = custom_effect->from.h + (custom_effect->to.h * progress * 2);
w = custom_effect->from.w;
}
else
{
h = custom_effect->from.h + custom_effect->to.h;
w = custom_effect->from.w + \
(custom_effect->to.w * (progress - 0.5) * 2);
}
EINA_LIST_FOREACH(objs, elist, obj)
evas_object_resize(obj, w, h);
}
static Elm_Transit_Effect *
_custom_context_new(Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h)
{
Custom_Effect *custom_effect;
custom_effect = calloc(1, sizeof(Custom_Effect));
if (!custom_effect) return NULL;
custom_effect->from.w = from_w;
custom_effect->from.h = from_h;
custom_effect->to.w = to_w - from_w;
custom_effect->to.h = to_h - from_h;
return custom_effect;
}
static void
_custom_context_free(Elm_Transit_Effect *effect, Elm_Transit *transit __UNUSED__)
{
Custom_Effect *custom_effect = effect;
free(custom_effect);
}
static void
_transit_rotation_translation_color(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Transit *trans;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_auto_reverse_set(trans, EINA_TRUE);
elm_transit_repeat_times_set(trans, 2);
/* Translation Effect */
elm_transit_effect_translation_add(trans, -70.0, -150.0, 70.0, 150.0);
/* Color Effect */
elm_transit_effect_color_add(trans, 100, 255, 100, 255, 200, 50, 200, 50);
/* Rotation Effect */
elm_transit_effect_rotation_add(trans, 0.0, 135.0);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_wipe(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Transit *trans;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_auto_reverse_set(trans, EINA_TRUE);
elm_transit_effect_wipe_add(trans,
ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_del_cb(void *data, Elm_Transit *transit __UNUSED__)
{
evas_object_freeze_events_set(data, EINA_FALSE);
}
static void
_transit_image_animation(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Eina_List *images = NULL;
char buf[PATH_MAX];
Elm_Transit *trans;
Evas_Object *ic = data;
snprintf(buf, sizeof(buf), "%s/images/icon_19.png", elm_app_data_dir_get());
images = eina_list_append(images, eina_stringshare_add(buf));
snprintf(buf, sizeof(buf), "%s/images/icon_00.png", elm_app_data_dir_get());
images = eina_list_append(images, eina_stringshare_add(buf));
snprintf(buf, sizeof(buf), "%s/images/icon_11.png", elm_app_data_dir_get());
images = eina_list_append(images, eina_stringshare_add(buf));
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
images = eina_list_append(images, eina_stringshare_add(buf));
trans = elm_transit_add();
elm_transit_del_cb_set(trans, _transit_del_cb, obj);
elm_transit_object_add(trans, ic);
elm_transit_effect_image_animation_add(trans, images);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
evas_object_freeze_events_set(obj, EINA_TRUE);
}
static void
_transit_resizing(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Elm_Transit *trans;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Transit *trans;
Evas_Object *obj2 = data;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_object_add(trans, obj2);
elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_zoom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Elm_Transit *trans;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_effect_zoom_add(trans, 1.0, 3.0);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_blend(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Transit *trans;
Evas_Object *obj2 = data;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_object_add(trans, obj2);
elm_transit_effect_blend_add(trans);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_fade(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Transit *trans;
Evas_Object *obj2 = data;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_object_add(trans, obj2);
elm_transit_effect_fade_add(trans);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
static void
_transit_resizable_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Transit *trans;
Evas_Object *obj2 = data;
trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_object_add(trans, obj2);
elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
elm_transit_duration_set(trans, 5.0);
elm_transit_go(trans);
}
/* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
TEST_START(test_transit)
{
Evas_Object *bg, *bx, *bt, *ic;
char buf[PATH_MAX];
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_min_set(bx, 318, 318);
evas_object_show(bx);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_11.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_text_set(bt, "ImageAnimation Effect");
elm_object_content_set(bt, ic);
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_show(ic);
evas_object_smart_callback_add(bt, "clicked", _transit_image_animation, ic);
bt = elm_button_add(win);
elm_object_text_set(bt, "Color, Rotation and Translation");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked",
_transit_rotation_translation_color, NULL);
bt = elm_button_add(win);
elm_object_text_set(bt, "Wipe Effect");
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked", _transit_wipe, NULL);
evas_object_show(win);
}
TEST_END
/* Resizing Effect */
TEST_START(test_transit2)
{
Evas_Object *bg, *bt;
evas_object_resize(win, 400, 400);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bt = elm_button_add(win);
elm_object_text_set(bt, "Resizing Effect");
evas_object_show(bt);
evas_object_move(bt, 50, 100);
evas_object_resize(bt, 100, 50);
evas_object_smart_callback_add(bt, "clicked", _transit_resizing, NULL);
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
TEST_END
/* Flip Effect */
TEST_START(test_transit3)
{
Evas_Object *bg, *bt, *bt2;
evas_object_resize(win, 300, 300);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bt = elm_button_add(win);
elm_object_text_set(bt, "Front Button - Flip Effect");
evas_object_show(bt);
evas_object_move(bt, 50, 50);
evas_object_resize(bt, 200, 200);
bt2 = elm_button_add(win);
elm_object_text_set(bt2, "Back Button - Flip Effect");
evas_object_move(bt2, 50, 50);
evas_object_resize(bt2, 200, 200);
evas_object_resize(win, 300, 300);
evas_object_show(win);
evas_object_smart_callback_add(bt, "clicked", _transit_flip, bt2);
evas_object_smart_callback_add(bt2, "clicked", _transit_flip, bt);
}
TEST_END
/* Zoom Effect */
TEST_START(test_transit4)
{
Evas_Object *bg, *bt;
evas_object_resize(win, 300, 300);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bt = elm_button_add(win);
elm_object_text_set(bt, "Zoom Effect");
evas_object_resize(bt, 100, 50);
evas_object_move(bt, 100, 125);
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked", _transit_zoom, NULL);
evas_object_resize(win, 300, 300);
evas_object_show(win);
}
TEST_END
/* Blend Effect */
TEST_START(test_transit5)
{
Evas_Object *bg, *bt, *bt2, *ic;
char buf[PATH_MAX];
evas_object_resize(win, 300, 300);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_max_set(ic, 50, 50);
bt = elm_button_add(win);
elm_object_content_set(bt, ic);
elm_object_text_set(bt, "Before Button - Blend Effect");
evas_object_move(bt, 25, 125);
evas_object_resize(bt, 250, 50);
evas_object_show(bt);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_max_set(ic, 50, 50);
bt2 = elm_button_add(win);
elm_object_content_set(bt2, ic);
elm_object_text_set(bt2, "After Button - Blend Effect");
evas_object_move(bt2, 25, 125);
evas_object_resize(bt2, 250, 50);
evas_object_resize(win, 300, 300);
evas_object_show(win);
evas_object_smart_callback_add(bt, "clicked", _transit_blend, bt2);
evas_object_smart_callback_add(bt2, "clicked", _transit_blend, bt);
}
TEST_END
/* Fade Effect */
TEST_START(test_transit6)
{
Evas_Object *bg, *bt, *bt2, *ic;
char buf[PATH_MAX];
evas_object_resize(win, 300, 300);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_max_set(ic, 50, 50);
bt = elm_button_add(win);
elm_object_content_set(bt, ic);
elm_object_text_set(bt, "Before Button - Fade Effect");
evas_object_move(bt, 25, 125);
evas_object_resize(bt, 250, 50);
evas_object_show(bt);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_max_set(ic, 50, 50);
bt2 = elm_button_add(win);
elm_object_content_set(bt2, ic);
elm_object_text_set(bt2, "After Button - Fade Effect");
evas_object_move(bt2, 25, 125);
evas_object_resize(bt2, 250, 50);
evas_object_resize(win, 300, 300);
evas_object_show(win);
evas_object_smart_callback_add(bt, "clicked", _transit_fade, bt2);
evas_object_smart_callback_add(bt2, "clicked", _transit_fade, bt);
}
TEST_END
/* Resizable Flip Effect */
TEST_START(test_transit7)
{
Evas_Object *bg, *bt, *bt2;
evas_object_resize(win, 400, 400);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bt = elm_button_add(win);
elm_object_text_set(bt, "Front Button - Resizable Flip Effect");
evas_object_show(bt);
evas_object_move(bt, 50, 100);
evas_object_resize(bt, 250, 30);
bt2 = elm_button_add(win);
elm_object_text_set(bt2, "Back Button - Resizable Flip Effect");
evas_object_move(bt2, 50, 100);
evas_object_resize(bt2, 300, 200);
evas_object_resize(win, 400, 400);
evas_object_show(win);
evas_object_smart_callback_add(bt, "clicked", _transit_resizable_flip, bt2);
evas_object_smart_callback_add(bt2, "clicked", _transit_resizable_flip, bt);
}
TEST_END
/* Custom Effect */
TEST_START(test_transit8)
{
Evas_Object *bg, *bt;
Elm_Transit *trans;
Elm_Transit_Effect *effect_context;
evas_object_resize(win, 400, 400);
evas_object_show(win);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button - Custom Effect");
evas_object_show(bt);
evas_object_move(bt, 50, 50);
evas_object_resize(bt, 150, 150);
/* Adding Transit */
trans = elm_transit_add();
elm_transit_auto_reverse_set(trans, EINA_TRUE);
elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
effect_context = _custom_context_new(150, 150, 50, 50);
elm_transit_object_add(trans, bt);
elm_transit_effect_add(trans,
_custom_op, effect_context,
_custom_context_free);
elm_transit_duration_set(trans, 5.0);
elm_transit_repeat_times_set(trans, -1);
elm_transit_go(trans);
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
TEST_END
/* Chain Transit Effect */
TEST_START(test_transit9)
{
Evas_Object *bg, *bt, *bt2, *bt3, *bt4;
Elm_Transit *trans, *trans2, *trans3, *trans4;
evas_object_resize(win, 400, 400);
evas_object_show(win);
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
bt = elm_button_add(win);
elm_object_text_set(bt, "Chain 1");
evas_object_resize(bt, 100, 100);
evas_object_move(bt, 0, 0);
evas_object_show(bt);
bt2 = elm_button_add(win);
elm_object_text_set(bt2, "Chain 2");
evas_object_resize(bt2, 100, 100);
evas_object_move(bt2, 300, 0);
evas_object_show(bt2);
bt3 = elm_button_add(win);
elm_object_text_set(bt3, "Chain 3");
evas_object_resize(bt3, 100, 100);
evas_object_move(bt3, 300, 300);
evas_object_show(bt3);
bt4 = elm_button_add(win);
elm_object_text_set(bt4, "Chain 4");
evas_object_resize(bt4, 100, 100);
evas_object_move(bt4, 0, 300);
evas_object_show(bt4);
trans = elm_transit_add();
elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
elm_transit_effect_translation_add(trans, 0, 0, 300, 0);
elm_transit_object_add(trans, bt);
elm_transit_duration_set(trans, 1);
elm_transit_objects_final_state_keep_set(trans, EINA_TRUE);
elm_transit_go(trans);
trans2 = elm_transit_add();
elm_transit_tween_mode_set(trans2, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
elm_transit_effect_translation_add(trans2, 0, 0, 0, 300);
elm_transit_object_add(trans2, bt2);
elm_transit_duration_set(trans2, 1);
elm_transit_objects_final_state_keep_set(trans2, EINA_TRUE);
elm_transit_chain_transit_add(trans, trans2);
trans3 = elm_transit_add();
elm_transit_tween_mode_set(trans3, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
elm_transit_effect_translation_add(trans3, 0, 0, -300, 0);
elm_transit_object_add(trans3, bt3);
elm_transit_duration_set(trans3, 1);
elm_transit_objects_final_state_keep_set(trans3, EINA_TRUE);
elm_transit_chain_transit_add(trans2, trans3);
trans4 = elm_transit_add();
elm_transit_tween_mode_set(trans4, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
elm_transit_effect_translation_add(trans4, 0, 0, 0, -300);
elm_transit_object_add(trans4, bt4);
elm_transit_duration_set(trans4, 1);
elm_transit_objects_final_state_keep_set(trans4, EINA_TRUE);
elm_transit_chain_transit_add(trans3, trans4);
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
TEST_END

View File

@ -1,698 +0,0 @@
#define _GNU_SOURCE 1
#include <stdlib.h>
#include <Elementary.h>
#include "tsuite.h"
#include <dlfcn.h>
#include "tsuite_file_data.h"
#include <Ecore.h>
#include <Ecore_Getopt.h>
void test_3d(void);
void test_actionslider(void);
void test_anchorblock(void);
void test_anchorview(void);
void test_bg_plain(void);
void test_bg_image(void);
void test_bg_options(void);
void test_box_vert(void);
void test_box_vert2(void);
void test_box_horiz(void);
void test_button(void);
void test_bubble(void);
void test_calendar(void);
void test_check(void);
void test_colorselector(void);
void test_conformant(void);
void test_conformant2(void);
void test_ctxpopup(void);
void test_diskselector(void);
void test_entry(void);
void test_entry_scrolled(void);
void test_entry3(void);
void test_entry4(void);
void test_entry5(void);
void test_entry_notepad(void);
void test_fileselector(void);
void test_fileselector_button(void);
void test_fileselector_entry(void);
void test_focus(void);
void test_gengrid(void);
void test_gengrid2(void);
void test_genlist(void);
void test_genlist2(void);
void test_genlist3(void);
void test_genlist4(void);
void test_genlist5(void);
void test_genlist6(void);
void test_genlist7(void);
void test_genlist8(void);
void test_genlist9(void);
void test_genlist10(void);
void test_genlist11(void);
void test_glview(void);
void test_glview_simple(void);
void test_grid(void);
void test_hover(void);
void test_hover2(void);
void test_hoversel(void);
void test_index(void);
void test_index2(void);
void test_inwin(void);
void test_inwin2(void);
void test_label(void);
void test_list(void);
void test_list_horizontal(void);
void test_list2(void);
void test_list3(void);
void test_list4(void);
void test_list5(void);
void test_menu(void);
void test_naviframe(void);
void test_notify(void);
void test_pager(void);
void test_pager_slide(void);
void test_panel(void);
void test_panes(void);
void test_progressbar(void);
void test_radio(void);
void test_scaling(void);
void test_scaling2(void);
void test_scroller(void);
void test_scroller2(void);
void test_segment_control(void);
void test_separator(void);
void test_slider(void);
void test_spinner(void);
void test_table(void);
void test_table2(void);
void test_table3(void);
void test_table4(void);
void test_table5(void);
void test_table6(void);
void test_toggle(void);
void test_toolbar(void);
void test_toolbar2(void);
void test_toolbar3(void);
void test_toolbar4(void);
void test_toolbar5(void);
void test_tooltip(void);
void test_tooltip2(void);
/* START - Some globals - may want to move these to Timer_Data struct later */
static Lists_st *vr_list = NULL;
/* END - Some globals - may want to move these to Timer_Data struct later */
/**
* @internal
*
* @struct _Test_Item
* Struct holds test-suite test / func pair.
*
* @ingroup Tsuite
*/
struct _Test_Item
{ /* Item type for array of test-names, test-func-ptr */
char *name;
void (* func) (void);
Eina_Bool test;
};
typedef struct _Test_Item Test_Item;
/* static Tsuite_Data ts; moved to tsuite_evas_hook */
static int recording = 0;
void
tsuite_init(Evas_Object *win, char *name, api_data *d)
{
return;
}
Eina_List *
_add_test(Eina_List *list, char *n, void (* f) (void), Eina_Bool t)
{
Test_Item *item = malloc(sizeof(Test_Item));
item->name = n;
item->func = f;
item->test = t;
return eina_list_append(list, item);
}
int test_name_cmp(const void *data1, const void *data2)
{
return strcmp(((Test_Item *) data1)->name, (char *) data2);
}
Test_Item *
_set_test(Eina_List *list, char *n, Eina_Bool t)
{
Test_Item *item = eina_list_search_unsorted(list, test_name_cmp, n);
if (item)
item->test = t;
else
printf("Unknown test name: %s\n", n);
return item;
}
static void (* _tsuite_evas_hook_init) (Lists_st *) = NULL;
static void (* _tsuite_evas_hook_reset) (void) = NULL;
static void
_init_recording_funcs(void)
{
_tsuite_evas_hook_init = dlsym(RTLD_DEFAULT, "tsuite_evas_hook_init");
_tsuite_evas_hook_reset = dlsym(RTLD_DEFAULT, "tsuite_evas_hook_reset");
}
#if 0
/**
* @internal
*
* This function initiates Tsuite_Data
* @param name defines test-name
* @param Pointer_Event Pointer to PE.
*
* @ingroup Tsuite
*/
void
tsuite_init(Evas_Object *win, char *name, api_data *d)
{
tsuite_cleanup();
if (!name)
return;
ts.name = strdup(name); /* Freed by tsuite_cleanup */
ts.win = win;
if (d)
{ /* This field is not used when testing APPs */
ts.api = d;
ts.api->win = win;
}
ts.e = evas_object_evas_get(ts.win);
}
/**
* @internal
*
* This function do cleanup for Tsuite
* @param Tsuite_Data * data for cleanup.
*
* @ingroup Tsuite
*/
void
tsuite_cleanup(void)
{
if (ts.name)
free(ts.name);
if (ts.api)
{
if (ts.api->data && ts.api->free_data)
free(ts.api->data);
free(ts.api);
}
if (ts.win)
evas_object_del(ts.win);
memset(&ts, 0, sizeof(ts));
}
char *tsuite_test_name_get()
{
return ts.name;
}
#endif
#if 0 /* moved to tsuite_evas_hook */
/**
* @internal
*
* This function takes actual shot and saves it in PNG
* @param data Tsuite_Data pointer initiated by user
* @param obj Window pointer
* @param obj name file name. Will use name_+serial if NULL
*
* @ingroup Tsuite
*/
void
tsuite_shot_do(Evas_Object *obj, char *name)
{
Ecore_Evas *ee, *ee_orig;
Evas_Object *o;
unsigned int *pixels;
int w, h,dir_name_len = 0;
char *filename;
if (dest_dir)
dir_name_len = strlen(dest_dir) + 1; /* includes space of a '/' */
if (name)
{
filename = malloc(strlen(name) + strlen(IMAGE_FILENAME_EXT) +
dir_name_len + 4);
if (dest_dir)
sprintf(filename, "%s/", dest_dir);
sprintf(filename + dir_name_len, "%s%s", name, IMAGE_FILENAME_EXT);
}
else
{
filename = malloc(strlen(ts.name) + strlen(IMAGE_FILENAME_EXT) +
dir_name_len + 8); /* also space for serial */
ts.serial++;
if (dest_dir)
sprintf(filename, "%s/", dest_dir);
sprintf(filename + dir_name_len, "%s_%d%s", ts.name ,ts.serial,
IMAGE_FILENAME_EXT);
}
/* A bit hackish, get the ecore_evas from the Evas canvas */
ee_orig = evas_data_attach_get(evas_object_evas_get(obj));
ecore_evas_manual_render(ee_orig);
pixels = (void *)ecore_evas_buffer_pixels_get(ee_orig);
if (!pixels) return;
ecore_evas_geometry_get(ee_orig, NULL, NULL, &w, &h);
if ((w < 1) || (h < 1)) return;
ee = ecore_evas_buffer_new(1, 1);
o = evas_object_image_add(ecore_evas_get(ee));
evas_object_image_alpha_set(o, ecore_evas_alpha_get(ee_orig));
evas_object_image_size_set(o, w, h);
evas_object_image_data_set(o, pixels);
if (!evas_object_image_save(o, filename, NULL, NULL))
{
printf("Cannot save widget to <%s>\n", filename);
}
ecore_evas_free(ee);
free(filename);
}
#endif
void
_test_close_win(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
// ts.win = NULL;
elm_exit();
}
#if 0 /* Moved to tsuite_file_data */
static Lists_st *
free_events(Lists_st *st)
{
Variant_st *v;
EINA_LIST_FREE(st->variant_list, v)
{
if (recording)
{
Tsuite_Event_Type e = tsuite_event_mapping_type_get(v->t.type);
if ((e == TSUITE_EVENT_KEY_DOWN) || (e == TSUITE_EVENT_KEY_UP))
{ /* Allocated in tsuite_evas_hook.c */
key_down_key_up *t = v->data;
eina_stringshare_del(t->keyname);
eina_stringshare_del(t->key);
eina_stringshare_del(t->string);
eina_stringshare_del(t->compose);
}
}
free(v->data);
free(v);
}
free(st); /* Allocated when reading data from EET file */
return NULL;
}
#endif
void
do_test(char *rec_dir, void (* func) (void))
{
char buf[1024];
char appname[1024];
// vr_list = calloc(1, sizeof(*vr_list));
/* if (recording) done now in ecore_init() hook
_tsuite_evas_hook_init(vr_list); */
if (func)
{ /* Regular test with access func */
func();
sprintf(buf, "%s/%s.rec", rec_dir, "ts.name");
}
else
{ /* Application, compose rec-file path and fulll appname */
sprintf(buf, "%s/%s.rec", rec_dir, "basename(ts.name)");
#if 0
if (basename(ts.name) == ts.name)
{ /* No PATH given, use cwd */
getcwd(appname, 1024);
strcat(appname, "/");
strcat(appname, ts.name);
}
else
#endif
strcpy(appname, "ts.name"); /* PATH incuded in ts.name */
}
if (recording)
{
if (func)
elm_run(); /* and run the program now and handle all events etc. */
else
{
#ifdef DEBUG_TSUITE
printf("%s calling <%s>\n", __func__, appname);
#endif
system(appname);
}
/* if (vr_list)
write_events(buf, vr_list); */
}
else
{
Timer_Data *td = NULL;
if (func)
elm_run(); /* run the program now and handle all events etc */
#if 0
td = calloc(1, sizeof(Timer_Data));
#ifdef DEBUG_TSUITE
printf("rec file is <%s>\n", buf);
#endif
vr_list = read_events(buf, ts.e, td);
if (td->current_event)
{ /* Got first event in list, run test */
tsuite_feed_event(td);
if (func)
elm_run(); /* run the program now and handle all events etc */
else
{
#ifdef DEBUG_TSUITE
printf("%s calling <%s>\n", __func__, appname);
#endif
system(appname);
}
}
#endif
if (td)
free(td);
}
/* if (recording) done in ecore_shutdown() hook now
_tsuite_evas_hook_reset(); */
/* if (vr_list) will be done in tsuite_evas_hook_reset()
vr_list = free_events(vr_list); */
}
EAPI int
elm_main(int argc, char **argv)
{
Eina_List *tests = NULL;
Eina_Bool test_all;
char *rec_dir = NULL;
int i, first_arg;
int opt_tests = 0;
Eina_List *opt_destdir = NULL;
Eina_List *opt_basedir = NULL;
static const Ecore_Getopt optdesc = {
"Test_suite",
NULL,
"0.0",
"(C) 2011 Enlightenment",
"Enlightenment",
"The Elementary auto test suite",
0,
{
ECORE_GETOPT_COUNT('r', "record", "Recording mode"),
ECORE_GETOPT_APPEND_METAVAR('d',"destdir","Destir for PNG files",
"STRING", ECORE_GETOPT_TYPE_STR),
ECORE_GETOPT_APPEND_METAVAR('b',"basedir","Directory of rec files",
"STRING", ECORE_GETOPT_TYPE_STR),
ECORE_GETOPT_COUNT('t', "tests", "Tests names marker"),
ECORE_GETOPT_SENTINEL
}
};
Ecore_Getopt_Value values[] = {
ECORE_GETOPT_VALUE_INT(recording),
ECORE_GETOPT_VALUE_LIST(opt_destdir),
ECORE_GETOPT_VALUE_LIST(opt_basedir),
ECORE_GETOPT_VALUE_INT(opt_tests),
ECORE_GETOPT_VALUE_NONE
};
#ifdef DEBUG_TSUITE
printf("Got args:\n");
for(i = 0; i < argc; i++)
printf("%d=<%s>\n", i, (char *) argv[i]);
#endif
ecore_init();
if (ecore_getopt_parse(&optdesc, values, argc, argv) < 0)
{
printf("Argument parsing failed\n");
exit(1);
}
#ifdef DEBUG_TSUITE
printf("Values from command line:\n");
printf("recording=<%d>\nopt_tests=<%d>\n", recording, opt_tests);
if (opt_destdir)
printf("opt_destdir=<%s>\n", opt_destdir->data);
if (opt_basedir)
printf("opt_basedir=<%s>\n", opt_basedir->data);
#endif
if (!opt_tests)
{ /* This in case user runs mannualy and mistakes */
printf ("Tests Marker (arg) missing.\n");
exit(1);
}
/* Find index of first-test name, for ALL first_arg = (argc-1) */
for(first_arg = 1; first_arg < argc; first_arg++)
if (!strcmp(argv[first_arg], "--tests"))
break;
first_arg++; /* First arg now is index of first test or == argc */
#ifdef DEBUG_TSUITE
if (first_arg == argc)
printf("TEST ALL: first_arg=<%d>\n", first_arg);
else
printf("test=<%s> first_arg=<%d>\n", argv[first_arg], first_arg);
#endif
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
/* tell elm about our app so it can figure out where to get files */
elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);
elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
elm_app_info_set(elm_main, "elementary", "images/logo.png");
/* if (opt_destdir)
dest_dir = opt_destdir->data;
*/
if (opt_basedir)
rec_dir = opt_basedir->data;
/* if we got here, found test_arg, now find it's index */
if (recording)
{
_init_recording_funcs();
}
#ifdef DEBUG_TSUITE
printf("argc=<%d> first_arg=<%d>\n", argc, first_arg);
#endif
/* If no test specified in command line, set all */
test_all = (argc - first_arg) == 0;
tests = _add_test(tests, "test_3d", test_3d, test_all);
tests = _add_test(tests, "test_actionslider", test_actionslider, test_all);
tests = _add_test(tests, "test_anchorblock", test_anchorblock, test_all);
tests = _add_test(tests, "test_anchorview", test_anchorview, test_all);
tests = _add_test(tests, "test_bg_plain", test_bg_plain, test_all);
tests = _add_test(tests, "test_bg_image", test_bg_image, test_all);
tests = _add_test(tests, "test_bg_options", test_bg_options, test_all);
tests = _add_test(tests, "test_box_vert", test_box_vert, test_all);
tests = _add_test(tests, "test_box_vert2", test_box_vert2, test_all);
tests = _add_test(tests, "test_box_horiz", test_box_horiz, test_all);
tests = _add_test(tests, "test_button", test_button, test_all);
tests = _add_test(tests, "test_bubble", test_bubble, test_all);
tests = _add_test(tests, "test_calendar", test_calendar, test_all);
tests = _add_test(tests, "test_check", test_check, test_all);
tests = _add_test(tests, "test_colorselector", test_colorselector, test_all);
tests = _add_test(tests, "test_conformant", test_conformant, test_all);
tests = _add_test(tests, "test_conformant2", test_conformant2, test_all);
tests = _add_test(tests, "test_ctxpopup", test_ctxpopup, test_all);
tests = _add_test(tests, "test_diskselector", test_diskselector, test_all);
tests = _add_test(tests, "test_entry", test_entry, test_all);
tests = _add_test(tests, "test_entry_scrolled", test_entry_scrolled,
test_all);
tests = _add_test(tests, "test_entry3", test_entry3, test_all);
tests = _add_test(tests, "test_entry4", test_entry4, test_all);
tests = _add_test(tests, "test_entry5", test_entry5, test_all);
tests = _add_test(tests, "test_entry_notepad", test_entry_notepad, test_all);
tests = _add_test(tests, "test_fileselector", test_fileselector, test_all);
tests = _add_test(tests, "test_fileselector_button",
test_fileselector_button, test_all);
tests = _add_test(tests, "test_fileselector_entry",
test_fileselector_entry, test_all);
tests = _add_test(tests, "test_focus", test_focus, test_all);
tests = _add_test(tests, "test_gengrid", test_gengrid, test_all);
tests = _add_test(tests, "test_gengrid2", test_gengrid2, test_all);
tests = _add_test(tests, "test_genlist", test_genlist, test_all);
tests = _add_test(tests, "test_genlist2", test_genlist2, test_all);
tests = _add_test(tests, "test_genlist3", test_genlist3, test_all);
tests = _add_test(tests, "test_genlist4", test_genlist4, test_all);
tests = _add_test(tests, "test_genlist5", test_genlist5, test_all);
tests = _add_test(tests, "test_genlist6", test_genlist6, test_all);
tests = _add_test(tests, "test_genlist7", test_genlist7, test_all);
tests = _add_test(tests, "test_genlist8", test_genlist8, test_all);
tests = _add_test(tests, "test_genlist9", test_genlist9, test_all);
tests = _add_test(tests, "test_genlist10", test_genlist10, test_all);
tests = _add_test(tests, "test_genlist11", test_genlist11, test_all);
tests = _add_test(tests, "test_grid", test_grid, test_all);
tests = _add_test(tests, "test_hover", test_hover, test_all);
tests = _add_test(tests, "test_hover2", test_hover2, test_all);
tests = _add_test(tests, "test_hoversel", test_hoversel, test_all);
tests = _add_test(tests, "test_index", test_index, test_all);
tests = _add_test(tests, "test_index2", test_index2, test_all);
tests = _add_test(tests, "test_inwin", test_inwin, test_all);
tests = _add_test(tests, "test_inwin2", test_inwin2, test_all);
tests = _add_test(tests, "test_label", test_label, test_all);
tests = _add_test(tests, "test_list", test_list, test_all);
tests = _add_test(tests, "test_list_horizontal", test_list_horizontal,
test_all);
tests = _add_test(tests, "test_list2", test_list2, test_all);
tests = _add_test(tests, "test_list3", test_list3, test_all);
tests = _add_test(tests, "test_list4", test_list4, test_all);
tests = _add_test(tests, "test_list5", test_list5, test_all);
tests = _add_test(tests, "test_menu", test_menu, test_all);
tests = _add_test(tests, "test_naviframe", test_naviframe, test_all);
tests = _add_test(tests, "test_notify", test_notify, test_all);
tests = _add_test(tests, "test_pager", test_pager, test_all);
tests = _add_test(tests, "test_pager_slide", test_pager_slide, test_all);
tests = _add_test(tests, "test_panel", test_panel, test_all);
tests = _add_test(tests, "test_panes", test_panes, test_all);
tests = _add_test(tests, "test_progressbar", test_progressbar, test_all);
tests = _add_test(tests, "test_radio", test_radio, test_all);
tests = _add_test(tests, "test_scaling", test_scaling, test_all);
tests = _add_test(tests, "test_scaling2", test_scaling2, test_all);
tests = _add_test(tests, "test_scroller", test_scroller, test_all);
tests = _add_test(tests, "test_scroller2", test_scroller2, test_all);
tests = _add_test(tests, "test_segment_control", test_segment_control,
test_all);
tests = _add_test(tests, "test_separator", test_separator, test_all);
tests = _add_test(tests, "test_slider", test_slider, test_all);
tests = _add_test(tests, "test_spinner", test_spinner, test_all);
tests = _add_test(tests, "test_table", test_table, test_all);
tests = _add_test(tests, "test_table2", test_table2, test_all);
tests = _add_test(tests, "test_table3", test_table3, test_all);
tests = _add_test(tests, "test_table4", test_table4, test_all);
tests = _add_test(tests, "test_table5", test_table5, test_all);
tests = _add_test(tests, "test_table6", test_table6, test_all);
tests = _add_test(tests, "test_toggle", test_toggle, test_all);
tests = _add_test(tests, "test_toolbar", test_toolbar, test_all);
tests = _add_test(tests, "test_toolbar2", test_toolbar2, test_all);
tests = _add_test(tests, "test_toolbar3", test_toolbar3, test_all);
tests = _add_test(tests, "test_toolbar4", test_toolbar4, test_all);
tests = _add_test(tests, "test_toolbar5", test_toolbar5, test_all);
tests = _add_test(tests, "test_tooltip", test_tooltip, test_all);
tests = _add_test(tests, "test_tooltip2", test_tooltip2, test_all);
Eina_List *l;
Test_Item *item;
int n_tests = 0;
int n_total = 0;
int n_no_rec_file = 0;
/* Set tests from command line */
for(i = first_arg; i < argc ; i++)
{
if (_set_test(tests, argv[i], EINA_TRUE) == NULL)
{ /* Failed to add test, trying to add application */
if (access(argv[i], X_OK) == 0)
{
tests = _add_test(tests, argv[i], NULL, EINA_TRUE);
}
else
printf("Unknown application: %s\n", argv[i]);
}
n_total++; /* Count argument */
}
EINA_LIST_FOREACH(tests, l, item)
if (item->test)
{ /* Run test and count tests committed */
char buf[1024];
if (item->func) /* Regular test with access func */
sprintf(buf, "%s/%s.rec", rec_dir, item->name);
else
{ /* Application, set ts and compose rec-file path */
tsuite_init(NULL /* win */, item->name, NULL);
sprintf(buf, "%s/%s.rec", rec_dir, basename(item->name));
}
if (!recording)
{ /* Avoid trying to commit tests with no ".rec" file */
if (access(buf, R_OK))
{
printf("Skipped test, missing <%s> file.\n", buf);
n_no_rec_file++;
continue; /* Skip this, no access to ".rec" file */
}
}
do_test(rec_dir, item->func);
n_tests++;
}
if (n_no_rec_file)
printf("\n\nFailed to access %d record files.\n", n_no_rec_file);
if (n_tests)
{ /* Print completed message */
printf("\n\n%d tests completed out of %d tests\n",
n_tests, n_total);
}
else
{ /* No tests committed, let user know test-name is wrong */
printf ("\n\nNo test matching:\n");
for(i = first_arg; i < argc; i++)
printf("%s\n", argv[i]);
printf ("\nPlease review test name; check record file.\n");
}
/* Free all tests in list */
Test_Item *data = NULL;
EINA_LIST_FREE(tests, data)
free(data);
// tsuite_cleanup();
/* if the mainloop that elm_run() runs exist - we exit the app */
elm_shutdown(); /* clean up and shut down */
/* exit code, ZERO if all completed successfuly */
if (test_all)
return 0;
else
return ((argc - first_arg) - n_tests);
}
ELM_MAIN()

View File

@ -1,61 +0,0 @@
#ifndef _TSUITE_H
#define _TSUITE_H
#include <Eina.h>
#include <Eet.h>
#include <tsuite_file_data.h>
#define fail_if(expr) \
do { \
if ( expr ) \
{ \
FILE *fp; \
char buf[1024]; \
sprintf(buf, "fail_%s.txt", tsuite_test_name_get()); \
if ((fp = fopen(buf, "a")) != NULL) \
{ \
fprintf(fp, "Failed at %s:%d on <%s>\n", __FILE__, __LINE__, #expr); \
fclose(fp); \
} \
} \
} while(0)
/* #define DEBUG_TSUITE 1 */
struct _api_data
{
unsigned int state; /* What state we are testing */
Evas_Object *win; /* Parent Window of widgets */
Evas_Object *bt; /* Button to progress in states */
void *data; /* Additional data defined by test */
Eina_Bool free_data; /* free data on close */
};
typedef struct _api_data api_data;
void
_test_close_win(void *data, Evas_Object *obj, void *event_info);
#define TEST_START(x) \
void x(void) \
{ \
Evas_Object *win = elm_win_add(NULL, #x, ELM_WIN_BASIC); \
api_data *api = calloc(1, sizeof(api_data)); \
tsuite_init(win, #x, api); \
elm_win_title_set(win, #x); \
elm_win_autodel_set(win, 1); \
evas_object_smart_callback_add(win, "delete,request", _test_close_win, NULL); \
evas_object_show(win);
#define TEST_END \
}
#define TEST_SHOT(x) \
tsuite_shot_do(x)
void tsuite_init(Evas_Object *win, char *name, api_data *d);
void tsuite_cleanup(void);
void tsuite_shot_do(char *name);
char *tsuite_test_name_get();
Eina_Bool write_events_get(void);
void write_events_set(Eina_Bool val);
void variant_list_append(Variant_st *v);
#endif