2013-09-05 07:44:21 -07:00
|
|
|
#define EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT 1
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
#include <Elementary.h>
|
2013-09-05 07:44:21 -07:00
|
|
|
#include <Edje_Edit.h>
|
2014-07-12 00:01:50 -07:00
|
|
|
#include <Eio.h>
|
2013-07-20 01:51:56 -07:00
|
|
|
#include "common.h"
|
|
|
|
|
|
|
|
struct viewer_s
|
|
|
|
{
|
|
|
|
Evas_Object *parent;
|
|
|
|
Evas_Object *layout;
|
|
|
|
Evas_Object *scroller;
|
2014-08-11 00:32:35 -07:00
|
|
|
Evas_Object *event_rect;
|
2013-07-20 01:51:56 -07:00
|
|
|
|
|
|
|
Evas_Object *part_obj;
|
|
|
|
Evas_Object *part_highlight;
|
|
|
|
|
|
|
|
Eina_Stringshare *group_name;
|
|
|
|
Eina_Stringshare *part_name;
|
|
|
|
|
2013-09-19 06:15:15 -07:00
|
|
|
Ecore_Idler *idler;
|
2013-09-19 07:12:37 -07:00
|
|
|
Ecore_Timer *timer;
|
2014-07-12 00:01:50 -07:00
|
|
|
Eio_Monitor *edj_monitor;
|
|
|
|
Ecore_Event_Handler *monitor_event;
|
2013-09-19 06:15:15 -07:00
|
|
|
|
2013-09-19 07:39:40 -07:00
|
|
|
void (*del_cb)(void *data);
|
2013-09-19 02:52:30 -07:00
|
|
|
void *data;
|
|
|
|
|
2013-09-12 06:14:16 -07:00
|
|
|
Eina_Bool dummy_on;
|
2013-07-20 01:51:56 -07:00
|
|
|
};
|
|
|
|
|
2014-02-05 08:07:10 -08:00
|
|
|
static void
|
|
|
|
view_obj_min_update(Evas_Object *obj)
|
|
|
|
{
|
|
|
|
Evas_Coord w, h;
|
|
|
|
edje_object_size_min_calc(obj, &w, &h);
|
2014-02-06 02:43:56 -08:00
|
|
|
double scale = edje_object_scale_get(obj);
|
|
|
|
evas_object_size_hint_min_set(obj, ((double)w * scale), ((double)h * scale));
|
2014-02-05 08:07:10 -08:00
|
|
|
}
|
|
|
|
|
2013-09-19 07:39:40 -07:00
|
|
|
static Eina_Bool
|
|
|
|
file_set_timer_cb(void *data)
|
|
|
|
{
|
|
|
|
view_data *vd = data;
|
|
|
|
if (!vd->layout)
|
|
|
|
{
|
|
|
|
vd->timer = NULL;
|
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
2014-01-29 09:45:10 -08:00
|
|
|
if (edje_object_file_set(vd->layout, config_edj_path_get(),
|
2013-09-19 07:39:40 -07:00
|
|
|
vd->group_name))
|
|
|
|
{
|
2014-07-12 00:01:50 -07:00
|
|
|
eio_monitor_del(vd->edj_monitor);
|
|
|
|
vd->edj_monitor = eio_monitor_add(config_edj_path_get());
|
|
|
|
if (!vd->edj_monitor) EINA_LOG_ERR("Failed to add Eio_Monitor");
|
2013-09-19 07:39:40 -07:00
|
|
|
vd->timer = NULL;
|
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
2014-02-05 08:07:10 -08:00
|
|
|
view_obj_min_update(vd->layout);
|
2014-02-04 05:20:40 -08:00
|
|
|
edj_mgr_reload_need_set(EINA_TRUE);
|
2013-10-03 05:38:51 -07:00
|
|
|
|
2013-09-19 07:39:40 -07:00
|
|
|
return ECORE_CALLBACK_RENEW;
|
|
|
|
}
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
static void
|
|
|
|
part_obj_geom_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
view_data *vd = data;
|
|
|
|
Evas_Object *part_highlight = vd->part_highlight;
|
|
|
|
|
|
|
|
//Create Part Highlight Object
|
|
|
|
if (!part_highlight && vd->part_name)
|
|
|
|
{
|
|
|
|
part_highlight = elm_layout_add(vd->scroller);
|
|
|
|
evas_object_smart_member_add(part_highlight, vd->scroller);
|
|
|
|
elm_layout_file_set(part_highlight, EDJE_PATH, "part_highlight");
|
|
|
|
evas_object_pass_events_set(part_highlight, EINA_TRUE);
|
|
|
|
evas_object_show(part_highlight);
|
|
|
|
}
|
|
|
|
|
|
|
|
Evas_Coord x, y, w , h;
|
|
|
|
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
|
|
|
evas_object_move(part_highlight, x, y);
|
|
|
|
evas_object_resize(part_highlight, w, h);
|
|
|
|
|
|
|
|
vd->part_highlight = part_highlight;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
part_obj_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
view_data *vd = data;
|
|
|
|
vd->part_obj = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2014-02-04 16:55:35 -08:00
|
|
|
layout_resize_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
|
2013-07-20 01:51:56 -07:00
|
|
|
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
|
|
{
|
2014-01-29 09:45:10 -08:00
|
|
|
if (!config_stats_bar_get()) return;
|
2013-07-20 01:51:56 -07:00
|
|
|
|
|
|
|
Evas_Coord w, h;
|
|
|
|
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
|
2014-01-29 09:45:10 -08:00
|
|
|
config_view_size_set(w, h);
|
2014-02-04 05:45:41 -08:00
|
|
|
stats_view_size_update();
|
2013-07-20 01:51:56 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2014-02-04 16:55:35 -08:00
|
|
|
rect_mouse_move_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
|
2013-08-31 21:38:51 -07:00
|
|
|
Evas_Object *obj EINA_UNUSED, void *event_info)
|
2013-07-20 01:51:56 -07:00
|
|
|
{
|
2014-01-29 09:45:10 -08:00
|
|
|
if (!config_stats_bar_get()) return;
|
2013-07-20 01:51:56 -07:00
|
|
|
|
|
|
|
Evas_Event_Mouse_Move *ev = event_info;
|
|
|
|
|
|
|
|
Evas_Coord x, y, w, h;
|
|
|
|
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
2014-02-04 05:45:41 -08:00
|
|
|
stats_cursor_pos_update(ev->cur.canvas.x - x, ev->cur.canvas.y - y,
|
2013-07-20 01:51:56 -07:00
|
|
|
(float) (ev->cur.canvas.x - x) / (float) w,
|
|
|
|
(float) (ev->cur.canvas.y - y) / (float) h);
|
|
|
|
}
|
|
|
|
|
|
|
|
static Evas_Object *
|
|
|
|
view_scroller_create(Evas_Object *parent)
|
|
|
|
{
|
|
|
|
Evas_Object *scroller = elm_scroller_add(parent);
|
|
|
|
elm_object_focus_allow_set(scroller, EINA_FALSE);
|
|
|
|
evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND,
|
|
|
|
EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
|
|
|
|
return scroller;
|
|
|
|
}
|
|
|
|
|
2014-07-12 00:01:50 -07:00
|
|
|
static Eina_Bool
|
|
|
|
edj_changed_cb(void *data, int type EINA_UNUSED, void *event)
|
2013-07-25 09:16:22 -07:00
|
|
|
{
|
|
|
|
view_data *vd = data;
|
2014-07-12 00:01:50 -07:00
|
|
|
Eio_Monitor_Event *ev = event;
|
|
|
|
|
|
|
|
if (vd->edj_monitor != ev->monitor) return ECORE_CALLBACK_PASS_ON;
|
|
|
|
|
|
|
|
eio_monitor_del(vd->edj_monitor);
|
|
|
|
|
2014-01-29 09:45:10 -08:00
|
|
|
if (!edje_object_file_set(vd->layout, config_edj_path_get(),
|
2013-09-19 07:39:40 -07:00
|
|
|
vd->group_name))
|
|
|
|
{
|
|
|
|
vd->del_cb(vd->data);
|
|
|
|
view_term(vd);
|
2014-07-12 00:01:50 -07:00
|
|
|
EINA_LOG_ERR("Failed to load edj file \"%s\"", config_edj_path_get());
|
|
|
|
return ECORE_CALLBACK_DONE;
|
2013-09-19 07:39:40 -07:00
|
|
|
}
|
2014-07-12 00:01:50 -07:00
|
|
|
|
|
|
|
vd->edj_monitor = eio_monitor_add(config_edj_path_get());
|
|
|
|
if (!vd->edj_monitor) EINA_LOG_ERR("Failed to add Eio_Monitor");
|
|
|
|
|
|
|
|
view_obj_min_update(vd->layout);
|
2013-07-25 09:16:22 -07:00
|
|
|
view_part_highlight_set(vd, vd->part_name);
|
2014-07-19 00:03:46 -07:00
|
|
|
dummy_obj_update(vd->layout);
|
2014-07-12 00:01:50 -07:00
|
|
|
|
|
|
|
return ECORE_CALLBACK_DONE;
|
2013-07-25 09:16:22 -07:00
|
|
|
}
|
2013-07-20 01:51:56 -07:00
|
|
|
|
2013-08-31 21:38:51 -07:00
|
|
|
static void
|
|
|
|
layout_geom_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Evas_Coord x, y, w, h;
|
|
|
|
Evas_Object *rect = data;
|
|
|
|
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
|
|
|
evas_object_move(rect, x, y);
|
|
|
|
evas_object_resize(rect, w, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
layout_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Evas_Object *rect = data;
|
|
|
|
evas_object_del(rect);
|
|
|
|
}
|
2013-09-06 03:11:39 -07:00
|
|
|
static void
|
2013-08-31 21:38:51 -07:00
|
|
|
event_layer_set(view_data *vd)
|
|
|
|
{
|
|
|
|
Evas *e = evas_object_evas_get(vd->layout);
|
|
|
|
Evas_Object *rect = evas_object_rectangle_add(e);
|
|
|
|
evas_object_repeat_events_set(rect, EINA_TRUE);
|
|
|
|
evas_object_color_set(rect, 0, 0, 0, 0);
|
|
|
|
evas_object_show(rect);
|
|
|
|
|
|
|
|
evas_object_event_callback_add(vd->layout, EVAS_CALLBACK_RESIZE,
|
|
|
|
layout_geom_cb, rect);
|
|
|
|
evas_object_event_callback_add(vd->layout, EVAS_CALLBACK_MOVE,
|
|
|
|
layout_geom_cb, rect);
|
|
|
|
evas_object_event_callback_add(vd->layout, EVAS_CALLBACK_DEL,
|
|
|
|
layout_del_cb, rect);
|
|
|
|
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_MOVE,
|
|
|
|
rect_mouse_move_cb, vd);
|
2014-08-11 00:32:35 -07:00
|
|
|
|
|
|
|
vd->event_rect = rect;
|
2013-08-31 21:38:51 -07:00
|
|
|
}
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
static Evas_Object *
|
|
|
|
view_obj_create(view_data *vd, const char *file_path, const char *group)
|
|
|
|
{
|
2013-09-07 02:49:36 -07:00
|
|
|
Evas *e = evas_object_evas_get(vd->scroller);
|
|
|
|
Evas_Object *layout = edje_edit_object_add(e);
|
2013-09-19 05:42:42 -07:00
|
|
|
if (!edje_object_file_set(layout, file_path, group))
|
2013-09-19 07:12:37 -07:00
|
|
|
{
|
|
|
|
//FIXME: more optimized way?
|
|
|
|
vd->timer = ecore_timer_add(1, file_set_timer_cb, vd);
|
|
|
|
}
|
2014-07-12 00:01:50 -07:00
|
|
|
else
|
|
|
|
{
|
|
|
|
eio_monitor_del(vd->edj_monitor);
|
|
|
|
vd->edj_monitor = eio_monitor_add(file_path);
|
|
|
|
if (!vd->edj_monitor) EINA_LOG_ERR("Failed to add Eio_Monitor");
|
|
|
|
}
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
|
|
|
|
EVAS_HINT_EXPAND);
|
|
|
|
evas_object_event_callback_add(layout, EVAS_CALLBACK_RESIZE,
|
|
|
|
layout_resize_cb, vd);
|
2014-02-05 08:07:10 -08:00
|
|
|
view_obj_min_update(layout);
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
return layout;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Bool
|
|
|
|
view_obj_idler_cb(void *data)
|
|
|
|
{
|
|
|
|
view_data *vd = data;
|
2013-09-19 05:05:22 -07:00
|
|
|
|
2014-01-29 09:45:10 -08:00
|
|
|
vd->layout = view_obj_create(vd, config_edj_path_get(), vd->group_name);
|
|
|
|
view_scale_set(vd, config_view_scale_get());
|
2014-01-28 22:42:30 -08:00
|
|
|
|
2013-08-31 21:38:51 -07:00
|
|
|
event_layer_set(vd);
|
2013-07-20 01:51:56 -07:00
|
|
|
elm_object_content_set(vd->scroller, vd->layout);
|
|
|
|
|
2013-09-12 06:14:16 -07:00
|
|
|
if (vd->dummy_on)
|
2013-07-20 13:12:33 -07:00
|
|
|
dummy_obj_new(vd->layout);
|
2013-07-20 01:51:56 -07:00
|
|
|
|
2013-09-19 06:15:15 -07:00
|
|
|
vd->idler = NULL;
|
|
|
|
if (vd->part_name) view_part_highlight_set(vd, vd->part_name);
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
2013-07-20 13:12:33 -07:00
|
|
|
void
|
2013-08-24 11:39:39 -07:00
|
|
|
view_dummy_toggle(view_data *vd, Eina_Bool msg)
|
2013-07-20 13:12:33 -07:00
|
|
|
{
|
2014-01-29 09:45:10 -08:00
|
|
|
Eina_Bool dummy_on = config_dummy_swallow_get();
|
2013-09-12 06:14:16 -07:00
|
|
|
if (dummy_on == vd->dummy_on) return;
|
|
|
|
if (dummy_on)
|
2013-07-20 13:30:49 -07:00
|
|
|
{
|
2014-02-04 05:45:41 -08:00
|
|
|
if (msg) stats_info_msg_update("Dummy Swallow Enabled.");
|
2013-07-20 13:30:49 -07:00
|
|
|
dummy_obj_new(vd->layout);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-02-04 05:45:41 -08:00
|
|
|
if (msg) stats_info_msg_update("Dummy Swallow Disabled.");
|
2013-07-20 13:30:49 -07:00
|
|
|
dummy_obj_del(vd->layout);
|
|
|
|
}
|
|
|
|
|
2013-09-12 06:14:16 -07:00
|
|
|
vd->dummy_on = dummy_on;
|
2013-07-20 13:12:33 -07:00
|
|
|
}
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
view_data *
|
2014-02-04 05:45:41 -08:00
|
|
|
view_init(Evas_Object *parent, const char *group,
|
2014-01-29 09:45:10 -08:00
|
|
|
void (*del_cb)(void *data), void *data)
|
2013-07-20 01:51:56 -07:00
|
|
|
{
|
|
|
|
view_data *vd = calloc(1, sizeof(view_data));
|
2014-07-27 21:40:58 -07:00
|
|
|
if (!vd)
|
|
|
|
{
|
|
|
|
EINA_LOG_ERR("Failed to allocate Memory!");
|
|
|
|
return NULL;
|
|
|
|
}
|
2013-07-20 01:51:56 -07:00
|
|
|
vd->parent = parent;
|
|
|
|
vd->scroller = view_scroller_create(parent);
|
2014-01-29 09:45:10 -08:00
|
|
|
vd->dummy_on = config_dummy_swallow_get();
|
2013-07-20 01:51:56 -07:00
|
|
|
|
2013-09-19 07:12:37 -07:00
|
|
|
vd->group_name = eina_stringshare_add(group);
|
2013-09-19 06:15:15 -07:00
|
|
|
vd->idler = ecore_idler_add(view_obj_idler_cb, vd);
|
2013-09-19 07:39:40 -07:00
|
|
|
vd->del_cb = del_cb;
|
|
|
|
vd->data = data;
|
2013-09-19 05:42:42 -07:00
|
|
|
view_part_highlight_set(vd, NULL);
|
2014-07-12 00:01:50 -07:00
|
|
|
|
|
|
|
vd->monitor_event =
|
|
|
|
ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, edj_changed_cb, vd);
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
return vd;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
view_term(view_data *vd)
|
|
|
|
{
|
2013-07-25 09:31:49 -07:00
|
|
|
if (!vd) return;
|
|
|
|
|
2014-07-18 23:50:40 -07:00
|
|
|
eina_stringshare_del(vd->group_name);
|
|
|
|
eina_stringshare_del(vd->part_name);
|
2013-07-20 01:51:56 -07:00
|
|
|
|
|
|
|
if (vd->part_obj)
|
|
|
|
evas_object_event_callback_del(vd->part_obj, EVAS_CALLBACK_DEL,
|
|
|
|
part_obj_del_cb);
|
2013-09-19 05:42:42 -07:00
|
|
|
evas_object_del(vd->scroller);
|
2014-03-15 19:58:17 -07:00
|
|
|
ecore_idler_del(vd->idler);
|
|
|
|
ecore_timer_del(vd->timer);
|
2014-07-12 00:01:50 -07:00
|
|
|
eio_monitor_del(vd->edj_monitor);
|
|
|
|
ecore_event_handler_del(vd->monitor_event);
|
2013-09-19 06:15:15 -07:00
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
free(vd);
|
|
|
|
}
|
|
|
|
|
|
|
|
Evas_Object *
|
|
|
|
view_obj_get(view_data *vd)
|
|
|
|
{
|
|
|
|
return vd->scroller;
|
|
|
|
}
|
|
|
|
|
2013-09-05 07:44:21 -07:00
|
|
|
void
|
2013-09-07 23:27:23 -07:00
|
|
|
view_program_run(view_data *vd, const char *program)
|
2013-09-05 07:44:21 -07:00
|
|
|
{
|
2013-09-18 21:42:34 -07:00
|
|
|
if (!vd) return;
|
2013-09-05 07:44:21 -07:00
|
|
|
if (!program || !vd->layout) return;
|
2013-09-07 02:49:36 -07:00
|
|
|
edje_edit_program_run(vd->layout, program);
|
2013-09-08 01:41:40 -07:00
|
|
|
char buf[256];
|
|
|
|
snprintf(buf, sizeof(buf), "Program Run: \"%s\"", program);
|
2014-02-04 05:45:41 -08:00
|
|
|
stats_info_msg_update(buf);
|
2013-09-05 07:44:21 -07:00
|
|
|
}
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
void
|
|
|
|
view_part_highlight_set(view_data *vd, const char *part_name)
|
|
|
|
{
|
2013-10-03 08:44:21 -07:00
|
|
|
if (!vd) return;
|
|
|
|
|
2013-09-19 06:15:15 -07:00
|
|
|
if (!vd->layout)
|
|
|
|
{
|
|
|
|
if (vd->idler) vd->part_name = eina_stringshare_add(part_name);
|
|
|
|
return;
|
|
|
|
}
|
2013-07-20 01:51:56 -07:00
|
|
|
|
|
|
|
if (!part_name)
|
|
|
|
{
|
|
|
|
if (vd->part_highlight)
|
|
|
|
{
|
|
|
|
evas_object_del(vd->part_highlight);
|
|
|
|
vd->part_highlight = NULL;
|
|
|
|
}
|
|
|
|
if (vd->part_name)
|
|
|
|
{
|
|
|
|
eina_stringshare_del(vd->part_name);
|
|
|
|
vd->part_name = NULL;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (vd->part_obj && (vd->part_name == part_name)) return;
|
|
|
|
|
2013-10-18 07:50:46 -07:00
|
|
|
Evas_Object *part_obj =
|
|
|
|
(Evas_Object *) edje_object_part_object_get(vd->layout, part_name);
|
|
|
|
if (!part_obj) return;
|
|
|
|
|
2013-07-20 01:51:56 -07:00
|
|
|
//Delete the previous part callbacks
|
|
|
|
if (vd->part_obj)
|
|
|
|
{
|
|
|
|
evas_object_event_callback_del(vd->part_obj, EVAS_CALLBACK_RESIZE,
|
|
|
|
part_obj_geom_cb);
|
|
|
|
evas_object_event_callback_del(vd->part_obj, EVAS_CALLBACK_MOVE,
|
|
|
|
part_obj_geom_cb);
|
|
|
|
evas_object_event_callback_del(vd->part_obj, EVAS_CALLBACK_DEL,
|
|
|
|
part_obj_del_cb);
|
|
|
|
}
|
|
|
|
evas_object_event_callback_add(part_obj, EVAS_CALLBACK_RESIZE,
|
|
|
|
part_obj_geom_cb, vd);
|
|
|
|
evas_object_event_callback_add(part_obj, EVAS_CALLBACK_MOVE,
|
|
|
|
part_obj_geom_cb, vd);
|
|
|
|
evas_object_event_callback_add(part_obj, EVAS_CALLBACK_DEL, part_obj_del_cb,
|
|
|
|
vd);
|
|
|
|
|
|
|
|
vd->part_obj = part_obj;
|
|
|
|
eina_stringshare_replace(&vd->part_name, part_name);
|
2013-09-07 02:49:36 -07:00
|
|
|
part_obj_geom_cb(vd, evas_object_evas_get(vd->layout), part_obj, NULL);
|
2013-07-20 01:51:56 -07:00
|
|
|
}
|
2013-09-18 00:48:05 -07:00
|
|
|
|
|
|
|
Eina_Stringshare *
|
|
|
|
view_group_name_get(view_data *vd)
|
|
|
|
{
|
|
|
|
return vd->group_name;
|
|
|
|
}
|
2013-09-19 02:52:30 -07:00
|
|
|
|
|
|
|
void *
|
|
|
|
view_data_get(view_data *vd)
|
|
|
|
{
|
|
|
|
return vd->data;
|
|
|
|
}
|
2014-01-26 08:21:02 -08:00
|
|
|
|
|
|
|
void
|
|
|
|
view_scale_set(view_data *vd, double scale)
|
|
|
|
{
|
|
|
|
if (!vd->layout) return;
|
2014-01-28 22:08:27 -08:00
|
|
|
if (scale == edje_object_scale_get(vd->layout)) return;
|
|
|
|
|
2014-02-08 19:20:51 -08:00
|
|
|
int pminw, pminh;
|
|
|
|
evas_object_size_hint_min_get(vd->layout, &pminw, &pminh);
|
|
|
|
Evas_Coord sx, sy, sw, sh;
|
|
|
|
elm_scroller_region_get(vd->scroller, &sx, &sy, &sw, &sh);
|
|
|
|
|
2014-01-26 08:21:02 -08:00
|
|
|
edje_object_scale_set(vd->layout, scale);
|
2014-02-06 02:43:56 -08:00
|
|
|
view_obj_min_update(vd->layout);
|
2014-02-05 07:49:18 -08:00
|
|
|
|
2014-02-08 19:20:51 -08:00
|
|
|
//adjust scroller position according to the scale change.
|
|
|
|
int minw, minh;
|
|
|
|
evas_object_size_hint_min_get(vd->layout, &minw, &minh);
|
|
|
|
|
|
|
|
//a. center position of the scroller
|
|
|
|
double cx = ((double)sx + ((double)sw * 0.5));
|
|
|
|
double cy = ((double)sy + ((double)sh * 0.5));
|
|
|
|
|
|
|
|
//b. multiply scale value
|
|
|
|
cx *= (1 + (((double)(minw - pminw))/pminw));
|
|
|
|
cy *= (1 + (((double)(minh - pminh))/pminh));
|
|
|
|
|
|
|
|
elm_scroller_region_show(vd->scroller, ((Evas_Coord) cx) - (sw / 2),
|
|
|
|
((Evas_Coord) cy) - (sh / 2), sw, sh);
|
2014-01-26 08:21:02 -08:00
|
|
|
}
|
2014-03-15 12:36:33 -07:00
|
|
|
|
|
|
|
Eina_List *
|
|
|
|
view_parts_list_get(view_data *vd)
|
|
|
|
{
|
|
|
|
return edje_edit_parts_list_get(vd->layout);
|
|
|
|
}
|
|
|
|
|
2014-03-16 01:55:34 -07:00
|
|
|
Eina_List *
|
|
|
|
view_images_list_get(view_data *vd)
|
2014-03-15 12:36:33 -07:00
|
|
|
{
|
2014-03-16 01:55:34 -07:00
|
|
|
return edje_edit_images_list_get(vd->layout);
|
2014-03-15 12:36:33 -07:00
|
|
|
}
|
2014-03-15 20:31:08 -07:00
|
|
|
|
|
|
|
Eina_List *
|
2014-03-16 01:55:34 -07:00
|
|
|
view_programs_list_get(view_data *vd)
|
2014-03-15 20:31:08 -07:00
|
|
|
{
|
2014-03-16 01:55:34 -07:00
|
|
|
return edje_edit_programs_list_get(vd->layout);
|
2014-03-15 20:31:08 -07:00
|
|
|
}
|
2014-03-15 20:43:25 -07:00
|
|
|
|
|
|
|
Eina_List *
|
2014-03-16 01:55:34 -07:00
|
|
|
view_part_states_list_get(view_data *vd, const char *part)
|
|
|
|
{
|
|
|
|
return edje_edit_part_states_list_get(vd->layout, part);
|
|
|
|
}
|
|
|
|
|
|
|
|
Eina_List *
|
|
|
|
view_program_targets_get(view_data *vd, const char *prog)
|
2014-03-15 20:43:25 -07:00
|
|
|
{
|
2014-03-16 01:55:34 -07:00
|
|
|
return edje_edit_program_targets_get(vd->layout, prog);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
view_string_list_free(Eina_List *list)
|
|
|
|
{
|
|
|
|
edje_edit_string_list_free(list);
|
2014-03-15 20:43:25 -07:00
|
|
|
}
|