move elementary to trunk base. out of TMP/st.
[framework/uifw/elementary.git] / src / bin / test_map.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 typedef struct Marker_Data
8 {
9     const char *file;
10 } Marker_Data;
11
12
13 static Elm_Map_Marker_Class *itc1, *itc2, *itc_parking;
14 static Elm_Map_Group_Class *itc_group1, *itc_group2, *itc_group_parking;
15
16 static Evas_Object *rect;
17 static int nb_elts;
18
19 Marker_Data data1 = {PACKAGE_DATA_DIR"/images/logo.png"};
20 Marker_Data data2 = {PACKAGE_DATA_DIR"/images/logo_small.png"};
21 Marker_Data data3 = {PACKAGE_DATA_DIR"/images/panel_01.jpg"};
22 Marker_Data data4 = {PACKAGE_DATA_DIR"/images/plant_01.jpg"};
23 Marker_Data data5 = {PACKAGE_DATA_DIR"/images/rock_01.jpg"};
24 Marker_Data data6 = {PACKAGE_DATA_DIR"/images/rock_02.jpg"};
25 Marker_Data data7 = {PACKAGE_DATA_DIR"/images/sky_01.jpg"};
26 Marker_Data data8 = {PACKAGE_DATA_DIR"/images/sky_02.jpg"};
27 Marker_Data data9 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
28 Marker_Data data10 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
29 Marker_Data data11= {PACKAGE_DATA_DIR"/images/wood_01.jpg"};
30
31 Marker_Data data_parking= {PACKAGE_DATA_DIR"/images/parking.png"};
32
33 static void
34 my_map_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
35 {
36    printf("clicked\n");
37 }
38
39 static void
40 my_map_press(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
41 {
42    printf("press\n");
43 }
44
45 static void
46 my_map_longpressed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
47 {
48    printf("longpressed\n");
49 }
50
51 static void
52 my_map_clicked_double(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
53 {
54    printf("clicked,double\n");
55 }
56
57 static void
58 my_map_load_detail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
59 {
60    printf("load,detail\n");
61 }
62
63 static void
64 my_map_loaded_detail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
65 {
66    printf("loaded,detail\n");
67 }
68
69 static void
70 my_map_zoom_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
71 {
72    printf("zoom,start\n");
73 }
74
75 static void
76 my_map_zoom_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
77 {
78    printf("zoom,stop\n");
79 }
80
81 static void
82 my_map_zoom_change(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
83 {
84    printf("zoom,change\n");
85 }
86
87 static void
88 my_map_anim_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
89 {
90    printf("anim,start\n");
91 }
92
93 static void
94 my_map_anim_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
95 {
96    printf("anim,stop\n");
97 }
98
99 static void
100 my_map_drag_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
101 {
102    printf("drag,start\n");
103 }
104
105 static void
106 my_map_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
107 {
108    printf("drag_stop\n");
109 }
110
111 static void
112 my_map_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
113 {
114    double lon, lat;
115    elm_map_geo_region_get(obj, &lon, &lat);
116    printf("scroll longitude : %f latitude : %f\n", lon, lat);
117 }
118
119 static void
120 my_map_downloaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
121 {
122    int try_num, finish_num;
123    elm_map_utils_downloading_status_get(data, &try_num, &finish_num);
124    printf("downloaded : %d / %d\n", finish_num, try_num);
125 }
126
127 static void
128 my_bt_show_reg(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
129 {
130    Eina_Bool b = elm_map_paused_get(data);
131    elm_map_paused_set(data, EINA_TRUE);
132    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
133    elm_map_geo_region_show(data, 2.352, 48.857);
134    elm_map_zoom_set(data, 18);
135    elm_map_paused_set(data, b);
136 }
137
138 static void
139 my_bt_bring_reg(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
140 {
141    elm_map_geo_region_bring_in(data, 2.352, 48.857);
142 }
143
144 static void
145 my_bt_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
146 {
147    double zoom;
148
149    zoom = elm_map_zoom_get(data);
150    zoom += 1;
151    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
152    if (zoom >= (1.0 / 32.0)) elm_map_zoom_set(data, zoom);
153 }
154
155 static void
156 my_bt_zoom_out(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
157 {
158    double zoom;
159
160    zoom = elm_map_zoom_get(data);
161    zoom -= 1;
162    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
163    if (zoom <= 256.0) elm_map_zoom_set(data, zoom);
164 }
165
166 static void
167 my_bt_pause(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
168 {
169    elm_map_paused_set(data, !elm_map_paused_get(data));
170 }
171
172 static void
173 my_bt_markers_pause(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
174 {
175    elm_map_paused_markers_set(data, !elm_map_paused_markers_get(data));
176 }
177
178 static void
179 my_bt_zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
180 {
181    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
182 }
183
184 static void
185 my_bt_zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
186 {
187    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
188 }
189
190 static void
191 my_bt_source_mapnik(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
192 {
193    elm_map_source_set(data, ELM_MAP_SOURCE_MAPNIK);
194 }
195
196 static void
197 my_bt_source_osmarender(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
198 {
199    elm_map_source_set(data, ELM_MAP_SOURCE_OSMARENDER);
200 }
201
202 static void
203 my_bt_source_cyclemap(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
204 {
205    elm_map_source_set(data, ELM_MAP_SOURCE_CYCLEMAP);
206 }
207
208 static void
209 my_bt_source_maplint(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
210 {
211    elm_map_source_set(data, ELM_MAP_SOURCE_MAPLINT);
212 }
213
214 static void
215 my_bt_source_module(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
216 {
217    elm_map_source_set(data, ELM_MAP_SOURCE_MODULE);
218 }
219
220 static void
221 my_bt_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
222 {
223     int i;
224     Elm_Map_Group_Class *g_clas;
225     Elm_Map_Marker_Class *m_clas;
226     Marker_Data *d = &data7;
227
228     for(i =0; i<1000; i++)
229     {
230         d = &data7;
231
232         int r1 = rand() % (180*2*100);
233         if(r1<=180) r1 = -r1;
234         else r1 = r1 - 180*100;
235
236         int r2 = rand() % (85*2*100);
237         if(r2<=85) r2 = -r2;
238         else r2 = r2 - 85*100;
239
240         int style = rand() % 3;
241         if(!style)
242             m_clas = itc1;
243         else if(style == 1)
244             m_clas = itc2;
245         else
246         {
247             m_clas = itc_parking;
248             d = &data_parking;
249         }
250
251         style = rand() % 2;
252         if (!style)
253           g_clas = itc_group1;
254         else
255           g_clas = itc_group2;
256
257        elm_map_marker_add(data, r1/100., r2/100., m_clas, g_clas, d); 
258     }
259     nb_elts+=1000;
260     printf("nb elements: %d\n", nb_elts);
261 }
262
263 static Evas_Object *
264 _marker_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
265 {
266     Marker_Data *d = data;
267
268     Evas_Object *bx = elm_box_add(obj);
269     evas_object_show(bx);
270
271     if(d == &data3)
272     {
273         Evas_Object *icon = elm_icon_add(obj);
274         elm_icon_file_set(icon, d->file, NULL);
275         evas_object_show(icon);
276
277         Evas_Object *o = elm_button_add(obj);
278         elm_button_icon_set(o, icon);
279         evas_object_show(o);
280         elm_box_pack_end(bx, o);
281     }
282     else
283     {
284         Evas_Object *o = evas_object_image_add(evas_object_evas_get(obj));
285         evas_object_image_file_set(o, d->file, NULL);
286         evas_object_image_filled_set(o, EINA_TRUE);
287         evas_object_size_hint_min_set(o, 64, 64);
288         evas_object_show(o);
289         elm_box_pack_end(bx, o);
290
291         Evas_Object *lbl = elm_label_add(obj);
292         elm_label_label_set(lbl, "Wolves Go !");
293         evas_object_show(lbl);
294         elm_box_pack_end(bx, lbl);
295     }
296
297     return bx;
298 }
299
300 static Evas_Object *
301 _icon_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
302 {
303     Marker_Data *d = data;
304
305     Evas_Object *icon = elm_icon_add(obj);
306     elm_icon_file_set(icon, d->file, NULL);
307     evas_object_show(icon);
308
309     return icon;
310 }
311
312 static Evas_Object *
313 _group_icon_get(Evas_Object *obj, void *data)
314 {
315     char *file = data;
316
317     Evas_Object *icon = elm_icon_add(obj);
318     elm_icon_file_set(icon, file, NULL);
319     evas_object_show(icon);
320
321     return icon;
322 }
323
324 static void
325 _map_mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
326 {
327    Evas_Object *map = data;
328    Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
329    int zoom;
330    //unset the mouse wheel
331    ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
332
333    zoom = elm_map_zoom_get(map);
334
335    if (ev->z > 0)
336      zoom--;
337    else
338      zoom++;
339
340    elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
341    if ((zoom >= 0) && (zoom <= 18)) elm_map_zoom_set(map, zoom);
342 }
343
344 static void 
345 _map_move_resize_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
346 {
347    int x,y,w,h;
348
349    evas_object_geometry_get(data,&x,&y,&w,&h);
350    evas_object_resize(rect,w,h);
351    evas_object_move(rect,x,y);
352 }
353
354 void
355 test_map(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
356 {
357    Evas_Object *win, *bg, *map, *tb2, *bt, *bx;
358
359    win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
360    elm_win_title_set(win, "Map");
361    elm_win_autodel_set(win, 1);
362
363    bg = elm_bg_add(win);
364    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
365    elm_win_resize_object_add(win, bg);
366    evas_object_show(bg);
367
368    map = elm_map_add(win);
369    if (map) 
370      {
371         srand( time(NULL) );
372
373         evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
374         elm_win_resize_object_add(win, map);
375         evas_object_data_set(map, "window", win);
376
377         //
378         itc1 = elm_map_marker_class_new(map);
379         elm_map_marker_class_get_cb_set(itc1, _marker_get);
380         elm_map_marker_class_del_cb_set(itc1, NULL);
381  
382         itc2 = elm_map_marker_class_new(map);
383         elm_map_marker_class_get_cb_set(itc2, _marker_get);
384         elm_map_marker_class_del_cb_set(itc2, NULL);
385         elm_map_marker_class_style_set(itc2, "radio2");
386
387         itc_parking = elm_map_marker_class_new(map);
388         elm_map_marker_class_get_cb_set(itc_parking, _marker_get);
389         elm_map_marker_class_del_cb_set(itc_parking, NULL);
390         elm_map_marker_class_icon_cb_set(itc_parking, _icon_get);
391         elm_map_marker_class_style_set(itc_parking, "empty");
392         //
393
394         //
395         itc_group1 = elm_map_group_class_new(map);
396         elm_map_group_class_data_set(itc_group1, (void *)PACKAGE_DATA_DIR"/images/plant_01.jpg");
397
398         itc_group2 = elm_map_group_class_new(map);
399         elm_map_group_class_style_set(itc_group2, "radio2");
400         elm_map_group_class_zoom_displayed_set(itc_group1, 3);
401
402         itc_group_parking = elm_map_group_class_new(map);
403         elm_map_group_class_icon_cb_set(itc_group_parking, _group_icon_get);
404         elm_map_group_class_data_set(itc_group_parking, (void *)PACKAGE_DATA_DIR"/images/parking.png");
405         elm_map_group_class_style_set(itc_group_parking, "empty");
406         elm_map_group_class_zoom_displayed_set(itc_group_parking, 5);
407         //
408
409
410         rect = evas_object_rectangle_add(evas_object_evas_get(win));
411         evas_object_color_set(rect, 0, 0, 0, 0);
412         evas_object_repeat_events_set(rect,1);
413         evas_object_show(rect);
414         evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_WHEEL, 
415                                        _map_mouse_wheel_cb, map);
416         evas_object_raise(rect);
417
418         evas_object_event_callback_add(map, EVAS_CALLBACK_RESIZE, 
419                                        _map_move_resize_cb, map);
420         evas_object_event_callback_add(map, EVAS_CALLBACK_MOVE, 
421                                        _map_move_resize_cb, map);
422
423         elm_map_marker_add(map, 2.352, 48.857, itc1, itc_group1, &data1);
424         elm_map_marker_add(map, 2.355, 48.857, itc1, itc_group1, &data3);
425         elm_map_marker_add(map, 3, 48.857, itc2, itc_group1, &data2);
426         elm_map_marker_add(map, 2.352, 49, itc2, itc_group1, &data1);
427
428         elm_map_marker_add(map, 7.31451, 48.857127, itc1, itc_group1, &data10);
429         elm_map_marker_add(map, 7.314704, 48.857119, itc1, itc_group1, &data4);
430         elm_map_marker_add(map, 7.314704, 48.857119, itc2, itc_group1, &data5);
431         elm_map_marker_add(map, 7.31432, 48.856785, itc2, itc_group1, &data6);
432         elm_map_marker_add(map, 7.3148, 48.85725, itc1, itc_group2, &data7);
433         elm_map_marker_add(map, 7.316445, 48.8572210000694, itc1, itc_group1, &data8);
434         elm_map_marker_add(map, 7.316527000125, 48.85609, itc2, itc_group2, &data9);
435         elm_map_marker_add(map, 7.3165409990833, 48.856078, itc2, itc_group1, &data11);
436         elm_map_marker_add(map, 7.319812, 48.856561, itc2, itc_group2, &data10);
437
438         nb_elts = 13;
439
440         evas_object_smart_callback_add(map, "clicked", my_map_clicked, win);
441         evas_object_smart_callback_add(map, "press", my_map_press, win);
442         evas_object_smart_callback_add(map, "longpressed", my_map_longpressed, win);
443         evas_object_smart_callback_add(map, "clicked,double", my_map_clicked_double, win);
444         evas_object_smart_callback_add(map, "load,detail", my_map_load_detail, win);
445         evas_object_smart_callback_add(map, "loaded,detail", my_map_loaded_detail, win);
446         evas_object_smart_callback_add(map, "zoom,start", my_map_zoom_start, win);
447         evas_object_smart_callback_add(map, "zoom,stop", my_map_zoom_stop, win);
448         evas_object_smart_callback_add(map, "zoom,change", my_map_zoom_change, win);
449         evas_object_smart_callback_add(map, "scroll,anim,start", my_map_anim_start, win);
450         evas_object_smart_callback_add(map, "scroll,anim,stop", my_map_anim_stop, win);
451         evas_object_smart_callback_add(map, "scroll,drag,start", my_map_drag_start, win);
452         evas_object_smart_callback_add(map, "scroll,drag,stop", my_map_drag_stop, win);
453         evas_object_smart_callback_add(map, "scroll", my_map_scroll, win);
454         evas_object_smart_callback_add(map, "downloaded", my_map_downloaded, map);
455
456         evas_object_show(map);
457
458         tb2 = elm_table_add(win);
459         evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
460         elm_win_resize_object_add(win, tb2);
461
462         bt = elm_button_add(win);
463         elm_button_label_set(bt, "Z -");
464         evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_out, map);
465         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
466         evas_object_size_hint_align_set(bt, 0.1, 0.1);
467         elm_table_pack(tb2, bt, 0, 0, 1, 1);
468         evas_object_show(bt);
469
470         bt = elm_button_add(win);
471         elm_button_label_set(bt, "Add 1000 markers");
472         evas_object_smart_callback_add(bt, "clicked", my_bt_add, map);
473         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
474         evas_object_size_hint_align_set(bt, 0.5, 0.1);
475         elm_table_pack(tb2, bt, 1, 0, 1, 1);
476         evas_object_show(bt);
477
478         bt = elm_button_add(win);
479         elm_button_label_set(bt, "Z +");
480         evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_in, map);
481         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
482         evas_object_size_hint_align_set(bt, 0.9, 0.1);
483         elm_table_pack(tb2, bt, 2, 0, 1, 1);
484         evas_object_show(bt);
485
486         bt = elm_button_add(win);
487         elm_button_label_set(bt, "Show Paris");
488         evas_object_smart_callback_add(bt, "clicked", my_bt_show_reg, map);
489         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
490         evas_object_size_hint_align_set(bt, 0.1, 0.5);
491         elm_table_pack(tb2, bt, 0, 1, 1, 1);
492         evas_object_show(bt);
493
494         bt = elm_button_add(win);
495         elm_button_label_set(bt, "Bring Paris");
496         evas_object_smart_callback_add(bt, "clicked", my_bt_bring_reg, map);
497         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
498         evas_object_size_hint_align_set(bt, 0.9, 0.5);
499         elm_table_pack(tb2, bt, 2, 1, 1, 1);
500         evas_object_show(bt);
501
502         //
503         bx = elm_box_add(win);
504         evas_object_show(bx);
505         evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
506         evas_object_size_hint_align_set(bx, 0.1, 0.9);
507         elm_table_pack(tb2, bx, 0, 2, 1, 1);
508
509         bt = elm_button_add(win);
510         elm_button_label_set(bt, "Pause On/Off");
511         evas_object_smart_callback_add(bt, "clicked", my_bt_pause, map);
512         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
513         evas_object_size_hint_align_set(bt, 0.1, 0.9);
514         evas_object_show(bt);
515         elm_box_pack_end(bx, bt);
516
517         bt = elm_button_add(win);
518         elm_button_label_set(bt, "Markers pause On/Off");
519         evas_object_smart_callback_add(bt, "clicked", my_bt_markers_pause, map);
520         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
521         evas_object_size_hint_align_set(bt, 0.1, 0.9);
522         evas_object_show(bt);
523         elm_box_pack_end(bx, bt);
524         //
525
526         //
527         bx = elm_box_add(win);
528         evas_object_show(bx);
529         evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
530         evas_object_size_hint_align_set(bx, 0.5, 0.9);
531         elm_table_pack(tb2, bx, 1, 2, 1, 1);
532
533         bt = elm_button_add(win);
534         elm_button_label_set(bt, "Fit");
535         evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_fit, map);
536         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
537         evas_object_size_hint_align_set(bt, 0.5, 0.9);
538         evas_object_show(bt);
539         elm_box_pack_end(bx, bt);
540
541         bt = elm_button_add(win);
542         elm_button_label_set(bt, "Fill");
543         evas_object_smart_callback_add(bt, "clicked", my_bt_zoom_fill, map);
544         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
545         evas_object_size_hint_align_set(bt, 0.5, 0.9);
546         evas_object_show(bt);
547         elm_box_pack_end(bx, bt);
548         //
549
550         //
551         bx = elm_box_add(win);
552         evas_object_show(bx);
553         evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
554         evas_object_size_hint_align_set(bx, 1.0, 0.9);
555         elm_table_pack(tb2, bx, 2, 2, 1, 1);
556
557         bt = elm_button_add(win);
558         elm_button_label_set(bt, "Mapnik");
559         evas_object_smart_callback_add(bt, "clicked", my_bt_source_mapnik, map);
560         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
561         evas_object_size_hint_align_set(bt, 1.0, 0.9);
562         evas_object_show(bt);
563         elm_box_pack_end(bx, bt);
564
565         bt = elm_button_add(win);
566         elm_button_label_set(bt, "Osmarender");
567         evas_object_smart_callback_add(bt, "clicked", my_bt_source_osmarender, map);
568         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
569         evas_object_size_hint_align_set(bt, 1.0, 0.9);
570         evas_object_show(bt);
571         elm_box_pack_end(bx, bt);
572
573         bt = elm_button_add(win);
574         elm_button_label_set(bt, "Cycle Map");
575         evas_object_smart_callback_add(bt, "clicked", my_bt_source_cyclemap, map);
576         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
577         evas_object_size_hint_align_set(bt, 1.0, 0.9);
578         evas_object_show(bt);
579         elm_box_pack_end(bx, bt);
580
581         bt = elm_button_add(win);
582         elm_button_label_set(bt, "Maplint");
583         evas_object_smart_callback_add(bt, "clicked", my_bt_source_maplint, map);
584         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
585         evas_object_size_hint_align_set(bt, 1.0, 0.9);
586         evas_object_show(bt);
587         elm_box_pack_end(bx, bt);
588
589         bt = elm_button_add(win);
590         elm_button_label_set(bt, "Module");
591         evas_object_smart_callback_add(bt, "clicked", my_bt_source_module, map);
592         evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
593         evas_object_size_hint_align_set(bt, 1.0, 0.9);
594         evas_object_show(bt);
595         elm_box_pack_end(bx, bt);
596         //
597
598         evas_object_show(tb2);
599      }
600
601    evas_object_resize(win, 800, 800);
602    evas_object_show(win);
603 }
604 #endif