fixed erronous gconf path in postins script (thanks to hutchinsfairy)
[wifi-assistant] / package / src / wifi_assistant / gui / network_settings_view.py
1 #!/usr/bin/python2.5
2 import gtk, hildon
3
4 def _(str):
5     return str
6
7 class NetworkSettingsView():
8     
9     def __init__(self, list_store, parent_container, edit_network_settings_callback):
10         """edit_network_settings_callback(ssid, model, iter)""" # FIXME: abstraction layer violation
11         self._parent = parent_container
12         self._model = list_store
13         self._edit_network_settings_callback = edit_network_settings_callback
14         
15         self._active_widget = None
16         self._zero_settings_label = gtk.Label(_('There are no settings saved for any network.'))
17         self._network_settings_list = self._createNetworkSettingsList()
18
19         self._registerListeners()
20         
21         
22     def update(self, *args):
23         if len(self._model) == 0:
24             self._activateZeroSettingsLabel()
25         else:
26             self._activateNetworkSettingsList()
27     
28     
29     def _activateNetworkSettingsList(self):
30         self._activateWidget(self._network_settings_list)
31         
32     
33     def _activateZeroSettingsLabel(self):
34         self._activateWidget(self._zero_settings_label)
35         
36
37     def _activateWidget(self, widget):
38         if self._active_widget is not None:
39             self._parent.remove(self._active_widget)
40             self._active_widget = None
41         self._parent.add(widget)
42         self._parent.show_all()
43         self._active_widget = widget
44     
45     
46     def _createNetworkSettingsList(self):
47 #        view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
48 #        view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
49
50         view = gtk.TreeView(self._model)
51         view.set_border_width(5)
52         
53         def boolean_func(column, cell, model, iter):
54             if model.get_value(iter, 1):
55                 stock_id = 'gtk-yes'
56             else:
57                 stock_id = 'gtk-no'
58             cell.set_property('stock-id', stock_id)
59         
60         launch_cell = gtk.CellRendererPixbuf()
61         launch_cell.set_fixed_size(100, 50)
62         view.insert_column_with_data_func(1, _('Launch'), launch_cell, boolean_func)
63 #        toggle_cell = gtk.CellRendererToggle()
64 #        toggle_cell.set_fixed_size(100, 50)
65 #        view.append_column( gtk.TreeViewColumn( '', toggle_cell, active=1))
66          
67         tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text=0)
68         tvcolumn.set_expand(True)
69         view.append_column(tvcolumn)
70     
71         view.connect('row-activated', self._rowActivatedCallback)
72         view.set_search_column(0)
73         tvcolumn.set_sort_column_id(0)
74         
75         return view
76
77
78     def _registerListeners(self):
79         self._model.connect("row-deleted", self.update)
80         self._model.connect("row-inserted", self.update)
81         
82     # FIXME: use this to test:
83     # _model.row_deleted(path)
84     # _model.row_inserted(path, iter) 
85
86
87     def _rowActivatedCallback(self, treeview, path, view_column):
88         model = treeview.get_model()
89         iter = model.get_iter(path)
90         ssid = model.get_value(iter, 0)
91         self._edit_network_settings_callback(ssid, model, iter)
92