fixed erronous gconf path in postins script (thanks to hutchinsfairy)
[wifi-assistant] / package / src / wifi_assistant / gui / config_gui.py
1 #!/usr/bin/python2.5
2 import gtk, hildon
3
4 def _(str):
5     return str
6
7 class ConfigGui():
8     
9     def __init__(self, launcher, application_settings, network_settings, hildon_program, hildon_window, list_store):
10         self._launcher = launcher
11         self._application_settings = application_settings
12         self._network_settings = network_settings
13         self._program = hildon_program
14         self._win = hildon_window
15         self._model = list_store
16
17
18     def main(self):
19         self._win.set_title(_("Wifi Assistant"))
20         pannable_area = hildon.PannableArea()
21         from wifi_assistant.gui.network_settings_view import NetworkSettingsView
22         view = NetworkSettingsView(self._model, pannable_area, self._editNetworkSetting)
23         self._win.add(pannable_area)
24         self._win.set_app_menu(self._createMenu())
25         self._win.connect("destroy", gtk.main_quit, None)
26
27         view.update()
28         self._win.show_all()
29
30     
31     def _createMenu(self):
32         menu = hildon.AppMenu()
33         
34         about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
35         about.set_label(_("About"))
36         about.connect("clicked", self._showAboutDialog)
37         menu.append(about)
38      
39         settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
40         settings.set_label(_("Settings"))
41         settings.connect("clicked", self._editApplicationSettings)
42         menu.append(settings)
43         
44         add = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
45         add.set_label(_("Add network"))
46         add.connect("clicked", self._addNetworkSetting)
47         menu.append(add)
48         
49         delete = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
50         delete.set_label(_("Delete networks"))
51         delete.connect("clicked", self._deleteNetworkSetting)
52         menu.append(delete)
53         
54         menu.show_all()
55         return menu
56     
57
58     def _showAboutDialog(self, x):
59         from wifi_assistant.gui.about_dialog import AboutDialog
60         AboutDialog(self._launcher, self._win).show()
61     
62         
63     def _editApplicationSettings(self, x):
64         from wifi_assistant.gui.application_settings_dialog import ApplicationSettingsDialog
65         use_popup = self._application_settings.getUsePopup()
66         url_to_open = self._network_settings.getDefaultSettings().getBrowserOptions()['url']
67         ApplicationSettingsDialog(self._win, self._editApplicationSettingsCallback).show(use_popup, url_to_open)
68     
69     def _editApplicationSettingsCallback(self, popup, url):
70         self._application_settings.setUsePopup(popup)
71         settings = self._network_settings.getDefaultSettings()
72         settings.getBrowserOptions()['url'] = url
73         self._network_settings.save(settings)
74     
75
76     def _editNetworkSetting(self, ssid, model, iter):
77         from wifi_assistant.gui.edit_network_dialog import EditNetworkDialog
78         network_name, x = model.get(iter, 0, 1)  
79         EditNetworkDialog(self._win, self._editNetworkSettingCallback).show(iter, network_name)
80
81     def _editNetworkSettingCallback(self, iter, ssid, launch_browser):
82         # TODO: REMOVE ssid from arg list, extract like delete networks do? 
83         #self._settings.setLaunchSetting(ssid, launch_browser)    
84         settings = self._network_settings.get(ssid)
85         settings.setLaunchingOfBrowserEnabled(launch_browser)
86         self._network_settings.save(settings)
87         self._model.set(iter, 1, launch_browser)
88     
89     
90     def _addNetworkSetting(self, x):
91         from wifi_assistant.gui.add_network_dialog import AddNetworkDialog
92         AddNetworkDialog(self._win, self._addNetworkSettingCallback).show()
93         
94     def _addNetworkSettingCallback(self, network_name, launch_browser):
95         settings = self._network_settings.getDefaultSettings()
96         settings.setNetworkName(network_name)
97         settings.setLaunchingOfBrowserEnabled(launch_browser)
98         self._network_settings.save(settings)
99         self._model.append([network_name, launch_browser])
100         
101         # FIXME: on append, if len == 1, change main view from label to tree view
102         # but do this with the model
103
104
105     def _deleteNetworkSetting(self, x):
106         from wifi_assistant.gui.delete_networks_dialog import DeleteNetworksDialog
107         DeleteNetworksDialog(self._model, self._deleteNetworkSettingCallback).show()
108     
109     def _deleteNetworkSettingCallback(self, model, row_references):
110         for ref in row_references:
111             path = ref.get_path()
112             iter = model.get_iter(path)
113             ssid, x = model.get(iter, 0, 1)  
114             settings = self._network_settings.get(ssid)
115             self._network_settings.delete(settings)
116             model.remove(iter)