network-manager-applet r543 - in branches/network-manager-applet-0-6: . editor libnma src
- From: tambeti svn gnome org
- To: svn-commits-list gnome org
- Subject: network-manager-applet r543 - in branches/network-manager-applet-0-6: . editor libnma src
- Date: Tue, 19 Feb 2008 22:13:15 +0000 (GMT)
Author: tambeti
Date: Tue Feb 19 22:13:14 2008
New Revision: 543
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=543&view=rev
Log:
2008-02-19 Tambet Ingo <tambet gmail com>
Improve the editor to support wired networks and LEAP and phase2
authentications.
Added:
branches/network-manager-applet-0-6/editor/widget-wso-leap.c
branches/network-manager-applet-0-6/libnma/
branches/network-manager-applet-0-6/libnma/Makefile.am
branches/network-manager-applet-0-6/libnma/libnma.c
branches/network-manager-applet-0-6/libnma/libnma.h
Removed:
branches/network-manager-applet-0-6/editor/editor.glade
Modified:
branches/network-manager-applet-0-6/ChangeLog
branches/network-manager-applet-0-6/Makefile.am
branches/network-manager-applet-0-6/configure.ac
branches/network-manager-applet-0-6/editor/Makefile.am
branches/network-manager-applet-0-6/editor/bssid-editor-dialog.c
branches/network-manager-applet-0-6/editor/bssid-editor-dialog.h
branches/network-manager-applet-0-6/editor/editor-app.c
branches/network-manager-applet-0-6/editor/editor-gconf-helper.c
branches/network-manager-applet-0-6/editor/editor-gconf-helper.h
branches/network-manager-applet-0-6/editor/widget-wso-wep.c
branches/network-manager-applet-0-6/editor/widget-wso-wpa-enterprise.c
branches/network-manager-applet-0-6/editor/widget-wso-wpa-personal.c
branches/network-manager-applet-0-6/editor/widget-wso.h
branches/network-manager-applet-0-6/src/Makefile.am
branches/network-manager-applet-0-6/src/applet.glade
branches/network-manager-applet-0-6/src/wireless-security-option.c
branches/network-manager-applet-0-6/src/wso-leap.c
branches/network-manager-applet-0-6/src/wso-private.h
branches/network-manager-applet-0-6/src/wso-wpa-eap.c
branches/network-manager-applet-0-6/src/wso-wpa-psk.c
Modified: branches/network-manager-applet-0-6/Makefile.am
==============================================================================
--- branches/network-manager-applet-0-6/Makefile.am (original)
+++ branches/network-manager-applet-0-6/Makefile.am Tue Feb 19 22:13:14 2008
@@ -1,4 +1,4 @@
-SUBDIRS = src editor icons po
+SUBDIRS = libnma src editor icons po
EXTRA_DIST = \
CONTRIBUTING \
Modified: branches/network-manager-applet-0-6/configure.ac
==============================================================================
--- branches/network-manager-applet-0-6/configure.ac (original)
+++ branches/network-manager-applet-0-6/configure.ac Tue Feb 19 22:13:14 2008
@@ -251,6 +251,7 @@
AC_OUTPUT([
Makefile
+libnma/Makefile
src/Makefile
editor/Makefile
icons/Makefile
Modified: branches/network-manager-applet-0-6/editor/Makefile.am
==============================================================================
--- branches/network-manager-applet-0-6/editor/Makefile.am (original)
+++ branches/network-manager-applet-0-6/editor/Makefile.am Tue Feb 19 22:13:14 2008
@@ -1,6 +1,6 @@
NULL=
-INCLUDES = -I${top_srcdir}/../include -I${top_srcdir}/../libnm-util
+INCLUDES = -I${top_srcdir}
bin_PROGRAMS = nm-editor
@@ -17,7 +17,7 @@
$(GNOME_KEYRING_CFLAGS) \
$(NM_CFLAGS) \
-DICONDIR=\""$(datadir)/pixmaps"\" \
- -DGLADEDIR=\""$(gladedir)"\" \
+ -DGLADEDIR=\""$(datadir)/nm-applet"\" \
-DBINDIR=\""$(bindir)"\" \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DAUTOSTARTDIR=\""$(datadir)/gnome/autostart"\" \
@@ -36,6 +36,7 @@
bssid-editor-dialog.c \
bssid-editor-dialog.h \
widget-wso.h \
+ widget-wso-leap.c \
widget-wso-wep.c \
widget-wso-wpa-personal.c \
widget-wso-wpa-enterprise.c \
@@ -57,19 +58,15 @@
$(LIBGNOMEUI_LIBS) \
$(GNOME_KEYRING_LIBS) \
$(NM_LIBS) \
+ ../libnma/libnma.la \
$(NULL)
-gladedir = $(datadir)/nm-editor
-glade_DATA = editor.glade
desktopdatadir = $(datadir)/applications
desktopdata_DATA = nm-editor.desktop
CLEANFILES = $(server_DATA) *.bak *.gladep
EXTRA_DIST = \
- $(glade_DATA) \
$(desktopdata_DATA) \
$(NULL)
-
-
Modified: branches/network-manager-applet-0-6/editor/bssid-editor-dialog.c
==============================================================================
--- branches/network-manager-applet-0-6/editor/bssid-editor-dialog.c (original)
+++ branches/network-manager-applet-0-6/editor/bssid-editor-dialog.c Tue Feb 19 22:13:14 2008
@@ -49,6 +49,7 @@
typedef struct _bssid_editor_data
{
+ char *glade_file;
GladeXML *glade_xml;
GtkWidget *dialog;
GtkWidget *treeview;
@@ -57,191 +58,69 @@
GtkWidget *edit_button;
} BED_DATA; //bssid_editor_dialog
-void selection_changed_cb (GtkTreeSelection *selection, gpointer data);
-void add_button_clicked_cb(GtkButton *button, gpointer data);
-void remove_button_clicked_cb(GtkButton *button, gpointer data);
-void edit_button_clicked_cb(GtkButton *button, gpointer data);
-
-
-gboolean run_bssid_editor(GtkWidget *parent, gchar *gconf_dir)
+static void
+edit_button_clicked_cb (GtkButton *button, gpointer data)
{
- char *glade_file;
- GtkTreeSelection *select;
- GConfClient *gconf_client;
- GSList *bssids;
- GtkListStore *store;
- GtkTreeViewColumn *column;
- GtkCellRenderer *renderer;
- GtkTreeModel *filter;
- GError *err = NULL;
+ GtkWidget *dialog;
+ GtkWidget *bssid_entry;
BED_DATA *bed_data;
- gboolean rc = FALSE;
-
- bed_data = (BED_DATA *)malloc(sizeof(BED_DATA));
- if(bed_data == NULL)
- {
- g_print("malloc error\n");
- return FALSE;
- }
-
- memset(bed_data, 0, sizeof(BED_DATA));
-
- // load the glade file
- glade_file = g_build_filename (GLADEDIR, "editor.glade", NULL);
- if (!glade_file || !g_file_test (glade_file, G_FILE_TEST_IS_REGULAR))
- glade_file = g_build_filename ("", "editor.glade", NULL);
-
- if (!glade_file || !g_file_test (glade_file, G_FILE_TEST_IS_REGULAR))
- {
- g_print("Error loading editor.glade file!\n");
- g_free (glade_file);
- return FALSE;
- }
-
- bed_data->glade_xml = glade_xml_new (glade_file, BSSID_DIALOG, NULL);
- g_free(glade_file);
-
- bed_data->dialog = glade_xml_get_widget (bed_data->glade_xml, BSSID_DIALOG);
-
- bed_data->treeview = glade_xml_get_widget( bed_data->glade_xml,
- BSSID_TREEVIEW);
- bed_data->add_button = glade_xml_get_widget( bed_data->glade_xml,
- BSSID_ADD);
- bed_data->remove_button = glade_xml_get_widget( bed_data->glade_xml,
- BSSID_REMOVE);
- bed_data->edit_button = glade_xml_get_widget( bed_data->glade_xml,
- BSSID_EDIT);
-
- select = gtk_tree_view_get_selection(GTK_TREE_VIEW (bed_data->treeview));
- gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
-
- g_signal_connect (G_OBJECT (select), "changed",
- G_CALLBACK (selection_changed_cb), bed_data);
- g_signal_connect (G_OBJECT (bed_data->add_button), "clicked",
- G_CALLBACK (add_button_clicked_cb), bed_data);
- g_signal_connect (G_OBJECT (bed_data->remove_button), "clicked",
- G_CALLBACK (remove_button_clicked_cb), bed_data);
- g_signal_connect (G_OBJECT (bed_data->edit_button), "clicked",
- G_CALLBACK (edit_button_clicked_cb), bed_data);
-
- store = gtk_list_store_new (1, G_TYPE_STRING);
-
- gconf_client = gconf_client_get_default();
-
- // Get the bssids
- bssids = gconf_client_get_list(gconf_client, gconf_dir,
- GCONF_VALUE_STRING, &err);
- if(err == 0)
- {
- gchar *bssid = NULL;
-
- while(bssids)
- {
- GtkTreeIter iter;
-
- bssid = g_strdup(bssids->data);
-
- gtk_list_store_append (store, &iter);
-
- gtk_list_store_set (store, &iter, 0, bssid, -1);
+ GladeXML *glade_xml;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreeIter childIter;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ gchar *bssid_value = NULL;
- g_free(bssids->data);
+ bed_data = data;
- bssids = g_slist_delete_link (bssids, bssids);
- }
- }
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (bed_data->treeview));
- filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (store), NULL);
+ if(!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
- gtk_tree_view_set_model (GTK_TREE_VIEW (bed_data->treeview), filter);
+ gtk_tree_model_get (model, &iter, 0, &bssid_value, -1);
+ if(bssid_value == NULL)
+ return;
- g_object_unref (store);
- g_object_unref (filter);
+ glade_xml = glade_xml_new (bed_data->glade_file, BSSID_EDITOR_DIALOG, NULL);
- renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("Name", renderer,
- "markup", 0, NULL);
+ dialog = glade_xml_get_widget (glade_xml, BSSID_EDITOR_DIALOG);
- gtk_tree_view_append_column (GTK_TREE_VIEW (bed_data->treeview), column);
- gtk_tree_view_column_set_sort_column_id (column, 0);
+ bssid_entry = glade_xml_get_widget( glade_xml,
+ BSSID_EDITOR_ENTRY);
+ gtk_window_set_transient_for(GTK_WINDOW(dialog),
+ GTK_WINDOW(bed_data->dialog));
- gtk_window_set_transient_for(GTK_WINDOW(bed_data->dialog),
- GTK_WINDOW(parent));
+ gtk_entry_set_text(GTK_ENTRY(bssid_entry), bssid_value);
- gint result = gtk_dialog_run (GTK_DIALOG (bed_data->dialog));
+ gint result = gtk_dialog_run (GTK_DIALOG(dialog));
if(result == GTK_RESPONSE_OK)
{
- GtkTreeIter iter;
- GtkTreeModel *model;
- gboolean valid;
- gchar *new_bssid;
- GSList *bssid_list;
-
- model = gtk_tree_view_get_model(GTK_TREE_VIEW(bed_data->treeview));
-
- valid = gtk_tree_model_get_iter_first(model, &iter);
-
- bssid_list = NULL;
-
- while(valid)
- {
- gtk_tree_model_get(model, &iter, 0, &new_bssid, -1);
-
- bssid_list = g_slist_append(bssid_list, new_bssid);
+ gchar *new_bssid;
- valid = gtk_tree_model_iter_next(model, &iter);
- }
+ new_bssid = g_strdup(gtk_entry_get_text(GTK_ENTRY(bssid_entry)));
- err = NULL;
+ store = GTK_LIST_STORE(gtk_tree_model_filter_get_model(
+ GTK_TREE_MODEL_FILTER(model)));
- if(bssid_list)
- {
- gconf_client_set_list(gconf_client, gconf_dir,
- GCONF_VALUE_STRING, bssid_list, NULL);
- }
- else
- {
- gconf_client_unset(gconf_client, gconf_dir, NULL);
- }
+ gtk_tree_model_filter_convert_iter_to_child_iter(
+ GTK_TREE_MODEL_FILTER(model),
+ &childIter,
+ &iter);
- gconf_client_suggest_sync(gconf_client, NULL);
- rc = TRUE;
+ gtk_list_store_set ( store, &childIter, 0, new_bssid, -1);
}
- gtk_widget_destroy(bed_data->dialog);
- g_object_unref (bed_data->glade_xml);
-
- free(bed_data);
-
- g_object_unref(gconf_client);
-
- return rc;
-}
-
-
-
-
-void selection_changed_cb (GtkTreeSelection *selection, gpointer data)
-{
- GtkTreeIter iter;
- GtkTreeModel *model;
- BED_DATA *bed_data;
- gboolean enable;
-
- bed_data = data;
-
- enable = gtk_tree_selection_get_selected (selection, &model, &iter);
-
- gtk_widget_set_sensitive(bed_data->remove_button, enable);
- gtk_widget_set_sensitive(bed_data->edit_button, enable);
+ gtk_widget_destroy(dialog);
+ g_object_unref (glade_xml);
}
-
-
-
-void remove_button_clicked_cb(GtkButton *button, gpointer data)
+static void
+remove_button_clicked_cb(GtkButton *button, gpointer data)
{
GtkTreeSelection *selection;
GtkTreeIter iter;
@@ -269,12 +148,9 @@
gtk_list_store_remove ( store, &childIter);
}
-
-
-
-void add_button_clicked_cb(GtkButton *button, gpointer data)
+static void
+add_button_clicked_cb(GtkButton *button, gpointer data)
{
- char *glade_file;
GtkWidget *dialog;
GtkWidget *bssid_entry;
BED_DATA *bed_data;
@@ -282,20 +158,7 @@
bed_data = data;
- // load the glade file
- glade_file = g_build_filename (GLADEDIR, "editor.glade", NULL);
- if (!glade_file || !g_file_test (glade_file, G_FILE_TEST_IS_REGULAR))
- glade_file = g_build_filename ("", "editor.glade", NULL);
-
- if (!glade_file || !g_file_test (glade_file, G_FILE_TEST_IS_REGULAR))
- {
- g_print("Error loading editor.glade file!\n");
- g_free (glade_file);
- return;
- }
-
- glade_xml = glade_xml_new (glade_file, BSSID_EDITOR_DIALOG, NULL);
- g_free(glade_file);
+ glade_xml = glade_xml_new (bed_data->glade_file, BSSID_EDITOR_DIALOG, NULL);
dialog = glade_xml_get_widget (glade_xml, BSSID_EDITOR_DIALOG);
@@ -340,88 +203,162 @@
}
gtk_widget_destroy(dialog);
- g_free(glade_xml);
+ g_object_unref (glade_xml);
}
-
-
-
-void edit_button_clicked_cb(GtkButton *button, gpointer data)
+static void
+selection_changed_cb (GtkTreeSelection *selection, gpointer data)
{
- char *glade_file;
- GtkWidget *dialog;
- GtkWidget *bssid_entry;
- BED_DATA *bed_data;
- GladeXML *glade_xml;
- GtkTreeSelection *selection;
GtkTreeIter iter;
- GtkTreeIter childIter;
GtkTreeModel *model;
- GtkListStore *store;
- gchar *bssid_value = NULL;
+ BED_DATA *bed_data;
+ gboolean enable;
bed_data = data;
- selection = gtk_tree_view_get_selection (
- GTK_TREE_VIEW (bed_data->treeview));
+ enable = gtk_tree_selection_get_selected (selection, &model, &iter);
- if(!gtk_tree_selection_get_selected (selection, &model, &iter))
- return;
+ gtk_widget_set_sensitive(bed_data->remove_button, enable);
+ gtk_widget_set_sensitive(bed_data->edit_button, enable);
+}
- gtk_tree_model_get (model, &iter, 0, &bssid_value, -1);
- if(bssid_value == NULL)
- return;
+gboolean
+run_bssid_editor (const char *glade_file, GtkWidget *parent, const char *gconf_dir)
+{
+ GtkTreeSelection *select;
+ GConfClient *gconf_client;
+ GSList *bssids;
+ GtkListStore *store;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkTreeModel *filter;
+ GError *err = NULL;
+ BED_DATA *bed_data;
+ gboolean rc = FALSE;
+
+ bed_data = g_new0 (BED_DATA, 1);
+ bed_data->glade_file = g_strdup (glade_file);
// load the glade file
- glade_file = g_build_filename (GLADEDIR, "editor.glade", NULL);
- if (!glade_file || !g_file_test (glade_file, G_FILE_TEST_IS_REGULAR))
- glade_file = g_build_filename ("", "editor.glade", NULL);
+ bed_data->glade_xml = glade_xml_new (glade_file, BSSID_DIALOG, NULL);
+
+ bed_data->dialog = glade_xml_get_widget (bed_data->glade_xml, BSSID_DIALOG);
+
+ bed_data->treeview = glade_xml_get_widget( bed_data->glade_xml,
+ BSSID_TREEVIEW);
+ bed_data->add_button = glade_xml_get_widget( bed_data->glade_xml,
+ BSSID_ADD);
+ bed_data->remove_button = glade_xml_get_widget( bed_data->glade_xml,
+ BSSID_REMOVE);
+ bed_data->edit_button = glade_xml_get_widget( bed_data->glade_xml,
+ BSSID_EDIT);
- if (!glade_file || !g_file_test (glade_file, G_FILE_TEST_IS_REGULAR))
+ select = gtk_tree_view_get_selection(GTK_TREE_VIEW (bed_data->treeview));
+ gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
+
+ g_signal_connect (G_OBJECT (select), "changed",
+ G_CALLBACK (selection_changed_cb), bed_data);
+ g_signal_connect (G_OBJECT (bed_data->add_button), "clicked",
+ G_CALLBACK (add_button_clicked_cb), bed_data);
+ g_signal_connect (G_OBJECT (bed_data->remove_button), "clicked",
+ G_CALLBACK (remove_button_clicked_cb), bed_data);
+ g_signal_connect (G_OBJECT (bed_data->edit_button), "clicked",
+ G_CALLBACK (edit_button_clicked_cb), bed_data);
+
+ store = gtk_list_store_new (1, G_TYPE_STRING);
+
+ gconf_client = gconf_client_get_default();
+
+ // Get the bssids
+ bssids = gconf_client_get_list(gconf_client, gconf_dir,
+ GCONF_VALUE_STRING, &err);
+ if(err == 0)
{
- g_print("Error loading editor.glade file!\n");
- g_free (glade_file);
- return;
+ gchar *bssid = NULL;
+
+ while(bssids)
+ {
+ GtkTreeIter iter;
+
+ bssid = g_strdup(bssids->data);
+
+ gtk_list_store_append (store, &iter);
+
+ gtk_list_store_set (store, &iter, 0, bssid, -1);
+
+ g_free(bssids->data);
+
+ bssids = g_slist_delete_link (bssids, bssids);
+ }
}
- glade_xml = glade_xml_new (glade_file, BSSID_EDITOR_DIALOG, NULL);
- g_free(glade_file);
+ filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (store), NULL);
- dialog = glade_xml_get_widget (glade_xml, BSSID_EDITOR_DIALOG);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (bed_data->treeview), filter);
- bssid_entry = glade_xml_get_widget( glade_xml,
- BSSID_EDITOR_ENTRY);
+ g_object_unref (store);
+ g_object_unref (filter);
- gtk_window_set_transient_for(GTK_WINDOW(dialog),
- GTK_WINDOW(bed_data->dialog));
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes ("Name", renderer,
+ "markup", 0, NULL);
- gtk_entry_set_text(GTK_ENTRY(bssid_entry), bssid_value);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (bed_data->treeview), column);
+ gtk_tree_view_column_set_sort_column_id (column, 0);
- gint result = gtk_dialog_run (GTK_DIALOG(dialog));
+
+ gtk_window_set_transient_for(GTK_WINDOW(bed_data->dialog),
+ GTK_WINDOW(parent));
+
+ gint result = gtk_dialog_run (GTK_DIALOG (bed_data->dialog));
if(result == GTK_RESPONSE_OK)
{
- gchar *new_bssid;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ gboolean valid;
+ gchar *new_bssid;
+ GSList *bssid_list;
- new_bssid = g_strdup(gtk_entry_get_text(GTK_ENTRY(bssid_entry)));
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(bed_data->treeview));
- store = GTK_LIST_STORE(gtk_tree_model_filter_get_model(
- GTK_TREE_MODEL_FILTER(model)));
+ valid = gtk_tree_model_get_iter_first(model, &iter);
- gtk_tree_model_filter_convert_iter_to_child_iter(
- GTK_TREE_MODEL_FILTER(model),
- &childIter,
- &iter);
+ bssid_list = NULL;
- gtk_list_store_set ( store, &childIter, 0, new_bssid, -1);
- }
+ while(valid)
+ {
+ gtk_tree_model_get(model, &iter, 0, &new_bssid, -1);
- gtk_widget_destroy(dialog);
- g_free(glade_xml);
+ bssid_list = g_slist_append(bssid_list, new_bssid);
+
+ valid = gtk_tree_model_iter_next(model, &iter);
+ }
+ err = NULL;
+ if(bssid_list)
+ {
+ gconf_client_set_list(gconf_client, gconf_dir,
+ GCONF_VALUE_STRING, bssid_list, NULL);
+ }
+ else
+ {
+ gconf_client_unset(gconf_client, gconf_dir, NULL);
+ }
-}
+ gconf_client_suggest_sync(gconf_client, NULL);
+ rc = TRUE;
+ }
+
+ gtk_widget_destroy(bed_data->dialog);
+ g_object_unref (bed_data->glade_xml);
+ g_free (bed_data->glade_file);
+
+ g_free (bed_data);
+ g_object_unref(gconf_client);
+ return rc;
+}
Modified: branches/network-manager-applet-0-6/editor/bssid-editor-dialog.h
==============================================================================
--- branches/network-manager-applet-0-6/editor/bssid-editor-dialog.h (original)
+++ branches/network-manager-applet-0-6/editor/bssid-editor-dialog.h Tue Feb 19 22:13:14 2008
@@ -27,13 +27,9 @@
#endif
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <glade/glade.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <net/ethernet.h>
-
-gboolean run_bssid_editor(GtkWidget *parent, gchar *gconf_dir);
+gboolean run_bssid_editor (const char *glade_file,
+ GtkWidget *parent,
+ const char *gconf_dir);
#endif // BSSID_EDITOR_DIALOG_H
Modified: branches/network-manager-applet-0-6/editor/editor-app.c
==============================================================================
--- branches/network-manager-applet-0-6/editor/editor-app.c (original)
+++ branches/network-manager-applet-0-6/editor/editor-app.c Tue Feb 19 22:13:14 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* NetworkManager Wireless Editor -- Edit wireless access points
*
* Calvin Gaisford <cgaisford novell com>
@@ -43,9 +45,10 @@
#include "bssid-editor-dialog.h"
#include "widget-wso.h"
-#define WE_GCONF_WIRELESS_PATH "/system/networking/wireless/networks"
+#define WE_GCONF_WIRELESS_PATH "/system/networking/wireless/networks"
+#define WE_GCONF_WIRED_PATH "/system/networking/wired/networks"
-#define WE_ICON_SIZE 24
+#define WE_ICON_SIZE 22
// WirelessNetworkTreeView defines
#define WNTV_DISPLAY_COLUMN 0
@@ -61,248 +64,404 @@
#define SEC_OPTION_WPA2_PERSONAL 4
#define SEC_OPTION_WPA_ENTERPRISE 5
#define SEC_OPTION_WPA2_ENTERPRISE 6
+#define SEC_OPTION_LEAP 7
+// This function not only updated the gconf entry with the new
+// essid entry, but also moves the gconf dir for the entire set
+// of entries since they are stored in gconf by the essid
+static void
+essid_entry_changed (GtkEntry *essid_entry, gpointer data)
+{
+ WE_DATA *we_data;
+ const gchar *new_essid;
+ gboolean do_update;
-WE_DATA *get_editor();
-gboolean quit_editor(WE_DATA *we_data);
-void about_editor_cb(GtkMenuItem *menuitem, gpointer user_data);
-gboolean setup_dialog_idle(WE_DATA *we_data);
-void setup_dialog(WE_DATA *we_data);
-void populate_model(WE_DATA *we_data, GtkListStore *store);
-void network_selection_changed_cb (GtkTreeSelection *selection,
- gpointer data);
-void bssids_button_clicked_cb(GtkButton *button, gpointer user_data);
-void network_remove_button_clicked_cb(GtkButton *button, gpointer user_data);
-void update_dialog_for_current_network(WE_DATA *we_data, gboolean enabled);
-void essid_entry_changed(GtkEntry *essid_entry, gpointer data);
-gboolean essid_entry_focus_lost(GtkWidget *widget, GdkEventFocus *event,
- gpointer data);
-void security_combo_changed(GtkWidget *combo, gpointer data);
-void change_security_settings(gint option, gpointer data);
-void time_stamp_changed(GnomeDateEdit *dateedit, gpointer user_data);
-void update_security_widget(gint option, gpointer data);
-void set_security_combo(gint option, gpointer data);
-void connect_signal_handlers(WE_DATA *we_data, gboolean connect);
-
-
+ do_update = FALSE;
+ we_data = (WE_DATA *)data;
+ new_essid = gtk_entry_get_text(essid_entry);
-int main(int argc, char **argv)
-{
- WE_DATA *we_data;
-
- gnome_program_init(PACKAGE, VERSION,
- LIBGNOMEUI_MODULE, argc, argv,
- GNOME_PARAM_NONE, GNOME_PARAM_NONE);
+ if(we_data->essid_value == NULL)
+ do_update = TRUE;
+ else if(g_ascii_strcasecmp(new_essid, we_data->essid_value) != 0)
+ do_update = TRUE;
- we_data = get_editor();
- if(we_data != NULL)
+ if(we_data->essid_value != NULL)
{
- gtk_widget_show_all(we_data->window);
- gtk_main();
- return 0;
+ g_free(we_data->essid_value);
+ we_data->essid_value = g_strdup(new_essid);
}
- return -1;
-}
+ if(do_update)
+ {
+ GtkTreeSelection *selection;
+ GError *err = NULL;
+ GtkTreeIter iter;
+ GtkTreeIter childIter;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ gchar *key = NULL;
+ gchar *gconf_path;
+ gchar *gconf_new_path;
+ GSList *gconf_entries;
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (we_data->treeview));
-WE_DATA *get_editor()
-{
- WE_DATA *we_data;
- GtkTreeSelection *select;
- GtkWidget *widget;
+ if(!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
- we_data = (WE_DATA *)malloc(sizeof(WE_DATA));
- if(we_data == NULL)
- {
- g_print("malloc error\n");
- return NULL;
- }
+ gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN, &gconf_path, -1);
+ if(gconf_path == NULL)
+ return;
- memset(we_data, 0, sizeof(WE_DATA));
+ // go through and move all of the gconf entries to the new entry
+ key = g_strdup_printf("%s/essid", gconf_path);
+ gconf_client_set_string(we_data->gconf_client, key, new_essid, &err);
+ g_free(key);
- // load the glade file
- we_data->glade_file = g_build_filename (GLADEDIR, "editor.glade", NULL);
- if (!we_data->glade_file ||
- !g_file_test (we_data->glade_file, G_FILE_TEST_IS_REGULAR))
- {
- we_data->glade_file = g_build_filename ("", "editor.glade", NULL);
- }
+ gconf_new_path = g_strdup_printf("%s/%s", WE_GCONF_WIRELESS_PATH,
+ new_essid);
- if (!we_data->glade_file ||
- !g_file_test (we_data->glade_file, G_FILE_TEST_IS_REGULAR))
- {
- g_print("Error loading editor.glade file!\n");
- g_free (we_data->glade_file);
- return NULL;
- }
+ err = NULL;
+ gconf_entries = gconf_client_all_entries(we_data->gconf_client,
+ gconf_path,
+ &err);
+ while (gconf_entries)
+ {
+ GConfEntry *gconf_entry;
+ gchar *entry_tail;
- we_data->editor_xml = glade_xml_new (we_data->glade_file,
- "wireless_editor", NULL);
+ gconf_entry = gconf_entries->data;
- we_data->window = glade_xml_get_widget (we_data->editor_xml,
- "wireless_editor");
+ entry_tail = g_strrstr(gconf_entry->key, "/");
+ if(entry_tail != NULL)
+ {
+ gchar *new_key;
- we_data->gconf_client = gconf_client_get_default();
+ new_key = g_strdup_printf("%s%s", gconf_new_path, entry_tail);
- g_signal_connect_swapped (we_data->window, "delete_event",
- G_CALLBACK (quit_editor), we_data);
+ gconf_client_set(we_data->gconf_client,
+ new_key,
+ gconf_entry->value,
+ &err);
- widget = glade_xml_get_widget(we_data->editor_xml, "quit_nm_editor");
+ gconf_client_unset(we_data->gconf_client,
+ gconf_entry->key,
+ &err);
+ g_free(new_key);
+ }
+ gconf_entry_free(gconf_entry);
+ gconf_entries = g_slist_delete_link (gconf_entries, gconf_entries);
+ }
+ gconf_client_suggest_sync(we_data->gconf_client, &err);
- g_signal_connect_swapped (widget, "activate",
- G_CALLBACK (quit_editor), we_data);
+ // now update the data in the treeview
+ store = GTK_LIST_STORE(gtk_tree_model_filter_get_model(
+ GTK_TREE_MODEL_FILTER(model)));
- widget = glade_xml_get_widget(we_data->editor_xml, "about_nm_editor");
+ gtk_tree_model_filter_convert_iter_to_child_iter(
+ GTK_TREE_MODEL_FILTER(model),
+ &childIter,
+ &iter);
- g_signal_connect_swapped (widget, "activate",
- G_CALLBACK (about_editor_cb), we_data->window);
+ gtk_list_store_set (
+ store,
+ &childIter,
+ WNTV_DISPLAY_COLUMN, g_strdup(new_essid),
+ WNTV_DATA_COLUMN, g_strdup(gconf_new_path),
+ -1);
- we_data->treeview = glade_xml_get_widget(we_data->editor_xml,
- "wireless_treeview");
+ g_free(gconf_new_path);
+ }
+}
- select = gtk_tree_view_get_selection (GTK_TREE_VIEW (we_data->treeview));
- gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
+static gboolean
+essid_entry_focus_lost (GtkWidget *widget, GdkEventFocus *event, gpointer data)
+{
+ essid_entry_changed (GTK_ENTRY (widget), data);
+ return FALSE;
+}
- g_signal_connect (G_OBJECT (select), "changed",
- G_CALLBACK (network_selection_changed_cb), we_data);
+static void
+change_security_settings (gint option, gpointer data)
+{
+ WE_DATA *we_data;
- we_data->essid_entry = glade_xml_get_widget(we_data->editor_xml,
- "essid_entry");
- we_data->security_combo = glade_xml_get_widget(we_data->editor_xml,
- "security_combo");
- we_data->stamp_editor = glade_xml_get_widget(we_data->editor_xml,
- "lastused_dateedit");
- we_data->remove_button = glade_xml_get_widget(we_data->editor_xml,
- "remove_button");
+ we_data = data;
+ g_return_if_fail(we_data != NULL);
- widget = glade_xml_get_widget(we_data->editor_xml, "bssids_modify");
+ switch(option)
+ {
+ default:
+ case SEC_OPTION_NONE:
+ eh_gconf_client_set_int(we_data, "we_cipher",
+ IW_AUTH_CIPHER_NONE);
+ eh_gconf_client_unset(we_data, "wep_auth_algorithm");
+ eh_gconf_client_unset(we_data, "wpa_psk_wpa_version");
+ break;
+ case SEC_OPTION_WEP64:
+ eh_gconf_client_set_int(we_data, "we_cipher",
+ IW_AUTH_CIPHER_WEP40);
+ eh_gconf_client_set_int(we_data, "wep_auth_algorithm",
+ IW_AUTH_ALG_OPEN_SYSTEM);
+ eh_gconf_client_unset(we_data, "wpa_psk_wpa_version");
+ break;
+ case SEC_OPTION_WEP128:
+ eh_gconf_client_set_int(we_data, "we_cipher",
+ IW_AUTH_CIPHER_WEP104);
+ eh_gconf_client_set_int(we_data, "wep_auth_algorithm",
+ IW_AUTH_ALG_OPEN_SYSTEM);
+ eh_gconf_client_unset(we_data, "wpa_psk_wpa_version");
+ break;
+ case SEC_OPTION_WPA_PERSONAL:
+ eh_gconf_client_set_int(we_data, "we_cipher", 0); // auto
+ eh_gconf_client_set_int(we_data, "wpa_psk_wpa_version",
+ IW_AUTH_WPA_VERSION_WPA);
+ eh_gconf_client_unset(we_data, "wep_auth_algorithm");
+ break;
+ case SEC_OPTION_WPA2_PERSONAL:
+ eh_gconf_client_set_int(we_data, "we_cipher", 0); // auto
+ eh_gconf_client_set_int(we_data, "wpa_psk_wpa_version",
+ IW_AUTH_WPA_VERSION_WPA2);
+ eh_gconf_client_unset(we_data, "wep_auth_algorithm");
+ break;
+ case SEC_OPTION_WPA_ENTERPRISE:
+ eh_gconf_client_set_int(we_data, "we_cipher",
+ NM_AUTH_TYPE_WPA_EAP);
+ eh_gconf_client_set_int(we_data, "wpa_eap_wpa_version",
+ IW_AUTH_WPA_VERSION_WPA);
+ eh_gconf_client_unset(we_data, "wep_auth_algorithm");
+ break;
+ case SEC_OPTION_WPA2_ENTERPRISE:
+ eh_gconf_client_set_int(we_data, "we_cipher",
+ NM_AUTH_TYPE_WPA_EAP);
+ eh_gconf_client_set_int(we_data, "wpa_eap_wpa_version",
+ IW_AUTH_WPA_VERSION_WPA2);
+ eh_gconf_client_unset(we_data, "wep_auth_algorithm");
+ break;
+ case SEC_OPTION_LEAP:
+ eh_gconf_client_set_int(we_data, "we_cipher", NM_AUTH_TYPE_LEAP);
+ eh_gconf_client_unset(we_data, "wep_auth_algorithm");
+ break;
+ }
+}
- g_signal_connect (G_OBJECT (widget), "clicked",
- G_CALLBACK (bssids_button_clicked_cb), we_data);
+static void
+update_security_widget (gint option, gpointer data)
+{
+ WE_DATA *we_data;
+ GtkWidget *vbox;
+ GList *children;
+ GtkWidget *childWidget;
- g_signal_connect (G_OBJECT (we_data->remove_button), "clicked",
- G_CALLBACK (network_remove_button_clicked_cb), we_data);
+ we_data = data;
+ g_return_if_fail(we_data != NULL);
- g_idle_add((GSourceFunc)setup_dialog_idle, we_data);
+ vbox = GTK_WIDGET( glade_xml_get_widget(we_data->editor_xml,
+ "swapout_vbox"));
+ g_return_if_fail(vbox != NULL);
- return we_data;
-}
+ // loop through and remove all of the existing children
+ for(children = gtk_container_get_children(GTK_CONTAINER(vbox));
+ children;
+ children = g_list_next(children))
+ {
+ GtkWidget *child = GTK_WIDGET(children->data);
+ gtk_container_remove(GTK_CONTAINER(vbox), child);
+ }
+ if(we_data->sub_xml != NULL)
+ {
+ g_object_unref(we_data->sub_xml);
+ we_data->sub_xml = NULL;
+ }
-gboolean quit_editor(WE_DATA *we_data)
-{
- if(we_data != NULL)
+ switch(option)
{
- if(we_data->editor_xml != NULL)
- g_object_unref(we_data->editor_xml);
- if(we_data->gconf_client != NULL)
- g_object_unref(we_data->gconf_client);
- if(we_data->glade_file != NULL)
- g_free(we_data->glade_file);
- free(we_data);
+ default:
+ case SEC_OPTION_NONE:
+ childWidget = NULL;
+ break;
+ case SEC_OPTION_WEP64:
+ case SEC_OPTION_WEP128:
+ childWidget = get_wep_widget(we_data);
+ break;
+ case SEC_OPTION_WPA_PERSONAL:
+ case SEC_OPTION_WPA2_PERSONAL:
+ childWidget = get_wpa_personal_widget(we_data);
+ break;
+ case SEC_OPTION_WPA_ENTERPRISE:
+ case SEC_OPTION_WPA2_ENTERPRISE:
+ childWidget = get_wpa_enterprise_widget(we_data);
+ break;
+ case SEC_OPTION_LEAP:
+ childWidget = get_leap_widget(we_data);
+ break;
}
- gtk_exit(0);
- return TRUE;
+ if(childWidget != NULL)
+ gtk_container_add(GTK_CONTAINER(vbox), childWidget);
}
-static void about_dialog_activate_link_cb (GtkAboutDialog *about,
- const gchar *url,
- gpointer data)
+static void
+security_combo_changed (GtkWidget *combo, gpointer data)
{
- gnome_url_show (url, NULL);
+ int active;
+
+ active = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
+ change_security_settings (active, data);
+ update_security_widget (active, data);
}
-void about_editor_cb(GtkMenuItem *menuitem, gpointer user_data)
+static void
+time_stamp_changed (GnomeDateEdit *dateedit, gpointer user_data)
{
- static const gchar *authors[] =
- {
- "Calvin Gaisford <cgaisford novell com>",
- "\nNetworkManager Developers:",
- "Christopher Aillon <caillon redhat com>",
- "Jonathan Blandford <jrb redhat com>",
- "John Palmieri <johnp redhat com>",
- "Ray Strode <rstrode redhat com>",
- "Colin Walters <walters redhat com>",
- "Dan Williams <dcbw redhat com>",
- "David Zeuthen <davidz redhat com>",
- "Bill Moss <bmoss clemson edu>",
- "Tom Parker",
- "j bootlab org",
- "Peter Jones <pjones redhat com>",
- "Robert Love <rml novell com>",
- "Tim Niemueller <tim niemueller de>",
- NULL
- };
+ WE_DATA *we_data;
+ GtkTreeSelection *selection;
+ gchar *key = NULL;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ gchar *gconf_path;
+ GError *err = NULL;
+ time_t t;
- static const gchar *artists[] =
- {
- NULL
- };
+ we_data = user_data;
- static const gchar *documenters[] =
- {
- NULL
- };
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (we_data->treeview));
+ if(!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
-#if !GTK_CHECK_VERSION(2,6,0)
- GdkPixbuf *pixbuf;
- char *file;
- GtkWidget *about_dialog;
+ gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN, &gconf_path, -1);
+ if(gconf_path == NULL)
+ return;
- /* GTK 2.4 and earlier, have to use libgnome for about dialog */
- file = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP,
- "gnome-networktool.png", FALSE, NULL);
- pixbuf = gdk_pixbuf_new_from_file (file, NULL);
- g_free (file);
+ key = g_strdup_printf("%s/timestamp", gconf_path);
- about_dialog = gnome_about_new (_("NetworkManager Editor"),
- VERSION,
- _("Copyright \xc2\xa9 2007 Novell, Inc."),
- _("Editor for managing your wireless networks"),
- authors,
- documenters,
- _("translator-credits"),
- pixbuf);
- g_object_unref (pixbuf);
+ t = gnome_date_edit_get_time(dateedit);
- gtk_window_set_screen (GTK_WINDOW (about_dialog),
- gtk_widget_get_screen (GTK_WIDGET (applet)));
- g_signal_connect (about_dialog, "destroy",
- G_CALLBACK (gtk_widget_destroyed), &about_dialog);
- gtk_widget_show (about_dialog);
+ gconf_client_set_int(we_data->gconf_client, key, t, NULL);
-#else
- static gboolean been_here = FALSE;
- if (!been_here)
+ gconf_client_suggest_sync(we_data->gconf_client, &err);
+
+ g_free(key);
+}
+
+static void
+connect_signal_handlers (WE_DATA *we_data, gboolean connect)
+{
+ if(g_signal_handler_is_connected(G_OBJECT(we_data->essid_entry),
+ we_data->essid_shid))
{
- been_here = TRUE;
- gtk_about_dialog_set_url_hook (about_dialog_activate_link_cb,
- NULL, NULL);
+ g_signal_handler_disconnect(G_OBJECT(we_data->essid_entry),
+ we_data->essid_shid);
+ we_data->essid_shid = 0;
+ }
+ if(g_signal_handler_is_connected(G_OBJECT(we_data->essid_entry),
+ we_data->essid_focus_shid))
+ {
+ g_signal_handler_disconnect(G_OBJECT(we_data->essid_entry),
+ we_data->essid_focus_shid);
+ we_data->essid_focus_shid = 0;
+ }
+ if(g_signal_handler_is_connected(G_OBJECT(we_data->security_combo),
+ we_data->combo_shid))
+ {
+ g_signal_handler_disconnect(G_OBJECT(we_data->security_combo),
+ we_data->combo_shid);
+ we_data->essid_shid = 0;
+ }
+ if(g_signal_handler_is_connected(G_OBJECT(we_data->stamp_editor),
+ we_data->stamp_date_shid))
+ {
+ g_signal_handler_disconnect(G_OBJECT(we_data->stamp_editor),
+ we_data->stamp_date_shid);
+ we_data->stamp_date_shid = 0;
+ }
+ if(g_signal_handler_is_connected(G_OBJECT(we_data->stamp_editor),
+ we_data->stamp_time_shid))
+ {
+ g_signal_handler_disconnect(G_OBJECT(we_data->stamp_editor),
+ we_data->stamp_time_shid);
+ we_data->stamp_time_shid = 0;
+ }
+ if(connect)
+ {
+ we_data->essid_shid = g_signal_connect(
+ G_OBJECT(we_data->essid_entry), "activate",
+ GTK_SIGNAL_FUNC (essid_entry_changed), we_data);
+ we_data->essid_focus_shid = g_signal_connect(
+ G_OBJECT(we_data->essid_entry), "focus-out-event",
+ GTK_SIGNAL_FUNC (essid_entry_focus_lost), we_data);
+ we_data->combo_shid = g_signal_connect(
+ G_OBJECT(we_data->security_combo), "changed",
+ GTK_SIGNAL_FUNC (security_combo_changed), we_data);
+ we_data->stamp_date_shid = g_signal_connect(
+ G_OBJECT(we_data->stamp_editor), "date-changed",
+ GTK_SIGNAL_FUNC (time_stamp_changed), we_data);
+ we_data->stamp_time_shid = g_signal_connect(
+ G_OBJECT(we_data->stamp_editor), "time-changed",
+ GTK_SIGNAL_FUNC (time_stamp_changed), we_data);
}
-
- /* GTK 2.6 and later code */
- gtk_show_about_dialog (NULL,
- "name", _("NetworkManager Editor"),
- "version", VERSION,
- "copyright", _("Copyright \xc2\xa9 2007 Novell, Inc."),
- "comments", _("Editor for managing your wireless networks."),
- "website", "http://www.gnome.org/projects/NetworkManager/",
- "authors", authors,
- "artists", artists,
- "documenters", documenters,
- "translator-credits", _("translator-credits"),
- "logo-icon-name", GTK_STOCK_NETWORK,
- NULL);
-#endif
}
-gboolean setup_dialog_idle(WE_DATA *we_data)
+static void
+network_remove_button_clicked_cb (GtkButton *button, gpointer user_data)
{
- setup_dialog(we_data);
- return FALSE;
+ WE_DATA *we_data;
+ GtkTreeSelection *selection;
+ GError *err = NULL;
+ GtkTreeIter iter;
+ GtkTreeIter childIter;
+ GtkTreeModel *model;
+ GtkListStore *store;
+ gchar *gconf_path;
+ GSList *gconf_entries;
+
+ we_data = (WE_DATA *)user_data;
+
+ selection = gtk_tree_view_get_selection (
+ GTK_TREE_VIEW (we_data->treeview));
+
+ if(!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+
+ gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN, &gconf_path, -1);
+ if(gconf_path == NULL)
+ return;
+
+ err = NULL;
+ gconf_entries = gconf_client_all_entries(we_data->gconf_client,
+ gconf_path,
+ &err);
+
+ while (gconf_entries)
+ {
+ GConfEntry *gconf_entry;
+
+ gconf_entry = gconf_entries->data;
+
+ gconf_client_unset(we_data->gconf_client,
+ gconf_entry->key,
+ &err);
+
+ gconf_entry_free(gconf_entry);
+ gconf_entries = g_slist_delete_link (gconf_entries, gconf_entries);
+ }
+
+ gconf_client_suggest_sync(we_data->gconf_client, &err);
+
+ // now update the data in the treeview
+ store = GTK_LIST_STORE(gtk_tree_model_filter_get_model(
+ GTK_TREE_MODEL_FILTER(model)));
+
+ gtk_tree_model_filter_convert_iter_to_child_iter(
+ GTK_TREE_MODEL_FILTER(model),
+ &childIter,
+ &iter);
+
+ gtk_list_store_remove ( store, &childIter);
+
}
static gint
@@ -311,13 +470,19 @@
GtkTreeIter *b,
gpointer user_data)
{
- char *aa;
- char *bb;
+ char *aa = NULL;
+ char *bb = NULL;
gint result;
gtk_tree_model_get (model, a, WNTV_DISPLAY_COLUMN, &aa, -1);
gtk_tree_model_get (model, b, WNTV_DISPLAY_COLUMN, &bb, -1);
- result = strcmp (aa, bb);
+
+ if (aa == NULL)
+ result = -1;
+ else if (bb == NULL)
+ result = 1;
+ else
+ result = strcmp (aa, bb);
g_free (aa);
g_free (bb);
@@ -325,7 +490,67 @@
return result;
}
-void setup_dialog(WE_DATA *we_data)
+static void
+add_networks (GtkListStore *store, GConfClient *gconf_client, const char *gconf_prefix, GdkPixbuf *pixbuf)
+{
+ GSList *gconf_dirs;
+
+ gconf_dirs = gconf_client_all_dirs (gconf_client, gconf_prefix, NULL);
+ while (gconf_dirs) {
+ gchar *gconf_entry_dir = gconf_dirs->data;
+ gchar *key;
+ gchar *ssid;
+
+ key = g_strdup_printf ("%s/essid", gconf_entry_dir);
+ ssid = gconf_client_get_string (gconf_client, key, NULL);
+ g_free (key);
+
+ if (ssid) {
+ GtkTreeIter iter;
+
+ gtk_list_store_append (store, &iter);
+
+ gtk_list_store_set (store, &iter,
+ WNTV_DISPLAY_COLUMN, ssid,
+ WNTV_PIXBUF_COLUMN, pixbuf,
+ WNTV_DATA_COLUMN, gconf_entry_dir,
+ -1);
+
+ g_free (ssid);
+ }
+
+ gconf_dirs = g_slist_delete_link (gconf_dirs, gconf_dirs);
+ }
+}
+
+static void
+populate_model (WE_DATA *we_data, GtkListStore *store)
+{
+ GdkPixbuf *pixbuf;
+ GtkIconTheme *theme;
+
+ if (gtk_widget_has_screen (we_data->treeview))
+ theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (we_data->treeview));
+ else
+ theme = gtk_icon_theme_get_default ();
+
+ /* Wireless */
+ pixbuf = gtk_icon_theme_load_icon (theme, "nm-device-wireless", WE_ICON_SIZE, 0, NULL);
+ add_networks (store, we_data->gconf_client, WE_GCONF_WIRELESS_PATH, pixbuf);
+ g_object_unref (pixbuf);
+
+ /* Wired */
+ pixbuf = gtk_icon_theme_load_icon (theme, "nm-device-wired", WE_ICON_SIZE, 0, NULL);
+ add_networks (store, we_data->gconf_client, WE_GCONF_WIRED_PATH, pixbuf);
+ g_object_unref (pixbuf);
+
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+ WNTV_DISPLAY_COLUMN,
+ GTK_SORT_ASCENDING);
+}
+
+static void
+setup_dialog (WE_DATA *we_data)
{
GtkListStore *store;
GtkTreeViewColumn *column;
@@ -334,35 +559,32 @@
GtkTreeIter iter;
store = gtk_list_store_new (WNTV_NUM_COLUMNS,
- G_TYPE_STRING,
- GDK_TYPE_PIXBUF,
- G_TYPE_POINTER);
+ G_TYPE_STRING,
+ GDK_TYPE_PIXBUF,
+ G_TYPE_POINTER);
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
- WNTV_DISPLAY_COLUMN,
- sort_networks,
- NULL,
- NULL);
+ WNTV_DISPLAY_COLUMN,
+ sort_networks,
+ NULL,
+ NULL);
populate_model (we_data, store);
filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (store), NULL);
- gtk_tree_view_set_model (GTK_TREE_VIEW (we_data->treeview),
- filter);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (we_data->treeview), filter);
g_object_unref (store);
g_object_unref (filter);
renderer = gtk_cell_renderer_pixbuf_new ();
- column = gtk_tree_view_column_new_with_attributes ("Image", renderer,
- "pixbuf", WNTV_PIXBUF_COLUMN, NULL);
+ column = gtk_tree_view_column_new_with_attributes ("Image", renderer, "pixbuf", WNTV_PIXBUF_COLUMN, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (we_data->treeview), column);
renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("Name", renderer,
- "markup", WNTV_DISPLAY_COLUMN, NULL);
+ column = gtk_tree_view_column_new_with_attributes ("Name", renderer, "markup", WNTV_DISPLAY_COLUMN, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (we_data->treeview), column);
gtk_tree_view_column_set_sort_column_id (column, 0);
@@ -404,100 +626,155 @@
0, _("WPA2 Enterprise"),
-1);
- gtk_combo_box_set_model (GTK_COMBO_BOX(we_data->security_combo),
- GTK_TREE_MODEL (store));
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter,
+ 0, _("LEAP"),
+ -1);
+ gtk_combo_box_set_model (GTK_COMBO_BOX(we_data->security_combo), GTK_TREE_MODEL (store));
g_object_unref (store);
}
-
-void populate_model(WE_DATA *we_data, GtkListStore *store)
+static gboolean
+setup_dialog_idle (gpointer data)
{
- GtkTreeIter iter;
- GdkPixbuf *pixbuf;
- int icon_size = WE_ICON_SIZE;
- GtkIconTheme *theme;
- GSList *gconf_dirs;
- GError *err;
-
- if (gtk_widget_has_screen (we_data->treeview))
- {
- theme = gtk_icon_theme_get_for_screen (
- gtk_widget_get_screen (we_data->treeview));
- }
- else
- {
- theme = gtk_icon_theme_get_default ();
- }
-
- pixbuf = gtk_icon_theme_load_icon (theme, "nm-device-wireless", icon_size,
- 0, NULL);
-
- gconf_dirs = gconf_client_all_dirs(we_data->gconf_client,
- WE_GCONF_WIRELESS_PATH, &err);
+ WE_DATA *we_data = (WE_DATA *) data;
- while (gconf_dirs)
- {
- GError *err = NULL;
- gchar *name_key = NULL;
- gchar *name;
- gchar *gconf_entry_dir;
-
-
- gconf_entry_dir = g_strdup(gconf_dirs->data);
- name_key = g_strdup_printf("%s/essid", gconf_entry_dir);
- name = gconf_client_get_string (we_data->gconf_client, name_key, &err);
- if (name && strlen (name)) {
- gtk_list_store_append (store, &iter);
+ setup_dialog (we_data);
- gtk_list_store_set (store, &iter,
- WNTV_DISPLAY_COLUMN, name,
- WNTV_PIXBUF_COLUMN, pixbuf,
- WNTV_DATA_COLUMN, gconf_entry_dir,
- -1);
- }
+ return FALSE;
+}
- g_free(name_key);
+static gboolean
+quit_editor (WE_DATA *we_data)
+{
+ if (we_data) {
+ if (we_data->editor_xml)
+ g_object_unref (we_data->editor_xml);
+ if (we_data->gconf_client)
+ g_object_unref (we_data->gconf_client);
+ if (we_data->glade_file)
+ g_free (we_data->glade_file);
- gconf_dirs = g_slist_delete_link (gconf_dirs, gconf_dirs);
+ g_free (we_data);
}
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
- WNTV_DISPLAY_COLUMN,
- GTK_SORT_ASCENDING);
+ gtk_exit (0);
+ return TRUE;
}
-
-void network_selection_changed_cb (GtkTreeSelection *selection,
- gpointer data)
+static void
+about_dialog_activate_link_cb (GtkAboutDialog *about,
+ const gchar *url,
+ gpointer data)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
- WE_DATA *we_data;
-
- we_data = data;
+ gnome_url_show (url, NULL);
+}
- if(!gtk_tree_selection_get_selected (selection, &model, &iter))
+static void
+about_editor_cb (GtkMenuItem *menuitem, gpointer user_data)
+{
+ static const gchar *authors[] =
{
- update_dialog_for_current_network(we_data, FALSE);
- return;
- }
+ "Calvin Gaisford <cgaisford novell com>",
+ "\nNetworkManager Developers:",
+ "Christopher Aillon <caillon redhat com>",
+ "Jonathan Blandford <jrb redhat com>",
+ "John Palmieri <johnp redhat com>",
+ "Ray Strode <rstrode redhat com>",
+ "Colin Walters <walters redhat com>",
+ "Dan Williams <dcbw redhat com>",
+ "David Zeuthen <davidz redhat com>",
+ "Bill Moss <bmoss clemson edu>",
+ "Tom Parker",
+ "j bootlab org",
+ "Peter Jones <pjones redhat com>",
+ "Robert Love <rml novell com>",
+ "Tim Niemueller <tim niemueller de>",
+ NULL
+ };
- gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN,
- &(we_data->cur_gconf_dir), -1);
+ static const gchar *artists[] =
+ {
+ NULL
+ };
- if(we_data->cur_gconf_dir != NULL)
+ static const gchar *documenters[] =
{
- connect_signal_handlers(we_data, FALSE);
- update_dialog_for_current_network(we_data, TRUE);
- connect_signal_handlers(we_data, TRUE);
+ NULL
+ };
+
+#if !GTK_CHECK_VERSION(2,6,0)
+ GdkPixbuf *pixbuf;
+ char *file;
+ GtkWidget *about_dialog;
+
+ /* GTK 2.4 and earlier, have to use libgnome for about dialog */
+ file = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP,
+ "gnome-networktool.png", FALSE, NULL);
+ pixbuf = gdk_pixbuf_new_from_file (file, NULL);
+ g_free (file);
+
+ about_dialog = gnome_about_new (_("NetworkManager Editor"),
+ VERSION,
+ _("Copyright \xc2\xa9 2007 Novell, Inc."),
+ _("Editor for managing your wireless networks"),
+ authors,
+ documenters,
+ _("translator-credits"),
+ pixbuf);
+ g_object_unref (pixbuf);
+
+ gtk_window_set_screen (GTK_WINDOW (about_dialog),
+ gtk_widget_get_screen (GTK_WIDGET (applet)));
+ g_signal_connect (about_dialog, "destroy",
+ G_CALLBACK (gtk_widget_destroyed), &about_dialog);
+ gtk_widget_show (about_dialog);
+
+#else
+ static gboolean been_here = FALSE;
+ if (!been_here)
+ {
+ been_here = TRUE;
+ gtk_about_dialog_set_url_hook (about_dialog_activate_link_cb,
+ NULL, NULL);
}
- else
- update_dialog_for_current_network(we_data, FALSE);
+
+ /* GTK 2.6 and later code */
+ gtk_show_about_dialog (NULL,
+ "name", _("NetworkManager Editor"),
+ "version", VERSION,
+ "copyright", _("Copyright \xc2\xa9 2007 Novell, Inc."),
+ "comments", _("Editor for managing your wireless networks."),
+ "website", "http://www.gnome.org/projects/NetworkManager/",
+ "authors", authors,
+ "artists", artists,
+ "documenters", documenters,
+ "translator-credits", _("translator-credits"),
+ "logo-icon-name", GTK_STOCK_NETWORK,
+ NULL);
+#endif
}
+static void
+set_security_combo (gint option, gpointer data)
+{
+ WE_DATA *we_data = (WE_DATA *) data;
+ GtkWidget *combo;
+
+ combo = glade_xml_get_widget (we_data->editor_xml, "security_combo");
+ gtk_combo_box_set_active (GTK_COMBO_BOX (combo), option);
+
+ if (we_data->cur_gconf_dir && !strncmp (we_data->cur_gconf_dir, WE_GCONF_WIRELESS_PATH, strlen (WE_GCONF_WIRELESS_PATH)))
+ gtk_widget_set_sensitive (combo, TRUE);
+ else
+ gtk_widget_set_sensitive (combo, FALSE);
-void update_dialog_for_current_network(WE_DATA *we_data, gboolean enabled)
+ update_security_widget (option, data);
+}
+
+static void
+update_dialog_for_current_network (WE_DATA *we_data, gboolean enabled)
{
GError *err = NULL;
gchar *key = NULL;
@@ -597,418 +874,100 @@
widget = glade_xml_get_widget(we_data->editor_xml,
"lastused_dateedit");
- gnome_date_edit_set_time(GNOME_DATE_EDIT(widget), t);
- gtk_widget_set_sensitive(widget, TRUE);
- }
-
- widget = glade_xml_get_widget(we_data->editor_xml, "bssids_modify");
- gtk_widget_set_sensitive(widget, TRUE);
-
-
- // ============ GET CIPHER PROPERTY AND SWITCH ============
- // Get the cipher
- we_cipher = eh_gconf_client_get_int(we_data, "we_cipher");
-
- switch(we_cipher)
- {
- default:
- case IW_AUTH_CIPHER_NONE: // no security
- set_security_combo(SEC_OPTION_NONE, we_data);
- break;
- case IW_AUTH_CIPHER_WEP40: // WEP 64bit
- set_security_combo(SEC_OPTION_WEP64, we_data);
- break;
- case IW_AUTH_CIPHER_WEP104: // WEP 128bit
- set_security_combo(SEC_OPTION_WEP128, we_data);
- break;
- case NM_AUTH_TYPE_WPA_PSK_AUTO: // WPA or WPA2 PERSONAL
- case IW_AUTH_CIPHER_TKIP:
- case IW_AUTH_CIPHER_CCMP:
- {
- wpa_version = eh_gconf_client_get_int(we_data,
- "wpa_psk_wpa_version");
- switch(wpa_version)
- {
- case IW_AUTH_WPA_VERSION_WPA:
- set_security_combo(SEC_OPTION_WPA_PERSONAL, we_data);
- break;
- default:
- case IW_AUTH_WPA_VERSION_WPA2:
- set_security_combo(SEC_OPTION_WPA2_PERSONAL, we_data);
- break;
- }
- break;
- }
- case NM_AUTH_TYPE_WPA_EAP: // WPA or WPA2 Enterprise
- {
- wpa_version = eh_gconf_client_get_int(we_data,
- "wpa_eap_wpa_version");
- switch(wpa_version)
- {
- case IW_AUTH_WPA_VERSION_WPA:
- set_security_combo(SEC_OPTION_WPA_ENTERPRISE, we_data);
- break;
- default:
- case IW_AUTH_WPA_VERSION_WPA2:
- set_security_combo(SEC_OPTION_WPA2_ENTERPRISE, we_data);
- break;
- }
- break;
- }
- }
-}
-
-
-gboolean essid_entry_focus_lost(GtkWidget *widget, GdkEventFocus *event,
- gpointer data)
-{
- essid_entry_changed(GTK_ENTRY(widget), data);
- return FALSE;
-}
-
-
-// This function not only updated the gconf entry with the new
-// essid entry, but also moves the gconf dir for the entire set
-// of entries since they are stored in gconf by the essid
-void essid_entry_changed(GtkEntry *essid_entry, gpointer data)
-{
- WE_DATA *we_data;
- const gchar *new_essid;
- gboolean do_update;
-
- do_update = FALSE;
- we_data = (WE_DATA *)data;
- new_essid = gtk_entry_get_text(essid_entry);
-
- if(we_data->essid_value == NULL)
- do_update = TRUE;
- else if(g_ascii_strcasecmp(new_essid, we_data->essid_value) != 0)
- do_update = TRUE;
-
- if(we_data->essid_value != NULL)
- {
- g_free(we_data->essid_value);
- we_data->essid_value = g_strdup(new_essid);
- }
-
- if(do_update)
- {
- GtkTreeSelection *selection;
- GError *err = NULL;
- GtkTreeIter iter;
- GtkTreeIter childIter;
- GtkTreeModel *model;
- GtkListStore *store;
- gchar *key = NULL;
- gchar *gconf_path;
- gchar *gconf_new_path;
- GSList *gconf_entries;
-
- selection = gtk_tree_view_get_selection (
- GTK_TREE_VIEW (we_data->treeview));
-
- if(!gtk_tree_selection_get_selected (selection, &model, &iter))
- return;
-
- gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN, &gconf_path, -1);
- if(gconf_path == NULL)
- return;
-
- // go through and move all of the gconf entries to the new entry
- key = g_strdup_printf("%s/essid", gconf_path);
- gconf_client_set_string(we_data->gconf_client, key, new_essid, &err);
- g_free(key);
-
- gconf_new_path = g_strdup_printf("%s/%s", WE_GCONF_WIRELESS_PATH,
- new_essid);
-
- err = NULL;
- gconf_entries = gconf_client_all_entries(we_data->gconf_client,
- gconf_path,
- &err);
- while (gconf_entries)
- {
- GConfEntry *gconf_entry;
- gchar *entry_tail;
-
- gconf_entry = gconf_entries->data;
-
- entry_tail = g_strrstr(gconf_entry->key, "/");
- if(entry_tail != NULL)
- {
- gchar *new_key;
-
- new_key = g_strdup_printf("%s%s", gconf_new_path, entry_tail);
-
- gconf_client_set(we_data->gconf_client,
- new_key,
- gconf_entry->value,
- &err);
-
- gconf_client_unset(we_data->gconf_client,
- gconf_entry->key,
- &err);
- g_free(new_key);
- }
- gconf_entry_free(gconf_entry);
- gconf_entries = g_slist_delete_link (gconf_entries, gconf_entries);
- }
- gconf_client_suggest_sync(we_data->gconf_client, &err);
-
-
- // now update the data in the treeview
- store = GTK_LIST_STORE(gtk_tree_model_filter_get_model(
- GTK_TREE_MODEL_FILTER(model)));
-
- gtk_tree_model_filter_convert_iter_to_child_iter(
- GTK_TREE_MODEL_FILTER(model),
- &childIter,
- &iter);
-
- gtk_list_store_set (
- store,
- &childIter,
- WNTV_DISPLAY_COLUMN, g_strdup(new_essid),
- WNTV_DATA_COLUMN, g_strdup(gconf_new_path),
- -1);
-
- g_free(gconf_new_path);
- }
-}
-
-
-void security_combo_changed(GtkWidget *combo, gpointer data)
-{
- switch(gtk_combo_box_get_active(GTK_COMBO_BOX(combo)))
- {
- case 0:
- default:
- change_security_settings(SEC_OPTION_NONE, data);
- update_security_widget(SEC_OPTION_NONE, data);
- break;
- case 1:
- change_security_settings(SEC_OPTION_WEP64, data);
- update_security_widget(SEC_OPTION_WEP64, data);
- break;
- case 2:
- change_security_settings(SEC_OPTION_WEP128, data);
- update_security_widget(SEC_OPTION_WEP128, data);
- break;
- case 3:
- change_security_settings(SEC_OPTION_WPA_PERSONAL, data);
- update_security_widget(SEC_OPTION_WPA_PERSONAL, data);
- break;
- case 4:
- change_security_settings(SEC_OPTION_WPA2_PERSONAL, data);
- update_security_widget(SEC_OPTION_WPA2_PERSONAL, data);
- break;
- case 5:
- change_security_settings(SEC_OPTION_WPA_ENTERPRISE, data);
- update_security_widget(SEC_OPTION_WPA_ENTERPRISE, data);
- break;
- case 6:
- change_security_settings(SEC_OPTION_WPA2_ENTERPRISE, data);
- update_security_widget(SEC_OPTION_WPA2_ENTERPRISE, data);
- break;
- }
-}
-
-
-
-void change_security_settings(gint option, gpointer data)
-{
- WE_DATA *we_data;
-
- we_data = data;
- g_return_if_fail(we_data != NULL);
-
- switch(option)
- {
- default:
- case SEC_OPTION_NONE:
- eh_gconf_client_set_int(we_data, "we_cipher",
- IW_AUTH_CIPHER_NONE);
- eh_gconf_client_unset(we_data, "wep_auth_algorithm");
- eh_gconf_client_unset(we_data, "wpa_psk_wpa_version");
- break;
- case SEC_OPTION_WEP64:
- eh_gconf_client_set_int(we_data, "we_cipher",
- IW_AUTH_CIPHER_WEP40);
- eh_gconf_client_set_int(we_data, "wep_auth_algorithm",
- IW_AUTH_ALG_OPEN_SYSTEM);
- eh_gconf_client_unset(we_data, "wpa_psk_wpa_version");
- break;
- case SEC_OPTION_WEP128:
- eh_gconf_client_set_int(we_data, "we_cipher",
- IW_AUTH_CIPHER_WEP104);
- eh_gconf_client_set_int(we_data, "wep_auth_algorithm",
- IW_AUTH_ALG_OPEN_SYSTEM);
- eh_gconf_client_unset(we_data, "wpa_psk_wpa_version");
- break;
- case SEC_OPTION_WPA_PERSONAL:
- eh_gconf_client_set_int(we_data, "we_cipher", 0); // auto
- eh_gconf_client_set_int(we_data, "wpa_psk_wpa_version",
- IW_AUTH_WPA_VERSION_WPA);
- eh_gconf_client_unset(we_data, "wep_auth_algorithm");
- break;
- case SEC_OPTION_WPA2_PERSONAL:
- eh_gconf_client_set_int(we_data, "we_cipher", 0); // auto
- eh_gconf_client_set_int(we_data, "wpa_psk_wpa_version",
- IW_AUTH_WPA_VERSION_WPA2);
- eh_gconf_client_unset(we_data, "wep_auth_algorithm");
- break;
- case SEC_OPTION_WPA_ENTERPRISE:
- eh_gconf_client_set_int(we_data, "we_cipher",
- NM_AUTH_TYPE_WPA_EAP);
- eh_gconf_client_set_int(we_data, "wpa_eap_wpa_version",
- IW_AUTH_WPA_VERSION_WPA);
- eh_gconf_client_unset(we_data, "wep_auth_algorithm");
- break;
- case SEC_OPTION_WPA2_ENTERPRISE:
- eh_gconf_client_set_int(we_data, "we_cipher",
- NM_AUTH_TYPE_WPA_EAP);
- eh_gconf_client_set_int(we_data, "wpa_eap_wpa_version",
- IW_AUTH_WPA_VERSION_WPA2);
- eh_gconf_client_unset(we_data, "wep_auth_algorithm");
- break;
- }
-}
-
-
-
-void set_security_combo(gint option, gpointer data)
-{
- GtkWidget *combo;
- WE_DATA *we_data;
-
- we_data = data;
-
- // get the combo so we can set the value
- combo = GTK_WIDGET( glade_xml_get_widget(we_data->editor_xml,
- "security_combo"));
- g_return_if_fail(combo != NULL);
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(combo), option);
- gtk_widget_set_sensitive(combo, TRUE);
- update_security_widget(option, data);
-}
-
-
-
-void update_security_widget(gint option, gpointer data)
-{
- WE_DATA *we_data;
- GtkWidget *vbox;
- GList *children;
- GtkWidget *childWidget;
-
- we_data = data;
- g_return_if_fail(we_data != NULL);
-
- vbox = GTK_WIDGET( glade_xml_get_widget(we_data->editor_xml,
- "swapout_vbox"));
- g_return_if_fail(vbox != NULL);
-
- // loop through and remove all of the existing children
- for(children = gtk_container_get_children(GTK_CONTAINER(vbox));
- children;
- children = g_list_next(children))
- {
- GtkWidget *child = GTK_WIDGET(children->data);
- gtk_container_remove(GTK_CONTAINER(vbox), child);
+ gnome_date_edit_set_time(GNOME_DATE_EDIT(widget), t);
+ gtk_widget_set_sensitive(widget, TRUE);
}
- if(we_data->sub_xml != NULL)
- {
- g_object_unref(we_data->sub_xml);
- we_data->sub_xml = NULL;
- }
+ widget = glade_xml_get_widget(we_data->editor_xml, "bssids_modify");
+ gtk_widget_set_sensitive(widget, TRUE);
- switch(option)
+
+ // ============ GET CIPHER PROPERTY AND SWITCH ============
+ // Get the cipher
+ we_cipher = eh_gconf_client_get_int(we_data, "we_cipher");
+
+ switch(we_cipher)
{
default:
- case SEC_OPTION_NONE:
- childWidget = NULL;
+ case IW_AUTH_CIPHER_NONE: // no security
+ set_security_combo(SEC_OPTION_NONE, we_data);
break;
- case SEC_OPTION_WEP64:
- case SEC_OPTION_WEP128:
- childWidget = get_wep_widget(we_data);
+ case IW_AUTH_CIPHER_WEP40: // WEP 64bit
+ set_security_combo(SEC_OPTION_WEP64, we_data);
break;
- case SEC_OPTION_WPA_PERSONAL:
- case SEC_OPTION_WPA2_PERSONAL:
- childWidget = get_wpa_personal_widget(we_data);
+ case IW_AUTH_CIPHER_WEP104: // WEP 128bit
+ set_security_combo(SEC_OPTION_WEP128, we_data);
break;
- case SEC_OPTION_WPA_ENTERPRISE:
- case SEC_OPTION_WPA2_ENTERPRISE:
- childWidget = get_wpa_enterprise_widget(we_data);
+ case NM_AUTH_TYPE_WPA_PSK_AUTO: // WPA or WPA2 PERSONAL
+ case IW_AUTH_CIPHER_TKIP:
+ case IW_AUTH_CIPHER_CCMP:
+ {
+ wpa_version = eh_gconf_client_get_int(we_data,
+ "wpa_psk_wpa_version");
+ switch(wpa_version)
+ {
+ case IW_AUTH_WPA_VERSION_WPA:
+ set_security_combo(SEC_OPTION_WPA_PERSONAL, we_data);
+ break;
+ default:
+ case IW_AUTH_WPA_VERSION_WPA2:
+ set_security_combo(SEC_OPTION_WPA2_PERSONAL, we_data);
+ break;
+ }
+ break;
+ }
+ case NM_AUTH_TYPE_WPA_EAP: // WPA or WPA2 Enterprise
+ {
+ wpa_version = eh_gconf_client_get_int(we_data,
+ "wpa_eap_wpa_version");
+ switch(wpa_version)
+ {
+ case IW_AUTH_WPA_VERSION_WPA:
+ set_security_combo(SEC_OPTION_WPA_ENTERPRISE, we_data);
+ break;
+ default:
+ case IW_AUTH_WPA_VERSION_WPA2:
+ set_security_combo(SEC_OPTION_WPA2_ENTERPRISE, we_data);
+ break;
+ }
+ break;
+ }
+ case NM_AUTH_TYPE_LEAP:
+ set_security_combo(SEC_OPTION_LEAP, we_data);
break;
}
-
- if(childWidget != NULL)
- gtk_container_add(GTK_CONTAINER(vbox), childWidget);
}
+static void
+network_selection_changed_cb (GtkTreeSelection *selection, gpointer data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ WE_DATA *we_data;
+ we_data = data;
-void connect_signal_handlers(WE_DATA *we_data, gboolean connect)
-{
- if(g_signal_handler_is_connected(G_OBJECT(we_data->essid_entry),
- we_data->essid_shid))
- {
- g_signal_handler_disconnect(G_OBJECT(we_data->essid_entry),
- we_data->essid_shid);
- we_data->essid_shid = 0;
- }
- if(g_signal_handler_is_connected(G_OBJECT(we_data->essid_entry),
- we_data->essid_focus_shid))
- {
- g_signal_handler_disconnect(G_OBJECT(we_data->essid_entry),
- we_data->essid_focus_shid);
- we_data->essid_focus_shid = 0;
- }
- if(g_signal_handler_is_connected(G_OBJECT(we_data->security_combo),
- we_data->combo_shid))
- {
- g_signal_handler_disconnect(G_OBJECT(we_data->security_combo),
- we_data->combo_shid);
- we_data->essid_shid = 0;
- }
- if(g_signal_handler_is_connected(G_OBJECT(we_data->stamp_editor),
- we_data->stamp_date_shid))
- {
- g_signal_handler_disconnect(G_OBJECT(we_data->stamp_editor),
- we_data->stamp_date_shid);
- we_data->stamp_date_shid = 0;
- }
- if(g_signal_handler_is_connected(G_OBJECT(we_data->stamp_editor),
- we_data->stamp_time_shid))
+ if(!gtk_tree_selection_get_selected (selection, &model, &iter))
{
- g_signal_handler_disconnect(G_OBJECT(we_data->stamp_editor),
- we_data->stamp_time_shid);
- we_data->stamp_time_shid = 0;
+ update_dialog_for_current_network(we_data, FALSE);
+ return;
}
- if(connect)
+
+ gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN,
+ &(we_data->cur_gconf_dir), -1);
+
+ if(we_data->cur_gconf_dir != NULL)
{
- we_data->essid_shid = g_signal_connect(
- G_OBJECT(we_data->essid_entry), "activate",
- GTK_SIGNAL_FUNC (essid_entry_changed), we_data);
- we_data->essid_focus_shid = g_signal_connect(
- G_OBJECT(we_data->essid_entry), "focus-out-event",
- GTK_SIGNAL_FUNC (essid_entry_focus_lost), we_data);
- we_data->combo_shid = g_signal_connect(
- G_OBJECT(we_data->security_combo), "changed",
- GTK_SIGNAL_FUNC (security_combo_changed), we_data);
- we_data->stamp_date_shid = g_signal_connect(
- G_OBJECT(we_data->stamp_editor), "date-changed",
- GTK_SIGNAL_FUNC (time_stamp_changed), we_data);
- we_data->stamp_time_shid = g_signal_connect(
- G_OBJECT(we_data->stamp_editor), "time-changed",
- GTK_SIGNAL_FUNC (time_stamp_changed), we_data);
+ connect_signal_handlers(we_data, FALSE);
+ update_dialog_for_current_network(we_data, TRUE);
+ connect_signal_handlers(we_data, TRUE);
}
+ else
+ update_dialog_for_current_network(we_data, FALSE);
}
-
-void bssids_button_clicked_cb(GtkButton *button, gpointer user_data)
+static void
+bssids_button_clicked_cb (GtkButton *button, gpointer user_data)
{
WE_DATA *we_data;
GtkTreeSelection *selection;
@@ -1035,7 +994,7 @@
widget = glade_xml_get_widget(we_data->editor_xml,
"bssids_entry");
- if(run_bssid_editor(we_data->window, key))
+ if(run_bssid_editor(we_data->glade_file, we_data->window, key))
{
values = gconf_client_get_list(we_data->gconf_client, key,
GCONF_VALUE_STRING, &err);
@@ -1077,98 +1036,89 @@
g_free(key);
}
-
-
-void time_stamp_changed(GnomeDateEdit *dateedit, gpointer user_data)
+static WE_DATA *
+get_editor (void)
{
- WE_DATA *we_data;
- GtkTreeSelection *selection;
- gchar *key = NULL;
- GtkTreeIter iter;
- GtkTreeModel *model;
- gchar *gconf_path;
- GError *err = NULL;
- time_t t;
-
- we_data = user_data;
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (we_data->treeview));
- if(!gtk_tree_selection_get_selected (selection, &model, &iter))
- return;
-
- gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN, &gconf_path, -1);
- if(gconf_path == NULL)
- return;
+ WE_DATA *we_data;
+ GtkTreeSelection *select;
+ GtkWidget *widget;
+
+ we_data = g_new0 (WE_DATA, 1);
+
+ we_data->glade_file = g_build_filename (GLADEDIR, "applet.glade", NULL);
+ if (!g_file_test (we_data->glade_file, G_FILE_TEST_IS_REGULAR)) {
+ g_print("Error loading glade file!\n");
+ g_free (we_data->glade_file);
+ return NULL;
+ }
- key = g_strdup_printf("%s/timestamp", gconf_path);
+ we_data->editor_xml = glade_xml_new (we_data->glade_file,
+ "wireless_editor", NULL);
- t = gnome_date_edit_get_time(dateedit);
+ we_data->window = glade_xml_get_widget (we_data->editor_xml,
+ "wireless_editor");
- gconf_client_set_int(we_data->gconf_client, key, t, NULL);
+ we_data->gconf_client = gconf_client_get_default();
- gconf_client_suggest_sync(we_data->gconf_client, &err);
+ g_signal_connect_swapped (we_data->window, "delete_event",
+ G_CALLBACK (quit_editor), we_data);
- g_free(key);
-}
+ widget = glade_xml_get_widget(we_data->editor_xml, "quit_nm_editor");
+ g_signal_connect_swapped (widget, "activate",
+ G_CALLBACK (quit_editor), we_data);
-void network_remove_button_clicked_cb(GtkButton *button, gpointer user_data)
-{
- WE_DATA *we_data;
- GtkTreeSelection *selection;
- GError *err = NULL;
- GtkTreeIter iter;
- GtkTreeIter childIter;
- GtkTreeModel *model;
- GtkListStore *store;
- gchar *gconf_path;
- GSList *gconf_entries;
+ widget = glade_xml_get_widget(we_data->editor_xml, "about_nm_editor");
- we_data = (WE_DATA *)user_data;
+ g_signal_connect_swapped (widget, "activate",
+ G_CALLBACK (about_editor_cb), we_data->window);
- selection = gtk_tree_view_get_selection (
- GTK_TREE_VIEW (we_data->treeview));
+ we_data->treeview = glade_xml_get_widget(we_data->editor_xml,
+ "wireless_treeview");
- if(!gtk_tree_selection_get_selected (selection, &model, &iter))
- return;
+ select = gtk_tree_view_get_selection (GTK_TREE_VIEW (we_data->treeview));
+ gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
- gtk_tree_model_get (model, &iter, WNTV_DATA_COLUMN, &gconf_path, -1);
- if(gconf_path == NULL)
- return;
+ g_signal_connect (G_OBJECT (select), "changed",
+ G_CALLBACK (network_selection_changed_cb), we_data);
- err = NULL;
- gconf_entries = gconf_client_all_entries(we_data->gconf_client,
- gconf_path,
- &err);
+ we_data->essid_entry = glade_xml_get_widget(we_data->editor_xml,
+ "essid_entry");
+ we_data->security_combo = glade_xml_get_widget(we_data->editor_xml,
+ "security_combo");
+ we_data->stamp_editor = glade_xml_get_widget(we_data->editor_xml,
+ "lastused_dateedit");
+ we_data->remove_button = glade_xml_get_widget(we_data->editor_xml,
+ "remove_button");
- while (gconf_entries)
- {
- GConfEntry *gconf_entry;
+ widget = glade_xml_get_widget(we_data->editor_xml, "bssids_modify");
- gconf_entry = gconf_entries->data;
+ g_signal_connect (G_OBJECT (widget), "clicked",
+ G_CALLBACK (bssids_button_clicked_cb), we_data);
- gconf_client_unset(we_data->gconf_client,
- gconf_entry->key,
- &err);
+ g_signal_connect (G_OBJECT (we_data->remove_button), "clicked",
+ G_CALLBACK (network_remove_button_clicked_cb), we_data);
- gconf_entry_free(gconf_entry);
- gconf_entries = g_slist_delete_link (gconf_entries, gconf_entries);
- }
+ g_idle_add (setup_dialog_idle, we_data);
- gconf_client_suggest_sync(we_data->gconf_client, &err);
+ return we_data;
+}
- // now update the data in the treeview
- store = GTK_LIST_STORE(gtk_tree_model_filter_get_model(
- GTK_TREE_MODEL_FILTER(model)));
+int
+main (int argc, char **argv)
+{
+ WE_DATA *we_data;
- gtk_tree_model_filter_convert_iter_to_child_iter(
- GTK_TREE_MODEL_FILTER(model),
- &childIter,
- &iter);
+ gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE, argc, argv,
+ GNOME_PARAM_NONE, GNOME_PARAM_NONE);
- gtk_list_store_remove ( store, &childIter);
+ we_data = get_editor ();
+ if (we_data) {
+ gtk_widget_show_all (we_data->window);
+ gtk_main ();
+ return 0;
+ }
+ return -1;
}
-
-
Modified: branches/network-manager-applet-0-6/editor/editor-gconf-helper.c
==============================================================================
--- branches/network-manager-applet-0-6/editor/editor-gconf-helper.c (original)
+++ branches/network-manager-applet-0-6/editor/editor-gconf-helper.c Tue Feb 19 22:13:14 2008
@@ -40,14 +40,15 @@
#include "editor-gconf-helper.h"
-void eh_gconf_client_set_string(WE_DATA *we_data, gchar *subkey, gchar *value)
+void
+eh_gconf_client_set_string (WE_DATA *we_data, gchar *subkey, const gchar *value)
{
- gchar *key;
+ gchar *key;
- key = g_strdup_printf("%s/%s", we_data->cur_gconf_dir, subkey);
- gconf_client_set_string(we_data->gconf_client, key, value, NULL);
- gconf_client_suggest_sync(we_data->gconf_client, NULL);
- g_free(key);
+ key = g_strdup_printf ("%s/%s", we_data->cur_gconf_dir, subkey);
+ gconf_client_set_string (we_data->gconf_client, key, value, NULL);
+ gconf_client_suggest_sync (we_data->gconf_client, NULL);
+ g_free (key);
}
gchar *eh_gconf_client_get_string(WE_DATA *we_data, gchar *subkey)
Modified: branches/network-manager-applet-0-6/editor/editor-gconf-helper.h
==============================================================================
--- branches/network-manager-applet-0-6/editor/editor-gconf-helper.h (original)
+++ branches/network-manager-applet-0-6/editor/editor-gconf-helper.h Tue Feb 19 22:13:14 2008
@@ -43,7 +43,7 @@
#include "editor-app.h"
-void eh_gconf_client_set_string(WE_DATA *we_data, gchar *subkey, gchar *value);
+void eh_gconf_client_set_string(WE_DATA *we_data, gchar *subkey, const gchar *value);
gchar *eh_gconf_client_get_string(WE_DATA *we_data, gchar *subkey);
void eh_gconf_client_set_int(WE_DATA *we_data, gchar *subkey, gint value);
gint eh_gconf_client_get_int(WE_DATA *we_data, gchar *subkey);
Added: branches/network-manager-applet-0-6/editor/widget-wso-leap.c
==============================================================================
--- (empty file)
+++ branches/network-manager-applet-0-6/editor/widget-wso-leap.c Tue Feb 19 22:13:14 2008
@@ -0,0 +1,206 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Novell, Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <libgnomeui/libgnomeui.h>
+#include <libgnome/libgnome.h>
+
+#if !GTK_CHECK_VERSION(2,6,0)
+#include <gnome.h>
+#endif
+
+#include <glade/glade.h>
+#include <gconf/gconf-client.h>
+#include <NetworkManager.h>
+#include "widget-wso.h"
+#include "libnma/libnma.h"
+
+static void
+key_mgmt_changed (GtkComboBox *combo, gpointer data)
+{
+ GtkTreeIter iter;
+
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ GtkTreeModel *model;
+ char *value;
+
+ model = gtk_combo_box_get_model (combo);
+ gtk_tree_model_get (model, &iter, LEAP_KEY_MGMT_VALUE_COL, &value, -1);
+
+ eh_gconf_client_set_string ((WE_DATA *) data, "leap_key_mgmt", value);
+ g_free (value);
+ }
+}
+
+static void
+username_changed (GtkEntry *widget, gpointer data)
+{
+ WE_DATA *we_data = (WE_DATA *) data;
+ const gchar *strValue;
+
+ strValue = gtk_entry_get_text (widget);
+ if (strValue)
+ eh_gconf_client_set_string (we_data, "leap_username", strValue);
+}
+
+static gboolean
+username_entry_focus_lost (GtkWidget *widget, GdkEventFocus *event, gpointer data)
+{
+ username_changed (GTK_ENTRY (widget), data);
+ return FALSE;
+}
+
+static void
+show_password_toggled (GtkToggleButton *button, gpointer data)
+{
+ WE_DATA *we_data = (WE_DATA *) data;
+ GtkWidget *widget;
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "leap_password_entry");
+
+ if (gtk_toggle_button_get_active (button)) {
+ gchar *key;
+ GnomeKeyringResult kresult;
+
+ kresult = get_key_from_keyring (we_data->essid_value, &key);
+ if (kresult == GNOME_KEYRING_RESULT_OK || kresult == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING) {
+ gtk_widget_set_sensitive (widget, TRUE);
+
+ if (key) {
+ gtk_entry_set_text (GTK_ENTRY (widget), key);
+ g_free (key);
+ }
+ } else
+ gtk_toggle_button_set_active (button, FALSE);
+
+ if (kresult == GNOME_KEYRING_RESULT_DENIED)
+ gtk_entry_set_text (GTK_ENTRY (widget), _("Unable to read key"));
+ } else {
+ gtk_widget_set_sensitive (widget, FALSE);
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
+ }
+}
+
+static void
+password_changed (GtkButton *button, gpointer user_data)
+{
+ WE_DATA *we_data = (WE_DATA *) user_data;
+ GladeXML *glade_xml;
+ GtkWidget *dialog;
+ GtkWindow *parentWindow;
+ gint result;
+
+ glade_xml = glade_xml_new (we_data->glade_file, "set_password_dialog", NULL);
+ dialog = glade_xml_get_widget (glade_xml, "set_password_dialog");
+
+ parentWindow = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW));
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parentWindow);
+
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (result == GTK_RESPONSE_OK) {
+ GtkWidget *entry;
+
+ const gchar *key;
+ GnomeKeyringResult kresult;
+
+ entry = glade_xml_get_widget (glade_xml, "leap_password_entry");
+ key = gtk_entry_get_text (GTK_ENTRY (entry));
+ if (key) {
+ kresult = set_key_in_keyring (we_data->essid_value, key);
+ if (kresult != GNOME_KEYRING_RESULT_OK) {
+ GtkWidget *errorDialog = gtk_message_dialog_new (parentWindow,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Unable to set password"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (errorDialog),
+ _("There was a problem storing the password in the gnome keyring. Error 0x%02X."),
+ (int) kresult);
+
+ gtk_dialog_run (GTK_DIALOG (errorDialog));
+ gtk_widget_destroy (errorDialog);
+ }
+ }
+ }
+
+ gtk_widget_destroy (dialog);
+ g_object_unref (glade_xml);
+}
+
+GtkWidget *
+get_leap_widget (WE_DATA *we_data)
+{
+ GtkWidget *main_widget;
+ GtkWidget *widget;
+ char *username;
+ char *key_mgmt;
+ GtkTreeModel *tree_model;
+ GtkTreeIter iter;
+
+ we_data->sub_xml = glade_xml_new (we_data->glade_file, "leap_notebook", NULL);
+ if (!we_data->sub_xml)
+ return NULL;
+
+ main_widget = glade_xml_get_widget (we_data->sub_xml, "leap_notebook");
+ if (!main_widget)
+ return NULL;
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "leap_show_password");
+ g_signal_connect (widget, "toggled", G_CALLBACK (show_password_toggled), we_data);
+
+ /* Username */
+ widget = glade_xml_get_widget (we_data->sub_xml, "leap_username_entry");
+ username = eh_gconf_client_get_string (we_data, "leap_username");
+ if (username) {
+ gtk_entry_set_text (GTK_ENTRY (widget), username);
+ g_free (username);
+ } else
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
+
+ g_signal_connect (widget, "activate", GTK_SIGNAL_FUNC (username_changed), we_data);
+ g_signal_connect (widget, "focus-out-event", GTK_SIGNAL_FUNC (username_entry_focus_lost), we_data);
+
+ /* Set password */
+ widget = glade_xml_get_widget (we_data->sub_xml, "leap_set_password");
+ gtk_widget_show (widget);
+ g_signal_connect (widget, "clicked", GTK_SIGNAL_FUNC (password_changed), we_data);
+
+ /* Key management combo box */
+ widget = glade_xml_get_widget (we_data->sub_xml, "leap_key_mgmt_combobox");
+ tree_model = wso_leap_create_key_mgmt_model ();
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), tree_model);
+ g_object_unref (tree_model);
+
+ key_mgmt = eh_gconf_client_get_string (we_data, "leap_key_mgmt");
+ if (key_mgmt && wso_leap_key_mgmt_get_iter (tree_model, key_mgmt, &iter))
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+
+ g_free (key_mgmt);
+
+ g_signal_connect (widget, "changed", GTK_SIGNAL_FUNC (key_mgmt_changed), we_data);
+
+ return main_widget;
+}
Modified: branches/network-manager-applet-0-6/editor/widget-wso-wep.c
==============================================================================
--- branches/network-manager-applet-0-6/editor/widget-wso-wep.c (original)
+++ branches/network-manager-applet-0-6/editor/widget-wso-wep.c Tue Feb 19 22:13:14 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* Wireless Security Option WEP Widget
*
* Calvin Gaisford <cgaisford novell com>
@@ -39,193 +41,111 @@
#include "widget-wso.h"
-void wep_auth_method_changed(GtkWidget *combo, gpointer data);
-void wep_show_toggled(GtkToggleButton *button, gpointer data);
-void set_key_button_clicked_cb(GtkButton *button, gpointer user_data);
-
-GtkWidget *get_wep_widget(WE_DATA *we_data)
-{
- GtkWidget *main_widget = NULL;
- GtkWidget *widget = NULL;
- gint intValue;
-
- we_data->sub_xml = glade_xml_new(we_data->glade_file,
- "wep_notebook", NULL);
- if(we_data->sub_xml == NULL)
- return NULL;
-
- main_widget = glade_xml_get_widget(we_data->sub_xml, "wep_notebook");
- if(main_widget != NULL)
- g_object_ref(G_OBJECT(main_widget));
-
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wep_show_checkbutton");
- g_signal_connect (G_OBJECT (widget), "toggled",
- G_CALLBACK (wep_show_toggled), we_data);
-
- widget = glade_xml_get_widget(we_data->sub_xml, "auth_method_combo");
- intValue = eh_gconf_client_get_int(we_data, "wep_auth_algorithm");
- if(intValue == IW_AUTH_ALG_SHARED_KEY)
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 1);
- else
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0);
-
- g_signal_connect( G_OBJECT(widget), "changed",
- GTK_SIGNAL_FUNC (wep_auth_method_changed), we_data);
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wep_key_label");
- gtk_label_set_text(GTK_LABEL(widget), _("Key"));
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wep_show_checkbutton");
- gtk_button_set_label(GTK_BUTTON(widget), _("_Show Key"));
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wep_set_key_button");
- g_signal_connect (G_OBJECT (widget), "clicked",
- G_CALLBACK (set_key_button_clicked_cb), we_data);
-
- return main_widget;
-}
-
-
-void wep_auth_method_changed(GtkWidget *combo, gpointer data)
+static void
+wep_auth_method_changed (GtkComboBox *combo, gpointer data)
{
- WE_DATA *we_data;
+ WE_DATA *we_data = (WE_DATA *) data;
gint intValue;
- we_data = data;
-
- intValue = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
- if(intValue == 0)
- eh_gconf_client_set_int(we_data, "wep_auth_algorithm",
- IW_AUTH_ALG_OPEN_SYSTEM);
+ intValue = gtk_combo_box_get_active (combo);
+ if (intValue == 0)
+ eh_gconf_client_set_int (we_data, "wep_auth_algorithm", IW_AUTH_ALG_OPEN_SYSTEM);
else
- eh_gconf_client_set_int(we_data, "wep_auth_algorithm",
- IW_AUTH_ALG_SHARED_KEY);
+ eh_gconf_client_set_int(we_data, "wep_auth_algorithm", IW_AUTH_ALG_SHARED_KEY);
}
-
-
-void wep_show_toggled(GtkToggleButton *button, gpointer data)
+static void
+wep_show_toggled (GtkToggleButton *button, gpointer data)
{
- GtkWidget *widget;
- WE_DATA *we_data;
-
- we_data = data;
+ WE_DATA *we_data = (WE_DATA *) data;
+ GtkEntry *entry;
- widget = glade_xml_get_widget(we_data->sub_xml, "wep_key_entry");
+ entry = GTK_ENTRY (glade_xml_get_widget (we_data->sub_xml, "wep_key_entry"));
- if(gtk_toggle_button_get_active(button))
- {
+ if (gtk_toggle_button_get_active (button)) {
gchar *key;
GnomeKeyringResult kresult;
- kresult = get_key_from_keyring(we_data->essid_value, &key);
- if(kresult == GNOME_KEYRING_RESULT_OK ||
- kresult == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING)
- {
- gtk_widget_set_sensitive(widget, TRUE);
-
- if(key != NULL)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), key);
- g_free(key);
+ kresult = get_key_from_keyring (we_data->essid_value, &key);
+ if (kresult == GNOME_KEYRING_RESULT_OK || kresult == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING) {
+ gtk_widget_set_sensitive (GTK_WIDGET (entry), TRUE);
+
+ if (key) {
+ gtk_entry_set_text (entry, key);
+ g_free (key);
}
- }
- else
- gtk_toggle_button_set_active(button, FALSE);
- if(kresult == GNOME_KEYRING_RESULT_DENIED)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), _("Unable to read key"));
- }
- }
- else
- {
- gtk_widget_set_sensitive(widget, FALSE);
- gtk_entry_set_text(GTK_ENTRY(widget), "");
+ } else
+ gtk_toggle_button_set_active (button, FALSE);
+
+ if (kresult == GNOME_KEYRING_RESULT_DENIED)
+ gtk_entry_set_text (entry, _("Unable to read key"));
+ } else {
+ gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE);
+ gtk_entry_set_text (entry, "");
}
}
-
-void set_key_button_clicked_cb(GtkButton *button, gpointer user_data)
+static void
+set_key_button_clicked_cb (GtkButton *button, gpointer user_data)
{
- GladeXML *glade_xml;
- GtkWidget *dialog;
- GtkWidget *keyEntry;
- GtkWidget *formatCombo;
- WE_DATA *we_data;
- GtkListStore *store;
- GtkTreeIter iter;
- GtkWindow *parentWindow;
-
- we_data = user_data;
-
- glade_xml = glade_xml_new(we_data->glade_file,
- "wep_key_editor", NULL);
-
-
- dialog = glade_xml_get_widget (glade_xml, "wep_key_editor");
-
- keyEntry = glade_xml_get_widget (glade_xml, "wep_key_editor_entry");
-
- formatCombo = glade_xml_get_widget (glade_xml, "wep_key_editor_combo");
-
- parentWindow = GTK_WINDOW(gtk_widget_get_ancestor(
- GTK_WIDGET(button), GTK_TYPE_WINDOW));
+ WE_DATA *we_data = (WE_DATA *) user_data;
+ GladeXML *glade_xml;
+ GtkListStore *store;
+ GtkTreeIter iter;
+ GtkWindow *parent;
+ GtkWidget *widget;
+ gint we_cipher;
+ gint result;
- gtk_window_set_transient_for(GTK_WINDOW(dialog), parentWindow);
+ glade_xml = glade_xml_new (we_data->glade_file, "wep_key_editor", NULL);
store = gtk_list_store_new (1, G_TYPE_STRING);
gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- 0, _("Hex"),
- -1);
+ gtk_list_store_set (store, &iter, 0, _("Hex"), -1);
gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- 0, _("ASCII"),
- -1);
-
- gint we_cipher = eh_gconf_client_get_int(we_data, "we_cipher");
- if(we_cipher == IW_AUTH_CIPHER_WEP104)
- {
+ gtk_list_store_set (store, &iter, 0, _("ASCII"), -1);
+
+ we_cipher = eh_gconf_client_get_int (we_data, "we_cipher");
+ if (we_cipher == IW_AUTH_CIPHER_WEP104) {
gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- 0, _("Passphrase"),
- -1);
+ gtk_list_store_set (store, &iter, 0, _("Passphrase"), -1);
}
- gtk_combo_box_set_model(GTK_COMBO_BOX(formatCombo),
- GTK_TREE_MODEL (store));
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(formatCombo), 0);
-
+ widget = glade_xml_get_widget (glade_xml, "wep_key_editor_combo");
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (store));
g_object_unref (store);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
- gint result = gtk_dialog_run (GTK_DIALOG (dialog));
+ parent = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW));
- if(result == GTK_RESPONSE_OK)
- {
+ widget = glade_xml_get_widget (glade_xml, "wep_key_editor");
+ gtk_window_set_transient_for (GTK_WINDOW (widget), parent);
+ result = gtk_dialog_run (GTK_DIALOG (widget));
+ gtk_widget_hide (widget);
+
+ if (result == GTK_RESPONSE_OK) {
const gchar *key;
GnomeKeyringResult kresult;
- key = gtk_entry_get_text(GTK_ENTRY(keyEntry));
+ widget = (glade_xml_get_widget (glade_xml, "wep_key_editor_entry"));
+ key = gtk_entry_get_text (GTK_ENTRY (widget));
+
+ /* FIXME: Nothing is done with the wep_key_editor_combo value ????? */
- if(key != NULL)
- {
+ if (key) {
kresult = set_key_in_keyring (we_data->essid_value, key);
- if(kresult != GNOME_KEYRING_RESULT_OK)
- {
- GtkWidget *errorDialog = gtk_message_dialog_new (parentWindow,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- _("Unable to set key"));
- gtk_message_dialog_format_secondary_text (
- GTK_MESSAGE_DIALOG (errorDialog),
- _("There was a problem setting the wireless key to the gnome keyring. Error 0x%02X."),
- (int)kresult);
+ if (kresult != GNOME_KEYRING_RESULT_OK) {
+ GtkWidget *errorDialog = gtk_message_dialog_new (parent,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Unable to set key"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (errorDialog),
+ _("There was a problem setting the wireless key to the gnome keyring. Error 0x%02X."),
+ (int) kresult);
gtk_dialog_run (GTK_DIALOG (errorDialog));
gtk_widget_destroy (errorDialog);
@@ -233,8 +153,39 @@
}
}
- gtk_widget_destroy(dialog);
- g_free(glade_xml);
+ g_object_unref (glade_xml);
}
+GtkWidget *
+get_wep_widget (WE_DATA *we_data)
+{
+ GtkWidget *main_widget;
+ GtkWidget *widget;
+ gint intValue;
+
+ we_data->sub_xml = glade_xml_new (we_data->glade_file, "wep_key_notebook", NULL);
+ if (!we_data->sub_xml)
+ return NULL;
+
+ main_widget = glade_xml_get_widget (we_data->sub_xml, "wep_key_notebook");
+ if (!main_widget)
+ return NULL;
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "show_checkbutton");
+ g_signal_connect (widget, "toggled", G_CALLBACK (wep_show_toggled), we_data);
+ widget = glade_xml_get_widget (we_data->sub_xml, "auth_method_combo");
+ intValue = eh_gconf_client_get_int (we_data, "wep_auth_algorithm");
+ if (intValue == IW_AUTH_ALG_SHARED_KEY)
+ gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 1);
+ else
+ gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
+
+ g_signal_connect (widget, "changed", GTK_SIGNAL_FUNC (wep_auth_method_changed), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wep_set_key");
+ gtk_widget_show (widget);
+ g_signal_connect (widget, "clicked", G_CALLBACK (set_key_button_clicked_cb), we_data);
+
+ return main_widget;
+}
Modified: branches/network-manager-applet-0-6/editor/widget-wso-wpa-enterprise.c
==============================================================================
--- branches/network-manager-applet-0-6/editor/widget-wso-wpa-enterprise.c (original)
+++ branches/network-manager-applet-0-6/editor/widget-wso-wpa-enterprise.c Tue Feb 19 22:13:14 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* Wireless Security Option WPA/WPA2 Enterprise Widget
*
* Calvin Gaisford <cgaisford novell com>
@@ -23,7 +25,6 @@
#include <config.h>
#endif
-
#include <string.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
@@ -37,418 +38,158 @@
#include <glade/glade.h>
#include <gconf/gconf-client.h>
#include <NetworkManager.h>
-
#include "widget-wso.h"
+#include "libnma/libnma.h"
-void wpa_eap_eap_method_changed(GtkWidget *combo, gpointer data);
-void wpa_eap_key_type_changed(GtkWidget *combo, gpointer data);
-void wpa_eap_show_toggled(GtkToggleButton *button, gpointer data);
-void wpa_eap_private_key_changed(GtkWidget *button, gpointer data);
-void wpa_eap_client_key_changed(GtkWidget *button, gpointer data);
-void wpa_eap_ca_key_changed(GtkWidget *button, gpointer data);
-
-
-void wpa_eap_password_entry_changed(GtkEntry *password_entry, gpointer data);
-gboolean wpa_eap_password_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data);
-void wpa_eap_priv_password_entry_changed(GtkEntry *pass_entry, gpointer data);
-gboolean wpa_eap_priv_password_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data);
-
-void wpa_eap_identity_entry_changed(GtkEntry *widget, gpointer data);
-gboolean wpa_eap_identity_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data);
-void wpa_eap_anon_identity_entry_changed(GtkEntry *widget, gpointer data);
-gboolean wpa_eap_anon_identity_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data);
-
-GtkWidget *get_wpa_enterprise_widget(WE_DATA *we_data)
+static void
+wpa_eap_eap_method_changed (GtkComboBox *combo, gpointer data)
{
- GtkWidget *main_widget = NULL;
- GtkWidget *widget = NULL;
- gint intValue;
- gchar *strValue;
+ GtkTreeIter iter;
- we_data->sub_xml = glade_xml_new(we_data->glade_file,
- "wpa_eap_notebook", NULL);
- if(we_data->sub_xml == NULL)
- return NULL;
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ GtkTreeModel *model;
+ int value;
- main_widget = glade_xml_get_widget(we_data->sub_xml, "wpa_eap_notebook");
- if(main_widget != NULL)
- g_object_ref(G_OBJECT(main_widget));
-
-
- widget = glade_xml_get_widget(we_data->sub_xml, "show_checkbutton");
- g_signal_connect (G_OBJECT (widget), "toggled",
- G_CALLBACK (wpa_eap_show_toggled), we_data);
-
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_eap_eap_method_combo");
- intValue = eh_gconf_client_get_int(we_data, "wpa_eap_eap_method");
- switch(intValue)
- {
- case NM_EAP_METHOD_MD5:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0);
- break;
- case NM_EAP_METHOD_MSCHAP:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 1);
- break;
- case NM_EAP_METHOD_OTP:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 2);
- break;
- case NM_EAP_METHOD_GTC:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 3);
- break;
- default:
- case NM_EAP_METHOD_PEAP:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 4);
- break;
- case NM_EAP_METHOD_TLS:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 5);
- break;
- case NM_EAP_METHOD_TTLS:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 6);
- break;
- }
- g_signal_connect( G_OBJECT(widget), "changed",
- GTK_SIGNAL_FUNC (wpa_eap_eap_method_changed), we_data);
-
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_eap_key_type_combo");
- intValue = eh_gconf_client_get_int(we_data, "wpa_eap_key_type");
- switch(intValue)
- {
- default:
- case NM_AUTH_TYPE_WPA_PSK_AUTO:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0);
- break;
- case NM_AUTH_TYPE_WPA_PSK_TKIP:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 1);
- break;
- case NM_AUTH_TYPE_WPA_PSK_CCMP:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 2);
- break;
- case NM_AUTH_TYPE_WPA_EAP:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 3);
- break;
- }
- g_signal_connect( G_OBJECT(widget), "changed",
- GTK_SIGNAL_FUNC (wpa_eap_key_type_changed), we_data);
-
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_eap_identity_entry");
- strValue = eh_gconf_client_get_string(we_data, "wpa_eap_identity");
- if(strValue != NULL)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), strValue);
- g_free(strValue);
- }
- else
- gtk_entry_set_text(GTK_ENTRY(widget), "");
- g_signal_connect( G_OBJECT(widget), "activate",
- GTK_SIGNAL_FUNC (wpa_eap_identity_entry_changed), we_data);
- g_signal_connect( G_OBJECT(widget), "focus-out-event",
- GTK_SIGNAL_FUNC (wpa_eap_identity_entry_focus_lost),
- we_data);
-
- widget = glade_xml_get_widget(we_data->sub_xml,
- "wpa_eap_anon_identity_entry");
- strValue = eh_gconf_client_get_string(we_data, "wpa_eap_anon_identity");
- if(strValue != NULL)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), strValue);
- g_free(strValue);
- }
- else
- gtk_entry_set_text(GTK_ENTRY(widget), "");
- g_signal_connect( G_OBJECT(widget), "activate",
- GTK_SIGNAL_FUNC (wpa_eap_anon_identity_entry_changed),
- we_data);
- g_signal_connect( G_OBJECT(widget), "focus-out-event",
- GTK_SIGNAL_FUNC (wpa_eap_anon_identity_entry_focus_lost),
- we_data);
-
-
- widget = glade_xml_get_widget(we_data->sub_xml,
- "wpa_eap_private_key_file_chooser_button");
- strValue = eh_gconf_client_get_string(we_data, "wpa_eap_private_key_file");
- if(strValue != NULL)
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(widget), strValue);
- g_signal_connect( G_OBJECT(widget), "selection-changed",
- GTK_SIGNAL_FUNC (wpa_eap_private_key_changed), we_data);
-
-
-
- widget = glade_xml_get_widget(we_data->sub_xml,
- "wpa_eap_client_cert_file_chooser_button");
- strValue = eh_gconf_client_get_string(we_data, "wpa_eap_client_cert_file");
- if(strValue != NULL)
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(widget), strValue);
- g_signal_connect( G_OBJECT(widget), "selection-changed",
- GTK_SIGNAL_FUNC (wpa_eap_client_key_changed), we_data);
-
-
-
- widget = glade_xml_get_widget(we_data->sub_xml,
- "wpa_eap_ca_cert_file_chooser_button");
- strValue = eh_gconf_client_get_string(we_data, "wpa_eap_ca_cert_file");
- if(strValue != NULL)
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(widget), strValue);
- g_signal_connect( G_OBJECT(widget), "selection-changed",
- GTK_SIGNAL_FUNC (wpa_eap_ca_key_changed), we_data);
+ model = gtk_combo_box_get_model (combo);
+ gtk_tree_model_get (model, &iter, WPA_KEY_TYPE_CIPHER_COL, &value, -1);
- return main_widget;
+ eh_gconf_client_set_int ((WE_DATA *) data, "wpa_eap_eap_method", value);
+ }
}
-
-void wpa_eap_eap_method_changed(GtkWidget *combo, gpointer data)
+static void
+wpa_eap_key_type_changed (GtkComboBox *combo, gpointer data)
{
- WE_DATA *we_data;
- gint intValue;
+ GtkTreeIter iter;
+
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ GtkTreeModel *model;
+ int value;
- we_data = data;
+ model = gtk_combo_box_get_model (combo);
+ gtk_tree_model_get (model, &iter, WPA_KEY_TYPE_CIPHER_COL, &value, -1);
- intValue = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
- switch(intValue)
- {
- case 0:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_MD5);
- break;
- case 1:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_MSCHAP);
- break;
- case 2:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_OTP);
- break;
- case 3:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_GTC);
- break;
- default:
- case 4:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_PEAP);
- break;
- case 5:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_TLS);
- break;
- case 6:
- eh_gconf_client_set_int(we_data, "wpa_eap_eap_method",
- NM_EAP_METHOD_TTLS);
- break;
-
+ eh_gconf_client_set_int ((WE_DATA *) data, "wpa_eap_key_type", value);
}
}
-
-void wpa_eap_key_type_changed(GtkWidget *combo, gpointer data)
+static void
+wpa_eap_phase2_type_changed (GtkComboBox *combo, gpointer data)
{
- WE_DATA *we_data;
- gint intValue;
+ GtkTreeIter iter;
- we_data = data;
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ GtkTreeModel *model;
+ int value;
- intValue = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
- switch(intValue)
- {
- default:
- case 0:
- eh_gconf_client_set_int(we_data, "wpa_eap_key_type",
- NM_AUTH_TYPE_WPA_PSK_AUTO);
- break;
- case 1:
- eh_gconf_client_set_int(we_data, "wpa_eap_key_type",
- NM_AUTH_TYPE_WPA_PSK_TKIP);
- break;
- case 2:
- eh_gconf_client_set_int(we_data, "wpa_eap_key_type",
- NM_AUTH_TYPE_WPA_PSK_CCMP);
- break;
- case 3:
- eh_gconf_client_set_int(we_data, "wpa_eap_key_type",
- NM_AUTH_TYPE_WPA_EAP);
- break;
+ model = gtk_combo_box_get_model (combo);
+ gtk_tree_model_get (model, &iter, WPA_EAP_VALUE_COL, &value, -1);
+
+ eh_gconf_client_set_int ((WE_DATA *) data, "wpa_eap_phase2_type", value);
}
}
-
-void wpa_eap_private_key_changed(GtkWidget *button, gpointer data)
+static void
+wpa_eap_private_key_changed (GtkFileChooser *chooser, gpointer data)
{
- WE_DATA *we_data;
- gchar *strValue = NULL;
-
- we_data = data;
+ WE_DATA *we_data = (WE_DATA *) data;
+ gchar *strValue;
- strValue = gtk_file_chooser_get_filename(
- GTK_FILE_CHOOSER(button));
- if(strValue != NULL)
- eh_gconf_client_set_string(we_data, "wpa_eap_private_key_file",
- strValue);
+ strValue = gtk_file_chooser_get_filename (chooser);
+ if (strValue) {
+ eh_gconf_client_set_string (we_data, "wpa_eap_private_key_file", strValue);
+ g_free (strValue);
+ }
}
-
-void wpa_eap_client_key_changed(GtkWidget *button, gpointer data)
+static void
+wpa_eap_client_key_changed (GtkFileChooser *chooser, gpointer data)
{
- WE_DATA *we_data;
- gchar *strValue = NULL;
-
- we_data = data;
+ WE_DATA *we_data = (WE_DATA *) data;
+ gchar *strValue;
- strValue = gtk_file_chooser_get_filename(
- GTK_FILE_CHOOSER(button));
- if(strValue != NULL)
- eh_gconf_client_set_string(we_data, "wpa_eap_client_cert_file",
- strValue);
+ strValue = gtk_file_chooser_get_filename (chooser);
+ if (strValue) {
+ eh_gconf_client_set_string (we_data, "wpa_eap_client_cert_file", strValue);
+ g_free (strValue);
+ }
}
-
-void wpa_eap_ca_key_changed(GtkWidget *button, gpointer data)
+static void
+wpa_eap_ca_key_changed (GtkFileChooser *chooser, gpointer data)
{
- WE_DATA *we_data;
- gchar *strValue = NULL;
-
- we_data = data;
+ WE_DATA *we_data = (WE_DATA *) data;
+ gchar *strValue;
- strValue = gtk_file_chooser_get_filename(
- GTK_FILE_CHOOSER(button));
- if(strValue != NULL)
- eh_gconf_client_set_string(we_data, "wpa_eap_ca_cert_file",
- strValue);
+ strValue = gtk_file_chooser_get_filename (chooser);
+ if (strValue) {
+ eh_gconf_client_set_string (we_data, "wpa_eap_ca_cert_file", strValue);
+ g_free (strValue);
+ }
}
-void wpa_eap_show_toggled(GtkToggleButton *button, gpointer data)
+static void
+wpa_eap_password_entry_changed (GtkEntry *password_entry, gpointer data)
{
- GtkWidget *widget;
- WE_DATA *we_data;
- gint32 sid;
- gchar *key = NULL;
- GnomeKeyringResult kresult;
+ WE_DATA *we_data = (WE_DATA *) data;
+ const gchar *password;
- we_data = data;
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_eap_passwd_entry");
- if(gtk_toggle_button_get_active(button))
- {
- kresult = get_eap_key_from_keyring(we_data->essid_value, &key);
- if (key != NULL)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), key);
- g_free(key);
- }
- else
- gtk_entry_set_text(GTK_ENTRY(widget), "");
-
- gtk_widget_set_sensitive(widget, TRUE);
- gtk_entry_set_editable(GTK_ENTRY(widget), TRUE);
+ password = gtk_entry_get_text (password_entry);
+ if (password) {
+ GnomeKeyringResult kresult;
- sid = g_signal_connect( G_OBJECT(widget), "activate",
- GTK_SIGNAL_FUNC (wpa_eap_password_entry_changed), we_data);
- g_object_set_data(G_OBJECT(widget), "password_activate_sid",
- GINT_TO_POINTER(sid));
- sid = g_signal_connect( G_OBJECT(widget), "focus-out-event",
- GTK_SIGNAL_FUNC (wpa_eap_password_entry_focus_lost),
- we_data);
- g_object_set_data(G_OBJECT(widget), "password_focus_out_sid",
- GINT_TO_POINTER(sid));
- }
- else
- {
- gtk_widget_set_sensitive(widget, FALSE);
- gtk_entry_set_editable(GTK_ENTRY(widget), FALSE);
- gtk_entry_set_text(GTK_ENTRY(widget), "");
-
- sid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget),
- "password_activate_sid"));
- g_signal_handler_disconnect(G_OBJECT(widget), sid);
- sid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget),
- "password_focus_out_sid"));
- g_signal_handler_disconnect(G_OBJECT(widget), sid);
- }
+ kresult = set_eap_key_in_keyring (we_data->essid_value, password);
+ if (kresult != GNOME_KEYRING_RESULT_OK) {
+ GtkWindow *parentWindow;
+ GtkWidget *errorDialog;
+ parentWindow = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (password_entry), GTK_TYPE_WINDOW));
+ errorDialog = gtk_message_dialog_new (parentWindow,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Unable to set password"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (errorDialog),
+ _("There was a problem storing the private password in the gnome keyring. Error 0x%02X."),
+ (int) kresult);
- widget = glade_xml_get_widget(we_data->sub_xml,
- "wpa_eap_private_key_passwd_entry");
- if(gtk_toggle_button_get_active(button))
- {
- kresult = get_key_from_keyring(we_data->essid_value, &key);
- if(key != NULL)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), key);
- g_free(key);
+ gtk_dialog_run (GTK_DIALOG (errorDialog));
+ gtk_widget_destroy (errorDialog);
}
-
- gtk_widget_set_sensitive(widget, TRUE);
- gtk_entry_set_editable(GTK_ENTRY(widget), TRUE);
-
- sid = g_signal_connect( G_OBJECT(widget), "activate",
- GTK_SIGNAL_FUNC (wpa_eap_priv_password_entry_changed),
- we_data);
- g_object_set_data(G_OBJECT(widget), "priv_password_activate_sid",
- GINT_TO_POINTER(sid));
- sid = g_signal_connect( G_OBJECT(widget), "focus-out-event",
- GTK_SIGNAL_FUNC (wpa_eap_priv_password_entry_focus_lost),
- we_data);
- g_object_set_data(G_OBJECT(widget), "priv_password_focus_out_sid",
- GINT_TO_POINTER(sid));
}
- else
- {
- gtk_widget_set_sensitive(widget, FALSE);
- gtk_entry_set_editable(GTK_ENTRY(widget), FALSE);
- gtk_entry_set_text(GTK_ENTRY(widget), "");
-
- sid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget),
- "priv_password_activate_sid"));
- g_signal_handler_disconnect(G_OBJECT(widget), sid);
- sid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget),
- "priv_password_focus_out_sid"));
- g_signal_handler_disconnect(G_OBJECT(widget), sid);
- }
-
}
-
-gboolean wpa_eap_password_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data)
+static gboolean
+wpa_eap_password_entry_focus_lost (GtkWidget *widget, GdkEventFocus *event, gpointer data)
{
- wpa_eap_password_entry_changed(GTK_ENTRY(widget), data);
+ wpa_eap_password_entry_changed (GTK_ENTRY (widget), data);
return FALSE;
}
-void wpa_eap_password_entry_changed(GtkEntry *password_entry, gpointer data)
+static void
+wpa_eap_priv_password_entry_changed (GtkEntry *pass_entry, gpointer data)
{
- gchar *password;
- WE_DATA *we_data;
+ WE_DATA *we_data = (WE_DATA *) data;
+ const gchar *password;
- we_data = data;
-
- password = (gchar *)gtk_entry_get_text(password_entry);
- if(password != NULL)
- {
+ password = gtk_entry_get_text (pass_entry);
+ if (password) {
GnomeKeyringResult kresult;
- kresult = set_eap_key_in_keyring (we_data->essid_value, password);
- if(kresult != GNOME_KEYRING_RESULT_OK)
- {
+ kresult = set_key_in_keyring (we_data->essid_value, password);
+ if (kresult != GNOME_KEYRING_RESULT_OK) {
GtkWindow *parentWindow;
+ GtkWidget *errorDialog;
- parentWindow = GTK_WINDOW(gtk_widget_get_ancestor(
- GTK_WIDGET(password_entry), GTK_TYPE_WINDOW));
-
- GtkWidget *errorDialog = gtk_message_dialog_new (parentWindow,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- _("Unable to set password"));
- gtk_message_dialog_format_secondary_text (
- GTK_MESSAGE_DIALOG (errorDialog),
- _("There was a problem storing the private password in the gnome keyring. Error 0x%02X."),
- (int)kresult);
+ parentWindow = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (pass_entry), GTK_TYPE_WINDOW));
+ errorDialog = gtk_message_dialog_new (parentWindow,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Unable to set password"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (errorDialog),
+ _("There was a problem storing the private password in the gnome keyring. Error 0x%02X."),
+ (int) kresult);
gtk_dialog_run (GTK_DIALOG (errorDialog));
gtk_widget_destroy (errorDialog);
@@ -456,85 +197,235 @@
}
}
-
-gboolean wpa_eap_priv_password_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data)
+static gboolean
+wpa_eap_priv_password_entry_focus_lost (GtkWidget *widget, GdkEventFocus *event, gpointer data)
{
- wpa_eap_priv_password_entry_changed(GTK_ENTRY(widget), data);
+ wpa_eap_priv_password_entry_changed (GTK_ENTRY (widget), data);
return FALSE;
}
-void wpa_eap_priv_password_entry_changed(GtkEntry *pass_entry, gpointer data)
+static void
+wpa_eap_show_toggled (GtkToggleButton *button, gpointer data)
{
- gchar *password;
- WE_DATA *we_data;
-
- we_data = data;
-
- password = (gchar *)gtk_entry_get_text(pass_entry);
- if(password != NULL)
- {
- GnomeKeyringResult kresult;
+ WE_DATA *we_data = (WE_DATA *) data;
+ GtkWidget *widget;
+ gint32 sid;
+ gchar *key = NULL;
+ GnomeKeyringResult kresult;
- kresult = set_key_in_keyring (we_data->essid_value, password);
- if(kresult != GNOME_KEYRING_RESULT_OK)
- {
- GtkWindow *parentWindow;
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_passwd_entry");
+ if (gtk_toggle_button_get_active (button)) {
+ kresult = get_eap_key_from_keyring (we_data->essid_value, &key);
+ if (key) {
+ gtk_entry_set_text (GTK_ENTRY (widget), key);
+ g_free (key);
+ } else
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
+
+ gtk_widget_set_sensitive (widget, TRUE);
+ gtk_entry_set_editable (GTK_ENTRY (widget), TRUE);
+
+ sid = g_signal_connect (widget, "activate",
+ GTK_SIGNAL_FUNC (wpa_eap_password_entry_changed), we_data);
+ g_object_set_data (G_OBJECT (widget), "password_activate_sid", GINT_TO_POINTER (sid));
+ sid = g_signal_connect (widget, "focus-out-event",
+ GTK_SIGNAL_FUNC (wpa_eap_password_entry_focus_lost),
+ we_data);
+ g_object_set_data (G_OBJECT (widget), "password_focus_out_sid", GINT_TO_POINTER (sid));
+ } else {
+ gtk_widget_set_sensitive (widget, FALSE);
+ gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
+
+ sid = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "password_activate_sid"));
+ g_signal_handler_disconnect (widget, sid);
+ sid = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "password_focus_out_sid"));
+ g_signal_handler_disconnect (widget, sid);
+ }
+
+ widget = glade_xml_get_widget(we_data->sub_xml, "wpa_eap_private_key_passwd_entry");
+ if (gtk_toggle_button_get_active(button)) {
+ kresult = get_key_from_keyring (we_data->essid_value, &key);
+ if(key) {
+ gtk_entry_set_text (GTK_ENTRY (widget), key);
+ g_free (key);
+ }
- parentWindow = GTK_WINDOW(gtk_widget_get_ancestor(
- GTK_WIDGET(pass_entry), GTK_TYPE_WINDOW));
+ gtk_widget_set_sensitive (widget, TRUE);
+ gtk_entry_set_editable (GTK_ENTRY (widget), TRUE);
- GtkWidget *errorDialog = gtk_message_dialog_new (parentWindow,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- _("Unable to set password"));
- gtk_message_dialog_format_secondary_text (
- GTK_MESSAGE_DIALOG (errorDialog),
- _("There was a problem storing the private password in the gnome keyring. Error 0x%02X."),
- (int)kresult);
+ sid = g_signal_connect (widget, "activate",
+ GTK_SIGNAL_FUNC (wpa_eap_priv_password_entry_changed),
+ we_data);
+ g_object_set_data (G_OBJECT (widget), "priv_password_activate_sid", GINT_TO_POINTER (sid));
+ sid = g_signal_connect (widget, "focus-out-event",
+ GTK_SIGNAL_FUNC (wpa_eap_priv_password_entry_focus_lost),
+ we_data);
+ g_object_set_data (G_OBJECT (widget), "priv_password_focus_out_sid", GINT_TO_POINTER(sid));
+ } else {
+ gtk_widget_set_sensitive (widget, FALSE);
+ gtk_entry_set_editable (GTK_ENTRY (widget), FALSE);
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
- gtk_dialog_run (GTK_DIALOG (errorDialog));
- gtk_widget_destroy (errorDialog);
- }
+ sid = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "priv_password_activate_sid"));
+ g_signal_handler_disconnect(widget, sid);
+ sid = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "priv_password_focus_out_sid"));
+ g_signal_handler_disconnect (widget, sid);
}
}
-gboolean wpa_eap_identity_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data)
+static void
+wpa_eap_identity_entry_changed (GtkEntry *widget, gpointer data)
{
- wpa_eap_identity_entry_changed(GTK_ENTRY(widget), data);
- return FALSE;
+ WE_DATA *we_data = (WE_DATA *) data;
+ const gchar *strValue;
+
+ strValue = gtk_entry_get_text (widget);
+ if (strValue)
+ eh_gconf_client_set_string (we_data, "wpa_eap_identity", strValue);
}
-void wpa_eap_identity_entry_changed(GtkEntry *widget, gpointer data)
+static void
+wpa_eap_anon_identity_entry_changed (GtkEntry *widget, gpointer data)
{
- gchar *strValue;
- WE_DATA *we_data;
+ WE_DATA *we_data = (WE_DATA *) data;
+ const gchar *val;
- we_data = data;
+ val = gtk_entry_get_text (widget);
+ if (val)
+ eh_gconf_client_set_string (we_data, "wpa_eap_anon_identity", val);
+}
- strValue = (gchar *)gtk_entry_get_text(widget);
- if(strValue != NULL)
- eh_gconf_client_set_string(we_data, "wpa_eap_identity", strValue);
+static gboolean
+wpa_eap_identity_entry_focus_lost (GtkWidget *widget, GdkEventFocus *event, gpointer data)
+{
+ wpa_eap_identity_entry_changed (GTK_ENTRY (widget), data);
+ return FALSE;
}
-gboolean wpa_eap_anon_identity_entry_focus_lost(GtkWidget *widget,
- GdkEventFocus *event, gpointer data)
+static gboolean
+wpa_eap_anon_identity_entry_focus_lost (GtkWidget *widget, GdkEventFocus *event, gpointer data)
{
- wpa_eap_anon_identity_entry_changed(GTK_ENTRY(widget), data);
+ wpa_eap_anon_identity_entry_changed (GTK_ENTRY (widget), data);
return FALSE;
}
-void wpa_eap_anon_identity_entry_changed(GtkEntry *widget, gpointer data)
+GtkWidget *
+get_wpa_enterprise_widget (WE_DATA *we_data)
{
- gchar *strValue;
- WE_DATA *we_data;
+ GtkWidget *main_widget = NULL;
+ GtkWidget *widget = NULL;
+ gint intValue;
+ gchar *strValue;
+ GtkTreeModel *tree_model;
+ GtkTreeIter iter;
+ GtkCellRenderer *renderer;
+ int num_added;
+ int capabilities = 0xFFFFFFFF;
- we_data = data;
+ we_data->sub_xml = glade_xml_new (we_data->glade_file, "wpa_eap_notebook", NULL);
+ if (!we_data->sub_xml)
+ return NULL;
- strValue = (gchar *)gtk_entry_get_text(widget);
- if(strValue != NULL)
- eh_gconf_client_set_string(we_data, "wpa_eap_anon_identity", strValue);
-}
+ main_widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_notebook");
+ if (!main_widget)
+ return NULL;
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "show_checkbutton");
+ g_signal_connect (widget, "toggled", G_CALLBACK (wpa_eap_show_toggled), we_data);
+
+ renderer = gtk_cell_renderer_text_new ();
+ /* EAP method combo */
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_eap_method_combo");
+ tree_model = wso_wpa_create_eap_method_model ();
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), tree_model);
+ g_object_unref (tree_model);
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (widget), renderer, "text", 0, NULL);
+
+ intValue = eh_gconf_client_get_int (we_data, "wpa_eap_eap_method");
+ if (wso_wpa_eap_method_get_iter (tree_model, (uint) intValue, &iter))
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+
+ g_signal_connect (widget, "changed", GTK_SIGNAL_FUNC (wpa_eap_eap_method_changed), we_data);
+
+ /* EAP key type combo */
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_key_type_combo");
+ tree_model = wso_wpa_create_key_type_model (capabilities, TRUE, &num_added);
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), tree_model);
+ g_object_unref (tree_model);
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (widget), renderer, "text", 0, NULL);
+
+ intValue = eh_gconf_client_get_int (we_data, "wpa_eap_key_type");
+ if (wso_wpa_key_type_get_iter (tree_model, (uint) intValue, &iter))
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+
+ g_signal_connect (widget, "changed", GTK_SIGNAL_FUNC (wpa_eap_key_type_changed), we_data);
+
+ /* EAP phase2 type combo */
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_phase2_type_combo");
+ tree_model = wso_wpa_create_phase2_type_model (capabilities, &num_added);
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), tree_model);
+ g_object_unref (tree_model);
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (widget), renderer, "text", 0, NULL);
+
+ intValue = eh_gconf_client_get_int (we_data, "wpa_eap_phase2_type");
+ if (wso_wpa_phase2_type_get_iter (tree_model, (uint) intValue, &iter))
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+
+ g_signal_connect (widget, "changed", GTK_SIGNAL_FUNC (wpa_eap_phase2_type_changed), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_identity_entry");
+ strValue = eh_gconf_client_get_string (we_data, "wpa_eap_identity");
+ if (strValue) {
+ gtk_entry_set_text (GTK_ENTRY (widget), strValue);
+ g_free (strValue);
+ } else
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
+
+ g_signal_connect (widget, "activate", GTK_SIGNAL_FUNC (wpa_eap_identity_entry_changed), we_data);
+ g_signal_connect (widget, "focus-out-event", GTK_SIGNAL_FUNC (wpa_eap_identity_entry_focus_lost), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_anon_identity_entry");
+ strValue = eh_gconf_client_get_string (we_data, "wpa_eap_anon_identity");
+ if (strValue) {
+ gtk_entry_set_text (GTK_ENTRY (widget), strValue);
+ g_free (strValue);
+ } else
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
+
+ g_signal_connect (widget, "activate", GTK_SIGNAL_FUNC (wpa_eap_anon_identity_entry_changed), we_data);
+ g_signal_connect (widget, "focus-out-event", GTK_SIGNAL_FUNC (wpa_eap_anon_identity_entry_focus_lost), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_private_key_file_chooser_button");
+ strValue = eh_gconf_client_get_string (we_data, "wpa_eap_private_key_file");
+ if (strValue) {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (widget), strValue);
+ g_free (strValue);
+ }
+
+ g_signal_connect (widget, "selection-changed", GTK_SIGNAL_FUNC (wpa_eap_private_key_changed), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_client_cert_file_chooser_button");
+ strValue = eh_gconf_client_get_string (we_data, "wpa_eap_client_cert_file");
+ if (strValue) {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (widget), strValue);
+ g_free (strValue);
+ }
+
+ g_signal_connect (widget, "selection-changed", GTK_SIGNAL_FUNC (wpa_eap_client_key_changed), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_eap_ca_cert_file_chooser_button");
+ strValue = eh_gconf_client_get_string (we_data, "wpa_eap_ca_cert_file");
+ if (strValue) {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (widget), strValue);
+ g_free (strValue);
+ }
+
+ g_signal_connect (widget, "selection-changed", GTK_SIGNAL_FUNC (wpa_eap_ca_key_changed), we_data);
+
+ return main_widget;
+}
Modified: branches/network-manager-applet-0-6/editor/widget-wso-wpa-personal.c
==============================================================================
--- branches/network-manager-applet-0-6/editor/widget-wso-wpa-personal.c (original)
+++ branches/network-manager-applet-0-6/editor/widget-wso-wpa-personal.c Tue Feb 19 22:13:14 2008
@@ -1,3 +1,5 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
/* Wireless Security Option WPA/WPA2 Personal Widget
*
* Calvin Gaisford <cgaisford novell com>
@@ -36,163 +38,91 @@
#include <glade/glade.h>
#include <gconf/gconf-client.h>
#include <NetworkManager.h>
-
#include "widget-wso.h"
+#include "libnma/libnma.h"
-void wpa_psk_type_changed(GtkWidget *combo, gpointer data);
-void wpa_psk_show_toggled(GtkToggleButton *button, gpointer data);
-void wpa_psk_set_password_button_clicked_cb(GtkButton *button,
- gpointer user_data);
-
-GtkWidget *get_wpa_personal_widget(WE_DATA *we_data)
+static void
+wpa_psk_type_changed (GtkComboBox *combo, gpointer data)
{
- GtkWidget *main_widget = NULL;
- GtkWidget *widget = NULL;
- gint intValue;
-
- we_data->sub_xml = glade_xml_new(we_data->glade_file,
- "wpa_psk_notebook", NULL);
- if(we_data->sub_xml == NULL)
- return NULL;
+ GtkTreeIter iter;
- main_widget = glade_xml_get_widget(we_data->sub_xml, "wpa_psk_notebook");
- if(main_widget != NULL)
- g_object_ref(G_OBJECT(main_widget));
-
- // set the combo to match what is in gconf
-
- widget = glade_xml_get_widget(we_data->sub_xml, "show_checkbutton");
- g_signal_connect (G_OBJECT (widget), "toggled",
- G_CALLBACK (wpa_psk_show_toggled), we_data);
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_psk_type_combo");
- intValue = eh_gconf_client_get_int(we_data, "we_cipher");
- if (intValue == IW_AUTH_CIPHER_CCMP)
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 1);
- else if (intValue == IW_AUTH_CIPHER_TKIP)
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 2);
- else // set to auto
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0);
-
- g_signal_connect( G_OBJECT(widget), "changed",
- GTK_SIGNAL_FUNC (wpa_psk_type_changed), we_data);
-
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_psk_set_password");
- g_signal_connect (G_OBJECT (widget), "clicked",
- G_CALLBACK (wpa_psk_set_password_button_clicked_cb),
- we_data);
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ GtkTreeModel *model;
+ int value;
- return main_widget;
-}
-
-
-void wpa_psk_type_changed(GtkWidget *combo, gpointer data)
-{
- WE_DATA *we_data;
- gint intValue;
+ model = gtk_combo_box_get_model (combo);
+ gtk_tree_model_get (model, &iter, WPA_KEY_TYPE_CIPHER_COL, &value, -1);
- we_data = data;
-
- intValue = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
- if(intValue == 1)
- eh_gconf_client_set_int(we_data, "we_cipher", IW_AUTH_CIPHER_CCMP);
- else if(intValue == 2)
- eh_gconf_client_set_int(we_data, "we_cipher", IW_AUTH_CIPHER_TKIP);
- else
- eh_gconf_client_set_int(we_data, "we_cipher", 0);
+ eh_gconf_client_set_int ((WE_DATA *) data, "wpa_psk_key_mgt", value);
+ }
}
-
-
-void wpa_psk_show_toggled(GtkToggleButton *button, gpointer data)
+static void
+wpa_psk_show_toggled (GtkToggleButton *button, gpointer data)
{
+ WE_DATA *we_data = (WE_DATA *) data;
GtkWidget *widget;
- WE_DATA *we_data;
- we_data = data;
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_psk_entry");
- widget = glade_xml_get_widget(we_data->sub_xml, "wpa_psk_entry");
-
- if(gtk_toggle_button_get_active(button))
- {
+ if (gtk_toggle_button_get_active (button)) {
gchar *key;
GnomeKeyringResult kresult;
- kresult = get_key_from_keyring(we_data->essid_value, &key);
- if(kresult == GNOME_KEYRING_RESULT_OK ||
- kresult == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING)
- {
- gtk_widget_set_sensitive(widget, TRUE);
-
- if(key != NULL)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), key);
- g_free(key);
+ kresult = get_key_from_keyring (we_data->essid_value, &key);
+ if (kresult == GNOME_KEYRING_RESULT_OK || kresult == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING) {
+ gtk_widget_set_sensitive (widget, TRUE);
+
+ if (key) {
+ gtk_entry_set_text (GTK_ENTRY (widget), key);
+ g_free (key);
}
- }
- else
- gtk_toggle_button_set_active(button, FALSE);
+ } else
+ gtk_toggle_button_set_active (button, FALSE);
- if(kresult == GNOME_KEYRING_RESULT_DENIED)
- {
- gtk_entry_set_text(GTK_ENTRY(widget), _("Unable to read key"));
- }
- }
- else
- {
- gtk_widget_set_sensitive(widget, FALSE);
- gtk_entry_set_text(GTK_ENTRY(widget), "");
+ if (kresult == GNOME_KEYRING_RESULT_DENIED)
+ gtk_entry_set_text (GTK_ENTRY (widget), _("Unable to read key"));
+ } else {
+ gtk_widget_set_sensitive (widget, FALSE);
+ gtk_entry_set_text (GTK_ENTRY (widget), "");
}
}
-
-void wpa_psk_set_password_button_clicked_cb(GtkButton *button,
- gpointer user_data)
+static void
+wpa_psk_set_password_button_clicked_cb (GtkButton *button, gpointer user_data)
{
+ WE_DATA *we_data = (WE_DATA *) user_data;
GladeXML *glade_xml;
GtkWidget *dialog;
- GtkWidget *keyEntry;
- WE_DATA *we_data;
GtkWindow *parentWindow;
+ gint result;
- we_data = user_data;
-
- glade_xml = glade_xml_new(we_data->glade_file,
- "set_password_dialog", NULL);
-
+ glade_xml = glade_xml_new (we_data->glade_file, "set_password_dialog", NULL);
dialog = glade_xml_get_widget (glade_xml, "set_password_dialog");
- keyEntry = glade_xml_get_widget (glade_xml, "password_entry");
-
- parentWindow = GTK_WINDOW(gtk_widget_get_ancestor(
- GTK_WIDGET(button), GTK_TYPE_WINDOW));
+ parentWindow = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW));
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parentWindow);
- gtk_window_set_transient_for(GTK_WINDOW(dialog), parentWindow);
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (result == GTK_RESPONSE_OK) {
+ GtkWidget *entry;
- gint result = gtk_dialog_run (GTK_DIALOG (dialog));
-
- if(result == GTK_RESPONSE_OK)
- {
const gchar *key;
GnomeKeyringResult kresult;
- key = gtk_entry_get_text(GTK_ENTRY(keyEntry));
-
- if(key != NULL)
- {
+ entry = glade_xml_get_widget (glade_xml, "password_entry");
+ key = gtk_entry_get_text (GTK_ENTRY (entry));
+ if (key) {
kresult = set_key_in_keyring (we_data->essid_value, key);
-
- if(kresult != GNOME_KEYRING_RESULT_OK)
- {
+ if (kresult != GNOME_KEYRING_RESULT_OK) {
GtkWidget *errorDialog = gtk_message_dialog_new (parentWindow,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- _("Unable to set password"));
- gtk_message_dialog_format_secondary_text (
- GTK_MESSAGE_DIALOG (errorDialog),
- _("There was a problem storing the password in the gnome keyring. Error 0x%02X."),
- (int)kresult);
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Unable to set password"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (errorDialog),
+ _("There was a problem storing the password in the gnome keyring. Error 0x%02X."),
+ (int) kresult);
gtk_dialog_run (GTK_DIALOG (errorDialog));
gtk_widget_destroy (errorDialog);
@@ -200,7 +130,48 @@
}
}
- gtk_widget_destroy(dialog);
- g_free(glade_xml);
+ gtk_widget_destroy (dialog);
+ g_object_unref (glade_xml);
}
+GtkWidget *
+get_wpa_personal_widget (WE_DATA *we_data)
+{
+ GtkWidget *main_widget;
+ GtkWidget *widget;
+ gint intValue;
+ GtkTreeModel *tree_model;
+ GtkTreeIter iter;
+ int num_added;
+ int capabilities = 0xFFFFFFFF;
+
+ we_data->sub_xml = glade_xml_new (we_data->glade_file, "wpa_psk_notebook", NULL);
+ if (!we_data->sub_xml)
+ return NULL;
+
+ main_widget = glade_xml_get_widget (we_data->sub_xml, "wpa_psk_notebook");
+ if (!main_widget)
+ return NULL;
+
+ /* set the combo to match what is in gconf */
+ widget = glade_xml_get_widget (we_data->sub_xml, "show_checkbutton");
+ g_signal_connect (widget, "toggled", G_CALLBACK (wpa_psk_show_toggled), we_data);
+
+ /* Key type combo */
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_psk_type_combo");
+ tree_model = wso_wpa_create_key_type_model (capabilities, TRUE, &num_added);
+ gtk_combo_box_set_model (GTK_COMBO_BOX (widget), tree_model);
+ g_object_unref (tree_model);
+
+ intValue = eh_gconf_client_get_int (we_data, "wpa_psk_key_mgt");
+ if (wso_wpa_key_type_get_iter (tree_model, (uint) intValue, &iter))
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
+
+ g_signal_connect (widget, "changed", GTK_SIGNAL_FUNC (wpa_psk_type_changed), we_data);
+
+ widget = glade_xml_get_widget (we_data->sub_xml, "wpa_psk_set_password");
+ g_signal_connect (widget, "clicked", G_CALLBACK (wpa_psk_set_password_button_clicked_cb), we_data);
+ gtk_widget_show (widget);
+
+ return main_widget;
+}
Modified: branches/network-manager-applet-0-6/editor/widget-wso.h
==============================================================================
--- branches/network-manager-applet-0-6/editor/widget-wso.h (original)
+++ branches/network-manager-applet-0-6/editor/widget-wso.h Tue Feb 19 22:13:14 2008
@@ -33,6 +33,7 @@
GtkWidget *get_wep_widget(WE_DATA *we_data);
GtkWidget *get_wpa_personal_widget(WE_DATA *we_data);
GtkWidget *get_wpa_enterprise_widget(WE_DATA *we_data);
+GtkWidget *get_leap_widget(WE_DATA *we_data);
#endif // WIDGET_WSO_H
Added: branches/network-manager-applet-0-6/libnma/Makefile.am
==============================================================================
--- (empty file)
+++ branches/network-manager-applet-0-6/libnma/Makefile.am Tue Feb 19 22:13:14 2008
@@ -0,0 +1,12 @@
+INCLUDES = \
+ -I$(top_srcdir) \
+ $(GTK_CFLAGS) \
+ $(NM_CFLAGS)
+
+noinst_LTLIBRARIES = libnma.la
+
+libnma_la_SOURCES = \
+ libnma.c \
+ libnma.h
+
+libnma_la_LDFLAGS = $(GTK_LIBS) $(NM_LIBS)
Added: branches/network-manager-applet-0-6/libnma/libnma.c
==============================================================================
--- (empty file)
+++ branches/network-manager-applet-0-6/libnma/libnma.c Tue Feb 19 22:13:14 2008
@@ -0,0 +1,223 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
+#include <NetworkManager.h>
+#include <iwlib.h>
+#include <glib/gi18n.h>
+#include "libnma.h"
+
+GtkTreeModel *
+wso_wpa_create_key_type_model (int capabilities, gboolean wpa_eap, int *num_added)
+{
+ GtkListStore * model;
+ GtkTreeIter iter;
+ int num = 1;
+ const char * name;
+
+ g_return_val_if_fail (num_added != NULL, NULL);
+
+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+
+ name = _("Automatic (Default)");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, NM_AUTH_TYPE_WPA_PSK_AUTO, -1);
+
+ if (capabilities & NM_802_11_CAP_CIPHER_CCMP)
+ {
+ name = _("AES-CCMP");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, IW_AUTH_CIPHER_CCMP, -1);
+ num++;
+ }
+ if (capabilities & NM_802_11_CAP_CIPHER_TKIP)
+ {
+ name = _("TKIP");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, IW_AUTH_CIPHER_TKIP, -1);
+ num++;
+ }
+ if (wpa_eap && capabilities & NM_802_11_CAP_KEY_MGMT_802_1X)
+ {
+ name = _("Dynamic WEP");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, IW_AUTH_CIPHER_WEP104, -1);
+ num++;
+ }
+
+ *num_added = num;
+ return GTK_TREE_MODEL (model);
+}
+
+gboolean
+wso_wpa_key_type_get_iter (GtkTreeModel *model, uint key_type, GtkTreeIter *iter)
+{
+ gboolean valid;
+
+ valid = gtk_tree_model_get_iter_first (model, iter);
+ while (valid) {
+ int current;
+
+ gtk_tree_model_get (model, iter, WPA_KEY_TYPE_CIPHER_COL, ¤t, -1);
+ if (current == key_type)
+ return TRUE;
+
+ valid = gtk_tree_model_iter_next (model, iter);
+ }
+
+ iter = NULL;
+ return FALSE;
+}
+
+GtkTreeModel *
+wso_wpa_create_phase2_type_model (int capabilities, int *num_added)
+{
+ GtkListStore * model;
+ GtkTreeIter iter;
+ const char * name;
+
+ g_return_val_if_fail (num_added != NULL, NULL);
+
+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+
+ name = _("None (Default)");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_NONE, -1);
+
+ name = _("PAP");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_PAP, -1);
+
+ name = _("MSCHAP");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_MSCHAP, -1);
+
+ name = _("MSCHAPV2");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_MSCHAPV2, -1);
+
+ name = _("GTC");
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
+ WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_GTC, -1);
+
+ *num_added = 5;
+ return GTK_TREE_MODEL (model);
+}
+
+gboolean
+wso_wpa_phase2_type_get_iter (GtkTreeModel *model, uint phase2_type, GtkTreeIter *iter)
+{
+ gboolean valid;
+
+ valid = gtk_tree_model_get_iter_first (model, iter);
+ while (valid) {
+ int current;
+
+ gtk_tree_model_get (model, iter, WPA_KEY_TYPE_CIPHER_COL, ¤t, -1);
+ if (current == phase2_type)
+ return TRUE;
+
+ valid = gtk_tree_model_iter_next (model, iter);
+ }
+
+ iter = NULL;
+ return FALSE;
+}
+
+GtkTreeModel *
+wso_wpa_create_eap_method_model (void)
+{
+ GtkListStore * model;
+ GtkTreeIter iter;
+ struct {
+ const char * name;
+ int value;
+ } *list, eap_method_list[] = {
+ { _("PEAP"), NM_EAP_METHOD_PEAP },
+ { _("TLS"), NM_EAP_METHOD_TLS },
+ { _("TTLS"), NM_EAP_METHOD_TTLS },
+ { NULL, 0 }
+ };
+
+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+ list = eap_method_list;
+ while (list->name) {
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, WPA_EAP_NAME_COL, list->name, WPA_EAP_VALUE_COL, list->value, -1);
+ list++;
+ }
+
+ return GTK_TREE_MODEL (model);
+}
+
+gboolean
+wso_wpa_eap_method_get_iter (GtkTreeModel *model, uint eap_method, GtkTreeIter *iter)
+{
+ gboolean valid;
+
+ valid = gtk_tree_model_get_iter_first (model, iter);
+ while (valid) {
+ int current;
+
+ gtk_tree_model_get (model, iter, WPA_EAP_VALUE_COL, ¤t, -1);
+ if (current == eap_method)
+ return TRUE;
+
+ valid = gtk_tree_model_iter_next (model, iter);
+ }
+
+ iter = NULL;
+ return FALSE;
+}
+
+/* LEAP */
+
+GtkTreeModel *
+wso_leap_create_key_mgmt_model (void)
+{
+ GtkListStore *model;
+ GtkTreeIter iter;
+
+ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, LEAP_KEY_MGMT_NAME_COL, "IEEE 802.1X",
+ LEAP_KEY_MGMT_VALUE_COL, "IEEE8021X", -1);
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, LEAP_KEY_MGMT_NAME_COL, "WPA-EAP",
+ LEAP_KEY_MGMT_VALUE_COL, "WPA-EAP", -1);
+
+ return GTK_TREE_MODEL (model);
+}
+
+gboolean
+wso_leap_key_mgmt_get_iter (GtkTreeModel *model, const char *key_mgmt, GtkTreeIter *iter)
+{
+ gboolean valid;
+
+ g_return_val_if_fail (key_mgmt != NULL, FALSE);
+
+ valid = gtk_tree_model_get_iter_first (model, iter);
+ while (valid) {
+ char *current;
+
+ gtk_tree_model_get (model, iter, LEAP_KEY_MGMT_VALUE_COL, ¤t, -1);
+ if (current && !strcmp (current, key_mgmt)) {
+ g_free (current);
+ return TRUE;
+ }
+
+ g_free (current);
+
+ valid = gtk_tree_model_iter_next (model, iter);
+ }
+
+ iter = NULL;
+ return FALSE;
+}
Added: branches/network-manager-applet-0-6/libnma/libnma.h
==============================================================================
--- (empty file)
+++ branches/network-manager-applet-0-6/libnma/libnma.h Tue Feb 19 22:13:14 2008
@@ -0,0 +1,40 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+
+#ifndef NMA_LIB_H
+#define NMA_LIB_H
+
+#include <gtk/gtk.h>
+
+#define WPA_KEY_TYPE_NAME_COL 0
+#define WPA_KEY_TYPE_CIPHER_COL 1
+
+#define WPA_EAP_NAME_COL 0
+#define WPA_EAP_VALUE_COL 1
+
+GtkTreeModel *wso_wpa_create_key_type_model (int capabilities,
+ gboolean wpa_eap,
+ int *num_added);
+gboolean wso_wpa_key_type_get_iter (GtkTreeModel *model,
+ uint key_type,
+ GtkTreeIter *iter);
+
+GtkTreeModel *wso_wpa_create_phase2_type_model (int capabilities,
+ int *num_added);
+gboolean wso_wpa_phase2_type_get_iter (GtkTreeModel *model,
+ uint phase2_type,
+ GtkTreeIter *iter);
+
+GtkTreeModel *wso_wpa_create_eap_method_model (void);
+gboolean wso_wpa_eap_method_get_iter (GtkTreeModel *model,
+ uint eap_method,
+ GtkTreeIter *iter);
+
+#define LEAP_KEY_MGMT_NAME_COL 0
+#define LEAP_KEY_MGMT_VALUE_COL 1
+
+GtkTreeModel *wso_leap_create_key_mgmt_model (void);
+gboolean wso_leap_key_mgmt_get_iter (GtkTreeModel *model,
+ const char *key_mgmt,
+ GtkTreeIter *iter);
+
+#endif /* NMA_LIB_H */
Modified: branches/network-manager-applet-0-6/src/Makefile.am
==============================================================================
--- branches/network-manager-applet-0-6/src/Makefile.am (original)
+++ branches/network-manager-applet-0-6/src/Makefile.am Tue Feb 19 22:13:14 2008
@@ -3,6 +3,7 @@
bin_PROGRAMS = nm-applet
nm_applet_CPPFLAGS = \
+ -I$(top_srcdir) \
$(DBUS_CFLAGS) \
$(GTHREAD_CFLAGS) \
$(HAL_CFLAGS) \
@@ -114,13 +115,13 @@
$(LIBGNOMEUI_LIBS) \
$(GNOME_KEYRING_LIBS) \
$(NM_LIBS) \
+ ../libnma/libnma.la \
$(NULL)
if WITH_NOTIFY
nm_applet_LDADD += $(NOTIFY_LIBS)
endif
-
gladedir = $(datadir)/nm-applet
glade_DATA = applet.glade keyring.png
Modified: branches/network-manager-applet-0-6/src/applet.glade
==============================================================================
--- branches/network-manager-applet-0-6/src/applet.glade (original)
+++ branches/network-manager-applet-0-6/src/applet.glade Tue Feb 19 22:13:14 2008
@@ -2,6 +2,7 @@
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
+<requires lib="gnome"/>
<widget class="GtkDialog" id="trust_dialog">
<property name="border_width">5</property>
@@ -516,6 +517,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">True</property>
</widget>
<packing>
@@ -1795,6 +1797,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -1881,16 +1884,44 @@
</child>
<child>
- <widget class="GtkCheckButton" id="show_checkbutton">
+ <widget class="GtkHBox" id="hbox10">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Show key</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="show_checkbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show key</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="wep_set_key">
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Set _Key</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -1898,7 +1929,7 @@
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
- <property name="y_options"></property>
+ <property name="y_options">fill</property>
</packing>
</child>
</widget>
@@ -1990,7 +2021,7 @@
<widget class="GtkTable" id="table5">
<property name="border_width">6</property>
<property name="visible">True</property>
- <property name="n_rows">3</property>
+ <property name="n_rows">4</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
@@ -2005,6 +2036,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -2025,6 +2057,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -2113,8 +2146,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@@ -2130,10 +2163,59 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="leap_show_password">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show password</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="leap_set_password">
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Set _Password</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
- <property name="y_options">fill</property>
</packing>
</child>
</widget>
@@ -2268,6 +2350,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">True</property>
</widget>
<packing>
@@ -2353,16 +2436,44 @@
</child>
<child>
- <widget class="GtkCheckButton" id="show_checkbutton">
+ <widget class="GtkHBox" id="hbox8">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Show password</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="show_checkbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show password</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="wpa_psk_set_password">
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Set _Password</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -2370,7 +2481,7 @@
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
- <property name="y_options"></property>
+ <property name="y_options">fill</property>
</packing>
</child>
</widget>
@@ -2601,6 +2712,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -2753,6 +2865,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -2773,6 +2886,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -2793,6 +2907,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">False</property>
</widget>
<packing>
@@ -3117,6 +3232,7 @@
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
<property name="activates_default">True</property>
</widget>
<packing>
@@ -3283,4 +3399,1344 @@
</child>
</widget>
+<widget class="GtkDialog" id="set_password_dialog">
+ <property name="title" translatable="yes">Set Password</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancelbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="okbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table8">
+ <property name="visible">True</property>
+ <property name="n_rows">1</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">0</property>
+ <property name="column_spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label34">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Password:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="password_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkDialog" id="wep_key_editor">
+ <property name="title" translatable="yes">Set WEP Key</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table9">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label35">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Key:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="wep_key_editor_entry">
+ <property name="width_request">300</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label36">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Format:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="wep_key_editor_combo">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">Hex
+ASCII
+Passphrase</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkWindow" id="wireless_editor">
+ <property name="title" translatable="yes">Wireless Networks</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">600</property>
+ <property name="default_height">400</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
+ <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
+
+ <child>
+ <widget class="GtkMenuItem" id="file1">
+ <property name="visible">True</property>
+ <property name="stock_item">GNOMEUIINFO_MENU_FILE_TREE</property>
+
+ <child>
+ <widget class="GtkMenu" id="file1_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="quit_nm_editor">
+ <property name="visible">True</property>
+ <property name="stock_item">GNOMEUIINFO_MENU_EXIT_ITEM</property>
+ <signal name="activate" handler="on_quit_activate" last_modification_time="Mon, 08 Jan 2007 22:18:37 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="help1">
+ <property name="visible">True</property>
+ <property name="stock_item">GNOMEUIINFO_MENU_HELP_TREE</property>
+
+ <child>
+ <widget class="GtkMenu" id="help1_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="about_nm_editor">
+ <property name="visible">True</property>
+ <property name="stock_item">GNOMEUIINFO_MENU_ABOUT_ITEM</property>
+ <signal name="activate" handler="on_about_nm_editor" last_modification_time="Mon, 08 Jan 2007 22:18:37 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHPaned" id="hpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">1</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox6">
+ <property name="border_width">6</property>
+ <property name="width_request">175</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label37">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Networks</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="wireless_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkButton" id="remove_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">False</property>
+ <property name="resize">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox7">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label38">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Properties</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkVBox" id="properties_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkTable" id="table10">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">5</property>
+
+ <child>
+ <widget class="GtkLabel" id="label39">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Name:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="essid_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label40">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">bssids:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkEntry" id="bssids_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="bssids_modify">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-edit</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label41">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Security:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="security_combo">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="items" translatable="yes">None
+WEP 128-bit Passphrase
+WEB 64/128 bit Hex
+WEP 64/128-bit ASCII
+</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label42">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Last Used:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GnomeDateEdit" id="lastused_dateedit">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="dateedit_flags">GNOME_DATE_EDIT_SHOW_TIME|GNOME_DATE_EDIT_24_HR</property>
+ <property name="lower_hour">0</property>
+ <property name="upper_hour">23</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="swapout_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox4">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">False</property>
+ <property name="resize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkDialog" id="bssids_dialog">
+ <property name="width_request">300</property>
+ <property name="height_request">250</property>
+ <property name="title" translatable="yes">bssid editor</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="hbuttonbox5">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button3">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button4">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox9">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label43">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Access points</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="bssids_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_START</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkButton" id="add_button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label44">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Add</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="remove_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-remove</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label45">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="edit_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox15">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="stock">gtk-edit</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label46">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkDialog" id="bssid_editor">
+ <property name="title" translatable="yes">Edit Access Point</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="vbox10">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="hbuttonbox6">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button5">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button6">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox16">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkLabel" id="label47">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Access Point:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="bssid_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">5</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
</glade-interface>
Modified: branches/network-manager-applet-0-6/src/wireless-security-option.c
==============================================================================
--- branches/network-manager-applet-0-6/src/wireless-security-option.c (original)
+++ branches/network-manager-applet-0-6/src/wireless-security-option.c Tue Feb 19 22:13:14 2008
@@ -190,91 +190,3 @@
model = GTK_LIST_STORE (gtk_combo_box_get_model (combo));
g_object_unref (G_OBJECT (model));
}
-
-
-GtkTreeModel *
-wso_wpa_create_key_type_model (int capabilities, gboolean wpa_eap, int *num_added)
-{
- GtkListStore * model;
- GtkTreeIter iter;
- int num = 1;
- const char * name;
-
- g_return_val_if_fail (num_added != NULL, NULL);
-
- model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
-
- name = _("Automatic (Default)");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, NM_AUTH_TYPE_WPA_PSK_AUTO, -1);
-
- if (capabilities & NM_802_11_CAP_CIPHER_CCMP)
- {
- name = _("AES-CCMP");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, IW_AUTH_CIPHER_CCMP, -1);
- num++;
- }
- if (capabilities & NM_802_11_CAP_CIPHER_TKIP)
- {
- name = _("TKIP");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, IW_AUTH_CIPHER_TKIP, -1);
- num++;
- }
- if (wpa_eap && capabilities & NM_802_11_CAP_KEY_MGMT_802_1X)
- {
- name = _("Dynamic WEP");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, IW_AUTH_CIPHER_WEP104, -1);
- num++;
- }
-
- *num_added = num;
- return GTK_TREE_MODEL (model);
-}
-
-GtkTreeModel *
-wso_wpa_create_phase2_type_model (int capabilities, gboolean wpa_eap, int *num_added)
-{
- GtkListStore * model;
- GtkTreeIter iter;
- const char * name;
-
- g_return_val_if_fail (num_added != NULL, NULL);
-
- model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
-
- name = _("None (Default)");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_NONE, -1);
-
- name = _("PAP");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_PAP, -1);
-
- name = _("MSCHAP");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_MSCHAP, -1);
-
- name = _("MSCHAPV2");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_MSCHAPV2, -1);
-
- name = _("GTC");
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_KEY_TYPE_NAME_COL, name,
- WPA_KEY_TYPE_CIPHER_COL, NM_PHASE2_AUTH_GTC, -1);
-
- *num_added = 5;
- return GTK_TREE_MODEL (model);
-}
-
Modified: branches/network-manager-applet-0-6/src/wso-leap.c
==============================================================================
--- branches/network-manager-applet-0-6/src/wso-leap.c (original)
+++ branches/network-manager-applet-0-6/src/wso-leap.c Tue Feb 19 22:13:14 2008
@@ -29,6 +29,7 @@
#include "wso-leap.h"
#include "wso-private.h"
#include "dbus-helpers.h"
+#include "libnma/libnma.h"
#include "NetworkManager.h"
@@ -77,7 +78,7 @@
entry = glade_xml_get_widget (opt->uixml, "leap_key_mgmt_combobox");
combo_model = gtk_combo_box_get_model(GTK_COMBO_BOX(entry));
gtk_combo_box_get_active_iter(GTK_COMBO_BOX(entry), &iter);
- gtk_tree_model_get(combo_model, &iter, 1, &opt->data->key_mgmt, -1);
+ gtk_tree_model_get(combo_model, &iter, LEAP_KEY_MGMT_VALUE_COL, &opt->data->key_mgmt, -1);
dbus_message_iter_init_append (message, &dbus_iter);
@@ -89,6 +90,11 @@
return TRUE;
}
+static void show_password_cb (GtkToggleButton *button, GtkEntry *entry)
+{
+ gtk_entry_set_visibility (entry, gtk_toggle_button_get_active (button));
+}
+
static GtkWidget *
widget_create_func (WirelessSecurityOption *opt,
GtkSignalFunc validate_cb,
@@ -97,8 +103,7 @@
GtkWidget * entry;
GtkWidget * widget;
GtkWidget * key_mgmt;
- GtkListStore * list_store;
- GtkTreeIter iter;
+ GtkTreeModel * model;
g_return_val_if_fail (opt != NULL, NULL);
g_return_val_if_fail (opt->data != NULL, NULL);
@@ -112,18 +117,16 @@
entry = glade_xml_get_widget (opt->uixml, "leap_password_entry");
g_signal_connect (G_OBJECT (entry), "changed", validate_cb, user_data);
+ widget = glade_xml_get_widget (opt->uixml, "leap_show_password");
+ g_signal_connect (widget, "clicked", GTK_SIGNAL_FUNC (show_password_cb), entry);
+
/* set-up key_mgmt combo box */
key_mgmt = glade_xml_get_widget (opt->uixml, "leap_key_mgmt_combobox");
/* create tree model containing combo box items */
- list_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
- gtk_list_store_append(list_store, &iter);
- gtk_list_store_set(list_store, &iter, 0, "IEEE 802.1X", 1, "IEEE8021X", -1);
- gtk_list_store_append(list_store, &iter);
- gtk_list_store_set(list_store, &iter, 0, "WPA-EAP", 1, "WPA-EAP", -1);
-
- gtk_combo_box_set_model(GTK_COMBO_BOX(key_mgmt), GTK_TREE_MODEL(list_store));
+ model = wso_leap_create_key_mgmt_model ();
+ gtk_combo_box_set_model(GTK_COMBO_BOX(key_mgmt), model);
/* set default choice to be IEEE 802.1X */
gtk_combo_box_set_active(GTK_COMBO_BOX(key_mgmt), 0);
Modified: branches/network-manager-applet-0-6/src/wso-private.h
==============================================================================
--- branches/network-manager-applet-0-6/src/wso-private.h (original)
+++ branches/network-manager-applet-0-6/src/wso-private.h Tue Feb 19 22:13:14 2008
@@ -76,11 +76,4 @@
int wso_wep_auth_combo_get_auth_alg (WirelessSecurityOption *opt, GtkComboBox * combo);
void wso_wep_auth_combo_cleanup (WirelessSecurityOption *opt, GtkComboBox * combo);
-#define WPA_KEY_TYPE_NAME_COL 0
-#define WPA_KEY_TYPE_CIPHER_COL 1
-
-GtkTreeModel * wso_wpa_create_key_type_model (int capabilities, gboolean wpa_eap, int *num_added);
-GtkTreeModel * wso_wpa_create_phase2_type_model (int capabilities, gboolean wpa_eap, int *num_added);
-
-
#endif /* WIRELESS_SECURITY_OPTION_PRIVATE_H */
Modified: branches/network-manager-applet-0-6/src/wso-wpa-eap.c
==============================================================================
--- branches/network-manager-applet-0-6/src/wso-wpa-eap.c (original)
+++ branches/network-manager-applet-0-6/src/wso-wpa-eap.c Tue Feb 19 22:13:14 2008
@@ -33,9 +33,8 @@
#include "cipher.h"
#include "dbus-helpers.h"
#include "NetworkManager.h"
+#include "libnma/libnma.h"
-#define WPA_EAP_NAME_COL 0
-#define WPA_EAP_VALUE_COL 1
struct OptData
{
@@ -237,16 +236,6 @@
GtkCellRenderer * renderer;
int num_added;
- struct {
- const char * name;
- int value;
- } *list, eap_method_list[] = {
- { _("PEAP"), NM_EAP_METHOD_PEAP },
- { _("TLS"), NM_EAP_METHOD_TLS },
- { _("TTLS"), NM_EAP_METHOD_TTLS },
- { NULL, 0 }
- };
-
g_return_val_if_fail (glade_file != NULL, NULL);
opt = g_malloc0 (sizeof (WirelessSecurityOption));
@@ -267,14 +256,7 @@
}
eap_method_combo = glade_xml_get_widget (opt->uixml, "wpa_eap_eap_method_combo");
- model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
- list = eap_method_list;
- while (list->name)
- {
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, WPA_EAP_NAME_COL, list->name, WPA_EAP_VALUE_COL, list->value, -1);
- list++;
- }
+ model = wso_wpa_create_eap_method_model ();
gtk_combo_box_set_model (GTK_COMBO_BOX (eap_method_combo), GTK_TREE_MODEL (model));
gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter);
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (eap_method_combo), &iter);
@@ -293,7 +275,7 @@
gtk_widget_set_sensitive (key_type_combo, FALSE);
phase2_type_combo = glade_xml_get_widget (opt->uixml, "wpa_eap_phase2_type_combo");
- tree_model = wso_wpa_create_phase2_type_model (capabilities, TRUE, &num_added);
+ tree_model = wso_wpa_create_phase2_type_model (capabilities, &num_added);
gtk_combo_box_set_model (GTK_COMBO_BOX (phase2_type_combo), tree_model);
gtk_tree_model_get_iter_first (tree_model, &iter);
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (phase2_type_combo), &iter);
Modified: branches/network-manager-applet-0-6/src/wso-wpa-psk.c
==============================================================================
--- branches/network-manager-applet-0-6/src/wso-wpa-psk.c (original)
+++ branches/network-manager-applet-0-6/src/wso-wpa-psk.c Tue Feb 19 22:13:14 2008
@@ -34,6 +34,7 @@
#include "cipher-wpa-psk-passphrase.h"
#include "dbus-helpers.h"
#include "NetworkManager.h"
+#include "libnma/libnma.h"
struct OptData
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]