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 Jail Breakout Assistant"))
20 ssid_list = self._create_ssid_view(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._create_menu())
25 self._win.connect("destroy", gtk.main_quit, None)
30 def _launch_browser(self, url):
31 self._launcher.openUrl(url)
34 def _show_about(self, x):
35 from wifi_assistant.gui.about_dialog import AboutDialog
36 AboutDialog(self._launcher, self._win).show()
39 def _show_settings(self, x):
40 from wifi_assistant.gui.application_settings_dialog import ApplicationSettingsDialog
41 use_popup = self._application_settings.getUsePopup()
42 url_to_open = self._network_settings.getDefaultSettings().getBrowserOptions()['url']
43 ApplicationSettingsDialog(self._win, self._save_callback).show(use_popup, url_to_open)
46 def _save_callback(self, popup, url):
47 self._application_settings.setUsePopup(popup)
48 settings = self._network_settings.getDefaultSettings()
49 settings.getBrowserOptions()['url'] = url
50 self._network_settings.save(settings)
53 def _create_menu(self):
54 menu = hildon.AppMenu()
56 about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
57 about.set_label(_("About"))
58 about.connect("clicked", self._show_about)
61 settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
62 settings.set_label(_("Settings"))
63 settings.connect("clicked",self._show_settings)
66 add = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
67 add.set_label(_("Add network"))
68 add.connect("clicked", self._add_ssid)
71 delete = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
72 delete.set_label(_("Delete networks"))
73 delete.connect("clicked", self._delete_ssid)
80 def _edit_ssid(self, ssid, model, iter):
81 dialog = gtk.Dialog(ssid, self._win)
82 dialog.vbox.set_homogeneous(False)
84 dialog.add_button(_('No'), gtk.RESPONSE_NO)
85 dialog.add_button(_('Yes'), gtk.RESPONSE_YES)
87 label = gtk.Label(_('After being connected to ' + ssid + ' do you wish to launch a browser?')) #FIXME: l10n
88 label.set_line_wrap(True)
89 label.set_justify(gtk.JUSTIFY_LEFT)
90 label.set_alignment(0, 0.5)
91 dialog.vbox.add(label)
98 if result == gtk.RESPONSE_YES:
100 elif result == gtk.RESPONSE_NO:
101 launchBrowser = False
103 if launchBrowser is not None:
104 self._settings.setLaunchSetting(ssid, launchBrowser)
105 model.set(iter, 1, launchBrowser)
108 def _add_ssid(self, x):
109 from wifi_assistant.gui.add_network_dialog import AddNetworkDialog
110 AddNetworkDialog(self._win, self._add_ssid_callback).show()
113 def _add_ssid_callback(self, ssid, launch_browser):
114 settings = self._network_settings.getDefaultSettings()
115 settings.setNetworkName(ssid)
116 settings.setLaunchingOfBrowserEnabled(launch_browser)
117 self._network_settings.save(settings)
118 self._model.append([ssid, launchBrowser])
121 def _delete_ssid(self, x):
122 window = hildon.StackableWindow()
123 window.set_border_width(6)
124 toolbar = hildon.EditToolbar(_("Choose network settings to delete"), _("Delete"))
125 window.set_edit_toolbar(toolbar)
127 area = hildon.PannableArea()
128 tree_view = self._create_delete_view()
132 toolbar.connect("button-clicked", self._delete_button_clicked, tree_view)
133 toolbar.connect_object("arrow-clicked", gtk.Window.destroy, window)
139 def _delete_button_clicked(self, button, treeview):
140 selection = treeview.get_selection()
142 (model, selected_rows) = selection.get_selected_rows()
144 # TODO: are you sure?
147 for path in selected_rows:
148 ref = gtk.TreeRowReference(model, path)
149 row_references.append(ref)
151 for ref in row_references:
152 path = ref.get_path()
153 iter = model.get_iter(path)
154 ssid, x = model.get(iter, 0, 1)
155 self._settings.deleteLaunchSetting(ssid)
158 # TODO: close delete window?
161 def _create_delete_view(self):
162 tv = hildon.GtkTreeView(gtk.HILDON_UI_MODE_EDIT)
163 renderer = gtk.CellRendererText()
164 col = gtk.TreeViewColumn("Title", renderer, text=0)
166 tv.append_column(col)
168 # Set multiple selection mode
169 selection = tv.get_selection()
170 selection.set_mode(gtk.SELECTION_MULTIPLE)
172 tv.set_model(self._model)
177 def _create_ssid_view(self, model):
178 # view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
179 # view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
182 return gtk.Label(_('There are no launch settings saved for any network'))
184 view = gtk.TreeView(model)
185 view.set_border_width(5)
187 def boolean_func(column, cell, model, iter):
188 if model.get_value(iter, 1):
192 cell.set_property('stock-id', stock_id)
194 launch_cell = gtk.CellRendererPixbuf()
195 launch_cell.set_fixed_size(100, 50)
196 view.insert_column_with_data_func(1, _('Launch'), launch_cell, boolean_func)
197 # toggle_cell = gtk.CellRendererToggle()
198 # toggle_cell.set_fixed_size(100, 50)
199 # view.append_column( gtk.TreeViewColumn( '', toggle_cell, active=1))
201 tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text = 0)
202 tvcolumn.set_expand(True)
203 view.append_column(tvcolumn)
205 view.connect('row-activated', self._row_activated)
206 view.set_search_column(0)
207 tvcolumn.set_sort_column_id(0)
212 def _row_activated(self, treeview, path, view_column):
213 model = treeview.get_model()
214 iter = model.get_iter(path)
215 ssid = model.get_value(iter, 0)
216 self._edit_ssid(ssid, model, iter)