d2a665348cc8a5d345ebce95bf96595b7197b471
[wifi-assistant] / package / src / wifi_assistant / settings.py
1 #!/usr/bin/python2.5
2 from gnome import gconf
3 import gtk, gobject
4
5 class Settings():
6     
7     def __init__(self, gconf_root_dir='/apps/maemo/wifi-assistant'):
8         self._gc = gconf.client_get_default()
9         self._gconfRootDir = gconf_root_dir
10         self._gconfLaunchDirectory = gconf_root_dir + '/launch'
11         self._gconfPopupKey = gconf_root_dir + '/daemon'
12         self._gconfUrlToOpen = gconf_root_dir + '/url-to-open'
13         self._listeners = {}
14     
15     # ---- public API __________________________________________________________
16
17     def getLaunchSetting(self, ssid):
18         """Returns True or False to indicate that the user wants a browser
19            launched or not, otherwise None (the ssid is not recognized)"""
20            
21         value = self._gc.get_without_default(self._get_launch_key(ssid))
22         if value is None:
23             return None
24         return value.get_bool()
25
26     
27     def getLaunchSettings(self):
28         """Returns a ListStore with one Row per SSID"""
29         
30         store = gtk.ListStore(str, gobject.TYPE_BOOLEAN)
31         entries = self._gc.all_entries(self._gconfLaunchDirectory)
32         directoryPathLength = len(self._gconfLaunchDirectory) + 1
33         for entry in entries:
34             ssidName = entry.get_key()[directoryPathLength:]
35             launchBrowser = entry.get_value().get_bool()
36             store.append([ssidName, launchBrowser])
37         
38         return store
39     
40
41     def setLaunchSetting(self, ssid, mode):
42         """Saves the setting for the specified ssid. mode is True or False"""
43         
44         self._gc.set_bool(self._get_launch_key(ssid), mode)
45     
46     
47     def deleteLaunchSetting(self, ssid):
48         """Removes a setting for the specified ssid."""
49         
50         self._gc.unset(self._get_launch_key(ssid))
51         
52         
53     def addUsePopupListener(self, callback):
54         """Registers a listener/callback to changes on Use Daemon setting"""
55         
56         if len(self._listeners) == 0:
57             self._gc.add_dir(self._gconfRootDir, gconf.CLIENT_PRELOAD_NONE)
58         ref_id = self._gc.notify_add(self._gconfPopupKey, callback)
59         self._listeners[callback] = ref_id
60         
61     
62     def removeUsePopupListener(self, callback):
63         """Unregisters the listener/callback"""
64         
65         if (self._listeners.has_key(callback)):
66             ref_id = self._listeners.pop(callback)
67             self._gc.notify_remove(ref_id)
68             
69             if len(self._listeners) == 0:
70                 self._gc.remove_dir(self._gconfRootDir)
71     
72             
73     def getUsePopup(self):
74         """Tells whether to use the daemon or not."""
75         
76         return self._gc.get_bool(self._gconfPopupKey) is True
77
78
79     def setUsePopup(self, mode):
80         """mode is either True or False."""
81         
82         self._gc.set_bool(self._gconfPopupKey, mode)
83         
84     
85     def getUrlToOpen(self):
86         """Returns the URL to open when launching a browser"""
87         
88         return self._gc.get_string(self._gconfUrlToOpen) or 'http://wifi-assistant.garage.maemo.org/ping/'
89
90
91     def setUrlToOpen(self, url):
92         """Sets the URL to open when launching a browser"""
93         
94         self._gc.set_string(self._gconfUrlToOpen, url)
95     
96     
97     # ---- private _____________________________________________________________
98         
99     def _get_launch_key(self, ssid):
100         return self._gconfLaunchDirectory + '/' + ssid
101
102
103 if __name__ == "__main__":
104     print Settings().getLaunchSetting('limbergwendt2')