self._network_settings = network_settings
self._program = hildon_program
self._win = hildon_window
- self._model= list_store
+ self._model = list_store
def main(self):
self._win.set_title(_("Wifi Assistant"))
- ssid_list = self._createNetworkSettingsView(self._model)
- pannable_area= hildon.PannableArea()
- pannable_area.add(ssid_list)
+ pannable_area = hildon.PannableArea()
+ from wifi_assistant.gui.network_settings_view import NetworkSettingsView
+ view = NetworkSettingsView(self._model, pannable_area, self._editNetworkSetting)
self._win.add(pannable_area)
self._win.set_app_menu(self._createMenu())
self._win.connect("destroy", gtk.main_quit, None)
+
+ view.update()
self._win.show_all()
settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
settings.set_label(_("Settings"))
- settings.connect("clicked",self._editApplicationSettings)
+ settings.connect("clicked", self._editApplicationSettings)
menu.append(settings)
add = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
settings = self._network_settings.get(ssid)
self._network_settings.delete(settings)
model.remove(iter)
-
-
- def _createNetworkSettingsView(self, model):
-# view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
-# view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
-
- if len(model) == 0:
- return gtk.Label(_('There are no launch settings saved for any network'))
-
- view = gtk.TreeView(model)
- view.set_border_width(5)
-
- 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)
-
- launch_cell = gtk.CellRendererPixbuf()
- launch_cell.set_fixed_size(100, 50)
- view.insert_column_with_data_func(1, _('Launch'), launch_cell, boolean_func)
-# toggle_cell = gtk.CellRendererToggle()
-# toggle_cell.set_fixed_size(100, 50)
-# view.append_column( gtk.TreeViewColumn( '', toggle_cell, active=1))
-
- tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text = 0)
- tvcolumn.set_expand(True)
- view.append_column(tvcolumn)
-
- view.connect('row-activated', self._rowActivatedCallback)
- view.set_search_column(0)
- tvcolumn.set_sort_column_id(0)
-
- return view
-
-
- def _rowActivatedCallback(self, treeview, path, view_column):
- model = treeview.get_model()
- iter = model.get_iter(path)
- ssid = model.get_value(iter, 0)
- self._editNetworkSetting(ssid, model, iter)
--- /dev/null
+#!/usr/bin/python2.5
+import gtk, hildon
+
+def _(str):
+ return str
+
+class NetworkSettingsView():
+
+ def __init__(self, list_store, parent_container, edit_network_settings_callback):
+ """edit_network_settings_callback(ssid, model, iter)""" # FIXME: abstraction layer violation
+ self._parent = parent_container
+ self._model = list_store
+ self._edit_network_settings_callback = edit_network_settings_callback
+
+ self._active_widget = None
+ self._zero_settings_label = gtk.Label(_('There are no settings saved for any network.'))
+ self._network_settings_list = self._createNetworkSettingsList()
+
+ self._registerListeners()
+
+
+ def update(self, *args):
+ if len(self._model) == 0:
+ self._activateZeroSettingsLabel()
+ else:
+ self._activateNetworkSettingsList()
+
+
+ def _activateNetworkSettingsList(self):
+ self._activateWidget(self._network_settings_list)
+
+
+ def _activateZeroSettingsLabel(self):
+ self._activateWidget(self._zero_settings_label)
+
+
+ def _activateWidget(self, widget):
+ if self._active_widget is not None:
+ self._parent.remove(self._active_widget)
+ self._active_widget = None
+ self._parent.add(widget)
+ self._parent.show_all()
+ self._active_widget = widget
+
+
+ def _createNetworkSettingsList(self):
+# view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
+# view = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL, model)
+
+ view = gtk.TreeView(self._model)
+ view.set_border_width(5)
+
+ 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)
+
+ launch_cell = gtk.CellRendererPixbuf()
+ launch_cell.set_fixed_size(100, 50)
+ view.insert_column_with_data_func(1, _('Launch'), launch_cell, boolean_func)
+# toggle_cell = gtk.CellRendererToggle()
+# toggle_cell.set_fixed_size(100, 50)
+# view.append_column( gtk.TreeViewColumn( '', toggle_cell, active=1))
+
+ tvcolumn = gtk.TreeViewColumn(_('SSID'), gtk.CellRendererText(), text=0)
+ tvcolumn.set_expand(True)
+ view.append_column(tvcolumn)
+
+ view.connect('row-activated', self._rowActivatedCallback)
+ view.set_search_column(0)
+ tvcolumn.set_sort_column_id(0)
+
+ return view
+
+
+ def _registerListeners(self):
+ self._model.connect("row-deleted", self.update)
+ self._model.connect("row-inserted", self.update)
+
+ # FIXME: use this to test:
+ # _model.row_deleted(path)
+ # _model.row_inserted(path, iter)
+
+
+ def _rowActivatedCallback(self, treeview, path, view_column):
+ model = treeview.get_model()
+ iter = model.get_iter(path)
+ ssid = model.get_value(iter, 0)
+ self._edit_network_settings_callback(ssid, model, iter)
+
from unit.gui.add_network_dialog_test import AddNetworkDialogTest
from unit.gui.application_settings_dialog_test import ApplicationSettingsDialogTest
from unit.gui.edit_network_dialog_test import EditNetworkDialogTest
+from unit.gui.network_settings_view_test import NetworkSettingsViewTest
from unit.gui.popup_dialog_test import PopupDialogTest
from unit.settings.application_settings_test import ApplicationSettingsTest
--- /dev/null
+from wifi_assistant.gui.network_settings_view import NetworkSettingsView
+import gtk
+
+import unittest
+from unit.pie import *
+
+class NetworkSettingsViewTest(unittest.TestCase):
+
+ def setUp(self):
+ self._list_store = gtk.ListStore('gboolean', str)
+ self._parent_container = Mock()
+ self._edit_callback = Mock()
+
+ given(self._edit_callback).save().willReturn(True)
+
+ self.testee = NetworkSettingsView(self._list_store, self._parent_container, self._edit_callback.save)
+
+
+ def test_bug_11209_addingAndRemovingNetworkSettingsChangesActiveWidget(self):
+ assert len(self._list_store) == 0
+
+ self._replayMocks()
+ self._list_store.append([True, 'a row'])
+
+ widget = self.testee._active_widget
+ verify(self._parent_container).add(widget)
+
+ self._list_store.clear()
+
+ verify(self._parent_container).remove(widget)
+
+
+ def _replayMocks(self):
+ self._parent_container.replay()
+ self._edit_callback.replay()
+
+
+
+if __name__ == '__main__':
+ unittest.main()