From 2c5cc9a7c1fcda9a2bd5cb11756695d8f26caebd Mon Sep 17 00:00:00 2001 From: Fredrik Wendt Date: Mon, 23 Aug 2010 22:47:00 +0100 Subject: [PATCH] refactoring main GUI application to * use new settings classes * have unit tests (sort of, mock gtk?) --- package/src/wifi_assistant/config-gui.py | 278 -------------------- package/src/wifi_assistant/config_gui.py | 216 +++++++++++++++ package/src/wifi_assistant/gui/about_dialog.py | 47 ++++ .../src/wifi_assistant/gui/add_network_dialog.py | 53 ++++ .../gui/application_settings_dialog.py | 50 ++++ package/src/wifi_assistant/main.py | 28 ++ package/test/unit/gui/test_AboutDialog.py | 46 ++++ .../unit/gui/test_ApplicationSettingsDialog.py | 40 +++ package/test/unit/gui/test_add_network_dialog.py | 40 +++ 9 files changed, 520 insertions(+), 278 deletions(-) delete mode 100644 package/src/wifi_assistant/config-gui.py create mode 100644 package/src/wifi_assistant/config_gui.py create mode 100644 package/src/wifi_assistant/gui/__init__.py create mode 100644 package/src/wifi_assistant/gui/about_dialog.py create mode 100644 package/src/wifi_assistant/gui/add_network_dialog.py create mode 100644 package/src/wifi_assistant/gui/application_settings_dialog.py create mode 100644 package/src/wifi_assistant/main.py create mode 100644 package/test/unit/gui/__init__.py create mode 100644 package/test/unit/gui/test_AboutDialog.py create mode 100644 package/test/unit/gui/test_ApplicationSettingsDialog.py create mode 100644 package/test/unit/gui/test_add_network_dialog.py diff --git a/package/src/wifi_assistant/config-gui.py b/package/src/wifi_assistant/config-gui.py deleted file mode 100644 index c33e0df..0000000 --- a/package/src/wifi_assistant/config-gui.py +++ /dev/null @@ -1,278 +0,0 @@ -#!/usr/bin/python2.5 -import gtk, hildon - -from launcher import Launcher -from settings import Settings - -def _(str): - return str - -class ConfigGui(): - - def __init__(self, launcher, settings): - self._launcher = launcher - 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._model) - pannable_area= hildon.PannableArea() - pannable_area.add(ssid_list) - self._win.add(pannable_area) - self._win.set_app_menu(self._create_menu()) - self._win.connect("destroy", gtk.main_quit, None) - self._win.show_all() - gtk.main() - - - # FIXME: refactor out - def _launch_browser(self, url): - self._launcher.openUrl(url) - - - def _show_about(self, x): - dialog = gtk.Dialog(_('About'), self._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, " + \ - "licensed 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: - self._launcher.openUrl(_('http://wifi-assistant.garage.maemo.org/bugs/')) - if result == 2: - self._launcher.openUrl(_('http://wifi-assistant.garage.maemo.org/donate/')) - - - def _show_settings(self, 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(self._settings.getUsePopup()) - - 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(self._settings.getUrlToOpen()) - - dialog = gtk.Dialog(_('Settings'), self._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: - self._settings.setUrlToOpen(url_field.get_text()) - self._settings.setUsePopup(checkbox.get_active()) - - - def _create_menu(self): - menu = hildon.AppMenu() - - about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) - about.set_label(_("About")) - about.connect("clicked", self._show_about) - menu.append(about) - - settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) - settings.set_label(_("Settings")) - 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 - - - def _edit_ssid(self, ssid, model, iter): - dialog = gtk.Dialog(ssid, self._win) - 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?')) #FIXME: l10n - 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 = None - if result == gtk.RESPONSE_YES: - launchBrowser = True - elif result == gtk.RESPONSE_NO: - launchBrowser = False - - if launchBrowser is not None: - self._settings.setLaunchSetting(ssid, launchBrowser) - 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) - - 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._row_activated) - view.set_search_column(0) - tvcolumn.set_sort_column_id(0) - - return view - - - def _row_activated(self, treeview, path, view_column): - model = treeview.get_model() - iter = model.get_iter(path) - ssid = model.get_value(iter, 0) - self._edit_ssid(ssid, model, iter) - - -if __name__ == "__main__": - gui = ConfigGui(Launcher(), Settings()) - gui.main() diff --git a/package/src/wifi_assistant/config_gui.py b/package/src/wifi_assistant/config_gui.py new file mode 100644 index 0000000..4f3e826 --- /dev/null +++ b/package/src/wifi_assistant/config_gui.py @@ -0,0 +1,216 @@ +#!/usr/bin/python2.5 +import gtk, hildon + +def _(str): + return str + +class ConfigGui(): + + def __init__(self, launcher, application_settings, network_settings, hildon_program, hildon_window, list_store): + self._launcher = launcher + self._application_settings = application_settings + self._network_settings = network_settings + self._program = hildon_program + self._win = hildon_window + self._model= list_store + + + def main(self): + self._win.set_title(_("Wifi Jail Breakout Assistant")) + ssid_list = self._create_ssid_view(self._model) + pannable_area= hildon.PannableArea() + pannable_area.add(ssid_list) + self._win.add(pannable_area) + self._win.set_app_menu(self._create_menu()) + self._win.connect("destroy", gtk.main_quit, None) + self._win.show_all() + + + # FIXME: refactor out + def _launch_browser(self, url): + self._launcher.openUrl(url) + + + def _show_about(self, x): + from wifi_assistant.gui.about_dialog import AboutDialog + AboutDialog(self._launcher, self._win).show() + + + def _show_settings(self, x): + from wifi_assistant.gui.application_settings_dialog import ApplicationSettingsDialog + use_popup = self._application_settings.getUsePopup() + url_to_open = self._network_settings.getDefaultSettings().getBrowserOptions()['url'] + ApplicationSettingsDialog(self._win, self._save_callback).show(use_popup, url_to_open) + + + def _save_callback(self, popup, url): + self._application_settings.setUsePopup(popup) + settings = self._network_settings.getDefaultSettings() + settings.getBrowserOptions()['url'] = url + self._network_settings.save(settings) + + + def _create_menu(self): + menu = hildon.AppMenu() + + about = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + about.set_label(_("About")) + about.connect("clicked", self._show_about) + menu.append(about) + + settings = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) + settings.set_label(_("Settings")) + 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 + + + def _edit_ssid(self, ssid, model, iter): + dialog = gtk.Dialog(ssid, self._win) + 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?')) #FIXME: l10n + 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 = None + if result == gtk.RESPONSE_YES: + launchBrowser = True + elif result == gtk.RESPONSE_NO: + launchBrowser = False + + if launchBrowser is not None: + self._settings.setLaunchSetting(ssid, launchBrowser) + model.set(iter, 1, launchBrowser) + + + def _add_ssid(self, x): + from wifi_assistant.gui.add_network_dialog import AddNetworkDialog + AddNetworkDialog(self._win, self._add_ssid_callback).show() + + + def _add_ssid_callback(self, ssid, launch_browser): + settings = self._network_settings.getDefaultSettings() + settings.setNetworkName(ssid) + settings.setLaunchingOfBrowserEnabled(launch_browser) + self._network_settings.save(settings) + 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) + + 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._row_activated) + view.set_search_column(0) + tvcolumn.set_sort_column_id(0) + + return view + + + def _row_activated(self, treeview, path, view_column): + model = treeview.get_model() + iter = model.get_iter(path) + ssid = model.get_value(iter, 0) + self._edit_ssid(ssid, model, iter) diff --git a/package/src/wifi_assistant/gui/__init__.py b/package/src/wifi_assistant/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/package/src/wifi_assistant/gui/about_dialog.py b/package/src/wifi_assistant/gui/about_dialog.py new file mode 100644 index 0000000..f7cee7e --- /dev/null +++ b/package/src/wifi_assistant/gui/about_dialog.py @@ -0,0 +1,47 @@ +#!/usr/bin/python2.5 +import gtk, hildon + +def _(str): + return str + +class AboutDialog(): + + BUG_BUTTON = 1 + DONATE_BUTTON = 2 + CLOSE_BUTTON = 3 + + BUG_URL = 'http://wifi-assistant.garage.maemo.org/bugs/' + DONATE_URL = 'http://wifi-assistant.garage.maemo.org/donate/' + + def __init__(self, launcher, parent_window): + self._launcher = launcher + self._parent_window = parent_window + + + def show(self): + dialog = gtk.Dialog(_('About Wifi Jail Brekaout Assistant'), self._parent_window) + 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, " + \ + "licensed 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'), AboutDialog.BUG_BUTTON) + dialog.add_button(_('Donate'), AboutDialog.DONATE_BUTTON) + dialog.add_button(_('Close'), AboutDialog.CLOSE_BUTTON) + + dialog.show_all() + result = self._runDialog(dialog) + dialog.hide() + + if result == AboutDialog.BUG_BUTTON: + self._launcher.openUrl(_(AboutDialog.BUG_URL)) + if result == AboutDialog.DONATE_BUTTON: + self._launcher.openUrl(_(AboutDialog.DONATE_URL)) + + + def _runDialog(self, dialog): + result = dialog.run() + return result diff --git a/package/src/wifi_assistant/gui/add_network_dialog.py b/package/src/wifi_assistant/gui/add_network_dialog.py new file mode 100644 index 0000000..e2d040b --- /dev/null +++ b/package/src/wifi_assistant/gui/add_network_dialog.py @@ -0,0 +1,53 @@ +#!/usr/bin/python2.5 +import gtk, hildon + +def _(str): + return str + +class AddNetworkDialog(): + + CANCEL_BUTTON = 1 + SAVE_BUTTON = 2 + + def __init__(self, parent_window, saveCallback): + """saveCallback(ssid, launch_browser)""" + + self._parent_window = parent_window + self._saveCallback = saveCallback + + + def show(self, ssid=_('MyNetwork'), launch_browser=True): + checkbox = hildon.CheckButton(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT) + checkbox.set_label(_('Launch browser when connected')) + checkbox.set_active(launch_browser) + + 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(ssid) + + dialog = gtk.Dialog(_('Add network'), self._parent_window) + dialog.vbox.set_homogeneous(False) + + dialog.vbox.add(url_label) + dialog.vbox.add(url_field) + dialog.vbox.add(checkbox) + + dialog.add_button(_('Cancel'), AddNetworkDialog.CANCEL_BUTTON) + dialog.add_button(_('Save'), AddNetworkDialog.SAVE_BUTTON) + + dialog.show_all() + result = self._runDialog(dialog) + dialog.hide() + + + if result == AddNetworkDialog.SAVE_BUTTON: + launch_browser = checkbox.get_active() + ssid = url_field.get_text() + self._saveCallback(ssid, launch_browser) + + + def _runDialog(self, dialog): + result = dialog.run() + return result diff --git a/package/src/wifi_assistant/gui/application_settings_dialog.py b/package/src/wifi_assistant/gui/application_settings_dialog.py new file mode 100644 index 0000000..de3b856 --- /dev/null +++ b/package/src/wifi_assistant/gui/application_settings_dialog.py @@ -0,0 +1,50 @@ +#!/usr/bin/python2.5 +import gtk, hildon + +def _(str): + return str + +class ApplicationSettingsDialog(): + + CANCEL_BUTTON = 1 + SAVE_BUTTON = 2 + + def __init__(self, parent_window, saveCallback): + """saveCallback(popup, url)""" + + self._parent_window = parent_window + self._saveCallback = saveCallback + + + def show(self, use_popup, url_to_open): + 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(use_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(url_to_open) + + dialog = gtk.Dialog(_('Settings'), self._parent_window) + dialog.vbox.set_homogeneous(False) + + dialog.vbox.add(checkbox) + dialog.vbox.add(url_label) + dialog.vbox.add(url_field) + + dialog.add_button(_('Cancel'), ApplicationSettingsDialog.CANCEL_BUTTON) + dialog.add_button(_('Save'), ApplicationSettingsDialog.SAVE_BUTTON) + + dialog.show_all() + result = self._runDialog(dialog) + dialog.hide() + + if result == ApplicationSettingsDialog.SAVE_BUTTON: + self._saveCallback(checkbox.get_active(), url_field.get_text()) + + + def _runDialog(self, dialog): + result = dialog.run() + return result diff --git a/package/src/wifi_assistant/main.py b/package/src/wifi_assistant/main.py new file mode 100644 index 0000000..36cf8cb --- /dev/null +++ b/package/src/wifi_assistant/main.py @@ -0,0 +1,28 @@ +#!/usr/bin/python2.5 + +import gtk, gobject +from gnome import gconf +import hildon + +from wifi_assistant.launcher import Launcher +from wifi_assistant.settings.ApplicationSettings import ApplicationSettings +from wifi_assistant.settings.NetworkSettings import NetworkSettings +from wifi_assistant.config_gui import ConfigGui + +def _(str): + return str + +if __name__ == "__main__": + gconf_client = gconf.client_get_default() + gconf_root_dir = '/apps/maemo/wifi_assistant' + network_settings = NetworkSettings(gconf_client, gconf_root_dir) + application_settings = ApplicationSettings(gconf_client, gconf_root_dir) + launcher = Launcher() + list_store = network_settings.getListStore() + hildon_program = hildon.Program.get_instance() + hildon_window = hildon.StackableWindow() + + # put it all together + gui = ConfigGui(launcher, application_settings, network_settings, hildon_program, hildon_window, list_store) + gui.main() + gtk.main() diff --git a/package/test/unit/gui/__init__.py b/package/test/unit/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/package/test/unit/gui/test_AboutDialog.py b/package/test/unit/gui/test_AboutDialog.py new file mode 100644 index 0000000..23c7fe1 --- /dev/null +++ b/package/test/unit/gui/test_AboutDialog.py @@ -0,0 +1,46 @@ +from gnome import gconf +from wifi_assistant.daemon import Daemon +from wifi_assistant.gui.about_dialog import AboutDialog + +import unittest +from unit.pie import * + + + +class AboutDialogTest(unittest.TestCase): + + def setUp(self): + self.launcher = Mock() + self.launcher.replay() + self.testee = AboutDialog(self.launcher, None) + + + def test_bugButtonCallsLauncher(self): + self._makeRunDialogReturn(AboutDialog.BUG_BUTTON) + self.testee.show() + verify(self.launcher).openUrl(AboutDialog.BUG_URL) + + + def test_closeButtonDoesntCallLauncher(self): + self._makeRunDialogReturn(AboutDialog.CLOSE_BUTTON) + self.testee.show() + verify(self.launcher, never()).openUrl() + + + def test_donateButtonCallsLauncher(self): + self._makeRunDialogReturn(AboutDialog.DONATE_BUTTON) + self.testee.show() + verify(self.launcher).openUrl(AboutDialog.DONATE_URL) + + + def _makeRunDialogReturn(self, value): + class method(): + def __init__(self, value_to_return): + self._value_to_return = value_to_return + def __call__(self, x): + return self._value_to_return + self.testee._runDialog = method(value) + +if __name__ == '__main__': + unittest.main() + diff --git a/package/test/unit/gui/test_ApplicationSettingsDialog.py b/package/test/unit/gui/test_ApplicationSettingsDialog.py new file mode 100644 index 0000000..5e9e207 --- /dev/null +++ b/package/test/unit/gui/test_ApplicationSettingsDialog.py @@ -0,0 +1,40 @@ +import unittest +from unit.pie import * + +from wifi_assistant.gui.application_settings_dialog import ApplicationSettingsDialog + +class ApplicationSettingsDialogTest(unittest.TestCase): + + def setUp(self): + self.parent_window = None + self.save_callback = Mock() + + #given(self.save_callback).save().willReturn(None) + self.save_callback.replay() + + self.testee = ApplicationSettingsDialog(self.parent_window, self.save_callback.save) + + + def test_cancelButtonDoesntCallSaveCallback(self): + self._makeRunDialogReturn(ApplicationSettingsDialog.CANCEL_BUTTON) + self.testee.show(False, '') + verify(self.save_callback, never()).save() + + + def test_saveButtonCallsSaveCallback(self): + self._makeRunDialogReturn(ApplicationSettingsDialog.SAVE_BUTTON) + self.testee.show(True, 'http://url') + verify(self.save_callback).save(True, 'http://url') + + + def _makeRunDialogReturn(self, value): + class method(): + def __init__(self, value_to_return): + self._value_to_return = value_to_return + def __call__(self, x): + return self._value_to_return + self.testee._runDialog = method(value) + +if __name__ == '__main__': + unittest.main() + diff --git a/package/test/unit/gui/test_add_network_dialog.py b/package/test/unit/gui/test_add_network_dialog.py new file mode 100644 index 0000000..d1e1b1a --- /dev/null +++ b/package/test/unit/gui/test_add_network_dialog.py @@ -0,0 +1,40 @@ +import unittest +from unit.pie import * + +from wifi_assistant.gui.add_network_dialog import AddNetworkDialog + +class AddNetworkDialogTest(unittest.TestCase): + + def setUp(self): + self.parent_window = None + self.save_callback = Mock() + + #given(self.save_callback).save().willReturn(None) + self.save_callback.replay() + + self.testee = AddNetworkDialog(self.parent_window, self.save_callback.save) + + + def test_cancelButtonDoesntCallSaveCallback(self): + self._makeRunDialogReturn(AddNetworkDialog.CANCEL_BUTTON) + self.testee.show() + verify(self.save_callback, never()).save() + + + def test_saveButtonCallsSaveCallback(self): + self._makeRunDialogReturn(AddNetworkDialog.SAVE_BUTTON) + self.testee.show('A Network Name', True) + verify(self.save_callback).save('A Network Name', True) + + + def _makeRunDialogReturn(self, value): + class method(): + def __init__(self, value_to_return): + self._value_to_return = value_to_return + def __call__(self, x): + return self._value_to_return + self.testee._runDialog = method(value) + +if __name__ == '__main__': + unittest.main() + -- 1.7.9.5