Add property dialog for netstatus plugin.
authorHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sat, 7 Oct 2006 06:23:19 +0000 (06:23 +0000)
committerHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sat, 7 Oct 2006 06:23:19 +0000 (06:23 +0000)
13 files changed:
src/plugins/netstatus/build.sh [new file with mode: 0644]
src/plugins/netstatus/config.h [new file with mode: 0644]
src/plugins/netstatus/glade-support.c [new file with mode: 0644]
src/plugins/netstatus/glade-support.h [new file with mode: 0644]
src/plugins/netstatus/gnome-netstatus.glade [new file with mode: 0644]
src/plugins/netstatus/gnome-netstatus.gladep [new file with mode: 0644]
src/plugins/netstatus/netstatus-dialog-ui.c [new file with mode: 0644]
src/plugins/netstatus/netstatus-dialog-ui.h [new file with mode: 0644]
src/plugins/netstatus/netstatus-dialog.c [new file with mode: 0644]
src/plugins/netstatus/netstatus-dialog.h [new file with mode: 0644]
src/plugins/netstatus/netstatus.c
src/plugins/netstatus/netstatus.schemas.in [deleted file]
src/plugins/netstatus/netstatus.so [new file with mode: 0755]

diff --git a/src/plugins/netstatus/build.sh b/src/plugins/netstatus/build.sh
new file mode 100644 (file)
index 0000000..40e17e1
--- /dev/null
@@ -0,0 +1 @@
+gcc `pkg-config gconf-2.0 --cflags --libs` `pkg-config gtk+-2.0 --cflags --libs` -I. -I../ -I ../../ -shared -fPIC *.c -o netstatus.so
diff --git a/src/plugins/netstatus/config.h b/src/plugins/netstatus/config.h
new file mode 100644 (file)
index 0000000..14042cb
--- /dev/null
@@ -0,0 +1,83 @@
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+/* always defined to indicate that i18n is enabled */
+#define ENABLE_NLS 1
+
+/* gettext package */
+#define GETTEXT_PACKAGE "gnome-netstatus"
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+
+/* Define to 1 if you have the `dcgettext' function. */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#define HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Defined when sockaddr has an sa_len member */
+/* #undef HAVE_SOCKADDR_SA_LEN */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/sockio.h> header file. */
+/* #undef HAVE_SYS_SOCKIO_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Name of package */
+#define PACKAGE "gnome-netstatus"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-netstatus"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "gnome-netstatus"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "gnome-netstatus 2.12.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gnome-netstatus"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.12.0"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "2.12.0"
diff --git a/src/plugins/netstatus/glade-support.c b/src/plugins/netstatus/glade-support.c
new file mode 100644 (file)
index 0000000..8f85c53
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <gtk/gtk.h>
+
+#include "glade-support.h"
+
+GtkWidget*
+lookup_widget                          (GtkWidget       *widget,
+                                        const gchar     *widget_name)
+{
+  GtkWidget *parent, *found_widget;
+
+  for (;;)
+    {
+      if (GTK_IS_MENU (widget))
+        parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
+      else
+        parent = widget->parent;
+      if (!parent)
+        parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey");
+      if (parent == NULL)
+        break;
+      widget = parent;
+    }
+
+  found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget),
+                                                 widget_name);
+  if (!found_widget)
+    g_warning ("Widget not found: %s", widget_name);
+  return found_widget;
+}
+
+static GList *pixmaps_directories = NULL;
+
+/* Use this function to set the directory containing installed pixmaps. */
+void
+add_pixmap_directory                   (const gchar     *directory)
+{
+  pixmaps_directories = g_list_prepend (pixmaps_directories,
+                                        g_strdup (directory));
+}
+
+/* This is an internally used function to find pixmap files. */
+static gchar*
+find_pixmap_file                       (const gchar     *filename)
+{
+  GList *elem;
+
+  /* We step through each of the pixmaps directory to find it. */
+  elem = pixmaps_directories;
+  while (elem)
+    {
+      gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data,
+                                         G_DIR_SEPARATOR_S, filename);
+      if (g_file_test (pathname, G_FILE_TEST_EXISTS))
+        return pathname;
+      g_free (pathname);
+      elem = elem->next;
+    }
+  return NULL;
+}
+
+/* This is an internally used function to create pixmaps. */
+GtkWidget*
+create_pixmap                          (GtkWidget       *widget,
+                                        const gchar     *filename)
+{
+  gchar *pathname = NULL;
+  GtkWidget *pixmap;
+
+  if (!filename || !filename[0])
+      return gtk_image_new ();
+
+  pathname = find_pixmap_file (filename);
+
+  if (!pathname)
+    {
+      g_warning (_("Couldn't find pixmap file: %s"), filename);
+      return gtk_image_new ();
+    }
+
+  pixmap = gtk_image_new_from_file (pathname);
+  g_free (pathname);
+  return pixmap;
+}
+
+/* This is an internally used function to create pixmaps. */
+GdkPixbuf*
+create_pixbuf                          (const gchar     *filename)
+{
+  gchar *pathname = NULL;
+  GdkPixbuf *pixbuf;
+  GError *error = NULL;
+
+  if (!filename || !filename[0])
+      return NULL;
+
+  pathname = find_pixmap_file (filename);
+
+  if (!pathname)
+    {
+      g_warning (_("Couldn't find pixmap file: %s"), filename);
+      return NULL;
+    }
+
+  pixbuf = gdk_pixbuf_new_from_file (pathname, &error);
+  if (!pixbuf)
+    {
+      fprintf (stderr, "Failed to load pixbuf file: %s: %s\n",
+               pathname, error->message);
+      g_error_free (error);
+    }
+  g_free (pathname);
+  return pixbuf;
+}
+
+/* This is used to set ATK action descriptions. */
+void
+glade_set_atk_action_description       (AtkAction       *action,
+                                        const gchar     *action_name,
+                                        const gchar     *description)
+{
+  gint n_actions, i;
+
+  n_actions = atk_action_get_n_actions (action);
+  for (i = 0; i < n_actions; i++)
+    {
+      if (!strcmp (atk_action_get_name (action, i), action_name))
+        atk_action_set_description (action, i, description);
+    }
+}
+
diff --git a/src/plugins/netstatus/glade-support.h b/src/plugins/netstatus/glade-support.h
new file mode 100644 (file)
index 0000000..a32649e
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+/*
+ * Standard gettext macros.
+ */
+#ifdef ENABLE_NLS
+#  include <libintl.h>
+#  undef _
+#  define _(String) dgettext (PACKAGE, String)
+#  define Q_(String) g_strip_context ((String), gettext (String))
+#  ifdef gettext_noop
+#    define N_(String) gettext_noop (String)
+#  else
+#    define N_(String) (String)
+#  endif
+#else
+#  define textdomain(String) (String)
+#  define gettext(String) (String)
+#  define dgettext(Domain,Message) (Message)
+#  define dcgettext(Domain,Message,Type) (Message)
+#  define bindtextdomain(Domain,Directory) (Domain)
+#  define _(String) (String)
+#  define Q_(String) g_strip_context ((String), (String))
+#  define N_(String) (String)
+#endif
+
+
+/*
+ * Public Functions.
+ */
+
+/*
+ * This function returns a widget in a component created by Glade.
+ * Call it with the toplevel widget in the component (i.e. a window/dialog),
+ * or alternatively any widget in the component, and the name of the widget
+ * you want returned.
+ */
+GtkWidget*  lookup_widget              (GtkWidget       *widget,
+                                        const gchar     *widget_name);
+
+
+/* Use this function to set the directory containing installed pixmaps. */
+void        add_pixmap_directory       (const gchar     *directory);
+
+
+/*
+ * Private Functions.
+ */
+
+/* This is used to create the pixmaps used in the interface. */
+GtkWidget*  create_pixmap              (GtkWidget       *widget,
+                                        const gchar     *filename);
+
+/* This is used to create the pixbufs used in the interface. */
+GdkPixbuf*  create_pixbuf              (const gchar     *filename);
+
+/* This is used to set ATK action descriptions. */
+void        glade_set_atk_action_description (AtkAction       *action,
+                                              const gchar     *action_name,
+                                              const gchar     *description);
+
diff --git a/src/plugins/netstatus/gnome-netstatus.glade b/src/plugins/netstatus/gnome-netstatus.glade
new file mode 100644 (file)
index 0000000..3b37f50
--- /dev/null
@@ -0,0 +1,1540 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="network_status_dialog">
+  <property name="border_width">5</property>
+  <property name="title" translatable="yes"></property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_CENTER</property>
+  <property name="modal">False</property>
+  <property name="default_width">300</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">2</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="helpbutton1">
+             <property name="can_default">True</property>
+             <property name="has_default">True</property>
+             <property name="can_focus">True</property>
+             <property name="label">gtk-help</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">-11</property>
+           </widget>
+         </child>
+
+         <child>
+           <widget class="GtkButton" id="configure_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>
+             <property name="response_id">0</property>
+
+             <child>
+               <widget class="GtkAlignment" id="alignment2">
+                 <property name="visible">True</property>
+                 <property name="xalign">0.5</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="hbox5">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">2</property>
+
+                     <child>
+                       <widget class="GtkImage" id="image2">
+                         <property name="visible">True</property>
+                         <property name="stock">gtk-preferences</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="label42">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">Con_figure</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="close_button">
+             <property name="visible">True</property>
+             <property name="can_default">True</property>
+             <property name="has_default">True</property>
+             <property name="can_focus">True</property>
+             <property name="label">gtk-close</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">-7</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="GtkNotebook" id="notebook1">
+         <property name="border_width">5</property>
+         <property name="visible">True</property>
+         <property name="can_focus">True</property>
+         <property name="show_tabs">True</property>
+         <property name="show_border">True</property>
+         <property name="tab_pos">GTK_POS_TOP</property>
+         <property name="scrollable">False</property>
+         <property name="enable_popup">False</property>
+
+         <child>
+           <widget class="GtkVBox" id="vbox1">
+             <property name="border_width">12</property>
+             <property name="visible">True</property>
+             <property name="homogeneous">False</property>
+             <property name="spacing">18</property>
+
+             <child>
+               <widget class="GtkVBox" id="connection_frame">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">6</property>
+
+                 <child>
+                   <widget class="GtkLabel" id="label3">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Connection&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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="hbox6">
+                     <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">    </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="GtkHBox" id="connection_hbox">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">12</property>
+
+                         <child>
+                           <widget class="GtkTable" id="connection_table">
+                             <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="label5">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Status:</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="GtkLabel" id="status_label">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="label" translatable="yes"></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">True</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">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"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label16">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">_Name:</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</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="mnemonic_widget">combo-entry1</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="GtkCombo" id="name_combo">
+                                 <property name="visible">True</property>
+                                 <property name="value_in_list">False</property>
+                                 <property name="allow_empty">False</property>
+                                 <property name="case_sensitive">True</property>
+                                 <property name="enable_arrow_keys">True</property>
+                                 <property name="enable_arrows_always">False</property>
+
+                                 <child internal-child="entry">
+                                   <widget class="GtkEntry" id="combo-entry1">
+                                     <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>
+                                 </child>
+
+                                 <child internal-child="list">
+                                   <widget class="GtkList" id="combo-list1">
+                                     <property name="visible">True</property>
+                                     <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+                                   </widget>
+                                 </child>
+                               </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="x_options"></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>
+
+                         <child>
+                           <placeholder/>
+                         </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>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkVBox" id="activity_frame">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">6</property>
+
+                 <child>
+                   <widget class="GtkLabel" id="label4">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Activity&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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="hbox8">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label44">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">    </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="GtkTable" id="table2">
+                         <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="received_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">1</property>
+                             <property name="right_attach">2</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="GtkLabel" id="sent_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">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"></property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="label11">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Received:</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="GtkLabel" id="label12">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Sent:</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>
+                       </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>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkVBox" id="signal_strength_frame">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">6</property>
+
+                 <child>
+                   <widget class="GtkLabel" id="label48">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Signal Strength&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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="hbox14">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label49">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">    </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="GtkHBox" id="hbox15">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">6</property>
+
+                         <child>
+                           <widget class="GtkProgressBar" id="signal_strength_bar">
+                             <property name="visible">True</property>
+                             <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+                             <property name="fraction">0</property>
+                             <property name="pulse_step">0.10000000149</property>
+                             <property name="text" translatable="yes"></property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="signal_strength_label">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">0%</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">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">False</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label1">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">General</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="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkVBox" id="vbox2">
+             <property name="border_width">12</property>
+             <property name="visible">True</property>
+             <property name="homogeneous">False</property>
+             <property name="spacing">18</property>
+
+             <child>
+               <widget class="GtkVBox" id="inet4_frame">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">6</property>
+
+                 <child>
+                   <widget class="GtkLabel" id="label25">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Internet Protocol (IPv4)&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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="hbox11">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label45">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">    </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="GtkTable" id="inet4_table">
+                         <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">6</property>
+                         <property name="column_spacing">12</property>
+
+                         <child>
+                           <widget class="GtkLabel" id="inet4_addr_title">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Address:</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="GtkLabel" id="inet4_dest_title">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Destination:</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="GtkLabel" id="inet4_bcast_title">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Broadcast:</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">2</property>
+                             <property name="bottom_attach">3</property>
+                             <property name="x_options">fill</property>
+                             <property name="y_options"></property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="inet4_mask_title">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Subnet Mask:</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">3</property>
+                             <property name="bottom_attach">4</property>
+                             <property name="x_options">fill</property>
+                             <property name="y_options"></property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="inet4_addr_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">1</property>
+                             <property name="right_attach">2</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="GtkLabel" id="inet4_dest_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">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"></property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="inet4_bcast_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">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"></property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="inet4_mask_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">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"></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>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkVBox" id="inet6_frame">
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">6</property>
+
+                 <child>
+                   <widget class="GtkLabel" id="label26">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Internet Protocol (IPv6)&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label46">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">    </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="GtkTable" id="table5">
+                         <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="label39">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Address:</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="GtkLabel" id="label40">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Scope:</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="GtkLabel" id="inet6_addr_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">1</property>
+                             <property name="right_attach">2</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="GtkLabel" id="inet6_scope_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">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"></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>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkVBox" id="dev_frame">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">6</property>
+
+                 <child>
+                   <widget class="GtkLabel" id="dev_label">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Network Device&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</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="hbox13">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label47">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">    </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="GtkTable" id="table6">
+                         <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="dev_addr_title">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Address:</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="GtkLabel" id="dev_addr_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">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"></property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkLabel" id="dev_type_label">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes"></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">True</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">1</property>
+                             <property name="right_attach">2</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="GtkLabel" id="dev_type_title">
+                             <property name="visible">True</property>
+                             <property name="label" translatable="yes">Type:</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>
+                       </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>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label2">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Support</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="type">tab</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>
+
+</glade-interface>
diff --git a/src/plugins/netstatus/gnome-netstatus.gladep b/src/plugins/netstatus/gnome-netstatus.gladep
new file mode 100644 (file)
index 0000000..ded1047
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+  <name>Netstatus</name>
+  <program_name>netstatus</program_name>
+  <source_directory></source_directory>
+  <gnome_support>FALSE</gnome_support>
+  <output_main_file>FALSE</output_main_file>
+  <output_build_files>FALSE</output_build_files>
+  <main_source_file>netstatus-dialog-ui.c</main_source_file>
+  <main_header_file>netstatus-dialog-ui.h</main_header_file>
+  <handler_source_file>netstatus-dialog.c</handler_source_file>
+  <handler_header_file>netstatus-dialog.h</handler_header_file>
+  <support_source_file>glade-support.c</support_source_file>
+  <support_header_file>glade-support.h</support_header_file>
+</glade-project>
diff --git a/src/plugins/netstatus/netstatus-dialog-ui.c b/src/plugins/netstatus/netstatus-dialog-ui.c
new file mode 100644 (file)
index 0000000..07bc526
--- /dev/null
@@ -0,0 +1,602 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
+#include "netstatus-dialog.h"
+#include "netstatus-dialog-ui.h"
+#include "glade-support.h"
+
+#define GLADE_HOOKUP_OBJECT(component,widget,name) \
+  g_object_set_data_full (G_OBJECT (component), name, \
+    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
+
+#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
+  g_object_set_data (G_OBJECT (component), name, widget)
+
+GtkWidget*
+create_network_status_dialog (void)
+{
+  GtkWidget *network_status_dialog;
+  GtkWidget *dialog_vbox2;
+  GtkWidget *notebook1;
+  GtkWidget *vbox1;
+  GtkWidget *connection_frame;
+  GtkWidget *label3;
+  GtkWidget *hbox6;
+  GtkWidget *label43;
+  GtkWidget *connection_hbox;
+  GtkWidget *connection_table;
+  GtkWidget *label5;
+  GtkWidget *status_label;
+  GtkWidget *label16;
+  GtkWidget *name_combo;
+  GtkWidget *combo_entry1;
+  GtkWidget *activity_frame;
+  GtkWidget *label4;
+  GtkWidget *hbox8;
+  GtkWidget *label44;
+  GtkWidget *table2;
+  GtkWidget *received_label;
+  GtkWidget *sent_label;
+  GtkWidget *label11;
+  GtkWidget *label12;
+  GtkWidget *signal_strength_frame;
+  GtkWidget *label48;
+  GtkWidget *hbox14;
+  GtkWidget *label49;
+  GtkWidget *hbox15;
+  GtkWidget *signal_strength_bar;
+  GtkWidget *signal_strength_label;
+  GtkWidget *label1;
+  GtkWidget *vbox2;
+  GtkWidget *inet4_frame;
+  GtkWidget *label25;
+  GtkWidget *hbox11;
+  GtkWidget *label45;
+  GtkWidget *inet4_table;
+  GtkWidget *inet4_addr_title;
+  GtkWidget *inet4_dest_title;
+  GtkWidget *inet4_bcast_title;
+  GtkWidget *inet4_mask_title;
+  GtkWidget *inet4_addr_label;
+  GtkWidget *inet4_dest_label;
+  GtkWidget *inet4_bcast_label;
+  GtkWidget *inet4_mask_label;
+  GtkWidget *inet6_frame;
+  GtkWidget *label26;
+  GtkWidget *hbox12;
+  GtkWidget *label46;
+  GtkWidget *table5;
+  GtkWidget *label39;
+  GtkWidget *label40;
+  GtkWidget *inet6_addr_label;
+  GtkWidget *inet6_scope_label;
+  GtkWidget *dev_frame;
+  GtkWidget *dev_label;
+  GtkWidget *hbox13;
+  GtkWidget *label47;
+  GtkWidget *table6;
+  GtkWidget *dev_addr_title;
+  GtkWidget *dev_addr_label;
+  GtkWidget *dev_type_label;
+  GtkWidget *dev_type_title;
+  GtkWidget *label2;
+  GtkWidget *dialog_action_area2;
+  GtkWidget *helpbutton1;
+  GtkWidget *configure_button;
+  GtkWidget *alignment2;
+  GtkWidget *hbox5;
+  GtkWidget *image2;
+  GtkWidget *label42;
+  GtkWidget *close_button;
+
+  network_status_dialog = gtk_dialog_new ();
+  gtk_container_set_border_width (GTK_CONTAINER (network_status_dialog), 5);
+  gtk_window_set_position (GTK_WINDOW (network_status_dialog), GTK_WIN_POS_CENTER);
+  gtk_window_set_default_size (GTK_WINDOW (network_status_dialog), 300, -1);
+  gtk_window_set_resizable (GTK_WINDOW (network_status_dialog), FALSE);
+  gtk_window_set_type_hint (GTK_WINDOW (network_status_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
+  gtk_dialog_set_has_separator (GTK_DIALOG (network_status_dialog), FALSE);
+
+  dialog_vbox2 = GTK_DIALOG (network_status_dialog)->vbox;
+  gtk_widget_show (dialog_vbox2);
+
+  notebook1 = gtk_notebook_new ();
+  gtk_widget_show (notebook1);
+  gtk_box_pack_start (GTK_BOX (dialog_vbox2), notebook1, TRUE, TRUE, 0);
+  gtk_container_set_border_width (GTK_CONTAINER (notebook1), 5);
+
+  vbox1 = gtk_vbox_new (FALSE, 18);
+  gtk_widget_show (vbox1);
+  gtk_container_add (GTK_CONTAINER (notebook1), vbox1);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox1), 12);
+
+  connection_frame = gtk_vbox_new (FALSE, 6);
+  gtk_widget_show (connection_frame);
+  gtk_box_pack_start (GTK_BOX (vbox1), connection_frame, FALSE, TRUE, 0);
+
+  label3 = gtk_label_new (_("<b>Connection</b>"));
+  gtk_widget_show (label3);
+  gtk_box_pack_start (GTK_BOX (connection_frame), label3, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (label3), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5);
+
+  hbox6 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox6);
+  gtk_box_pack_start (GTK_BOX (connection_frame), hbox6, TRUE, TRUE, 0);
+
+  label43 = gtk_label_new (_("    "));
+  gtk_widget_show (label43);
+  gtk_box_pack_start (GTK_BOX (hbox6), label43, FALSE, FALSE, 0);
+
+  connection_hbox = gtk_hbox_new (FALSE, 12);
+  gtk_widget_show (connection_hbox);
+  gtk_box_pack_start (GTK_BOX (hbox6), connection_hbox, TRUE, TRUE, 0);
+
+  connection_table = gtk_table_new (2, 2, FALSE);
+  gtk_widget_show (connection_table);
+  gtk_box_pack_start (GTK_BOX (connection_hbox), connection_table, TRUE, TRUE, 0);
+  gtk_table_set_row_spacings (GTK_TABLE (connection_table), 6);
+  gtk_table_set_col_spacings (GTK_TABLE (connection_table), 12);
+
+  label5 = gtk_label_new (_("Status:"));
+  gtk_widget_show (label5);
+  gtk_table_attach (GTK_TABLE (connection_table), label5, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);
+
+  status_label = gtk_label_new ("");
+  gtk_widget_show (status_label);
+  gtk_table_attach (GTK_TABLE (connection_table), status_label, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (status_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (status_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (status_label), 0, 0.5);
+
+  label16 = gtk_label_new_with_mnemonic (_("_Name:"));
+  gtk_widget_show (label16);
+  gtk_table_attach (GTK_TABLE (connection_table), label16, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5);
+
+  name_combo = gtk_combo_new ();
+  g_object_set_data (G_OBJECT (GTK_COMBO (name_combo)->popwin),
+                     "GladeParentKey", name_combo);
+  gtk_widget_show (name_combo);
+  gtk_table_attach (GTK_TABLE (connection_table), name_combo, 1, 2, 0, 1,
+                    (GtkAttachOptions) (0),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_combo_set_case_sensitive (GTK_COMBO (name_combo), TRUE);
+
+  combo_entry1 = GTK_COMBO (name_combo)->entry;
+  gtk_widget_show (combo_entry1);
+
+  activity_frame = gtk_vbox_new (FALSE, 6);
+  gtk_widget_show (activity_frame);
+  gtk_box_pack_start (GTK_BOX (vbox1), activity_frame, FALSE, TRUE, 0);
+
+  label4 = gtk_label_new (_("<b>Activity</b>"));
+  gtk_widget_show (label4);
+  gtk_box_pack_start (GTK_BOX (activity_frame), label4, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (label4), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5);
+
+  hbox8 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox8);
+  gtk_box_pack_start (GTK_BOX (activity_frame), hbox8, TRUE, TRUE, 0);
+
+  label44 = gtk_label_new (_("    "));
+  gtk_widget_show (label44);
+  gtk_box_pack_start (GTK_BOX (hbox8), label44, FALSE, FALSE, 0);
+
+  table2 = gtk_table_new (2, 2, FALSE);
+  gtk_widget_show (table2);
+  gtk_box_pack_start (GTK_BOX (hbox8), table2, TRUE, TRUE, 0);
+  gtk_table_set_row_spacings (GTK_TABLE (table2), 6);
+  gtk_table_set_col_spacings (GTK_TABLE (table2), 12);
+
+  received_label = gtk_label_new ("");
+  gtk_widget_show (received_label);
+  gtk_table_attach (GTK_TABLE (table2), received_label, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (received_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (received_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (received_label), 0, 0.5);
+
+  sent_label = gtk_label_new ("");
+  gtk_widget_show (sent_label);
+  gtk_table_attach (GTK_TABLE (table2), sent_label, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (sent_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (sent_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (sent_label), 0, 0.5);
+
+  label11 = gtk_label_new (_("Received:"));
+  gtk_widget_show (label11);
+  gtk_table_attach (GTK_TABLE (table2), label11, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label11), 0, 0.5);
+
+  label12 = gtk_label_new (_("Sent:"));
+  gtk_widget_show (label12);
+  gtk_table_attach (GTK_TABLE (table2), label12, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5);
+
+  signal_strength_frame = gtk_vbox_new (FALSE, 6);
+  gtk_widget_show (signal_strength_frame);
+  gtk_box_pack_start (GTK_BOX (vbox1), signal_strength_frame, FALSE, TRUE, 0);
+
+  label48 = gtk_label_new (_("<b>Signal Strength</b>"));
+  gtk_widget_show (label48);
+  gtk_box_pack_start (GTK_BOX (signal_strength_frame), label48, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (label48), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label48), 0, 0.5);
+
+  hbox14 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox14);
+  gtk_box_pack_start (GTK_BOX (signal_strength_frame), hbox14, FALSE, TRUE, 0);
+
+  label49 = gtk_label_new (_("    "));
+  gtk_widget_show (label49);
+  gtk_box_pack_start (GTK_BOX (hbox14), label49, FALSE, FALSE, 0);
+
+  hbox15 = gtk_hbox_new (FALSE, 6);
+  gtk_widget_show (hbox15);
+  gtk_box_pack_start (GTK_BOX (hbox14), hbox15, TRUE, TRUE, 0);
+
+  signal_strength_bar = gtk_progress_bar_new ();
+  gtk_widget_show (signal_strength_bar);
+  gtk_box_pack_start (GTK_BOX (hbox15), signal_strength_bar, TRUE, TRUE, 0);
+
+  signal_strength_label = gtk_label_new (_("0%"));
+  gtk_widget_show (signal_strength_label);
+  gtk_box_pack_start (GTK_BOX (hbox15), signal_strength_label, FALSE, TRUE, 0);
+
+  label1 = gtk_label_new (_("General"));
+  gtk_widget_show (label1);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1);
+
+  vbox2 = gtk_vbox_new (FALSE, 18);
+  gtk_widget_show (vbox2);
+  gtk_container_add (GTK_CONTAINER (notebook1), vbox2);
+  gtk_container_set_border_width (GTK_CONTAINER (vbox2), 12);
+
+  inet4_frame = gtk_vbox_new (FALSE, 6);
+  gtk_widget_show (inet4_frame);
+  gtk_box_pack_start (GTK_BOX (vbox2), inet4_frame, FALSE, TRUE, 0);
+
+  label25 = gtk_label_new (_("<b>Internet Protocol (IPv4)</b>"));
+  gtk_widget_show (label25);
+  gtk_box_pack_start (GTK_BOX (inet4_frame), label25, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (label25), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5);
+
+  hbox11 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox11);
+  gtk_box_pack_start (GTK_BOX (inet4_frame), hbox11, TRUE, TRUE, 0);
+
+  label45 = gtk_label_new (_("    "));
+  gtk_widget_show (label45);
+  gtk_box_pack_start (GTK_BOX (hbox11), label45, FALSE, FALSE, 0);
+
+  inet4_table = gtk_table_new (4, 2, FALSE);
+  gtk_widget_show (inet4_table);
+  gtk_box_pack_start (GTK_BOX (hbox11), inet4_table, TRUE, TRUE, 0);
+  gtk_table_set_row_spacings (GTK_TABLE (inet4_table), 6);
+  gtk_table_set_col_spacings (GTK_TABLE (inet4_table), 12);
+
+  inet4_addr_title = gtk_label_new (_("Address:"));
+  gtk_widget_show (inet4_addr_title);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_addr_title, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (inet4_addr_title), 0, 0.5);
+
+  inet4_dest_title = gtk_label_new (_("Destination:"));
+  gtk_widget_show (inet4_dest_title);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_dest_title, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (inet4_dest_title), 0, 0.5);
+
+  inet4_bcast_title = gtk_label_new (_("Broadcast:"));
+  gtk_widget_show (inet4_bcast_title);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_bcast_title, 0, 1, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (inet4_bcast_title), 0, 0.5);
+
+  inet4_mask_title = gtk_label_new (_("Subnet Mask:"));
+  gtk_widget_show (inet4_mask_title);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_mask_title, 0, 1, 3, 4,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (inet4_mask_title), 0, 0.5);
+
+  inet4_addr_label = gtk_label_new ("");
+  gtk_widget_show (inet4_addr_label);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_addr_label, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (inet4_addr_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (inet4_addr_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (inet4_addr_label), 0, 0.5);
+
+  inet4_dest_label = gtk_label_new ("");
+  gtk_widget_show (inet4_dest_label);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_dest_label, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (inet4_dest_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (inet4_dest_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (inet4_dest_label), 0, 0.5);
+
+  inet4_bcast_label = gtk_label_new ("");
+  gtk_widget_show (inet4_bcast_label);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_bcast_label, 1, 2, 2, 3,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (inet4_bcast_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (inet4_bcast_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (inet4_bcast_label), 0, 0.5);
+
+  inet4_mask_label = gtk_label_new ("");
+  gtk_widget_show (inet4_mask_label);
+  gtk_table_attach (GTK_TABLE (inet4_table), inet4_mask_label, 1, 2, 3, 4,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (inet4_mask_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (inet4_mask_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (inet4_mask_label), 0, 0.5);
+
+  inet6_frame = gtk_vbox_new (FALSE, 6);
+  gtk_box_pack_start (GTK_BOX (vbox2), inet6_frame, FALSE, TRUE, 0);
+
+  label26 = gtk_label_new (_("<b>Internet Protocol (IPv6)</b>"));
+  gtk_widget_show (label26);
+  gtk_box_pack_start (GTK_BOX (inet6_frame), label26, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (label26), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label26), 0, 0.5);
+
+  hbox12 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox12);
+  gtk_box_pack_start (GTK_BOX (inet6_frame), hbox12, TRUE, TRUE, 0);
+
+  label46 = gtk_label_new (_("    "));
+  gtk_widget_show (label46);
+  gtk_box_pack_start (GTK_BOX (hbox12), label46, FALSE, FALSE, 0);
+
+  table5 = gtk_table_new (2, 2, FALSE);
+  gtk_widget_show (table5);
+  gtk_box_pack_start (GTK_BOX (hbox12), table5, TRUE, TRUE, 0);
+  gtk_table_set_row_spacings (GTK_TABLE (table5), 6);
+  gtk_table_set_col_spacings (GTK_TABLE (table5), 12);
+
+  label39 = gtk_label_new (_("Address:"));
+  gtk_widget_show (label39);
+  gtk_table_attach (GTK_TABLE (table5), label39, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label39), 0, 0.5);
+
+  label40 = gtk_label_new (_("Scope:"));
+  gtk_widget_show (label40);
+  gtk_table_attach (GTK_TABLE (table5), label40, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (label40), 0, 0.5);
+
+  inet6_addr_label = gtk_label_new ("");
+  gtk_widget_show (inet6_addr_label);
+  gtk_table_attach (GTK_TABLE (table5), inet6_addr_label, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (inet6_addr_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (inet6_addr_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (inet6_addr_label), 0, 0.5);
+
+  inet6_scope_label = gtk_label_new ("");
+  gtk_widget_show (inet6_scope_label);
+  gtk_table_attach (GTK_TABLE (table5), inet6_scope_label, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (inet6_scope_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (inet6_scope_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (inet6_scope_label), 0, 0.5);
+
+  dev_frame = gtk_vbox_new (FALSE, 6);
+  gtk_widget_show (dev_frame);
+  gtk_box_pack_start (GTK_BOX (vbox2), dev_frame, FALSE, TRUE, 0);
+
+  dev_label = gtk_label_new (_("<b>Network Device</b>"));
+  gtk_widget_show (dev_label);
+  gtk_box_pack_start (GTK_BOX (dev_frame), dev_label, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (dev_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (dev_label), 0, 0.5);
+
+  hbox13 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox13);
+  gtk_box_pack_start (GTK_BOX (dev_frame), hbox13, TRUE, TRUE, 0);
+
+  label47 = gtk_label_new (_("    "));
+  gtk_widget_show (label47);
+  gtk_box_pack_start (GTK_BOX (hbox13), label47, FALSE, FALSE, 0);
+
+  table6 = gtk_table_new (2, 2, FALSE);
+  gtk_widget_show (table6);
+  gtk_box_pack_start (GTK_BOX (hbox13), table6, TRUE, TRUE, 0);
+  gtk_table_set_row_spacings (GTK_TABLE (table6), 6);
+  gtk_table_set_col_spacings (GTK_TABLE (table6), 12);
+
+  dev_addr_title = gtk_label_new (_("Address:"));
+  gtk_widget_show (dev_addr_title);
+  gtk_table_attach (GTK_TABLE (table6), dev_addr_title, 0, 1, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (dev_addr_title), 0, 0.5);
+
+  dev_addr_label = gtk_label_new ("");
+  gtk_widget_show (dev_addr_label);
+  gtk_table_attach (GTK_TABLE (table6), dev_addr_label, 1, 2, 1, 2,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (dev_addr_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (dev_addr_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (dev_addr_label), 0, 0.5);
+
+  dev_type_label = gtk_label_new ("");
+  gtk_widget_show (dev_type_label);
+  gtk_table_attach (GTK_TABLE (table6), dev_type_label, 1, 2, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  GTK_WIDGET_SET_FLAGS (dev_type_label, GTK_CAN_FOCUS);
+  gtk_label_set_selectable (GTK_LABEL (dev_type_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (dev_type_label), 0, 0.5);
+
+  dev_type_title = gtk_label_new (_("Type:"));
+  gtk_widget_show (dev_type_title);
+  gtk_table_attach (GTK_TABLE (table6), dev_type_title, 0, 1, 0, 1,
+                    (GtkAttachOptions) (GTK_FILL),
+                    (GtkAttachOptions) (0), 0, 0);
+  gtk_misc_set_alignment (GTK_MISC (dev_type_title), 0, 0.5);
+
+  label2 = gtk_label_new (_("Support"));
+  gtk_widget_show (label2);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label2);
+
+  dialog_action_area2 = GTK_DIALOG (network_status_dialog)->action_area;
+  gtk_widget_show (dialog_action_area2);
+  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);
+
+  helpbutton1 = gtk_button_new_from_stock ("gtk-help");
+  gtk_dialog_add_action_widget (GTK_DIALOG (network_status_dialog), helpbutton1, GTK_RESPONSE_HELP);
+  GTK_WIDGET_SET_FLAGS (helpbutton1, GTK_CAN_DEFAULT);
+
+  configure_button = gtk_button_new ();
+  gtk_widget_show (configure_button);
+  gtk_dialog_add_action_widget (GTK_DIALOG (network_status_dialog), configure_button, 0);
+  GTK_WIDGET_SET_FLAGS (configure_button, GTK_CAN_DEFAULT);
+
+  alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0);
+  gtk_widget_show (alignment2);
+  gtk_container_add (GTK_CONTAINER (configure_button), alignment2);
+
+  hbox5 = gtk_hbox_new (FALSE, 2);
+  gtk_widget_show (hbox5);
+  gtk_container_add (GTK_CONTAINER (alignment2), hbox5);
+
+  image2 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_BUTTON);
+  gtk_widget_show (image2);
+  gtk_box_pack_start (GTK_BOX (hbox5), image2, FALSE, FALSE, 0);
+
+  label42 = gtk_label_new_with_mnemonic (_("Con_figure"));
+  gtk_widget_show (label42);
+  gtk_box_pack_start (GTK_BOX (hbox5), label42, FALSE, FALSE, 0);
+
+  close_button = gtk_button_new_from_stock ("gtk-close");
+  gtk_widget_show (close_button);
+  gtk_dialog_add_action_widget (GTK_DIALOG (network_status_dialog), close_button, GTK_RESPONSE_CLOSE);
+  GTK_WIDGET_SET_FLAGS (close_button, GTK_CAN_DEFAULT);
+
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label16), combo_entry1);
+
+  /* Store pointers to all widgets, for use by lookup_widget(). */
+  GLADE_HOOKUP_OBJECT_NO_REF (network_status_dialog, network_status_dialog, "network_status_dialog");
+  GLADE_HOOKUP_OBJECT_NO_REF (network_status_dialog, dialog_vbox2, "dialog_vbox2");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, notebook1, "notebook1");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, vbox1, "vbox1");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, connection_frame, "connection_frame");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label3, "label3");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox6, "hbox6");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label43, "label43");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, connection_hbox, "connection_hbox");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, connection_table, "connection_table");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label5, "label5");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, status_label, "status_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label16, "label16");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, name_combo, "name_combo");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, combo_entry1, "combo_entry1");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, activity_frame, "activity_frame");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label4, "label4");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox8, "hbox8");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label44, "label44");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, table2, "table2");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, received_label, "received_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, sent_label, "sent_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label11, "label11");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label12, "label12");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, signal_strength_frame, "signal_strength_frame");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label48, "label48");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox14, "hbox14");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label49, "label49");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox15, "hbox15");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, signal_strength_bar, "signal_strength_bar");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, signal_strength_label, "signal_strength_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label1, "label1");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, vbox2, "vbox2");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_frame, "inet4_frame");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label25, "label25");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox11, "hbox11");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label45, "label45");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_table, "inet4_table");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_addr_title, "inet4_addr_title");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_dest_title, "inet4_dest_title");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_bcast_title, "inet4_bcast_title");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_mask_title, "inet4_mask_title");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_addr_label, "inet4_addr_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_dest_label, "inet4_dest_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_bcast_label, "inet4_bcast_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet4_mask_label, "inet4_mask_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet6_frame, "inet6_frame");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label26, "label26");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox12, "hbox12");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label46, "label46");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, table5, "table5");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label39, "label39");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label40, "label40");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet6_addr_label, "inet6_addr_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, inet6_scope_label, "inet6_scope_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, dev_frame, "dev_frame");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, dev_label, "dev_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox13, "hbox13");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label47, "label47");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, table6, "table6");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, dev_addr_title, "dev_addr_title");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, dev_addr_label, "dev_addr_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, dev_type_label, "dev_type_label");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, dev_type_title, "dev_type_title");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label2, "label2");
+  GLADE_HOOKUP_OBJECT_NO_REF (network_status_dialog, dialog_action_area2, "dialog_action_area2");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, helpbutton1, "helpbutton1");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, configure_button, "configure_button");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, alignment2, "alignment2");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, hbox5, "hbox5");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, image2, "image2");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, label42, "label42");
+  GLADE_HOOKUP_OBJECT (network_status_dialog, close_button, "close_button");
+
+  gtk_widget_grab_default (helpbutton1);
+  return network_status_dialog;
+}
+
diff --git a/src/plugins/netstatus/netstatus-dialog-ui.h b/src/plugins/netstatus/netstatus-dialog-ui.h
new file mode 100644 (file)
index 0000000..b1a53b7
--- /dev/null
@@ -0,0 +1,5 @@
+/*
+ * DO NOT EDIT THIS FILE - it is generated by Glade.
+ */
+
+GtkWidget* create_network_status_dialog (void);
diff --git a/src/plugins/netstatus/netstatus-dialog.c b/src/plugins/netstatus/netstatus-dialog.c
new file mode 100644 (file)
index 0000000..b2d3a57
--- /dev/null
@@ -0,0 +1,787 @@
+/*
+ * Copyright (C) 2003 Sun Microsystems, Inc.
+ * Copyright (C) 2004 Red Hat Inc.
+ *
+ * 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.
+ *
+ * Authors:
+ *      Mark McLoughlin <mark@skynet.ie>
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+#include "netstatus-dialog-ui.h"
+#include "netstatus-dialog.h"
+#include "glade-support.h"
+
+#include <string.h>
+#include <gconf/gconf-client.h>
+
+#include "netstatus-icon.h"
+#include "netstatus-util.h"
+
+#define NETWORK_CONFIG_TOOL_DIR "/apps/netstatus_applet"
+#define NETWORK_CONFIG_TOOL_KEY NETWORK_CONFIG_TOOL_DIR "/config_tool"
+
+static const char *network_config_tools[] = {
+  "network-admin --configure %i",
+  "redhat-config-network",
+  "system-control-network"
+};
+
+#define UNKNOWN_STR(t,s) G_STMT_START {       \
+       if (!((t) = (s))) (t) = _("Unknown"); \
+} G_STMT_END
+
+typedef struct
+{
+  GtkWidget      *dialog;
+
+  NetstatusIface *iface;
+  NetstatusIcon  *icon;
+
+  GConfClient    *client;
+  char           *config_tool;
+  guint           listener;
+
+  GtkWidget      *name;
+  GtkWidget      *status;
+  GtkWidget      *received;
+  GtkWidget      *sent;
+  GtkWidget      *signal_strength_frame;
+  GtkWidget      *signal_strength_bar;
+  GtkWidget      *signal_strength_label;
+  GtkWidget      *configure_button;
+
+  GtkWidget      *inet4_frame;
+  GtkWidget      *inet4_table;
+  GtkWidget      *inet4_addr;
+  GtkWidget      *inet4_addr_title;
+  GtkWidget      *inet4_dest;
+  GtkWidget      *inet4_dest_title;
+  GtkWidget      *inet4_bcast;
+  GtkWidget      *inet4_bcast_title;
+  GtkWidget      *inet4_mask;
+  GtkWidget      *inet4_mask_title;
+
+  GtkWidget      *dev_frame;
+  GtkWidget      *dev_type;
+  GtkWidget      *dev_addr;
+
+  guint           iface_list_monitor;
+  int             n_ifaces;
+} NetstatusDialogData;
+
+
+static void
+netstatus_dialog_update_state (NetstatusDialogData *data)
+{
+  NetstatusState state;
+  
+  state = netstatus_iface_get_state (data->iface);
+  gtk_label_set_text (GTK_LABEL (data->status),
+                     netstatus_get_state_string (state));
+}
+
+static void
+netstatus_dialog_update_name (NetstatusDialogData *data)
+{
+  const char *iface_name;
+  const char *text;
+
+  iface_name = netstatus_iface_get_name (data->iface);
+  if (!iface_name)
+    {
+      gtk_window_set_title (GTK_WINDOW (data->dialog),
+                           _("Connection Properties"));
+    }
+  else
+    {
+      char *p;
+
+      p = g_strdup_printf (_("Connection Properties: %s"), iface_name);
+      gtk_window_set_title (GTK_WINDOW (data->dialog), p);
+      g_free (p);
+    }
+  
+  UNKNOWN_STR (text, iface_name);
+  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (data->name)->entry), text);
+}
+
+static inline void
+print_packets_string (GString *str,
+                     gulong   packets)
+{
+  g_string_printf (str, ngettext ("%lu packet", "%lu packets", packets), packets);
+}
+
+static inline void
+print_bytes_string (GString *str,
+                   guint64  bytes)
+{
+  if (bytes > 1 << 30)
+    {
+      bytes = (bytes * 10) / (1 << 30);
+
+      g_string_append_printf (str, " (%lld.%lld Gb)", bytes / 10, bytes % 10);
+    }
+  else if (bytes > 1 << 20)
+    {
+      bytes = (bytes * 10) / (1 << 20);
+
+      g_string_append_printf (str, " (%lld.%lld Mb)", bytes / 10, bytes % 10);
+    }
+  else if (bytes > 1 << 10)
+    {
+      bytes = (bytes * 10) / (1 << 10);
+
+      g_string_append_printf (str, " (%lld.%lld Kb)", bytes / 10, bytes % 10);
+    }
+  else if (bytes >= 0)
+    {
+      g_string_append_printf (str, " (%lld.%lld b)", bytes / 10, bytes % 10);
+    }
+}
+
+static void
+netstatus_dialog_update_activity (NetstatusDialogData *data)
+{
+  NetstatusStats  stats = { 0, };
+  GString        *str;
+
+  netstatus_iface_get_statistics (data->iface, &stats);
+
+  str = g_string_new (NULL);
+
+  print_packets_string (str, stats.out_packets);
+  print_bytes_string (str, stats.out_bytes);
+  gtk_label_set_text (GTK_LABEL (data->sent), str->str);
+       
+  print_packets_string (str, stats.in_packets);
+  print_bytes_string (str, stats.in_bytes);
+  gtk_label_set_text (GTK_LABEL (data->received), str->str);
+  
+  g_string_free (str, TRUE);
+}
+
+static void
+netstatus_dialog_update_signal_strength (NetstatusDialogData *data)
+{
+  if (netstatus_iface_get_is_wireless (data->iface))
+    {
+      int   signal_strength;
+      char *str;
+
+      gtk_widget_show (data->signal_strength_frame);
+
+      signal_strength = netstatus_iface_get_signal_strength (data->iface);
+
+      gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (data->signal_strength_bar),
+                                    signal_strength == 0 ? 0.0 : signal_strength / 100.0);
+
+      str = g_strdup_printf ("%d%%\n", signal_strength);
+      gtk_label_set_text (GTK_LABEL (data->signal_strength_label), str);
+      g_free (str);
+    }
+  else
+    {
+      gtk_widget_hide (data->signal_strength_frame);
+    }
+}
+
+static void
+netstatus_dialog_update_inet4_support (NetstatusDialogData *data)
+{
+  char *addr = NULL;
+  char *dest = NULL;
+  char *bcast = NULL;
+  char *mask = NULL;
+
+  if (netstatus_iface_get_inet4_details (data->iface, &addr, &dest, &bcast, &mask))
+    {
+      gtk_widget_show (data->inet4_frame);
+
+      /* Address */
+      if (addr)
+       {
+         gtk_table_set_row_spacing (GTK_TABLE (data->inet4_table), 0, 6);
+         gtk_label_set_text (GTK_LABEL (data->inet4_addr), addr);
+         gtk_widget_show (data->inet4_addr);
+         gtk_widget_show (data->inet4_addr_title);
+       }
+      else
+       {
+         gtk_table_set_row_spacing (GTK_TABLE (data->inet4_table), 0, 0);
+         gtk_widget_hide (data->inet4_addr);
+         gtk_widget_hide (data->inet4_addr_title);
+       }
+
+      /* Destination */
+      if (dest)
+       {
+         gtk_table_set_row_spacing (GTK_TABLE (data->inet4_table), 1, 6);
+         gtk_label_set_text (GTK_LABEL (data->inet4_dest), dest);
+         gtk_widget_show (data->inet4_dest);
+         gtk_widget_show (data->inet4_dest_title);
+       }
+      else
+       {
+         gtk_table_set_row_spacing (GTK_TABLE (data->inet4_table), 1, 0);
+         gtk_widget_hide (data->inet4_dest);
+         gtk_widget_hide (data->inet4_dest_title);
+       }
+
+      /* Broadcast */
+      if (bcast)
+       {
+         gtk_table_set_row_spacing (GTK_TABLE (data->inet4_table), 2, 6);
+         gtk_label_set_text (GTK_LABEL (data->inet4_bcast), bcast);
+         gtk_widget_show (data->inet4_bcast);
+         gtk_widget_show (data->inet4_bcast_title);
+       }
+      else
+       {
+         gtk_table_set_row_spacing (GTK_TABLE (data->inet4_table), 2, 0);
+         gtk_widget_hide (data->inet4_bcast);
+         gtk_widget_hide (data->inet4_bcast_title);
+       }
+
+      /* Subnet Mask */
+      if (mask)
+       {
+         gtk_label_set_text (GTK_LABEL (data->inet4_mask), mask);
+         gtk_widget_show (data->inet4_mask);
+         gtk_widget_show (data->inet4_mask_title);
+       }
+      else
+       {
+         gtk_widget_hide (data->inet4_mask);
+         gtk_widget_hide (data->inet4_mask_title);
+       }
+
+      g_free (addr);
+      g_free (dest);
+      g_free (bcast);
+      g_free (mask);
+    }
+  else
+    {
+      gtk_widget_hide (data->inet4_frame);
+    }
+}
+
+static void
+netstatus_dialog_update_device_support (NetstatusDialogData *data)
+{
+  const char *type = NULL;
+  char        *addr = NULL;
+
+  if (netstatus_iface_get_device_details (data->iface, &type, &addr))
+    {
+      g_assert (type != NULL);
+
+      gtk_widget_show (data->dev_frame);
+
+      /* Device type */
+      gtk_label_set_text (GTK_LABEL (data->dev_type), type);
+      
+      /* Address */
+      if (addr)
+       gtk_label_set_text (GTK_LABEL (data->dev_addr), addr);
+      else
+       gtk_label_set_text (GTK_LABEL (data->dev_addr), _("Unknown"));
+
+      g_free (addr);
+    }
+  else
+    {
+      gtk_widget_hide (data->dev_frame);
+    }
+}
+
+static void
+netstatus_dialog_iface_state_changed (NetstatusIface      *iface,
+                                     GParamSpec          *pspec,
+                                     NetstatusDialogData *data)
+{
+  netstatus_dialog_update_state (data);
+  netstatus_dialog_update_inet4_support (data);
+  netstatus_dialog_update_device_support (data);
+}
+
+static void
+netstatus_dialog_iface_stats_changed (NetstatusIface      *iface,
+                                     GParamSpec          *pspec,
+                                     NetstatusDialogData *data)
+{
+  netstatus_dialog_update_activity (data);
+}
+
+static void
+netstatus_dialog_iface_signal_strength_changed (NetstatusIface      *iface,
+                                               GParamSpec          *pspec,
+                                               NetstatusDialogData *data)
+{
+  netstatus_dialog_update_signal_strength (data);
+}
+
+static void
+netstatus_dialog_iface_name_changed (NetstatusIface      *iface,
+                                    GParamSpec          *pspec,
+                                    NetstatusDialogData *data)
+{
+  netstatus_dialog_update_name (data);
+  netstatus_dialog_update_signal_strength (data);
+}
+
+static void
+netstatus_dialog_set_iface_name (NetstatusDialogData *data,
+                                GtkEntry            *entry)
+{
+  const char *iface_name;
+
+  iface_name = gtk_entry_get_text (entry);
+  if (iface_name && iface_name [0])
+    {
+      netstatus_iface_set_name (data->iface, iface_name);
+
+      gtk_widget_set_sensitive (data->configure_button,
+                               !netstatus_iface_get_is_loopback (data->iface));
+    }
+}
+
+static void
+netstatus_dialog_response (GtkWidget *dialog,
+                          int        response)
+{
+  switch (response)
+    {
+    case GTK_RESPONSE_HELP:
+      {
+       GError    *error = NULL;
+       GdkScreen *screen;
+
+       screen = gtk_window_get_screen (GTK_WINDOW (dialog));
+
+       // gnome_help_display_on_screen ("gnome-netstatus", "gnome-netstatus-props", screen, &error);
+
+       if (error)
+         {
+           GtkWidget *message_dialog;
+                                                                              
+           message_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog),
+                                                    GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                    GTK_MESSAGE_ERROR,
+                                                    GTK_BUTTONS_CLOSE,
+                                                    _("There was an error displaying help:\n%s"),
+                                                    error->message);
+
+           gtk_window_set_resizable (GTK_WINDOW (message_dialog), FALSE);
+           gtk_window_set_screen (GTK_WINDOW (message_dialog), screen);
+           
+           g_signal_connect (message_dialog, "response",
+                             G_CALLBACK (gtk_widget_destroy),
+                             NULL);
+           
+           gtk_widget_show (message_dialog);
+
+           g_error_free (error);
+         }
+      }
+      break;
+    default:
+      gtk_widget_hide (dialog);
+      break;
+    }
+}
+
+static void
+netstatus_dialog_destroy (GtkWidget *dialog)
+{
+  NetstatusDialogData *data;
+
+  data = g_object_get_data (G_OBJECT (dialog), "netstatus-dialog-data");
+  if (!data)
+    return;
+
+  if (data->config_tool)
+    g_free (data->config_tool);
+  data->config_tool = NULL;
+
+  if (data->listener)
+    {
+      g_assert (data->client != NULL);
+
+      gconf_client_notify_remove (data->client, data->listener);
+      data->listener = 0;
+
+      gconf_client_remove_dir (data->client, NETWORK_CONFIG_TOOL_DIR, NULL);
+    }
+
+  if (data->client)
+    g_object_unref (data->client);
+  data->client = NULL;
+
+  if (data->iface_list_monitor)
+    g_source_remove (data->iface_list_monitor);
+  data->iface_list_monitor = 0;
+
+  if (data->iface)
+    g_object_unref (data->iface);
+  data->iface = NULL;
+
+  g_free (data);
+}
+
+static gboolean
+netstatus_dialog_check_config_tool (NetstatusDialogData *dialog_data,
+                                   const char          *config_tool)
+{
+  char     **argv = NULL;
+  gboolean   found = FALSE;
+
+  if (config_tool && g_shell_parse_argv (config_tool, NULL, &argv, NULL))
+    {
+      char *path;
+
+      g_assert (argv != NULL);
+
+      if ((path = g_find_program_in_path (argv [0])))
+       {
+         if (dialog_data->config_tool)
+           g_free (dialog_data->config_tool);
+         dialog_data->config_tool = g_strdup (config_tool);
+         found = TRUE;
+       }
+
+      g_free (path);
+      g_strfreev (argv);
+    }
+
+  return found;
+}
+
+static void
+netstatus_dialog_config_tool_notify (GConfClient         *client,
+                                    guint                cnx_id,
+                                    GConfEntry          *entry,
+                                    NetstatusDialogData *dialog_data)
+{
+  if (!entry->value || !entry->value->type == GCONF_VALUE_STRING)
+    return;
+
+  netstatus_dialog_check_config_tool (dialog_data,
+                                     gconf_value_get_string (entry->value));
+}
+
+static void
+netstatus_dialog_detect_configuration_tool (NetstatusDialogData *dialog_data)
+{
+  char *config_tool;
+  int   i;
+
+  dialog_data->client = gconf_client_get_default ();
+
+  gconf_client_add_dir (dialog_data->client,
+                       NETWORK_CONFIG_TOOL_DIR,
+                       GCONF_CLIENT_PRELOAD_NONE,
+                       NULL);
+
+  dialog_data->listener =
+    gconf_client_notify_add (dialog_data->client,
+                            NETWORK_CONFIG_TOOL_KEY,
+                            (GConfClientNotifyFunc) netstatus_dialog_config_tool_notify,
+                            dialog_data, NULL, NULL);
+
+  config_tool = gconf_client_get_string (dialog_data->client,
+                                        NETWORK_CONFIG_TOOL_KEY,
+                                        NULL);
+  if (netstatus_dialog_check_config_tool (dialog_data, config_tool))
+    {
+      g_free (config_tool);
+      return;
+    }
+
+  for (i = 0; i < G_N_ELEMENTS (network_config_tools); i++)
+    {
+      if (netstatus_dialog_check_config_tool (dialog_data, network_config_tools [i]))
+       break;
+    }
+}
+
+static void
+netstatus_iface_configure (GtkWidget           *configure_button,
+                          NetstatusDialogData *dialog_data)
+{
+  GError     *error;
+  GdkScreen  *screen;
+  GString    *command;
+  char      **argv = NULL;
+  int         i;
+
+  g_return_if_fail (dialog_data != NULL);
+  g_return_if_fail (dialog_data->config_tool != NULL);
+
+  g_shell_parse_argv (dialog_data->config_tool, NULL, &argv, NULL);
+
+  /* We've already verified config_tool as valid */
+  g_assert (argv != NULL);
+
+  command = g_string_new (argv [0]);
+
+  for (i = 1; argv [i]; i++)
+    {
+      command = g_string_append_c (command, ' ');
+
+      if (!strcmp (argv [i], "%i"))
+       command = g_string_append (command,
+                                  netstatus_iface_get_name (dialog_data->iface));
+      else
+       command = g_string_append (command, argv [i]);
+    }
+
+  screen = gtk_window_get_screen (GTK_WINDOW (dialog_data->dialog));
+
+  error = NULL;
+  if (!gdk_spawn_command_line_on_screen (screen, command->str, &error))
+    {
+      GtkWidget *error_dialog;
+
+      error_dialog = gtk_message_dialog_new (NULL,
+                                            GTK_DIALOG_DESTROY_WITH_PARENT,
+                                            GTK_MESSAGE_ERROR,
+                                            GTK_BUTTONS_OK,
+                                            _("Failed to launch time configuration tool: %s"),
+                                            error->message);
+      g_signal_connect (error_dialog, "response",
+                       G_CALLBACK (gtk_widget_destroy), NULL);
+
+      gtk_window_set_resizable (GTK_WINDOW (error_dialog), FALSE);
+      gtk_window_set_screen (GTK_WINDOW (error_dialog), screen);
+      
+      gtk_widget_show_all (error_dialog);
+
+      g_error_free (error);
+    }
+
+  g_string_free (command, TRUE);
+  g_strfreev (argv);
+}
+
+static void
+netstatus_dialog_setup_configure_button (NetstatusDialogData *data)
+{
+  data->configure_button = lookup_widget (data->dialog, "configure_button");
+
+  g_signal_connect (data->configure_button, "clicked",
+                   G_CALLBACK (netstatus_iface_configure), data);
+
+  netstatus_dialog_detect_configuration_tool (data);
+  
+  if (!data->config_tool)
+    gtk_widget_hide (data->configure_button);
+
+  gtk_widget_set_sensitive (data->configure_button,
+                           !netstatus_iface_get_is_loopback (data->iface));
+}
+
+static void
+netstatus_dialog_setup_connection (NetstatusDialogData *data)
+{
+  GtkWidget *hbox;
+  GtkWidget *icon;
+  
+  hbox = lookup_widget (data->dialog, "connection_hbox");
+
+  icon = netstatus_icon_new (data->iface);
+  netstatus_icon_set_tooltips_enabled (NETSTATUS_ICON (icon), FALSE);
+  netstatus_icon_set_show_signal (NETSTATUS_ICON (icon), FALSE);
+  gtk_box_pack_end (GTK_BOX (hbox), icon, FALSE, TRUE, 4);
+  gtk_widget_show (icon);
+
+  data->icon = NETSTATUS_ICON (icon);
+
+  data->name   = lookup_widget (data->dialog, "name_combo");
+  data->status = lookup_widget (data->dialog, "status_label");
+
+  netstatus_dialog_update_name (data);
+  netstatus_dialog_update_state (data);
+}
+
+static void
+netstatus_dialog_setup_activity (NetstatusDialogData *data)
+{
+  data->sent     = lookup_widget (data->dialog, "sent_label");
+  data->received = lookup_widget (data->dialog, "received_label");
+
+  netstatus_dialog_update_activity (data);
+}
+
+static void
+netstatus_dialog_setup_signal_strength_details (NetstatusDialogData *data)
+{
+  data->signal_strength_frame = lookup_widget (data->dialog, "signal_strength_frame");
+  data->signal_strength_bar   = lookup_widget (data->dialog, "signal_strength_bar");
+  data->signal_strength_label = lookup_widget (data->dialog, "signal_strength_label");
+
+  netstatus_dialog_update_signal_strength (data);
+}
+
+static void
+netstatus_dialog_setup_inet4_support (NetstatusDialogData *data)
+{
+  data->inet4_frame       = lookup_widget (data->dialog, "inet4_frame");
+  data->inet4_table       = lookup_widget (data->dialog, "inet4_table");
+  data->inet4_addr        = lookup_widget (data->dialog, "inet4_addr_label");
+  data->inet4_addr_title  = lookup_widget (data->dialog, "inet4_addr_title");
+  data->inet4_dest        = lookup_widget (data->dialog, "inet4_dest_label");
+  data->inet4_dest_title  = lookup_widget (data->dialog, "inet4_dest_title");
+  data->inet4_bcast       = lookup_widget (data->dialog, "inet4_bcast_label");
+  data->inet4_bcast_title = lookup_widget (data->dialog, "inet4_bcast_title");
+  data->inet4_mask        = lookup_widget (data->dialog, "inet4_mask_label");
+  data->inet4_mask_title  = lookup_widget (data->dialog, "inet4_mask_title");
+
+  netstatus_dialog_update_inet4_support (data);
+}
+static void
+netstatus_dialog_setup_device_support (NetstatusDialogData *data)
+{
+  data->dev_frame = lookup_widget (data->dialog, "dev_frame");
+  data->dev_type  = lookup_widget (data->dialog, "dev_type_label");
+  data->dev_addr  = lookup_widget (data->dialog, "dev_addr_label");
+  
+  netstatus_dialog_update_device_support (data);
+}
+
+static void
+netstatus_dialog_set_icon (GtkWidget *dialog)
+{
+  GtkIconTheme *icon_theme;
+  GtkIconInfo  *icon_info;
+
+  icon_theme = gtk_icon_theme_get_for_screen (gtk_window_get_screen (GTK_WINDOW (dialog)));
+
+  if ((icon_info = gtk_icon_theme_lookup_icon (icon_theme, "gnome-netstatus-tx", 48, 0)))
+    {
+      gtk_window_set_icon_from_file (GTK_WINDOW (dialog),
+                                    gtk_icon_info_get_filename (icon_info),
+                                    NULL);
+      gtk_icon_info_free (icon_info);
+    }
+}
+
+static gboolean
+netstatus_dialog_iface_list_monitor (NetstatusDialogData *data)
+{
+  GList *iface_names, *l;
+  int    n_ifaces;
+
+  iface_names = netstatus_list_interface_names (NULL);
+
+  n_ifaces = g_list_length (iface_names);
+
+  if (data->n_ifaces != n_ifaces)
+    {
+      g_signal_handlers_block_by_func (GTK_COMBO (data->name)->entry,
+                                      G_CALLBACK (netstatus_dialog_set_iface_name), data);
+                                      
+      gtk_combo_set_popdown_strings (GTK_COMBO (data->name), iface_names);
+      netstatus_dialog_update_name (data);
+
+      g_signal_handlers_unblock_by_func (GTK_COMBO (data->name)->entry,
+                                        G_CALLBACK (netstatus_dialog_set_iface_name), data);
+    }
+
+  data->n_ifaces = n_ifaces;
+
+  for (l = iface_names; l; l = l->next)
+    g_free (l->data);
+  g_list_free (iface_names);
+
+  return TRUE;
+}
+
+GtkWidget *
+netstatus_dialog_new (NetstatusIface *iface)
+{
+  NetstatusDialogData *data;
+  data = g_new0 (NetstatusDialogData, 1);
+
+  data->dialog = create_network_status_dialog();
+
+  g_object_set_data (G_OBJECT (data->dialog), "netstatus-dialog-data", data);
+
+  netstatus_dialog_set_icon (data->dialog);
+
+  data->iface = g_object_ref (iface);
+  netstatus_connect_signal_while_alive (data->iface,
+                                       "notify::state",
+                                       G_CALLBACK (netstatus_dialog_iface_state_changed),
+                                       data,
+                                       data->dialog);
+
+  netstatus_connect_signal_while_alive (data->iface,
+                                       "notify::stats",
+                                       G_CALLBACK (netstatus_dialog_iface_stats_changed),
+                                       data,
+                                       data->dialog);
+
+  netstatus_connect_signal_while_alive (data->iface,
+                                       "notify::name",
+                                       G_CALLBACK (netstatus_dialog_iface_name_changed),
+                                       data,
+                                       data->dialog);
+  
+  netstatus_connect_signal_while_alive (data->iface,
+                                       "notify::wireless",
+                                       G_CALLBACK (netstatus_dialog_iface_signal_strength_changed),
+                                       data,
+                                       data->dialog);
+
+  netstatus_connect_signal_while_alive (data->iface,
+                                       "notify::signal-strength",
+                                       G_CALLBACK (netstatus_dialog_iface_signal_strength_changed),
+                                       data,
+                                       data->dialog);
+
+  g_signal_connect (data->dialog, "response",
+                   G_CALLBACK (netstatus_dialog_response), NULL);
+
+  g_signal_connect (data->dialog, "destroy",
+                   G_CALLBACK (netstatus_dialog_destroy), NULL);
+
+  netstatus_dialog_setup_connection (data);
+  netstatus_dialog_setup_activity (data);
+  netstatus_dialog_setup_signal_strength_details (data);
+  netstatus_dialog_setup_inet4_support (data);
+  netstatus_dialog_setup_device_support (data);
+  netstatus_dialog_setup_configure_button (data);
+
+  data->iface_list_monitor = g_timeout_add (2 * 1000,
+                                           (GSourceFunc) netstatus_dialog_iface_list_monitor,
+                                           data);
+  netstatus_dialog_iface_list_monitor (data);
+
+  g_signal_connect_swapped (GTK_COMBO (data->name)->entry, "changed",
+                           G_CALLBACK (netstatus_dialog_set_iface_name),
+                           data);
+
+  return data->dialog;
+}
diff --git a/src/plugins/netstatus/netstatus-dialog.h b/src/plugins/netstatus/netstatus-dialog.h
new file mode 100644 (file)
index 0000000..6fefc7c
--- /dev/null
@@ -0,0 +1,2 @@
+#include <gtk/gtk.h>
+
index 263e416..097352a 100644 (file)
@@ -7,14 +7,15 @@
 #include "misc.h"
 #include "plugin.h"
 
-//#define DEBUG
 #include "dbg.h"
 
 #include "netstatus-icon.h"
+#include "netstatus-dialog.h"
 
 typedef struct {
     char *iface;
     GtkWidget *mainw;
+    GtkWidget *dlg;
 } netstatus;
 
 
@@ -69,6 +70,35 @@ _get_line(FILE *fp, line *s)
     RET(s->type);
 }
 
+static void on_response( GtkDialog* dlg, gint response, netstatus *ns )
+{
+    switch( response )
+    {
+        case GTK_RESPONSE_CLOSE:
+        case GTK_RESPONSE_DELETE_EVENT:
+        case GTK_RESPONSE_NONE:
+            gtk_widget_destroy( dlg );
+            ns->dlg = NULL;
+    }
+}
+
+static void on_button_press( GtkWidget* widget, GdkEventButton* evt, plugin* p )
+{
+    NetstatusIface* iface;
+    netstatus *ns = (netstatus*)p->priv;
+
+    if( evt->button == 1 ) /*  Left click*/
+    {
+        if( ! ns->dlg )
+        {
+            iface = netstatus_icon_get_iface( NETSTATUS_ICON(widget) );
+            ns->dlg = netstatus_dialog_new(iface);
+            g_signal_connect( ns->dlg, "response", on_response, ns );
+        }
+        gtk_window_present( GTK_WINDOW(ns->dlg) );
+    }
+}
+
 static int
 netstatus_constructor(plugin *p)
 {
@@ -76,6 +106,7 @@ netstatus_constructor(plugin *p)
     line s;
     int w, h;
     NetstatusIface* iface;
+    GtkWidget* icon;
 
     ENTER;
     s.len = 256;  
@@ -102,6 +133,10 @@ netstatus_constructor(plugin *p)
 
     iface = netstatus_iface_new(ns->iface);
     ns->mainw = netstatus_icon_new( iface );
+    gtk_widget_add_events( ns->mainw, GDK_BUTTON_PRESS_MASK );
+    g_object_unref( iface );
+    g_signal_connect( ns->mainw, "button-press-event",
+                      G_CALLBACK(on_button_press), p );
     gtk_widget_set_size_request( ns->mainw, 24, 24 );
 
     gtk_widget_show_all(ns->mainw);
diff --git a/src/plugins/netstatus/netstatus.schemas.in b/src/plugins/netstatus/netstatus.schemas.in
deleted file mode 100644 (file)
index 2389e4a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<gconfschemafile>
-  <schemalist>    
-
-    <schema>
-      <key>/schemas/apps/netstatus_applet/prefs/interface</key>
-      <owner>netstatus-applet</owner>
-      <type>string</type>
-      <default></default>
-      <locale name="C">
-        <short>Network interface</short>
-        <long>The Network Interface monitored by the Network Monitor.</long>
-      </locale>
-    </schema>
-
-    <!-- Yes, this key is purposely global to all instances of the applet -->
-    <schema>
-      <key>/schemas/apps/netstatus_applet/config_tool</key>
-      <applyto>/apps/netstatus_applet/config_tool</applyto>
-      <owner>netstatus-applet</owner>
-      <type>string</type>
-      <default></default>
-      <locale name="C">
-        <short>Network configuration tool</short>
-        <long>
-         This key specifies the name of the network configuration tool
-         which should be invoked when the "Configure" button in the
-         properties dialog is clicked.
-
-         If the configuration tool can take a parameter of the interface
-         to configure you may use %i in the string and it will be
-         substituted with the interface name before invoking the
-         configuration tool.
-
-         For example, gnome-system-tool's network-admin tool takes
-          the interface name through a --configure parameter. Thus,
-          you could set the value of this key to be:
-                  "network-admin --configure %i".
-       </long>
-      </locale>
-    </schema>
-                 
-  </schemalist>
-</gconfschemafile>
diff --git a/src/plugins/netstatus/netstatus.so b/src/plugins/netstatus/netstatus.so
new file mode 100755 (executable)
index 0000000..b6d2f32
Binary files /dev/null and b/src/plugins/netstatus/netstatus.so differ