davemds pushed a commit to branch master. http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=0a03a272e77c4d69dde42e6eab59d81cad40f97f
commit 0a03a272e77c4d69dde42e6eab59d81cad40f97f Author: davemds <[email protected]> Date: Wed Dec 4 21:31:43 2013 +0100 Python-EFL: unify all the 3 map tests in one --- examples/elementary/test.py | 2 - examples/elementary/test_map.py | 382 ++++++++++++++++++++++++++++++++++----- examples/elementary/test_map2.py | 215 ---------------------- examples/elementary/test_map3.py | 248 ------------------------- 4 files changed, 337 insertions(+), 510 deletions(-) diff --git a/examples/elementary/test.py b/examples/elementary/test.py index e5b9394..1306b69 100755 --- a/examples/elementary/test.py +++ b/examples/elementary/test.py @@ -113,8 +113,6 @@ items = [ ]), ("Geographic", [ ("Map", "test_map", "map_clicked"), - ("Map Overlay", "test_map2", "map_overlays_clicked"), - ("Map Route", "test_map3", "map_route_clicked"), ]), ("Images", [ ("Icon", "test_icon", "icon_clicked"), diff --git a/examples/elementary/test_map.py b/examples/elementary/test_map.py index 56030a0..a5faed8 100644 --- a/examples/elementary/test_map.py +++ b/examples/elementary/test_map.py @@ -1,14 +1,24 @@ #!/usr/bin/env python # encoding: utf-8 -from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL +import os +from random import randint + +from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL, EVAS_CALLBACK_MOUSE_DOWN from efl import elementary from efl.elementary.window import StandardWindow from efl.elementary.box import Box from efl.elementary.button import Button from efl.elementary.check import Check +from efl.elementary.entry import Entry from efl.elementary.hoversel import Hoversel -from efl.elementary.map import Map, ELM_MAP_SOURCE_TYPE_TILE +from efl.elementary.icon import Icon +from efl.elementary.label import Label +from efl.elementary.separator import Separator +from efl.elementary.map import Map, MapOverlayClass, ELM_MAP_OVERLAY_TYPE_CLASS, \ + ELM_MAP_SOURCE_TYPE_TILE, ELM_MAP_ROUTE_TYPE_MOTOCAR, ELM_MAP_ROUTE_METHOD_FASTEST, \ + ELM_MAP_SOURCE_TYPE_ROUTE, ELM_MAP_SOURCE_TYPE_NAME +from efl.elementary.menu import Menu from efl.elementary.slider import Slider EXPAND_BOTH = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND @@ -18,6 +28,12 @@ FILL_HORIZ = EVAS_HINT_FILL, 0.5 elementary.need_efreet() +script_path = os.path.dirname(os.path.abspath(__file__)) +img_path = os.path.join(script_path, "images") + +route_start_point = None +route_end_point = None + def print_map_info(Map): print("---Map info---") # print("user_agent: %s" % (Map.user_agent)) @@ -36,11 +52,11 @@ def cb_btn_zoom(bt, Map, zoom): Map.zoom += zoom print_map_info(Map) -def cb_btn_show(bt, Map, lon, lat): +def cb_menu_show(menu, item, Map, lon, lat): Map.region_show(lon, lat) print_map_info(Map) -def cb_btn_bringin(bt, Map, lon, lat): +def cb_menu_bringin(menu, item, Map, lon, lat): Map.region_bring_in(lon, lat) print_map_info(Map) @@ -49,31 +65,256 @@ def cb_slider_rot(sl, Map): Map.rotate_set(sl.value, cx, cy) print("New rotate: %f %d %d" % Map.rotate) -def cb_hovsel_selected(hov, item, Map, src_type): +def cb_hovsel_selected(hov, item, Map, src_type, name): Map.source_set(src_type, item.text) - hov.text = "Tiles: %s" % (item.text) + hov.text = "%s: %s" % (name, item.text) + +def cb_chk_overlays_hidden(ck, Map): + for ov in Map.overlays: + ov.hide = ck.state + +def cb_chk_overlays_paused(ck, m): + for ov in m.overlays: + ov.paused = ck.state + + +def cb_menu_overlay_normal(menu, item, Map, lon, lat): + ov = Map.overlay_add(lon, lat) + ov.callback_clicked_set(lambda m,o: o.delete()) + +def cb_menu_overlay_icon(menu, item, Map, lon, lat): + ov = Map.overlay_add(lon, lat) + ov.icon = Icon(Map, file=os.path.join(img_path, "logo.png")) + +def cb_menu_overlay_custom(menu, item, Map, lon, lat): + ov = Map.overlay_add(lon, lat) + cont = Icon(Map, file=os.path.join(img_path, "sky_01.jpg")) + cont.size_hint_min = 50, 50 + ov.content = cont + +def cb_menu_overlay_random_color(menu, item, Map, lon, lat): + ov = Map.overlay_add(lon, lat) + ov.color = (randint(0, 255), randint(0, 255), randint(0, 255), 255) + ov.callback_clicked_set(lambda m,o: o.delete()) + +def cb_menu_overlay_min_zoom(menu, item, Map, lon, lat): + ov = Map.overlay_add(lon, lat) + ov.displayed_zoom_min = 4 + ov.callback_clicked_set(lambda m,o: o.delete()) + +def cb_menu_overlay_grouped(menu, item, Map, lon, lat): + cls = Map.overlay_class_add() + for x in range(4): + for y in range(4): + ov = Map.overlay_add(lon + x, lat + y) + ov.callback_clicked_set(lambda m,o: o.delete()) + cls.append(ov) + +def cb_menu_overlay_bubble(menu, item, Map, lon, lat): + ov = Map.overlay_add(lon, lat) + bub = Map.overlay_bubble_add() + bub.follow(ov) + + lb = Label(Map, text="You can push contents here") + bub.content_append(lb) + lb.show() + + ic = Icon(Map, file=os.path.join(img_path, "sky_01.jpg")) + ic.size_hint_min = 50, 50 + bub.content_append(ic) + ic.show() + + bt = Button(Map, text="clear me") + bt.callback_clicked_add(lambda bt:bub.content_clear()) + bub.content_append(bt) + bt.show() + +def cb_menu_overlay_line(menu, item, Map, lon, lat): + line = Map.overlay_line_add(lon, lat, lon + 1, lat + 1) + +def cb_menu_overlay_poly(menu, item, Map, lon, lat): + poly = Map.overlay_polygon_add() + poly.region_add(lon, lat) + poly.region_add(lon + 1, lat + 1) + poly.region_add(lon + 1, lat - 1) + poly.region_add(lon - 1, lat) + +def cb_menu_overlay_circle(menu, item, Map, lon, lat): + cir = Map.overlay_circle_add(lon, lat, 10) + +def cb_menu_overlay_scale(menu, item, Map, x, y): + Map.overlay_scale_add(x, y) + +def cb_menu_overlays_clear(menu, item, Map): + for ov in Map.overlays: + if ov.type != ELM_MAP_OVERLAY_TYPE_CLASS: + ov.delete() + +def cb_menu_overlays_show(menu, item, Map): + l = [ov for ov in Map.overlays if not isinstance(ov, MapOverlayClass)] + Map.overlays_show(l) # TODO FIXME + +def cb_menu_overlays_ungroup(menu, item, Map): + for ov in Map.overlays: + print("DEL1: " + str(ov)) + if isinstance(ov, MapOverlayClass): + # TODO ungroup instead + print ("****") + for ov2 in ov.members: + print("DEL2: " + str(ov2)) + ov2.delete() # TODO FIXME + +def cb_menu_route_start(menu, item, Map, lon, lat): + global route_start_point + route_start_point = Map.overlay_add(lon, lat) + route_start_point.color = (255, 0, 0, 255) + +def cb_menu_route_end(menu, item, Map, lon, lat): + global route_end_point + route_end_point = Map.overlay_add(lon, lat) + route_end_point.color = (0, 0, 255, 255) + +def cb_btn_calc_route(btn, Map): + lb = Map.data["lb_distance"] + if not (route_start_point and route_end_point): + lb.text = "You must first place Start and End point" + return + (flon, flat) = route_start_point.region + (tlon, tlat) = route_end_point.region + Map.route_add(ELM_MAP_ROUTE_TYPE_MOTOCAR, + ELM_MAP_ROUTE_METHOD_FASTEST, + flon, flat, tlon, tlat, cb_route_done) + + lb = Map.data["lb_distance"] + lb.text = "requesting route..." + +def cb_route_done(Map, route): + nodes = route.node.count('\n') + lb = Map.data["lb_distance"] + lb.text = "distance: %.2f Km nodes:%d" % (route.distance, nodes) + + ov = Map.overlay_route_add(route) + + print("Nodes:\n %s" % (route.node)) + print("Waypoints:\n %s" % (route.waypoint)) + +def cb_map_mouse_down(Map, evtinfo): + (x,y) = evtinfo.position.canvas + (lon, lat) = Map.canvas_to_region_convert(x, y) + if evtinfo.button == 3: + m = Menu(Map) + mi = m.item_add(None, "Lat: %f" % lat) + mi.disabled = True + mi = m.item_add(None, "Lon: %f" % lon) + mi.disabled = True + + mi = m.item_add(None, "Move") + m.item_add(mi, "Show Sydney", None, cb_menu_show, Map, 151.175274, -33.859126) + m.item_add(mi, "Show Paris", None, cb_menu_show, Map, 2.342913, 48.853701) + m.item_add(mi, "Bringin Sydney", None, cb_menu_bringin, Map, 151.175274, -33.859126) + m.item_add(mi, "Bringin Paris", None, cb_menu_bringin, Map, 2.342913, 48.853701) + + mi = m.item_add(None, "Add overlay") + m.item_add(mi, "Normal", None, cb_menu_overlay_normal, Map, lon, lat) + m.item_add(mi, "Icon", None, cb_menu_overlay_icon, Map, lon, lat) + m.item_add(mi, "Custom content", None, cb_menu_overlay_custom, Map, lon, lat) + m.item_add(mi, "Random color", None, cb_menu_overlay_random_color, Map, lon, lat) + m.item_add(mi, "Min zoom 4", None, cb_menu_overlay_min_zoom, Map, lon, lat) + m.item_add(mi, "16 grouped", None, cb_menu_overlay_grouped, Map, lon, lat) + m.item_add(mi, "Bubble attached", None, cb_menu_overlay_bubble, Map, lon, lat) + m.item_add(mi, "Line", None, cb_menu_overlay_line, Map, lon, lat) + m.item_add(mi, "Polygon", None, cb_menu_overlay_poly, Map, lon, lat) + m.item_add(mi, "Circle", None, cb_menu_overlay_circle, Map, lon, lat) + m.item_add(mi, "Scale", None, cb_menu_overlay_scale, Map, x, y) + + mi = m.item_add(None, "Overlays") + m.item_add(mi, "Clear", None, cb_menu_overlays_clear, Map) + m.item_add(mi, "Show (BROKEN)", None, cb_menu_overlays_show, Map) + m.item_add(mi, "ungroup (BROKEN)", None, cb_menu_overlays_ungroup, Map) + + mi = m.item_add(None, "Route") + m.item_add(mi, "Set start point", None, cb_menu_route_start, Map, lon, lat) + m.item_add(mi, "Set end point", None, cb_menu_route_end, Map, lon, lat) + + m.move(x, y) + m.show() + +def cb_map_load(m): + lb = m.data["lb_load_status"] + status = m.tile_load_status + lb.text = "tile_load_status: %d / %d" % (status[1], status[0]) + +def cb_btn_search_name(bt, Map, en): + Map.name_add(en.text, 0, 0, cb_search_name_done, en) + en.text = "searching..." + +def cb_search_name_done(Map, name, en): + global route_start_point + + en.text = name.address + (lon, lat) = name.region + Map.region_show(lon, lat) + Map.zoom = 12 + + if route_start_point is None: + route_start_point = Map.overlay_add(lon, lat) + route_start_point.color = (255, 0, 0, 255) + else: + route_start_point.region = (lon, lat) + +def cb_btn_search_region(bt, Map, en): + if route_start_point is None: + en.text = "You must first place the start point" + else: + (lon, lat) = route_start_point.region + Map.name_add(None, lon, lat, cb_search_region_done, en) + en.text = "searching..." + +def cb_search_region_done(Map, name, en): + en.text = name.address + +def cb_btn_goto(btn, Map): + Map.zoom = 12 + Map.region_show(9.204, 45.446) def map_clicked(obj): win = StandardWindow("map", "Map test", autodel=True, size=(600, 600)) if obj is None: win.callback_delete_request_add(lambda o: elementary.exit()) - vbox = Box(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) + vbox = Box(win) + vbox.size_hint_weight = EXPAND_BOTH + vbox.size_hint_align = FILL_BOTH win.resize_object_add(vbox) vbox.show() - map_obj = Map(win, zoom=2, size_hint_weight=EXPAND_BOTH, - size_hint_align=FILL_BOTH) - # map_obj.callback_clicked_add(cb_map_clicked) + map_obj = Map(win, zoom=2) + map_obj.size_hint_weight = EXPAND_BOTH + map_obj.size_hint_align = FILL_BOTH + map_obj.callback_tile_load_add(cb_map_load) + map_obj.callback_tile_loaded_add(cb_map_load) + map_obj.event_callback_add(EVAS_CALLBACK_MOUSE_DOWN, cb_map_mouse_down) vbox.pack_end(map_obj) map_obj.show() - # view - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) + ### + lb = Label(win, text="load_status: 0 / 0") + vbox.pack_end(lb) + lb.show() + map_obj.data["lb_load_status"] = lb + + ### + hbox = Box(win, horizontal=True) + hbox.size_hint_weight = EXPAND_HORIZ + hbox.size_hint_align = FILL_HORIZ vbox.pack_end(hbox) hbox.show() + bt = Button(win, text="Goto") + bt.callback_clicked_add(cb_btn_goto, map_obj) + hbox.pack_end(bt) + bt.show() + bt = Button(win, text="Zoom +") bt.callback_clicked_add(cb_btn_zoom, map_obj, 1) hbox.pack_end(bt) @@ -91,59 +332,110 @@ def map_clicked(obj): sl.show() src_type = ELM_MAP_SOURCE_TYPE_TILE - ho = Hoversel(win, hover_parent=win, - text="Tiles: %s" % (map_obj.source_get(src_type))) + text="Tiles: %s" % (map_obj.source_get(src_type))) for src in map_obj.sources_get(src_type): ho.item_add(src) - ho.callback_selected_add(cb_hovsel_selected, map_obj, src_type) + ho.callback_selected_add(cb_hovsel_selected, map_obj, src_type, "Tiles") hbox.pack_end(ho) ho.show() - # show / bring in - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) + ### + hbox = Box(win, horizontal=True) + hbox.size_hint_weight = EXPAND_HORIZ + hbox.size_hint_align = FILL_HORIZ vbox.pack_end(hbox) hbox.show() - bt = Button(win, text="Show Sydney") - bt.callback_clicked_add(cb_btn_show, map_obj, 151.175274, -33.859126) - hbox.pack_end(bt) - bt.show() + ck = Check(win, text="wheel_disabled") + ck.callback_changed_add(lambda bt: map_obj.wheel_disabled_set(bt.state)) + hbox.pack_end(ck) + ck.show() - bt = Button(win, text="Show Paris") - bt.callback_clicked_add(cb_btn_show, map_obj, 2.342913, 48.853701) - hbox.pack_end(bt) - bt.show() + ck = Check(win, text="paused") + ck.callback_changed_add(lambda bt: map_obj.paused_set(bt.state)) + hbox.pack_end(ck) + ck.show() - bt = Button(win, text="BringIn Sydney") - bt.callback_clicked_add(cb_btn_bringin, map_obj, 151.175274, -33.859126) - hbox.pack_end(bt) - bt.show() + ck = Check(win, text="hide overlays") + ck.callback_changed_add(cb_chk_overlays_hidden, map_obj) + hbox.pack_end(ck) + ck.show() - bt = Button(win, text="BringIn Paris") - bt.callback_clicked_add(cb_btn_bringin, map_obj, 2.342913, 48.853701) + ck = Check(win, text="pause overlays") + ck.callback_changed_add(cb_chk_overlays_paused, map_obj) + hbox.pack_end(ck) + ck.show() + + ### + sp = Separator(win, horizontal=True) + sp.show() + vbox.pack_end(sp) + + hbox = Box(win, horizontal=True) + hbox.size_hint_weight = EXPAND_HORIZ + hbox.size_hint_align = FILL_HORIZ + vbox.pack_end(hbox) + hbox.show() + + src_type = ELM_MAP_SOURCE_TYPE_ROUTE + ho = Hoversel(win, hover_parent=win, + text="Routes: %s" % (map_obj.source_get(src_type))) + for src in map_obj.sources_get(src_type): + ho.item_add(src) + ho.callback_selected_add(cb_hovsel_selected, map_obj, src_type, "Routes") + hbox.pack_end(ho) + ho.show() + + lb = Label(win, text="Set Start and End point to calculate route") + hbox.pack_end(lb) + lb.show() + map_obj.data["lb_distance"] = lb + + bt = Button(win, text="Calc route") + bt.callback_clicked_add(cb_btn_calc_route, map_obj) hbox.pack_end(bt) bt.show() - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) + ### + sp = Separator(win, horizontal=True) + sp.show() + vbox.pack_end(sp) + + hbox = Box(win, horizontal=True) + hbox.size_hint_weight = EXPAND_HORIZ + hbox.size_hint_align = FILL_HORIZ vbox.pack_end(hbox) hbox.show() + + src_type = ELM_MAP_SOURCE_TYPE_NAME + ho = Hoversel(win, hover_parent=win, + text="Names: %s" % (map_obj.source_get(src_type))) + for src in map_obj.sources_get(src_type): + ho.item_add(src) + ho.callback_selected_add(cb_hovsel_selected, map_obj, src_type, "Names") + hbox.pack_end(ho) + ho.show() - # options - ck = Check(win, text="wheel_disabled") - ck.callback_changed_add(lambda bt: map_obj.wheel_disabled_set(bt.state)) - hbox.pack_end(ck) - ck.show() + en = Entry(win, scrollable=True, text="type an address here") + en.size_hint_weight = EXPAND_BOTH + en.size_hint_align = FILL_BOTH + en.single_line = True + hbox.pack_end(en) + en.show() - ck = Check(win, text="paused") - ck.callback_changed_add(lambda bt: map_obj.paused_set(bt.state)) - hbox.pack_end(ck) - ck.show() + bt = Button(win, text="Search address") + bt.callback_clicked_add(cb_btn_search_name, map_obj, en) + hbox.pack_end(bt) + bt.show() - print_map_info(map_obj) + bt = Button(win, text="Search start point") + bt.callback_clicked_add(cb_btn_search_region, map_obj, en) + hbox.pack_end(bt) + bt.show() + + print_map_info(map_obj) win.show() diff --git a/examples/elementary/test_map2.py b/examples/elementary/test_map2.py deleted file mode 100644 index d326019..0000000 --- a/examples/elementary/test_map2.py +++ /dev/null @@ -1,215 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -import random -import os - -from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL -from efl import elementary -from efl.elementary.window import StandardWindow -from efl.elementary.box import Box -from efl.elementary.button import Button -from efl.elementary.check import Check -from efl.elementary.ctxpopup import Ctxpopup -from efl.elementary.icon import Icon -from efl.elementary.map import Map, MapOverlayClass, ELM_MAP_OVERLAY_TYPE_CLASS - -EXPAND_BOTH = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND -EXPAND_HORIZ = EVAS_HINT_EXPAND, 0.0 -FILL_BOTH = EVAS_HINT_FILL, EVAS_HINT_FILL -FILL_HORIZ = EVAS_HINT_FILL, 0.5 - -script_path = os.path.dirname(os.path.abspath(__file__)) -img_path = os.path.join(script_path, "images") - -# Initialize efreet so that elm_map can find a proper path for its cache dir -elementary.need_efreet() - -def cb_btn_clear_overlays(bt, m): - for ov in m.overlays: - print(ov, ov.type) - if (ov.type != ELM_MAP_OVERLAY_TYPE_CLASS): - ov.delete() - -def cb_btn_ungroup_overlays(bt, m): - for ov in m.overlays: - if isinstance(ov, MapOverlayClass): - print(ov) - # TODO ungroup instead - for ov2 in ov.members: - print("deleting ov") - ov2.delete() - -def cb_btn_show_overlays(bt, m): - m.overlays_show(m.overlays) - -def cb_chk_overlays_hidden(ck, m): - for ov in m.overlays: - ov.hide = ck.state - -def cb_chk_overlays_paused(ck, m): - for ov in m.overlays: - ov.paused = ck.state - -def cb_overlay_clicked(m, ov): - ov.delete() - -def cb_ctx_overlay_add(li, item, m, lon, lat, min_zoom = 0, icon = None): - item.widget.dismiss() - ov = m.overlay_add(lon, lat) - if min_zoom > 0: - ov.displayed_zoom_min = min_zoom - if icon: - ov.icon = icon - - ov.callback_clicked_set(cb_overlay_clicked) - -def cb_ctx_overlay_add_custom(li, item, m, lon, lat): - item.widget.dismiss() - cont = Icon(m, file=os.path.join(img_path, "sky_01.jpg"), - size_hint_min=(50, 50)) - cont.show() - ov = m.overlay_add(lon, lat) - ov.content = cont - -def cb_ctx_overlay_add_random_color(li, item, m, lon, lat): - item.widget.dismiss() - ov = m.overlay_add(lon, lat) - ov.color = (random.randint(0, 255), random.randint(0, 255), - random.randint(0, 255), 200) - -def cb_ctx_overlay_grouped(li, item, m, lon, lat, sx, sy): - item.widget.dismiss() - cls = m.overlay_class_add() - for x in range(4): - for y in range(4): - (lon, lat) = m.canvas_to_region_convert(sx + x * 10, sy + y * 10) - ov = m.overlay_add(lon, lat) - cls.append(ov) - -def cb_ctx_overlay_bubble(li, item, m, lon, lat): - item.widget.dismiss() - - ov = m.overlay_add(lon, lat) - bub = m.overlay_bubble_add() - bub.follow(ov) - - lb = Label(m, text="You can push contents here") - bub.content_append(lb) - lb.show() - - ic = Icon(m, file=os.path.join(img_path, "sky_01.jpg"), - size_hint_min=(50, 50)) - bub.content_append(ic) - ic.show() - - bt = Button(m, text="clear me") - bt.callback_clicked_add(lambda bt:bub.content_clear()) - bub.content_append(bt) - bt.show() - -def cb_ctx_overlay_line(li, item, m, lon, lat): - item.widget.dismiss() - line = m.overlay_line_add(lon, lat, lon + 1, lat + 1) - -def cb_ctx_overlay_polygon(li, item, m, lon, lat): - item.widget.dismiss() - poly = m.overlay_polygon_add() - poly.region_add(lon, lat) - poly.region_add(lon + 1, lat + 1) - poly.region_add(lon + 1, lat - 1) - poly.region_add(lon - 1, lat) - -def cb_ctx_overlay_circle(li, item, m, lon, lat, radius): - item.widget.dismiss() - m.overlay_circle_add(lon, lat, radius) - -def cb_ctx_overlay_scale(li, item, m, x, y): - item.widget.dismiss() - m.overlay_scale_add(x, y) - -def test(li, item, m, lon, lat): - print(li) - print(item) - print(m) - # ctx.dismiss() - ov = m.overlay_add(lon, lat) - -def cb_map_clicked(m): - (x, y) = m.evas.pointer_canvas_xy_get() - (lon, lat) = m.canvas_to_region_convert(x, y) - cp = Ctxpopup(m) - cp.item_append("%f %f" % (lon, lat), None, None).disabled = True - cp.item_append("Add Overlay here", None, cb_ctx_overlay_add, m, lon, lat) - ic = Icon(m, file=os.path.join(img_path, "logo.png")) - cp.item_append("Add Overlay with icon", None, cb_ctx_overlay_add, m, lon, lat, 0, ic) - cp.item_append("Add Overlay custom content", None, cb_ctx_overlay_add_custom, m, lon, lat) - cp.item_append("Add Overlay random color", None, cb_ctx_overlay_add_random_color, m, lon, lat) - cp.item_append("Add Overlay (min zoom 4)", None, cb_ctx_overlay_add, m, lon, lat, 4) - cp.item_append("Add 16 Grouped Overlays", None, cb_ctx_overlay_grouped, m, lon, lat, x, y) - cp.item_append("Add one with a bubble attached", None, cb_ctx_overlay_bubble, m, lon, lat) - cp.item_append("Add an Overlay Line", None, cb_ctx_overlay_line, m, lon, lat) - cp.item_append("Add an Overlay Polygon", None, cb_ctx_overlay_polygon, m, lon, lat) - cp.item_append("Add an Overlay Circle", None, cb_ctx_overlay_circle, m, lon, lat, 10) - cp.item_append("Add an Overlay Scale", None, cb_ctx_overlay_scale, m, x, y) - cp.move(x, y) - cp.show() - -def map_overlays_clicked(obj): - win = StandardWindow("map2", "Map Overlay test", autodel=True, - size=(600, 600)) - if obj is None: - win.callback_delete_request_add(lambda o: elementary.exit()) - - vbox = Box(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) - win.resize_object_add(vbox) - vbox.show() - - map_obj = Map(win, zoom=2, size_hint_weight=EXPAND_BOTH, - size_hint_align=FILL_BOTH) - map_obj.callback_clicked_add(cb_map_clicked) - vbox.pack_end(map_obj) - map_obj.show() - - # overlays - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) - vbox.pack_end(hbox) - hbox.show() - - ck = Check(win, text="overlays hidden") - ck.callback_changed_add(cb_chk_overlays_hidden, map_obj) - hbox.pack_end(ck) - ck.show() - - ck = Check(win, text="overlays paused") - ck.callback_changed_add(cb_chk_overlays_paused, map_obj) - hbox.pack_end(ck) - ck.show() - - bt = Button(win, text="clear overlays") - bt.callback_clicked_add(cb_btn_clear_overlays, map_obj) - hbox.pack_end(bt) - bt.show() - - bt = Button(win, text="ungroup (BROKEN)") - bt.callback_clicked_add(cb_btn_ungroup_overlays, map_obj) - hbox.pack_end(bt) - bt.show() - - bt = Button(win, text="overlays_show()") - bt.callback_clicked_add(cb_btn_show_overlays, map_obj) - hbox.pack_end(bt) - bt.show() - - win.resize(600, 600) - win.show() - - -if __name__ == "__main__": - elementary.init() - - map_overlays_clicked(None) - - elementary.run() - elementary.shutdown() diff --git a/examples/elementary/test_map3.py b/examples/elementary/test_map3.py deleted file mode 100644 index 3562fc8..0000000 --- a/examples/elementary/test_map3.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL -from efl import elementary -from efl.elementary.window import StandardWindow -from efl.elementary.box import Box -from efl.elementary.button import Button -from efl.elementary.ctxpopup import Ctxpopup -from efl.elementary.entry import Entry -from efl.elementary.hoversel import Hoversel -from efl.elementary.label import Label -from efl.elementary.map import Map, ELM_MAP_ROUTE_TYPE_MOTOCAR, \ - ELM_MAP_ROUTE_METHOD_FASTEST, ELM_MAP_SOURCE_TYPE_ROUTE, \ - ELM_MAP_SOURCE_TYPE_NAME -from efl.elementary.separator import Separator - -EXPAND_BOTH = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND -EXPAND_HORIZ = EVAS_HINT_EXPAND, 0.0 -FILL_BOTH = EVAS_HINT_FILL, EVAS_HINT_FILL -FILL_HORIZ = EVAS_HINT_FILL, 0.5 - -_from = None -_to = None - -# Initialize efreet so that elm_map can find a proper path for its cache dir -elementary.need_efreet() - -def cb_btn_goto(bt, m): - m.zoom = 12 - m.region_show(9.204, 45.446) - -def cb_ctx_set_from(ctx, item, m, lon, lat): - global _from - - ctx.dismiss() - if _from is None: - _from = m.overlay_add(lon, lat) - _from.color = (150, 0, 0, 150) - else: - _from.region = (lon, lat) - -def cb_ctx_set_to(ctx, item, m, lon, lat): - global _to - - ctx.dismiss() - if _to is None: - _to = m.overlay_add(lon, lat) - _to.color = (0, 0, 150, 150) - else: - _to.region = (lon, lat) - -def cb_btn_calc_route(bt, m): - if not (_from and _to): - return - - (flon, flat) = _from.region - (tlon, tlat) = _to.region - m.route_add(ELM_MAP_ROUTE_TYPE_MOTOCAR, - ELM_MAP_ROUTE_METHOD_FASTEST, - flon, flat, tlon, tlat, cb_route) - - lb = m.data["lb_distance"] - lb.text = "requesting route..." - -def cb_btn_search_name(bt, m, en): - m.name_add(en.text, 0, 0, cb_search_name, en) - en.text = "searching..." - -def cb_search_name(m, name, en): - global _from - - en.text = name.address - (lon, lat) = name.region - m.zoom = 12 - m.region_show(lon, lat) - - if _from is None: - _from = m.overlay_add(lon, lat) - _from.color = (150, 0, 0, 150) - else: - _from.region = (lon, lat) - -def cb_btn_search_region(bt, m, en): - if _from is None: - return - (lon, lat) = _from.region - m.name_add(None, lon, lat, cb_search_region, en) - en.text = "searching..." - -def cb_search_region(m, name, en): - global _name - - en.text = name.address - -def cb_route(m, route): - nodes = route.node.count('\n') - lb = m.data["lb_distance"] - lb.text = "distance: %.2f Km nodes:%d" % (route.distance, nodes) - - ov = m.overlay_route_add(route) - - print("Node: %s" % (route.node)) - print("Waypoint %s" % (route.waypoint)) - -def cb_btn_clear_overlays(btn, m): - for ov in m.overlays: - if ov != _from and ov != _to: - ov.delete() - -def cb_map_clicked(m): - (x, y) = m.evas.pointer_canvas_xy_get() - (lon, lat) = m.canvas_to_region_convert(x, y) - cp = Ctxpopup(m) - cp.item_append("%f %f" % (lon, lat)).disabled = True - cp.item_append("Set start point", None, cb_ctx_set_from, m, lon, lat) - cp.item_append("Set end point", None, cb_ctx_set_to, m, lon, lat) - cp.move(x, y) - cp.show() - -def cb_map_load(m): - lb = m.data["lb_load_status"] - status = m.tile_load_status - lb.text = "tile_load_status: %d / %d" % (status[1], status[0]) - -def cb_hovsel_selected(hov, item, m, type, name): - m.source_set(type, item.text) - hov.text = "%s: %s" % (name, item.text) - -def map_route_clicked(obj): - win = StandardWindow("maproute", "Map Route test", autodel=True, - size=(600, 600)) - if obj is None: - win.callback_delete_request_add(lambda o: elementary.exit()) - - vbox = Box(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) - win.resize_object_add(vbox) - vbox.show() - - map_obj = Map(win, zoom=2, size_hint_weight=EXPAND_BOTH, - size_hint_align=FILL_BOTH) - map_obj.callback_clicked_add(cb_map_clicked) - map_obj.callback_tile_load_add(cb_map_load) - map_obj.callback_tile_loaded_add(cb_map_load) - vbox.pack_end(map_obj) - map_obj.show() - - lb = Label(win, text="load_status: 0 / 0") - vbox.pack_end(lb) - lb.show() - map_obj.data["lb_load_status"] = lb - - lb = Label(win) - lb.text = "First set Start and End point and then click 'Calc Route !'" - vbox.pack_end(lb) - lb.show() - map_obj.data["lb_distance"] = lb - - # info - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) - vbox.pack_end(hbox) - hbox.show() - - # route - src_type = ELM_MAP_SOURCE_TYPE_ROUTE - - ho = Hoversel(win, hover_parent=win, - text="Routes: %s" % (map_obj.source_get(src_type))) - for src in map_obj.sources_get(src_type): - ho.item_add(src) - ho.callback_selected_add(cb_hovsel_selected, map_obj, src_type, "Routes") - hbox.pack_end(ho) - ho.show() - - sep = Separator(win) - sep.show() - hbox.pack_end(sep) - - bt = Button(win, text="GOTO") - bt.callback_clicked_add(cb_btn_goto, map_obj) - hbox.pack_end(bt) - bt.show() - - bt = Button(win, text="Calc Route !") - bt.callback_clicked_add(cb_btn_calc_route, map_obj) - hbox.pack_end(bt) - bt.show() - - bt = Button(win, text="clear route overlays") - bt.callback_clicked_add(cb_btn_clear_overlays, map_obj) - hbox.pack_end(bt) - bt.show() - - # names - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) - vbox.pack_end(hbox) - hbox.show() - - src_type = ELM_MAP_SOURCE_TYPE_NAME - - ho = Hoversel(win, hover_parent=win, - text="Names: %s" % (map_obj.source_get(src_type))) - for src in map_obj.sources_get(src_type): - ho.item_add(src) - ho.callback_selected_add(cb_hovsel_selected, map_obj, src_type, "Names") - hbox.pack_end(ho) - ho.show() - - en = Entry(win, scrollable=True, text="type an address here", - size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) - # en.single_line = True - hbox.pack_end(en) - en.show() - - bt = Button(win, text="Search Address !") - bt.callback_clicked_add(cb_btn_search_name, map_obj, en) - hbox.pack_end(bt) - bt.show() - - hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ, - size_hint_align=FILL_HORIZ) - vbox.pack_end(hbox) - hbox.show() - - en = Entry(win, scrollable=True, disabled=True, - text="place the start point and press the button", - size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) - # en.single_line = True - hbox.pack_end(en) - en.show() - - bt = Button(win, text="Search start point Region") - bt.callback_clicked_add(cb_btn_search_region, map_obj, en) - hbox.pack_start(bt) - bt.show() - - win.show() - - -if __name__ == "__main__": - elementary.init() - - map_route_clicked(None) - - elementary.run() - elementary.shutdown() --
