1 import gtk, hildon, gobject
2 from gnome import gconf
9 _gc = gconf.client_get_default()
10 prefix = '/apps/maemo/wbl/launch'
11 GCONF_KEY_URL = '/apps/maemo/wbl/url_to_open'
12 GCONF_KEY_POPUP = '/apps/maemo/wbl/popup'
14 program = hildon.Program.get_instance()
16 # Create the main window
17 win = hildon.StackableWindow()
19 def launch_browser(url):
20 osso_context = osso.Context("org.maemo.touchsearch", "1.1", False)
21 osso_rpc = osso.Rpc(osso_context)
22 osso_rpc.rpc_run_with_defaults("osso_browser", "open_new_window", (url,))
25 dialog = gtk.Dialog('About', win)
27 text = "I got tired of not being able to connect easily to networks guarded by a login page, " + \
28 "so I created this app to scratch that itch. It's free to use, inspect, adapt and share, " + \
29 "licencsed under a BSD type license.\nI hope you enjoy it!"
30 about_label = gtk.Label(text)
31 about_label.set_line_wrap(True)
32 dialog.vbox.add(about_label)
34 dialog.add_button(_('File a bug'), 1)
35 dialog.add_button(_('Donate'), 2)
36 dialog.add_button(_('Close'), 3)
43 launch_browser('http://wifi-assistant.garage.maemo.org/bugs/')
45 launch_browser('http://wifi-assistant.garage.maemo.org/donate/')
49 checkbox = hildon.CheckButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT)
50 checkbox.set_label('Show popup when connected to a new SSID')
51 checkbox.set_active(_gc.get_bool(GCONF_KEY_POPUP))
53 url_label = gtk.Label('URL to open when launching browser:') # IMPROVEMENT: caption?
54 url_label.set_alignment(0, 0.5)
55 url_label.set_padding(5, 5)
56 url_field = hildon.Entry(gtk.HILDON_SIZE_AUTO)
57 url_field.set_text(_gc.get_string(GCONF_KEY_URL))
59 dialog = gtk.Dialog('Settings', win)
60 dialog.vbox.set_homogeneous(False)
62 dialog.vbox.add(checkbox)
63 dialog.vbox.add(url_label)
64 dialog.vbox.add(url_field)
66 dialog.add_button(_('Cancel'), gtk.RESPONSE_CANCEL)
67 dialog.add_button(_('Save'), gtk.RESPONSE_YES)
73 if (result == gtk.RESPONSE_YES):
74 _gc.set_string(GCONF_KEY_URL, url_field.get_text())
75 _gc.set_bool(GCONF_KEY_POPUP, checkbox.get_active())
79 menu = hildon.AppMenu()
81 settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
82 command_id = "Settings"
83 settings.set_label(command_id)
84 settings.connect("clicked", show_settings)
87 about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
89 about.set_label(command_id)
90 about.connect("clicked", show_about)
96 def create_ssid_model():
97 store = gtk.ListStore(str, gobject.TYPE_BOOLEAN)
99 entries = _gc.all_entries(prefix)
100 for entry in entries:
101 ssidName = entry.get_key()[len(prefix) + 1:]
102 launchBrowser = entry.get_value().get_bool()
103 store.append([ssidName, launchBrowser])
109 def edit_ssid(ssid, parent, model, iter):
110 dialog = gtk.Dialog(ssid, parent)
111 dialog.vbox.set_homogeneous(False)
113 dialog.add_button(_('No'), gtk.RESPONSE_NO)
114 dialog.add_button(_('Yes'), gtk.RESPONSE_YES)
116 label = gtk.Label(_('After being connected to ' + ssid + ' do you wish to launch a browser?'))
117 label.set_line_wrap(True)
118 label.set_justify(gtk.JUSTIFY_LEFT)
119 label.set_alignment(0, 0.5)
120 dialog.vbox.add(label)
123 result = dialog.run()
126 launchBrowser = (result == gtk.RESPONSE_YES)
127 _gc.set_bool('/apps/maemo/wbl/launch/' + ssid, launchBrowser)
128 model.set(iter, 1, launchBrowser)
131 def create_ssid_view():
132 model = create_ssid_model()
133 view = gtk.TreeView(model)
134 view.set_border_width(5)
136 tvcolumn = gtk.TreeViewColumn('SSID', gtk.CellRendererText(), text = 0)
137 tvcolumn.set_expand(True)
138 view.append_column(tvcolumn)
140 def boolean_func(column, cell, model, iter):
141 if model.get_value(iter, 1):
145 cell.set_property('stock-id', stock_id)
147 view.insert_column_with_data_func(1, 'Launch', gtk.CellRendererPixbuf(), boolean_func)
149 def row_activated(treeview, path, view_column):
150 model = treeview.get_model()
151 iter = model.get_iter(path)
152 ssid = model.get_value(iter, 0)
154 edit_ssid(ssid, win, model, iter)
156 view.connect('row-activated', row_activated)
157 view.set_search_column(0)
158 tvcolumn.set_sort_column_id(0)
163 table = gtk.Table(rows=10, columns=2)
164 table.set_col_spacings(5)
165 table.set_row_spacings(5)
166 table.set_border_width(5)
170 for entry in entries:
176 ssid = "SSID " + l(row)
177 ssid_label = gtk.Label(ssid)
178 ssid_label.set_alignment(0, 0.5)
179 table.attach(ssid_label, 0, 1, row, row+1, xoptions=gtk.FILL)
180 table.attach(gtk.Label("On"), 1, 2, row, row+1, xoptions=gtk.SHRINK)
186 win.set_title("Browser Launcher Configuration")
188 # pannable_area = hildon.PannableArea()
190 ssid_view = create_ssid_view()
192 # pannable_area.add_with_viewport(ssid_view)
194 # win.add(pannable_area)
197 win.set_app_menu(create_menu())
199 win.connect("destroy", gtk.main_quit, None)
204 if __name__ == "__main__":