source: subversion/applications/routing/pyroute/dataStore.py @ 5671

Last change on this file since 5671 was 5671, checked in by ojw, 12 years ago

download on request

File size: 3.1 KB
Line 
1class DataStore:
2    def __init__(self, globals):
3        self.options = {}
4        self.state = {}
5        self.globals = globals
6       
7    def handleEvent(self,event):
8        action,params = event.split(':',1)
9        print "Handling event %s" % event
10        if(action == 'menu'):
11            self.state['menu'] = params
12        elif(action == 'mode'):
13            self.state['mode'] = params
14            self.closeAllMenus()
15        elif(action == 'option'):
16            method, name = params.split(':',1)
17            if(method == 'toggle'):
18                self.options[name] = not self.getOption(name)
19            elif(method == 'add'):
20                name,add = name.split(':')
21                self.options[name] = self.getOption(name,0) + float(add)
22                print "adding %f to %s, new = %s" % (float(add),name,str(self.getOption(name)))
23        elif(action == 'route'):
24          if(not self.globals.ownpos['valid']):
25            print "Can't route, don't know start position"
26            return
27          if(params == 'clicked'):
28            lat,lon = self.getState('clicked')
29          else:
30            lat, lon = [float(ll) for ll in params.split(':',1)]
31          transport = self.globals.modules['data'].getState('mode')
32          self.globals.modules['route'].setStartLL(self.globals.ownpos['lat'],self.globals.ownpos['lon'], transport)
33          self.globals.modules['route'].setEndLL(lat,lon,transport)
34          self.globals.modules['route'].setMode('route')         
35          self.globals.modules['route'].update()
36          self.globals.forceRedraw()
37          self.closeAllMenus()
38        elif(action == 'ownpos'):
39          lat,lon = self.getState('clicked')
40          self.globals.ownpos = {'lat':lat,'lon':lon,'valid':True}
41          print "Set ownpos to %f,%f" % (lat,lon)
42          self.closeAllMenus()
43          self.globals.handleUpdatedPosition()
44        elif(action == 'direct'):
45          transport = self.globals.modules['data'].getState('mode')
46          self.globals.modules['route'].setStartLL(self.globals.ownpos['lat'],self.globals.ownpos['lon'], transport)
47          if(params == 'clicked'):
48            lat,lon = self.getState('clicked')
49          else:
50            lat, lon = [float(ll) for ll in params.split(':',1)]
51          self.globals.modules['route'].setEndLL(lat,lon,transport)
52          self.globals.modules['route'].setMode('direct')
53          self.globals.modules['route'].update()
54          self.globals.forceRedraw()
55          self.closeAllMenus()
56        elif(action == 'download'):
57          self.globals.modules['osmdata'].download( \
58            self.globals.ownpos['lat'],
59            self.globals.ownpos['lon'],
60            0.05)
61       
62       
63       
64    def closeAllMenus(self):
65        self.setState('menu',None)
66       
67    def getState(self,name):
68        return(self.state.get(name, None))
69    def setState(self,name,value):
70        self.state[name] = value
71    def getOption(self,name,default=None):
72        return(self.options.get(name,default))
73    def setOption(self,name,value):
74        self.options[name] = value
Note: See TracBrowser for help on using the repository browser.