root/gmeye/trunk/gmeye_demo

Revision 1918, 3.3 kB (checked in by wrobe..@pld-linux.org, 1 year ago)

- display roads layer
- use cprofile if possible

  • Property svn:executable set to *
Line 
1 #!/usr/bin/python
2
3 import pygtk
4 pygtk.require('2.0') 
5
6 import sys
7 import time
8
9 import gtk
10 from gaphas import Canvas, GtkView
11 from gaphas.util import text_align, text_set_font
12
13 from gmeye.loader import Loader
14 import gmeye.items as item
15 from gmeye.tool import DefaultTool
16
17 class City(item.Point):
18     def draw(self, context):
19         super(City, self).draw(context)
20         cr = context.cairo
21
22         cr.save()
23         if context.selected:
24             cr.set_source_rgb(0, 0, 0)
25             text_set_font(cr, 'sans bold 0.2')
26         elif context.hovered:
27             cr.set_source_rgba(0, 0, 1, 0.4)
28             text_set_font(cr, 'sans 0.2')
29         else:
30             cr.set_source_rgba(0, 0, 1)
31             text_set_font(cr, 'sans 0.2')
32         cr.move_to(0, 0)
33         cr.show_text(self._fields['fullname'])
34         cr.stroke()
35         cr.restore()
36        
37
38 class RailRoad(item.Line):
39     pass
40
41
42 def create_window(canvas, title, zoom=1.0):
43     view = GtkView()
44     view.tool = DefaultTool()
45
46     w = gtk.Window()
47     w.set_title(title)
48     h = gtk.HBox()
49     w.add(h)
50
51     w.connect('destroy', gtk.main_quit)
52
53     view.canvas = canvas
54     view.zoom(zoom)
55     view.set_size_request(600, 400)
56     hs = gtk.HScrollbar(view.hadjustment)
57     vs = gtk.VScrollbar(view.vadjustment)
58
59     t = gtk.Table(2,2)
60     h.add(t)
61     t.attach(view, 0, 1, 0, 1)
62     t.attach(hs, 0, 1, 1, 2, xoptions=gtk.FILL, yoptions=gtk.FILL)
63     t.attach(vs, 1, 2, 0, 1, xoptions=gtk.FILL, yoptions=gtk.FILL)
64
65     def hovered(view, item):
66         if isinstance(item, City):
67             print 'city', item.id
68         elif isinstance(item, RailRoad):
69             print 'road', item.id
70
71     view.connect('hover-changed', hovered)
72
73     return w
74
75 def main():
76     c = Canvas()
77     w = create_window(c, 'GM Eye')
78
79     mloader = Loader(sys.argv[1])
80     mloader.addLayer('borders')
81     mloader.addLayer('roads', cls=item.Layer, id='rdline_id')
82 #    mloader.addLayer('rail', item.Layer, RailRoad),
83 #    mloader.addLayer('pcities', item.Layer, RailRoad),
84     mloader.addLayer('mcities', cls=item.Layer, id='uf1', fields=['fullname'])
85     mloader.addLayer('poi', cls=item.Layer, id='uf1', fields=['fullname'])
86
87     factory = mloader.factory
88     factory.setFeatureClass('mcities', factory.POINT, City)
89     factory.setFeatureClass('poi', factory.POINT, City)
90
91     layers = mloader.load()
92
93     t1 = time.time()
94     for layer in layers:
95         layer.matrix.scale(60, 60)
96         c.add(layer)
97
98     for layer in layers:
99         for d in layer.features().values():
100             d.matrix.translate(d.x, d.y)
101             #print d.x, d.y
102             c.add(d, parent=layer)
103         print 'added to canvas layer: %s' % layer.name
104
105     print 'total time: %d' % (time.time() - t1)
106    
107     w.show_all()
108     gtk.main()
109
110 if __name__ == '__main__':
111     try:
112         import cProfile
113         import pstats
114         cProfile.run('main()', 'demo-gaphas.prof')
115         p = pstats.Stats('demo-gaphas.prof')
116         p.strip_dirs().sort_stats('time').print_stats(20)
117     except ImportError, ex:
118         import hotshot, hotshot.stats
119         import gc
120         prof = hotshot.Profile('demo-gaphas.prof')
121         prof.runcall(main)
122         prof.close()
123         stats = hotshot.stats.load('demo-gaphas.prof')
124         stats.strip_dirs()
125         stats.sort_stats('time', 'calls')
126         stats.print_stats(20)
127
128 # vim: sw=4:et:
Note: See TracBrowser for help on using the browser.