self._settings = settings
self._program = hildon.Program.get_instance()
self._win = hildon.StackableWindow()
+ self._model= self._settings.getLaunchSettings()
def main(self):
self._win.set_title(_("Wifi Jail Breakout Assistant"))
- ssid_list = self._create_ssid_view(self._settings.getLaunchSettings())
+ ssid_list = self._create_ssid_view(self._model)
pannable_area= hildon.PannableArea()
pannable_area.add(ssid_list)
self._win.add(pannable_area)
settings.connect("clicked",self._show_settings)
menu.append(settings)
+ add = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+ add.set_label(_("Add network"))
+ add.connect("clicked", self._add_ssid)
+ menu.append(add)
+
+ delete = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+ delete.set_label(_("Delete networks"))
+ delete.connect("clicked", self._delete_ssid)
+ menu.append(delete)
+
menu.show_all()
return menu
model.set(iter, 1, launchBrowser)
+ def _add_ssid(self, x):
+ checkbox = hildon.CheckButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
+ checkbox.set_label(_('Launch browser when connected'))
+ checkbox.set_active(True)
+
+ url_label = gtk.Label(_('Name of the network:')) # IMPROVEMENT: caption?
+ url_label.set_alignment(0, 0.5)
+ url_label.set_padding(5, 5)
+ url_field = hildon.Entry(gtk.HILDON_SIZE_AUTO)
+ url_field.set_text(_('MyNetwork'))
+
+ dialog = gtk.Dialog(_('Add network'), self._win)
+ dialog.vbox.set_homogeneous(False)
+
+ dialog.vbox.add(url_label)
+ dialog.vbox.add(url_field)
+ dialog.vbox.add(checkbox)
+
+ dialog.add_button(_('Cancel'), gtk.RESPONSE_CANCEL)
+ dialog.add_button(_('Save'), gtk.RESPONSE_YES)
+
+ dialog.show_all()
+ result = dialog.run()
+ dialog.hide()
+
+
+ if result == gtk.RESPONSE_YES:
+ launchBrowser = checkbox.get_active()
+ ssid = url_field.get_text()
+ self._settings.setLaunchSetting(ssid, launchBrowser)
+ self._model.append([ssid, launchBrowser])
+
+
+ def _delete_ssid(self, x):
+ window = hildon.StackableWindow()
+ window.set_border_width(6)
+ toolbar = hildon.EditToolbar(_("Choose network settings to delete"), _("Delete"))
+ window.set_edit_toolbar(toolbar)
+
+ area = hildon.PannableArea()
+ tree_view = self._create_delete_view()
+ area.add(tree_view)
+ window.add(area)
+
+ toolbar.connect("button-clicked", self._delete_button_clicked, tree_view)
+ toolbar.connect_object("arrow-clicked", gtk.Window.destroy, window)
+
+ window.show_all()
+ window.fullscreen()
+
+
+ def _delete_button_clicked(self, button, treeview):
+ selection = treeview.get_selection()
+
+ (model, selected_rows) = selection.get_selected_rows()
+
+ # TODO: are you sure?
+
+ row_references = []
+ for path in selected_rows:
+ ref = gtk.TreeRowReference(model, path)
+ row_references.append(ref)
+
+ for ref in row_references:
+ path = ref.get_path()
+ iter = model.get_iter(path)
+ ssid, x = model.get(iter, 0, 1)
+ self._settings.deleteLaunchSetting(ssid)
+ model.remove(iter)
+
+ # TODO: close delete window?
+
+
+ def _create_delete_view(self):
+ tv = hildon.GtkTreeView(gtk.HILDON_UI_MODE_EDIT)
+ renderer = gtk.CellRendererText()
+ col = gtk.TreeViewColumn("Title", renderer, text=0)
+
+ tv.append_column(col)
+
+ # Set multiple selection mode
+ selection = tv.get_selection()
+ selection.set_mode(gtk.SELECTION_MULTIPLE)
+
+ tv.set_model(self._model)
+
+ return tv
+
+
def _create_ssid_view(self, model):
# view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
# view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)