-import gtk, hildon, gobject
-from gnome import gconf
-import webbrowser
-import osso
-
-def _(str):
- return str
-
-_gc = gconf.client_get_default()
-prefix = '/apps/maemo/wbl/launch'
-GCONF_KEY_URL = '/apps/maemo/wbl/url_to_open'
-GCONF_KEY_POPUP = '/apps/maemo/wbl/popup'
-
-program = hildon.Program.get_instance()
-
-# Create the main window
-win = hildon.StackableWindow()
-
-def launch_browser(url):
- osso_context = osso.Context("org.maemo.touchsearch", "1.1", False)
- osso_rpc = osso.Rpc(osso_context)
- osso_rpc.rpc_run_with_defaults("osso_browser", "open_new_window", (url,))
-
-def show_about(x):
- dialog = gtk.Dialog('About', win)
-
- text = "I got tired of not being able to connect easily to networks guarded by a login page, " + \
- "so I created this app to scratch that itch. It's free to use, inspect, adapt and share, " + \
- "licencsed under a BSD type license.\nI hope you enjoy it!"
- about_label = gtk.Label(text)
- about_label.set_line_wrap(True)
- dialog.vbox.add(about_label)
-
- dialog.add_button(_('File a bug'), 1)
- dialog.add_button(_('Donate'), 2)
- dialog.add_button(_('Close'), 3)
-
- dialog.show_all()
- result = dialog.run()
- dialog.hide()
-
- if result == 1:
- launch_browser('http://wifi-assistant.garage.maemo.org/bugs/')
- if result == 2:
- launch_browser('http://wifi-assistant.garage.maemo.org/donate/')
-
-
-def show_settings(x):
- checkbox = hildon.CheckButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
- checkbox.set_label('Show popup when connected to a new SSID')
- checkbox.set_active(_gc.get_bool(GCONF_KEY_POPUP))
-
- url_label = gtk.Label('URL to open when launching browser:') # 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(_gc.get_string(GCONF_KEY_URL))
-
- dialog = gtk.Dialog('Settings', win)
- dialog.vbox.set_homogeneous(False)
-
- dialog.vbox.add(checkbox)
- dialog.vbox.add(url_label)
- dialog.vbox.add(url_field)
-
- 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):
- _gc.set_string(GCONF_KEY_URL, url_field.get_text())
- _gc.set_bool(GCONF_KEY_POPUP, checkbox.get_active())
-
-
-def create_menu():
- menu = hildon.AppMenu()
-
- settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
- command_id = "Settings"
- settings.set_label(command_id)
- settings.connect("clicked", show_settings)
- menu.append(settings)
-
- about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
- command_id = "About"
- about.set_label(command_id)
- about.connect("clicked", show_about)
- menu.append(about)
-
- menu.show_all()
- return menu
-
-def create_ssid_model():
- store = gtk.ListStore(str, gobject.TYPE_BOOLEAN)
-
- entries = _gc.all_entries(prefix)
- for entry in entries:
- ssidName = entry.get_key()[len(prefix) + 1:]
- launchBrowser = entry.get_value().get_bool()
- store.append([ssidName, launchBrowser])
- print ssidName
- print launchBrowser
-
- return store
-
-def edit_ssid(ssid, parent, model, iter):
- dialog = gtk.Dialog(ssid, parent)
- dialog.vbox.set_homogeneous(False)
-
- dialog.add_button(_('No'), gtk.RESPONSE_NO)
- dialog.add_button(_('Yes'), gtk.RESPONSE_YES)
-
- label = gtk.Label(_('After being connected to ' + ssid + ' do you wish to launch a browser?'))
- label.set_line_wrap(True)
- label.set_justify(gtk.JUSTIFY_LEFT)
- label.set_alignment(0, 0.5)
- dialog.vbox.add(label)
-
- dialog.show_all()
- result = dialog.run()
- dialog.hide()
-
- launchBrowser = (result == gtk.RESPONSE_YES)
- _gc.set_bool('/apps/maemo/wbl/launch/' + ssid, launchBrowser)
- model.set(iter, 1, launchBrowser)
-
-
-def create_ssid_view():
- model = create_ssid_model()
- view = gtk.TreeView(model)
- view.set_border_width(5)
-
- tvcolumn = gtk.TreeViewColumn('SSID', gtk.CellRendererText(), text = 0)
- tvcolumn.set_expand(True)
- view.append_column(tvcolumn)
-
- def boolean_func(column, cell, model, iter):
- if model.get_value(iter, 1):
- stock_id = 'gtk-yes'
- else:
- stock_id = 'gtk-no'
- cell.set_property('stock-id', stock_id)
-
- view.insert_column_with_data_func(1, 'Launch', gtk.CellRendererPixbuf(), boolean_func)
-
- def row_activated(treeview, path, view_column):
- model = treeview.get_model()
- iter = model.get_iter(path)
- ssid = model.get_value(iter, 0)
- print ssid
- edit_ssid(ssid, win, model, iter)
-
- view.connect('row-activated', row_activated)
- view.set_search_column(0)
- tvcolumn.set_sort_column_id(0)
-
- return view
-
-def create_table():
- table = gtk.Table(rows=10, columns=2)
- table.set_col_spacings(5)
- table.set_row_spacings(5)
- table.set_border_width(5)
-
- row = 0
- entries = xrange(5)
- for entry in entries:
- def l(i):
- if (i == 0):
- return ""
- return "x" + l(i-1)
-
- ssid = "SSID " + l(row)
- ssid_label = gtk.Label(ssid)
- ssid_label.set_alignment(0, 0.5)
- table.attach(ssid_label, 0, 1, row, row+1, xoptions=gtk.FILL)
- table.attach(gtk.Label("On"), 1, 2, row, row+1, xoptions=gtk.SHRINK)
- row = row + 1
-
- return table
-
-def main():
- win.set_title("Browser Launcher Configuration")
-
-# pannable_area = hildon.PannableArea()
-
- ssid_view = create_ssid_view()
-
-# pannable_area.add_with_viewport(ssid_view)
-
-# win.add(pannable_area)
- win.add(ssid_view)
-
- win.set_app_menu(create_menu())
-
- win.connect("destroy", gtk.main_quit, None)
-
- win.show_all()
- gtk.main()
-
-if __name__ == "__main__":
- main()
\ No newline at end of file