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

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

initial test of a base-class to simplify stuff like getting data or sending events

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