[libchamplain] [demos] Added polygons.py (similar to polygons.c)
- From: JiÅÃ Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] [demos] Added polygons.py (similar to polygons.c)
- Date: Sat, 14 Jul 2012 21:38:15 +0000 (UTC)
commit 48b4841a07c9be7034be17f9b0317fd322845852
Author: Pablo Castellano <pablo anche no>
Date: Mon Jul 9 22:19:31 2012 +0200
[demos] Added polygons.py (similar to polygons.c)
demos/polygons.py | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 129 insertions(+), 0 deletions(-)
---
diff --git a/demos/polygons.py b/demos/polygons.py
new file mode 100755
index 0000000..a99a863
--- /dev/null
+++ b/demos/polygons.py
@@ -0,0 +1,129 @@
+#!/usr/bin/env python
+# Copyright (C) 2012 Pablo Castellano <pablog gnome org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+from gi.repository import Clutter, Champlain
+Clutter.init([])
+
+PADDING = 10
+
+def zoom_in(widget, event, view):
+ view.zoom_in()
+
+def zoom_out(widget, event, view):
+ view.zoom_out()
+
+def make_button(text):
+ black = Clutter.Color.new(0x00, 0x00, 0x00, 0xff)
+ white = Clutter.Color.new(0xff, 0xff, 0xff, 0xff)
+
+ button = Clutter.Group()
+
+ button_bg = Clutter.Rectangle.new_with_color(white)
+ button_bg.set_opacity(0xcc)
+ button.add_actor(button_bg)
+
+ button_text = Clutter.Text.new_full("Sans 10", text, black)
+ button.add_actor(button_text)
+
+ (width, height) = button_text.get_size()
+ button_bg.set_size(width + PADDING * 2, height + PADDING * 2)
+ button_bg.set_position(0, 0)
+ button_text.set_position(PADDING, PADDING)
+
+ return button
+
+def append_point(layer, lon, lat):
+ coord = Champlain.Coordinate.new_full(lon, lat)
+ layer.add_node(coord)
+
+def main_quit(data):
+ Clutter.main_quit()
+
+
+if __name__ == '__main__':
+ total_width = 0
+
+ stage = Clutter.Stage()
+ stage.set_size(800, 600)
+ # It complains about the number of arguments passed to main_quit()
+ #stage.connect('destroy', Clutter.main_quit)
+ stage.connect('destroy', main_quit)
+
+ # Create the map view
+ view = Champlain.View()
+ view.set_size(800, 600)
+ stage.add_actor(view)
+
+ # Create the buttons
+ buttons = Clutter.Group()
+ buttons.set_position(PADDING, PADDING)
+
+ button = make_button('Zoom in')
+ buttons.add_actor(button)
+ button.set_reactive(True)
+ (width, height) = button.get_size()
+ total_width += width + PADDING;
+ #button.connect('button-release-event', zoom_in, view)
+ button.connect('button-release-event', zoom_in, view)
+
+ button = make_button('Zoom out')
+ buttons.add_actor(button)
+ button.set_reactive(True)
+ button.set_position(total_width, 0)
+ (width, height) = button.get_size()
+ button.connect('button-release-event', zoom_out, view)
+
+ stage.add_actor(buttons)
+
+ # Draw a line
+ layer = Champlain.PathLayer()
+ # Cheap approx of Highway 10
+ append_point(layer, 45.4104, -73.2846)
+ append_point(layer, 45.4178, -73.2239)
+ append_point(layer, 45.4176, -73.2181)
+ append_point(layer, 45.4151, -73.2126)
+ append_point(layer, 45.4016, -73.1926)
+ append_point(layer, 45.3994, -73.1877)
+ append_point(layer, 45.4000, -73.1815)
+ append_point(layer, 45.4151, -73.1218)
+ layer.set_stroke_width(4.0)
+ view.add_layer(layer)
+
+ dash = [6, 2]
+ layer.set_dash(dash)
+
+ # Draw a path
+ layer = Champlain.PathLayer()
+ append_point(layer, 45.1386, -73.9196)
+ append_point(layer, 45.1229, -73.8991)
+ append_point(layer, 45.0946, -73.9531)
+ append_point(layer, 45.1085, -73.9714)
+ append_point(layer, 45.1104, -73.9761)
+ layer.set_closed(True)
+ layer.set_fill(True)
+ layer.set_visible(True)
+ view.add_layer(layer)
+
+ # Finish initialising the map view
+ view.set_zoom_level(8)
+ view.set_kinetic_mode(True)
+
+ view.center_on(45.466, -73.75)
+
+ stage.show()
+ Clutter.main()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]