forked from enlightenment/efl
111 lines
2.9 KiB
C
111 lines
2.9 KiB
C
/**
|
|
* Simple Elementary's <b>map widget</b> example, illustrating its
|
|
* creation.
|
|
*
|
|
* See stdout/stderr for output. Compile with:
|
|
*
|
|
* @verbatim
|
|
* gcc -g map_example_01.c -o map_example_01 `pkg-config --cflags --libs elementary`
|
|
* @endverbatim
|
|
*/
|
|
|
|
#include <Elementary.h>
|
|
|
|
static void
|
|
_bt_zoom_in(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED)
|
|
{
|
|
int zoom;
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
|
|
zoom = elm_map_zoom_get(data);
|
|
elm_map_zoom_set(data, zoom + 1);
|
|
}
|
|
|
|
static void
|
|
_bt_zoom_out(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED)
|
|
{
|
|
int zoom;
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
|
|
zoom = elm_map_zoom_get(data);
|
|
elm_map_zoom_set(data, zoom - 1);
|
|
}
|
|
|
|
static void
|
|
_bt_zoom_fit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
{
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
|
|
}
|
|
|
|
static void
|
|
_bt_zoom_fill(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
{
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
|
|
}
|
|
|
|
/* FIXME: it shouldn't be required. For unknown reason map won't call
|
|
* pan_calculate until shot delay time, but then it will take a screenshot
|
|
* when the map isn't loaded yet (actually it won't be downloaded, because
|
|
* after the SS it will kill the example). */
|
|
static Eina_Bool
|
|
_nasty_hack(void *data)
|
|
{
|
|
Evas_Object *o = data;
|
|
Evas *e = evas_object_evas_get(o);
|
|
evas_smart_objects_calculate(e);
|
|
return ECORE_CALLBACK_CANCEL;
|
|
}
|
|
|
|
EAPI_MAIN int
|
|
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
|
|
{
|
|
Evas_Object *win, *map, *box, *bt;
|
|
|
|
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
|
|
|
win = elm_win_util_standard_add("map", "Map Creation Example");
|
|
elm_win_autodel_set(win, EINA_TRUE);
|
|
|
|
map = elm_map_add(win);
|
|
evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
elm_win_resize_object_add(win, map);
|
|
evas_object_show(map);
|
|
|
|
box = elm_box_add(win);
|
|
evas_object_show(box);
|
|
|
|
bt = elm_button_add(win);
|
|
elm_object_text_set(bt, "+");
|
|
elm_box_pack_end(box, bt);
|
|
evas_object_show(bt);
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_in, map);
|
|
|
|
bt = elm_button_add(win);
|
|
elm_object_text_set(bt, "-");
|
|
elm_box_pack_end(box, bt);
|
|
evas_object_show(bt);
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_out, map);
|
|
|
|
bt = elm_button_add(win);
|
|
elm_object_text_set(bt, "X");
|
|
elm_box_pack_end(box, bt);
|
|
evas_object_show(bt);
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fit, map);
|
|
|
|
bt = elm_button_add(win);
|
|
elm_object_text_set(bt, "#");
|
|
elm_box_pack_end(box, bt);
|
|
evas_object_show(bt);
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
|
|
|
|
elm_map_zoom_set(map, 12);
|
|
elm_map_region_show(map, -43.2, -22.9);
|
|
evas_object_resize(win, 512, 512);
|
|
evas_object_show(win);
|
|
|
|
ecore_timer_add(0.5, _nasty_hack, win);
|
|
|
|
elm_run();
|
|
|
|
return 0;
|
|
}
|
|
ELM_MAIN()
|