Port gssdp-device-sniffer to GtkBuilder
authorJens Georg <mail@jensge.org>
Fri, 1 May 2009 14:12:36 +0000 (16:12 +0200)
committerRoss Burton <ross@linux.intel.com>
Mon, 6 Jul 2009 10:53:31 +0000 (11:53 +0100)
Makefile.am
configure.ac
tools/Makefile.am
tools/gssdp-device-sniffer.c
tools/gssdp-device-sniffer.glade [deleted file]
tools/gssdp-device-sniffer.ui [new file with mode: 0644]

index bc5d602..f830c30 100644 (file)
@@ -1,4 +1,4 @@
-if USE_LIBGLADE
+if USE_LIBGTK
 TOOLS_DIR = tools
 else
 TOOLS_DIR =
index aef6978..1e002cc 100644 (file)
@@ -14,38 +14,38 @@ PKG_CHECK_MODULES(LIBGSSDP, glib-2.0 >= 2.18 \
                             gobject-2.0 >= 2.18 \
                             libsoup-2.4)
 
-LIBGLADE_REQUIRED=2.6.0
+LIBGTK_REQUIRED=2.12.0
 
-AC_ARG_WITH( libglade,
-  AC_HELP_STRING([--without-libglade],[compile without libglade support]),
-  try_libglade=$withval, try_libglade=yes )
+AC_ARG_WITH( gtk,
+  AC_HELP_STRING([--without-gtk],[compile without gtk+ support]),
+  try_gtk=$withval, try_gtk=yes )
 
-HAVE_LIBGLADE=no
-if test x$try_libglade = xyes ; then
-    dnl check for libglade
-    PKG_CHECK_MODULES(LIBGLADE, libglade-2.0 >= $LIBGLADE_REQUIRED ,
+HAVE_LIBGGTK=no
+if test x$try_gtk = xyes ; then
+    dnl check for gtk+
+    PKG_CHECK_MODULES(LIBGTK, gtk+-2.0 >= $LIBGTK_REQUIRED ,
       [
-        HAVE_LIBGLADE=yes
-        AC_SUBST(LIBGLADE_CFLAGS)
-        AC_SUBST(LIBGLADE_LIBS)
+        HAVE_LIBGTK=yes
+        AC_SUBST(LIBGTK_CFLAGS)
+        AC_SUBST(LIBGTK_LIBS)
       ],
       [ 
-        HAVE_LIBGLADE=no
-        AC_MSG_WARN([libglade $LIBGLADE_REQUIRED or greater not found, some tools will not build.])
+        HAVE_LIBGTK=no
+        AC_MSG_WARN([gtk+ $LIBGTK_REQUIRED or greater not found, some tools will not build.])
       ])
 else
-    AC_MSG_NOTICE([libglade usage disabled, some tools may not build.])
+    AC_MSG_NOTICE([gtk+ usage disabled, some tools may not build.])
 fi
 
-if test x$HAVE_LIBGLADE = xno; then
-  USE_LIBGLADE=no
+if test x$HAVE_LIBGTK = xno; then
+  USE_LIBGTK=no
 else
-  USE_LIBGLADE=yes
-  AC_DEFINE(HAVE_LIBGLADE, , [Use libglade])
+  USE_LIBGTK=yes
+  AC_DEFINE(HAVE_LIBGTK, , [Use gtk+])
 fi
 
-AC_SUBST(HAVE_LIBGLADE)
-AM_CONDITIONAL(USE_LIBGLADE, test x$USE_LIBGLADE = xyes)
+AC_SUBST(HAVE_LIBGTK)
+AM_CONDITIONAL(USE_LIBGTK, test x$USE_LIBGTK = xyes)
 
 # glib-genmarshal
 GLIB_GENMARSHAL=`pkg-config --variable=glib_genmarshal glib-2.0`
index fad500e..565e556 100644 (file)
@@ -1,12 +1,12 @@
 uidir = $(datadir)/gssdp
-dist_ui_DATA = $(srcdir)/gssdp-device-sniffer.glade
+dist_ui_DATA = $(srcdir)/gssdp-device-sniffer.ui
 
-AM_CFLAGS = $(LIBGSSDP_CFLAGS) $(LIBGLADE_CFLAGS) -I$(top_srcdir) -DUI_DIR='"$(uidir)"'
+AM_CFLAGS = $(LIBGSSDP_CFLAGS) $(LIBGTK_CFLAGS) -I$(top_srcdir) -DUI_DIR='"$(uidir)"'
 
 bin_PROGRAMS = gssdp-device-sniffer
 
 gssdp_device_sniffer_SOURCES = gssdp-device-sniffer.c
-gssdp_device_sniffer_LDADD = $(LIBGLADE_LIBS) $(LIBGSSDP_LIBS) $(top_builddir)/libgssdp/libgssdp-1.0.la
+gssdp_device_sniffer_LDADD = $(LIBGSSDP_LIBS) $(LIBGTK_LIBS) $(top_builddir)/libgssdp/libgssdp-1.0.la
 gssdp_device_sniffer_LDFLAGS = -export-dynamic
 
 MAINTAINERCLEANFILES = Makefile.in
index b22c93b..2ca44c5 100644 (file)
 #include <libgssdp/gssdp-client-private.h>
 #include <libsoup/soup.h>
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include <string.h>
 #include <stdlib.h>
 
-#define GLADE_FILE "gssdp-device-sniffer.glade"
+#define UI_FILE "gssdp-device-sniffer.ui"
 #define MAX_IP_LEN 16
 
-GladeXML *glade_xml;
+GtkBuilder *builder;
 GSSDPResourceBrowser *resource_browser;
 GSSDPClient *client;
 char *ip_filter = NULL;
 gboolean capture_packets = TRUE;
 
+G_MODULE_EXPORT
 void
 on_enable_packet_capture_activate (GtkCheckMenuItem *menuitem, gpointer user_data)
 {
@@ -49,7 +49,7 @@ clear_packet_treeview ()
         gboolean more;
         time_t *arrival_time;
 
-        treeview = glade_xml_get_widget (glade_xml, "packet-treeview");
+        treeview = GTK_WIDGET(gtk_builder_get_object (builder, "packet-treeview"));
         g_assert (treeview != NULL);
         model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
         more = gtk_tree_model_get_iter_first (model, &iter);
@@ -63,6 +63,7 @@ clear_packet_treeview ()
         }
 }
 
+G_MODULE_EXPORT
 void
 on_details_activate (GtkWidget *scrolled_window, GtkCheckMenuItem *menuitem)
 {
@@ -97,7 +98,7 @@ update_packet_details (char *text, unsigned int len)
         GtkWidget *textview;
         GtkTextBuffer *textbuffer;
         
-        textview = glade_xml_get_widget (glade_xml, "packet-details-textview");
+        textview = GTK_WIDGET(gtk_builder_get_object (builder, "packet-details-textview"));
         g_assert (textview != NULL);
         textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
         
@@ -145,6 +146,7 @@ on_packet_selected (GtkTreeSelection *selection, gpointer user_data)
                 update_packet_details ("", 0);
 }
 
+G_MODULE_EXPORT
 void
 on_clear_packet_capture_activate (GtkMenuItem *menuitem, gpointer user_data)
 {
@@ -198,7 +200,7 @@ append_packet (const gchar *from_ip,
         GtkTreeIter iter;
         char **packet_data;
         
-        treeview = glade_xml_get_widget (glade_xml, "packet-treeview");
+        treeview = GTK_WIDGET(gtk_builder_get_object (builder, "packet-treeview"));
         g_assert (treeview != NULL);
         liststore = GTK_LIST_STORE (
                         gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)));
@@ -275,7 +277,7 @@ append_device (const char *uuid,
         GtkTreeModel *model;
         GtkTreeIter iter;
        
-        treeview = glade_xml_get_widget (glade_xml, "device-details-treeview");
+        treeview = GTK_WIDGET(gtk_builder_get_object (builder, "device-details-treeview"));
         g_assert (treeview != NULL);
         model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
         g_assert (model != NULL);
@@ -346,7 +348,7 @@ remove_device (const char *uuid)
         GtkTreeModel *model;
         GtkTreeIter iter;
        
-        treeview = glade_xml_get_widget (glade_xml, "device-details-treeview");
+        treeview = GTK_WIDGET(gtk_builder_get_object (builder, "device-details-treeview"));
         g_assert (treeview != NULL);
         model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
         g_assert (model != NULL);
@@ -372,6 +374,7 @@ resource_unavailable_cb (GSSDPResourceBrowser *resource_browser,
         g_strfreev (usn_tokens);
 }
 
+G_MODULE_EXPORT
 void
 on_use_filter_radiobutton_toggled (GtkToggleButton *togglebutton,
                 gpointer         user_data)
@@ -379,7 +382,7 @@ on_use_filter_radiobutton_toggled (GtkToggleButton *togglebutton,
         GtkWidget *filter_hbox;
         gboolean use_filter;
 
-        filter_hbox = glade_xml_get_widget (glade_xml, "address-filter-hbox");
+        filter_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "address-filter-hbox"));
         g_assert (filter_hbox != NULL);
         
         use_filter = gtk_toggle_button_get_active (togglebutton);
@@ -400,7 +403,7 @@ get_ip_filter ()
                 gint val;
 
                 sprintf (entry_name, "address-entry%d", i);
-                entry = glade_xml_get_widget (glade_xml, entry_name);
+                entry = GTK_WIDGET(gtk_builder_get_object (builder, entry_name));
                 g_assert (entry != NULL);
 
                 val = atoi (gtk_entry_get_text (GTK_ENTRY (entry)));
@@ -411,6 +414,7 @@ get_ip_filter ()
         return ip;
 }
 
+G_MODULE_EXPORT
 void
 on_address_filter_dialog_response (GtkDialog *dialog,
                 gint       response,
@@ -420,7 +424,7 @@ on_address_filter_dialog_response (GtkDialog *dialog,
 
         gtk_widget_hide (GTK_WIDGET (dialog));
         
-        use_filter_radio = glade_xml_get_widget (glade_xml, "use-filter-radiobutton");
+        use_filter_radio = GTK_WIDGET(gtk_builder_get_object (builder, "use-filter-radiobutton"));
         g_assert (use_filter_radio != NULL);
         
         if (response != GTK_RESPONSE_OK)
@@ -507,11 +511,11 @@ setup_treeviews ()
         GtkTreeSelection *selection;
         int i;
 
-        treeviews[0] = glade_xml_get_widget (glade_xml,
-                        "packet-treeview");
+        treeviews[0] = GTK_WIDGET(gtk_builder_get_object (builder,
+                        "packet-treeview"));
         g_assert (treeviews[0] != NULL);
-        treeviews[1] = glade_xml_get_widget (glade_xml, 
-                        "device-details-treeview");
+        treeviews[1] = GTK_WIDGET(gtk_builder_get_object (builder,
+                        "device-details-treeview"));
         g_assert (treeviews[1] != NULL);
         
         treemodels[0] = create_packet_treemodel ();
@@ -530,6 +534,7 @@ setup_treeviews ()
                         (gpointer *) treeviews[0]);
 }
 
+G_MODULE_EXPORT
 gboolean
 on_delete_event (GtkWidget *widget,
                 GdkEvent  *event,
@@ -544,31 +549,30 @@ init_ui (gint *argc, gchar **argv[])
 {
         GtkWidget *main_window;
         gint window_width, window_height;
-        gchar *glade_path = NULL;
+        gchar *ui_path = NULL;
         
         gtk_init (argc, argv);
-        glade_init ();
 
-        /* Try to fetch the glade file from the CWD first */
-        glade_path = GLADE_FILE;
-        if (!g_file_test (glade_path, G_FILE_TEST_EXISTS)) {
+        /* Try to fetch the ui file from the CWD first */
+        ui_path = UI_FILE;
+        if (!g_file_test (ui_path, G_FILE_TEST_EXISTS)) {
                 /* Then Try to fetch it from the system path */
-                glade_path = UI_DIR "/" GLADE_FILE;
+                ui_path = UI_DIR "/" UI_FILE;
 
-                if (!g_file_test (glade_path, G_FILE_TEST_EXISTS))
-                        glade_path = NULL;
+                if (!g_file_test (ui_path, G_FILE_TEST_EXISTS))
+                        ui_path = NULL;
         }
         
-        if (glade_path == NULL) {
-                g_critical ("Unable to load the GUI file %s", GLADE_FILE);
+        if (ui_path == NULL) {
+                g_critical ("Unable to load the GUI file %s", UI_FILE);
                 return FALSE;
         }
 
-        glade_xml = glade_xml_new (glade_path, NULL, NULL); 
-        if (glade_xml == NULL)
+        builder = gtk_builder_new();
+        if (gtk_builder_add_from_file(builder, ui_path, NULL) == 0)
                 return FALSE;
 
-        main_window = glade_xml_get_widget (glade_xml, "main-window");
+        main_window = GTK_WIDGET(gtk_builder_get_object (builder, "main-window"));
         g_assert (main_window != NULL);
 
         /* 80% of the screen but don't get bigger than 1000x800 */
@@ -578,7 +582,7 @@ init_ui (gint *argc, gchar **argv[])
                                      window_width,
                                      window_height);
 
-        glade_xml_signal_autoconnect (glade_xml);
+        gtk_builder_connect_signals (builder, NULL);
         setup_treeviews ();
         gtk_widget_show_all (main_window);
 
@@ -588,7 +592,7 @@ init_ui (gint *argc, gchar **argv[])
 static void
 deinit_ui (void)
 {
-        g_object_unref (glade_xml);
+        g_object_unref (builder);
 }
 
 static gboolean
diff --git a/tools/gssdp-device-sniffer.glade b/tools/gssdp-device-sniffer.glade
deleted file mode 100644 (file)
index febba2a..0000000
+++ /dev/null
@@ -1,587 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkWindow" id="main-window">
-  <property name="title" translatable="yes">GSSDP Device Sniffer</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <signal name="delete_event" handler="on_delete_event" last_modification_time="Fri, 11 May 2007 10:36:15 GMT"/>
-
-  <child>
-    <widget class="GtkVBox" id="vbox2">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-       <widget class="GtkMenuBar" id="menubar">
-         <property name="visible">True</property>
-         <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
-         <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
-
-         <child>
-           <widget class="GtkMenuItem" id="file_menuitem">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">_File</property>
-             <property name="use_underline">True</property>
-
-             <child>
-               <widget class="GtkMenu" id="file_menuitem_menu">
-
-                 <child>
-                   <widget class="GtkImageMenuItem" id="clear_packet_capture">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">Clear Packet Capture</property>
-                     <property name="use_underline">True</property>
-                     <signal name="activate" handler="on_clear_packet_capture_activate" last_modification_time="Tue, 08 May 2007 08:41:08 GMT"/>
-
-                     <child internal-child="image">
-                       <widget class="GtkImage" id="image1">
-                         <property name="visible">True</property>
-                         <property name="stock">gtk-clear</property>
-                         <property name="icon_size">1</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                       </widget>
-                     </child>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkSeparatorMenuItem" id="separator2">
-                     <property name="visible">True</property>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkCheckMenuItem" id="show_packet_details">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">Show Packet Details</property>
-                     <property name="use_underline">True</property>
-                     <property name="active">True</property>
-                     <signal name="activate" handler="on_details_activate" object="packet-details-scrolledwindow" last_modification_time="Mon, 23 Apr 2007 21:27:46 GMT"/>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkCheckMenuItem" id="show_device_tracking">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">Show Device Tracking</property>
-                     <property name="use_underline">True</property>
-                     <property name="active">True</property>
-                     <signal name="activate" handler="on_details_activate" object="packet-details-scrolledwindow" last_modification_time="Mon, 23 Apr 2007 21:30:07 GMT"/>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkSeparatorMenuItem" id="separator3">
-                     <property name="visible">True</property>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkImageMenuItem" id="quit">
-                     <property name="visible">True</property>
-                     <property name="label">gtk-quit</property>
-                     <property name="use_stock">True</property>
-                     <signal name="activate" handler="gtk_main_quit" last_modification_time="Sat, 21 Apr 2007 14:46:54 GMT"/>
-                   </widget>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-         </child>
-
-         <child>
-           <widget class="GtkMenuItem" id="filter_menuitem">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">Filter</property>
-             <property name="use_underline">True</property>
-
-             <child>
-               <widget class="GtkMenu" id="filter_menuitem_menu">
-
-                 <child>
-                   <widget class="GtkCheckMenuItem" id="enable_packet_capture">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">Enable Packet Capture</property>
-                     <property name="use_underline">True</property>
-                     <property name="active">True</property>
-                     <signal name="activate" handler="on_enable_packet_capture_activate" last_modification_time="Fri, 20 Apr 2007 14:59:37 GMT"/>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkMenuItem" id="address_filter">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">Address Filter</property>
-                     <property name="use_underline">True</property>
-                     <signal name="activate" handler="gtk_widget_show" object="address-filter-dialog" last_modification_time="Fri, 11 May 2007 10:58:14 GMT"/>
-                   </widget>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-         </child>
-
-         <child>
-           <widget class="GtkMenuItem" id="help_menuitem">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">_Help</property>
-             <property name="use_underline">True</property>
-
-             <child>
-               <widget class="GtkMenu" id="help_menuitem_menu">
-
-                 <child>
-                   <widget class="GtkImageMenuItem" id="about">
-                     <property name="visible">True</property>
-                     <property name="label">gtk-about</property>
-                     <property name="use_stock">True</property>
-                     <signal name="activate" handler="gtk_widget_show" object="about-dialog" last_modification_time="Sat, 21 Apr 2007 15:23:48 GMT"/>
-                   </widget>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">False</property>
-         <property name="fill">False</property>
-       </packing>
-      </child>
-
-      <child>
-       <widget class="GtkVBox" id="vbox">
-         <property name="border_width">6</property>
-         <property name="visible">True</property>
-         <property name="homogeneous">False</property>
-         <property name="spacing">6</property>
-
-         <child>
-           <widget class="GtkScrolledWindow" id="packet-scrolledwindow">
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-             <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-             <property name="shadow_type">GTK_SHADOW_IN</property>
-             <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-             <child>
-               <widget class="GtkTreeView" id="packet-treeview">
-                 <property name="visible">True</property>
-                 <property name="can_focus">True</property>
-                 <property name="headers_visible">True</property>
-                 <property name="rules_hint">False</property>
-                 <property name="reorderable">False</property>
-                 <property name="enable_search">True</property>
-                 <property name="fixed_height_mode">False</property>
-                 <property name="hover_selection">False</property>
-                 <property name="hover_expand">False</property>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">True</property>
-             <property name="fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkScrolledWindow" id="packet-details-scrolledwindow">
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-             <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-             <property name="shadow_type">GTK_SHADOW_IN</property>
-             <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-             <child>
-               <widget class="GtkTextView" id="packet-details-textview">
-                 <property name="visible">True</property>
-                 <property name="can_focus">True</property>
-                 <property name="editable">False</property>
-                 <property name="overwrite">False</property>
-                 <property name="accepts_tab">True</property>
-                 <property name="justification">GTK_JUSTIFY_LEFT</property>
-                 <property name="wrap_mode">GTK_WRAP_NONE</property>
-                 <property name="cursor_visible">True</property>
-                 <property name="pixels_above_lines">0</property>
-                 <property name="pixels_below_lines">0</property>
-                 <property name="pixels_inside_wrap">0</property>
-                 <property name="left_margin">0</property>
-                 <property name="right_margin">0</property>
-                 <property name="indent">0</property>
-                 <property name="text" translatable="yes"></property>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">True</property>
-             <property name="fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkScrolledWindow" id="device-details-scrolledwindow">
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-             <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-             <property name="shadow_type">GTK_SHADOW_IN</property>
-             <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-             <child>
-               <widget class="GtkTreeView" id="device-details-treeview">
-                 <property name="visible">True</property>
-                 <property name="can_focus">True</property>
-                 <property name="headers_visible">True</property>
-                 <property name="rules_hint">False</property>
-                 <property name="reorderable">False</property>
-                 <property name="enable_search">True</property>
-                 <property name="fixed_height_mode">False</property>
-                 <property name="hover_selection">False</property>
-                 <property name="hover_expand">False</property>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">True</property>
-             <property name="fill">True</property>
-           </packing>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">True</property>
-         <property name="fill">True</property>
-       </packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkAboutDialog" id="about-dialog">
-  <property name="destroy_with_parent">False</property>
-  <property name="name" translatable="yes">GSSDP Device Sniffer</property>
-  <property name="copyright" translatable="yes">Copyright (C) 2007 Zeeshan Ali (Khattak)</property>
-  <property name="comments" translatable="yes">A Device Sniffer tool based on GSSDP framework.
-Inspired by Intel Tools for UPnP.</property>
-  <property name="license" translatable="yes">LGPL</property>
-  <property name="wrap_license">False</property>
-  <property name="authors">Zeeshan Ali (Khattak) &lt;zeeshanak@gnome.org&gt;</property>
-  <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
-  <signal name="response" handler="gtk_widget_hide" object="about-dialog" last_modification_time="Sat, 19 May 2007 20:52:15 GMT"/>
-  <signal name="delete_event" handler="gtk_widget_hide" object="about-dialog" last_modification_time="Tue, 15 May 2007 21:17:51 GMT"/>
-</widget>
-
-<widget class="GtkDialog" id="address-filter-dialog">
-  <property name="border_width">7</property>
-  <property name="title" translatable="yes">Address Filter</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">False</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <property name="has_separator">False</property>
-  <signal name="response" handler="on_address_filter_dialog_response" last_modification_time="Fri, 11 May 2007 11:00:37 GMT"/>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">8</property>
-
-      <child internal-child="action_area">
-       <widget class="GtkHButtonBox" id="dialog-action_area1">
-         <property name="visible">True</property>
-         <property name="layout_style">GTK_BUTTONBOX_END</property>
-
-         <child>
-           <widget class="GtkButton" id="closebutton1">
-             <property name="visible">True</property>
-             <property name="can_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">-5</property>
-           </widget>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">False</property>
-         <property name="fill">True</property>
-         <property name="pack_type">GTK_PACK_END</property>
-       </packing>
-      </child>
-
-      <child>
-       <widget class="GtkVBox" id="vbox1">
-         <property name="border_width">5</property>
-         <property name="visible">True</property>
-         <property name="homogeneous">False</property>
-         <property name="spacing">4</property>
-
-         <child>
-           <widget class="GtkRadioButton" id="dont-use-filter-radiobutton">
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="label" translatable="yes">No filter, capture all traffic</property>
-             <property name="use_underline">True</property>
-             <property name="relief">GTK_RELIEF_NORMAL</property>
-             <property name="focus_on_click">True</property>
-             <property name="active">True</property>
-             <property name="inconsistent">False</property>
-             <property name="draw_indicator">True</property>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">False</property>
-             <property name="fill">False</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkRadioButton" id="use-filter-radiobutton">
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="label" translatable="yes">Use IP address filter</property>
-             <property name="use_underline">True</property>
-             <property name="relief">GTK_RELIEF_NORMAL</property>
-             <property name="focus_on_click">True</property>
-             <property name="active">False</property>
-             <property name="inconsistent">False</property>
-             <property name="draw_indicator">True</property>
-             <property name="group">dont-use-filter-radiobutton</property>
-             <signal name="toggled" handler="on_use_filter_radiobutton_toggled" last_modification_time="Fri, 11 May 2007 10:55:01 GMT"/>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">False</property>
-             <property name="fill">False</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkAlignment" id="alignment1">
-             <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">0</property>
-             <property name="bottom_padding">0</property>
-             <property name="left_padding">50</property>
-             <property name="right_padding">0</property>
-
-             <child>
-               <widget class="GtkHBox" id="address-filter-hbox">
-                 <property name="visible">True</property>
-                 <property name="sensitive">False</property>
-                 <property name="homogeneous">False</property>
-                 <property name="spacing">0</property>
-
-                 <child>
-                   <widget class="GtkEntry" id="address-entry0">
-                     <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">3</property>
-                     <property name="text" translatable="yes"></property>
-                     <property name="has_frame">True</property>
-                     <property name="invisible_char">*</property>
-                     <property name="activates_default">True</property>
-                     <property name="width_chars">4</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="address-label0">
-                     <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="GtkEntry" id="address-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">3</property>
-                     <property name="text" translatable="yes"></property>
-                     <property name="has_frame">True</property>
-                     <property name="invisible_char">*</property>
-                     <property name="activates_default">True</property>
-                     <property name="width_chars">4</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="address-label1">
-                     <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="GtkEntry" id="address-entry2">
-                     <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">3</property>
-                     <property name="text" translatable="yes"></property>
-                     <property name="has_frame">True</property>
-                     <property name="invisible_char">*</property>
-                     <property name="activates_default">True</property>
-                     <property name="width_chars">4</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="address-label2">
-                     <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="GtkEntry" id="address-entry3">
-                     <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">3</property>
-                     <property name="text" translatable="yes"></property>
-                     <property name="has_frame">True</property>
-                     <property name="invisible_char">*</property>
-                     <property name="activates_default">True</property>
-                     <property name="width_chars">4</property>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">True</property>
-             <property name="fill">True</property>
-           </packing>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">True</property>
-         <property name="fill">True</property>
-       </packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
diff --git a/tools/gssdp-device-sniffer.ui b/tools/gssdp-device-sniffer.ui
new file mode 100644 (file)
index 0000000..f16b3bc
--- /dev/null
@@ -0,0 +1,526 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkUIManager" id="uimanager1">
+    <child>
+      <object class="GtkActionGroup" id="actiongroup1">
+        <child>
+          <object class="GtkAction" id="file_menuitem">
+            <property name="name">file_menuitem</property>
+            <property name="label" translatable="yes">_File</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="clear_packet_capture">
+            <property name="stock_id">gtk-clear</property>
+            <property name="name">clear_packet_capture</property>
+            <property name="label" translatable="yes">Clear Packet Capture</property>
+            <signal handler="on_clear_packet_capture_activate" last_modification_time="Tue, 08 May 2007 08:41:08 GMT" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkToggleAction" id="show_packet_details">
+            <property name="active">True</property>
+            <property name="name">show_packet_details</property>
+            <property name="label" translatable="yes">Show Packet Details</property>
+            <signal handler="on_details_activate" last_modification_time="Mon, 23 Apr 2007 21:27:46 GMT" name="activate" object="packet-details-scrolledwindow"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkToggleAction" id="show_device_tracking">
+            <property name="active">True</property>
+            <property name="name">show_device_tracking</property>
+            <property name="label" translatable="yes">Show Device Tracking</property>
+            <signal handler="on_details_activate" last_modification_time="Mon, 23 Apr 2007 21:30:07 GMT" name="activate" object="packet-details-scrolledwindow"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="quit">
+            <property name="stock_id">gtk-quit</property>
+            <property name="name">quit</property>
+            <signal handler="gtk_main_quit" last_modification_time="Sat, 21 Apr 2007 14:46:54 GMT" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="filter_menuitem">
+            <property name="name">filter_menuitem</property>
+            <property name="label" translatable="yes">Filter</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkToggleAction" id="enable_packet_capture">
+            <property name="active">True</property>
+            <property name="name">enable_packet_capture</property>
+            <property name="label" translatable="yes">Enable Packet Capture</property>
+            <signal handler="on_enable_packet_capture_activate" last_modification_time="Fri, 20 Apr 2007 14:59:37 GMT" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="address_filter">
+            <property name="name">address_filter</property>
+            <property name="label" translatable="yes">Address Filter</property>
+            <signal handler="gtk_widget_show" last_modification_time="Fri, 11 May 2007 10:58:14 GMT" name="activate" object="address-filter-dialog"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="help_menuitem">
+            <property name="name">help_menuitem</property>
+            <property name="label" translatable="yes">_Help</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="about">
+            <property name="stock_id">gtk-about</property>
+            <property name="name">about</property>
+            <signal handler="gtk_widget_show" last_modification_time="Sat, 21 Apr 2007 15:23:48 GMT" name="activate" object="about-dialog"/>
+          </object>
+        </child>
+      </object>
+    </child>
+    <ui>
+      <menubar name="menubar">
+        <menu action="file_menuitem">
+          <menuitem action="clear_packet_capture"/>
+          <separator/>
+          <menuitem action="show_packet_details"/>
+          <menuitem action="show_device_tracking"/>
+          <separator/>
+          <menuitem action="quit"/>
+        </menu>
+        <menu action="filter_menuitem">
+          <menuitem action="enable_packet_capture"/>
+          <menuitem action="address_filter"/>
+        </menu>
+        <menu action="help_menuitem">
+          <menuitem action="about"/>
+        </menu>
+      </menubar>
+    </ui>
+  </object>
+  <object class="GtkWindow" id="main-window">
+    <property name="title" translatable="yes">GSSDP Device Sniffer</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_NONE</property>
+    <property name="modal">False</property>
+    <property name="resizable">True</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <signal handler="on_delete_event" last_modification_time="Fri, 11 May 2007 10:36:15 GMT" name="delete_event"/>
+    <child>
+      <object class="GtkVBox" id="vbox2">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">0</property>
+        <child>
+          <object class="GtkMenuBar" constructor="uimanager1" id="menubar">
+            <property name="visible">True</property>
+            <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
+            <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox">
+            <property name="border_width">6</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkScrolledWindow" id="packet-scrolledwindow">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+                <child>
+                  <object class="GtkTreeView" id="packet-treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">True</property>
+                    <property name="rules_hint">False</property>
+                    <property name="reorderable">False</property>
+                    <property name="enable_search">True</property>
+                    <property name="fixed_height_mode">False</property>
+                    <property name="hover_selection">False</property>
+                    <property name="hover_expand">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="packet-details-scrolledwindow">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+                <child>
+                  <object class="GtkTextView" id="packet-details-textview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="overwrite">False</property>
+                    <property name="accepts_tab">True</property>
+                    <property name="justification">GTK_JUSTIFY_LEFT</property>
+                    <property name="wrap_mode">GTK_WRAP_NONE</property>
+                    <property name="cursor_visible">True</property>
+                    <property name="pixels_above_lines">0</property>
+                    <property name="pixels_below_lines">0</property>
+                    <property name="pixels_inside_wrap">0</property>
+                    <property name="left_margin">0</property>
+                    <property name="right_margin">0</property>
+                    <property name="indent">0</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="device-details-scrolledwindow">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+                <child>
+                  <object class="GtkTreeView" id="device-details-treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="headers_visible">True</property>
+                    <property name="rules_hint">False</property>
+                    <property name="reorderable">False</property>
+                    <property name="enable_search">True</property>
+                    <property name="fixed_height_mode">False</property>
+                    <property name="hover_selection">False</property>
+                    <property name="hover_expand">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAboutDialog" id="about-dialog">
+    <property name="destroy_with_parent">False</property>
+    <property name="name" translatable="yes">GSSDP Device Sniffer</property>
+    <property name="copyright" translatable="yes">Copyright (C) 2007 Zeeshan Ali (Khattak)</property>
+    <property name="comments" translatable="yes">A Device Sniffer tool based on GSSDP framework.
+Inspired by Intel Tools for UPnP.</property>
+    <property name="license" translatable="yes">LGPL</property>
+    <property name="wrap_license">False</property>
+    <property name="authors">Zeeshan Ali (Khattak) &lt;zeeshanak@gnome.org&gt;</property>
+    <property comments="TRANSLATORS: Replace this string with your names, one name per line." name="translator_credits" translatable="yes">translator-credits</property>
+    <signal handler="gtk_widget_hide" last_modification_time="Sat, 19 May 2007 20:52:15 GMT" name="response" object="about-dialog"/>
+    <signal handler="gtk_widget_hide" last_modification_time="Tue, 15 May 2007 21:17:51 GMT" name="delete_event" object="about-dialog"/>
+  </object>
+  <object class="GtkDialog" id="address-filter-dialog">
+    <property name="border_width">7</property>
+    <property name="title" translatable="yes">Address Filter</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_NONE</property>
+    <property name="modal">False</property>
+    <property name="resizable">False</property>
+    <property name="destroy_with_parent">False</property>
+    <property name="decorated">True</property>
+    <property name="skip_taskbar_hint">False</property>
+    <property name="skip_pager_hint">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <signal handler="on_address_filter_dialog_response" last_modification_time="Fri, 11 May 2007 11:00:37 GMT" name="response"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">8</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <property name="visible">True</property>
+                <property name="can_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>
+              </object>
+            </child>
+          </object>
+          <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>
+          <object class="GtkVBox" id="vbox1">
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">4</property>
+            <child>
+              <object class="GtkRadioButton" id="dont-use-filter-radiobutton">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="label" translatable="yes">No filter, capture all traffic</property>
+                <property name="use_underline">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <property name="active">True</property>
+                <property name="inconsistent">False</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRadioButton" id="use-filter-radiobutton">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="label" translatable="yes">Use IP address filter</property>
+                <property name="use_underline">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <property name="active">False</property>
+                <property name="inconsistent">False</property>
+                <property name="draw_indicator">True</property>
+                <property name="group">dont-use-filter-radiobutton</property>
+                <signal handler="on_use_filter_radiobutton_toggled" last_modification_time="Fri, 11 May 2007 10:55:01 GMT" name="toggled"/>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="xalign">0.5</property>
+                <property name="yalign">0.5</property>
+                <property name="xscale">1</property>
+                <property name="yscale">1</property>
+                <property name="top_padding">0</property>
+                <property name="bottom_padding">0</property>
+                <property name="left_padding">50</property>
+                <property name="right_padding">0</property>
+                <child>
+                  <object class="GtkHBox" id="address-filter-hbox">
+                    <property name="visible">True</property>
+                    <property name="sensitive">False</property>
+                    <property name="homogeneous">False</property>
+                    <property name="spacing">0</property>
+                    <child>
+                      <object class="GtkEntry" id="address-entry0">
+                        <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">3</property>
+                        <property name="text" translatable="yes"/>
+                        <property name="has_frame">True</property>
+                        <property name="invisible_char">*</property>
+                        <property name="activates_default">True</property>
+                        <property name="width_chars">4</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="address-label0">
+                        <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>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="address-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">3</property>
+                        <property name="text" translatable="yes"/>
+                        <property name="has_frame">True</property>
+                        <property name="invisible_char">*</property>
+                        <property name="activates_default">True</property>
+                        <property name="width_chars">4</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="address-label1">
+                        <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>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="address-entry2">
+                        <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">3</property>
+                        <property name="text" translatable="yes"/>
+                        <property name="has_frame">True</property>
+                        <property name="invisible_char">*</property>
+                        <property name="activates_default">True</property>
+                        <property name="width_chars">4</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="address-label2">
+                        <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>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="address-entry3">
+                        <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">3</property>
+                        <property name="text" translatable="yes"/>
+                        <property name="has_frame">True</property>
+                        <property name="invisible_char">*</property>
+                        <property name="activates_default">True</property>
+                        <property name="width_chars">4</property>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-5">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>