1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import ConfigParser
20 import dbus
21
22 POSITION_FIELDS_NONE = 0
23 POSITION_FIELDS_LATITUDE = 1 << 0
24 POSITION_FIELDS_LONGITUDE = 1 << 1
25 POSITION_FIELDS_ALTITUDE = 1 << 2
26
27 ADDRESS_FIELD_STREET = "street"
28 ADDRESS_FIELD_AREA = "area"
29 ADDRESS_FIELD_LOCALITY = "locality"
30 ADDRESS_FIELD_REGION = "region"
31 ADDRESS_FIELD_COUNTRY = "country"
32
33 RESOURCE_NONE = 0
34 RESOURCE_NETWORK = 1 << 0
35 RESOURCE_CELL = 1 << 1
36 RESOURCE_GPS = 1 << 2
37 RESOURCE_ALL = (1 << 10) - 1
38
39 ACCURACY_LEVEL_NONE = 0
40 ACCURACY_LEVEL_COUNTRY = 1
41 ACCURACY_LEVEL_REGION = 2
42 ACCURACY_LEVEL_LOCALITY = 3
43 ACCURACY_LEVEL_POSTALCODE = 4
44 ACCURACY_LEVEL_STREET = 5
45 ACCURACY_LEVEL_DETAILED = 6
46
47 INTERFACE_NONE = 0
48 INTERFACE_ADDRESS = 1 << 0
49 INTERFACE_POSITION = 1 << 1
50 INTERFACE_GEOCODE = 1 << 2
51 INTERFACE_REVERSE_GEOCODE = 1 << 3
52
53 STATUS_ERROR = 0
54 STATUS_UNAVAILABLE = 1
55 STATUS_ACQUIRING = 2
56 STATUS_AVAILABLE = 3
57
58
59 MASTER_IFACE = "org.freedesktop.Geoclue.Master"
60 MASTER_PATH = "/org/freedesktop/Geoclue/Master"
61
62 ADDRESS_IFACE = "org.freedesktop.Geoclue.Address"
63 ADDRESS_PATH = "/org/freedesktop/Geoclue/Address"
64
65 POSITION_IFACE = "org.freedesktop.Geoclue.Position"
66 POSITION_PATH = "/org/freedesktop/Geoclue/Position"
67
68 GEOCLUE_IFACE = "org.freedesktop.Geoclue"
69 GEOCLUE_PATH = "/org/freedesktop/Geoclue"
70
71 GEONAMES_IFACE = "org.freedesktop.Geoclue.Providers.Geonames"
72 GEONAMES_PATH = "/org/freedesktop/Geoclue/Providers/Geonames"
73
74 REVERSE_IFACE = "org.freedesktop.Geoclue.ReverseGeocode"
75 REVERSE_PATH = "/org/freedesktop/Geoclue/ReverseGeocode"
76
77
79 pass
80
82 '''
83 Takes the path to a .provider file
84 '''
85
86 file = ConfigParser.RawConfigParser()
87 file.read(filename)
88
89 self.name = file.get('Geoclue Provider', 'Name')
90 self.path = file.get('Geoclue Provider', 'Path')
91 self.service = file.get('Geoclue Provider', 'Service')
92 interfaces = file.get('Geoclue Provider', 'Interfaces').split(";")
93 self.interfaces = INTERFACE_NONE
94
95 for interface in interfaces:
96 if interface == "org.freedesktop.Geoclue.Address":
97 self.interfaces += INTERFACE_ADDRESS
98 elif interface == "org.freedesktop.Geoclue.Position":
99 self.interfaces += INTERFACE_POSITION
100 elif interface == "org.freedesktop.Geoclue.Geocode":
101 self.interfaces += INTERFACE_GEOCODE
102 elif interface == "org.freedesktop.Geoclue.ReverseGeocode":
103 self.interfaces += INTERFACE_REVERSE_GEOCODE
104
106 self.bus = dbus.SessionBus()
107 return self.bus.get_object(self.service, self.path)
108