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
19 self._win.set_title(_("Wifi Assistant"))
20 ssid_list = self._createNetworkSettingsView(self._model)
21 pannable_area= hildon.PannableArea()
22 pannable_area.add(ssid_list)
23 self._win.add(pannable_area)
24 self._win.set_app_menu(self._createMenu())
25 self._win.connect("destroy", gtk.main_quit, None)
29 def _createMenu(self):
30 menu = hildon.AppMenu()
32 about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
33 about.set_label(_("About"))
34 about.connect("clicked", self._showAboutDialog)
37 settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
38 settings.set_label(_("Settings"))
39 settings.connect("clicked",self._editApplicationSettings)
42 add = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
43 add.set_label(_("Add network"))
44 add.connect("clicked", self._addNetworkSetting)
47 delete = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
48 delete.set_label(_("Delete networks"))
49 delete.connect("clicked", self._deleteNetworkSetting)
56 def _showAboutDialog(self, x):
57 from wifi_assistant.gui.about_dialog import AboutDialog
58 AboutDialog(self._launcher, self._win).show()
61 def _editApplicationSettings(self, x):
62 from wifi_assistant.gui.application_settings_dialog import ApplicationSettingsDialog
63 use_popup = self._application_settings.getUsePopup()
64 url_to_open = self._network_settings.getDefaultSettings().getBrowserOptions()['url']
65 ApplicationSettingsDialog(self._win, self._editApplicationSettingsCallback).show(use_popup, url_to_open)
67 def _editApplicationSettingsCallback(self, popup, url):
68 self._application_settings.setUsePopup(popup)
69 settings = self._network_settings.getDefaultSettings()
70 settings.getBrowserOptions()['url'] = url
71 self._network_settings.save(settings)
74 def _editNetworkSetting(self, ssid, model, iter):
75 from wifi_assistant.gui.edit_network_dialog import EditNetworkDialog
76 network_name, x = model.get(iter, 0, 1)
77 EditNetworkDialog(self._win, self._editNetworkSettingCallback).show(iter, network_name)
79 def _editNetworkSettingCallback(self, iter, ssid, launch_browser):
80 # TODO: REMOVE ssid from arg list, extract like delete networks do?
81 #self._settings.setLaunchSetting(ssid, launch_browser)
82 settings = self._network_settings.get(ssid)
83 settings.setLaunchingOfBrowserEnabled(launch_browser)
84 self._network_settings.save(settings)
85 self._model.set(iter, 1, launch_browser)
88 def _addNetworkSetting(self, x):
89 from wifi_assistant.gui.add_network_dialog import AddNetworkDialog
90 AddNetworkDialog(self._win, self._addNetworkSettingCallback).show()
92 def _addNetworkSettingCallback(self, network_name, launch_browser):
93 settings = self._network_settings.getDefaultSettings()
94 settings.setNetworkName(network_name)
95 settings.setLaunchingOfBrowserEnabled(launch_browser)
96 self._network_settings.save(settings)
97 self._model.append([network_name, launch_browser])
99 # FIXME: on append, if len == 1, change main view from label to tree view
100 # but do this with the model
103 def _deleteNetworkSetting(self, x):
104 from wifi_assistant.gui.delete_networks_dialog import DeleteNetworksDialog
105 DeleteNetworksDialog(self._model, self._deleteNetworkSettingCallback).show()
107 def _deleteNetworkSettingCallback(self, model, row_references):
108 for ref in row_references:
109 path = ref.get_path()
110 iter = model.get_iter(path)
111 ssid, x = model.get(iter, 0, 1)
112 settings = self._network_settings.get(ssid)
113 self._network_settings.delete(settings)
117 def _createNetworkSettingsView(self, model):
118 # view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
119 # view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
122 return gtk.Label(_('There are no launch settings saved for any network'))
124 view = gtk.TreeView(model)
125 view.set_border_width(5)
127 def boolean_func(column, cell, model, iter):
128 if model.get_value(iter, 1):
132 cell.set_property('stock-id', stock_id)
134 launch_cell = gtk.CellRendererPixbuf()
135 launch_cell.set_fixed_size(100, 50)
136 view.insert_column_with_data_func(1, _('Launch'), launch_cell, boolean_func)
137 # toggle_cell = gtk.CellRendererToggle()
138 # toggle_cell.set_fixed_size(100, 50)
139 # view.append_column( gtk.TreeViewColumn( '', toggle_cell, active=1))
141 tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text = 0)
142 tvcolumn.set_expand(True)
143 view.append_column(tvcolumn)
145 view.connect('row-activated', self._rowActivatedCallback)
146 view.set_search_column(0)
147 tvcolumn.set_sort_column_id(0)
152 def _rowActivatedCallback(self, treeview, path, view_column):
153 model = treeview.get_model()
154 iter = model.get_iter(path)
155 ssid = model.get_value(iter, 0)
156 self._editNetworkSetting(ssid, model, iter)