gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r29925 - in gnunet-gtk: . contrib src src/namestore src/set


From: gnunet
Subject: [GNUnet-SVN] r29925 - in gnunet-gtk: . contrib src src/namestore src/setup
Date: Mon, 7 Oct 2013 16:35:42 +0200

Author: grothoff
Date: 2013-10-07 16:35:42 +0200 (Mon, 07 Oct 2013)
New Revision: 29925

Added:
   gnunet-gtk/contrib/gnunet_namestore_edit_a.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_aaaa.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_cname.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_leho.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_mx.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_ns.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_pkey.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_ptr.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_soa.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_srv.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_txt.glade
   gnunet-gtk/contrib/gnunet_namestore_edit_vpn.glade
   gnunet-gtk/contrib/gnunet_namestore_gtk_about_window.glade.in
   gnunet-gtk/contrib/gnunet_namestore_gtk_main_window.glade
   gnunet-gtk/contrib/gnunet_namestore_gtk_qr_save_as_dialog.glade
   gnunet-gtk/contrib/gnunet_setup_main_window.glade
   gnunet-gtk/src/namestore/
   gnunet-gtk/src/namestore/Makefile.am
   gnunet-gtk/src/namestore/gnunet-namestore-gtk.c
   gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.c
   gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.h
Removed:
   gnunet-gtk/contrib/gnunet_setup_gns_edit_a.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade
   gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade
   gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade
   gnunet-gtk/contrib/gnunet_setup_qr_save_as_dialog.glade
   gnunet-gtk/src/setup/gnunet-setup-gns-edit.c
   gnunet-gtk/src/setup/gnunet-setup-gns-edit.h
   gnunet-gtk/src/setup/gnunet-setup-gns.c
   gnunet-gtk/src/setup/gnunet-setup-gns.h
Modified:
   gnunet-gtk/configure.ac
   gnunet-gtk/contrib/
   gnunet-gtk/contrib/Makefile.am
   gnunet-gtk/contrib/gnunet_identity_gtk_about_window.glade
   gnunet-gtk/src/Makefile.am
   gnunet-gtk/src/setup/Makefile.am
   gnunet-gtk/src/setup/gnunet-setup-options.c
   gnunet-gtk/src/setup/gnunet-setup.c
Log:
splitting of gnunet-namestore-gtk from gnunet-setup, see #3054

Modified: gnunet-gtk/configure.ac
===================================================================
--- gnunet-gtk/configure.ac     2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/configure.ac     2013-10-07 14:35:42 UTC (rev 29925)
@@ -1,5 +1,5 @@
 # This file is part of GNUnet.
-# (C) 2001--2012 Christian Grothoff (and other contributing authors)
+# (C) 2001--2013 Christian Grothoff (and other contributing authors)
 #
 # GNUnet is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published
@@ -173,7 +173,7 @@
    ],
    [AC_MSG_RESULT([--with-extractor not specified])
     AC_CHECK_HEADERS(extractor.h,extractor=1)])
-if test "$extractor" != 1 
+if test "$extractor" != 1
 then
  AC_MSG_ERROR([gnunet-gtk requires libextractor headers])
 fi
@@ -181,7 +181,7 @@
 
 # test for libqrencode
 qrencode=0
-QR_LIBS="-lqrencode"   
+QR_LIBS="-lqrencode"
 AC_MSG_CHECKING(for libqrencode)
 AC_ARG_WITH(qrencode,
    [  --with-qrencode=PFX    Base of libqrencode installation],
@@ -203,7 +203,7 @@
    [AC_MSG_RESULT([--with-qrencode not specified])
     AC_CHECK_HEADERS(qrencode.h,qrencode=1)])
 
-if test "$qrencode" != 1 
+if test "$qrencode" != 1
 then
 QR_LIBS=""
 QR_CFLAGS=""
@@ -244,7 +244,7 @@
   have_libunique=no
   if test x$with_libunique != xno; then
     PKG_CHECK_MODULES([unique], [unique-3.0], AC_DEFINE(HAVE_LIBUNIQUE, 1, 
[Define if libunique is available]), AC_MSG_WARN([libunique would be nice to 
have]))
-  fi  
+  fi
 fi
 
 if test "x$without_gtk" == "xfalse" -a "x$check_for_2" != "xfalse"
@@ -514,6 +514,7 @@
 src/fs/gnunet-fs-gtk.conf
 src/identity/Makefile
 src/peerinfo/Makefile
+src/namestore/Makefile
 src/setup/Makefile
 src/statistics/Makefile
 pixmaps/Makefile
@@ -524,11 +525,12 @@
 contrib/gnunet_fs_gtk_about_window.glade
 contrib/gnunet_identity_gtk_about_window.glade
 contrib/gnunet_peerinfo_gtk_about_window.glade
+contrib/gnunet_namestore_gtk_about_window.glade
 contrib/gnunet_statistics_gtk_about_window.glade
 contrib/gnunet_setup_about_window.glade
 ])
 
-if test "$qrencode" != 1 
+if test "$qrencode" != 1
 then
  AC_MSG_WARN([gnunet-setup will not include QR support])
 fi

Index: gnunet-gtk/contrib
===================================================================
--- gnunet-gtk/contrib  2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/contrib  2013-10-07 14:35:42 UTC (rev 29925)

Property changes on: gnunet-gtk/contrib
___________________________________________________________________
Modified: svn:ignore
## -1,3 +1,4 ##
+gnunet_namestore_gtk_about_window.glade
 gnunet_statistics_gtk_about_window.glade
 gnunet_setup_about_window.glade
 gnunet_peerinfo_gtk_about_window.glade
Modified: gnunet-gtk/contrib/Makefile.am
===================================================================
--- gnunet-gtk/contrib/Makefile.am      2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/contrib/Makefile.am      2013-10-07 14:35:42 UTC (rev 29925)
@@ -6,7 +6,7 @@
 
 IMAGES = \
  gnunet-setup-oxygen-cancel.png \
- gnunet-setup-oxygen-ok.png 
+ gnunet-setup-oxygen-ok.png
 
 EXTRA_DIST = \
   gnunet-fs-gtk.protocol \
@@ -51,20 +51,21 @@
   gnunet_statistics_gtk_about_window.glade \
   gnunet_statistics_gtk_main_window.glade \
   gnunet_setup_calendar_dialog.glade \
-  gnunet_setup_qr_save_as_dialog.glade \
-  gnunet_setup_gtk_main_window.glade \
-  gnunet_setup_gns_edit_a.glade \
-  gnunet_setup_gns_edit_ns.glade \
-  gnunet_setup_gns_edit_cname.glade \
-  gnunet_setup_gns_edit_soa.glade \
-  gnunet_setup_gns_edit_ptr.glade \
-  gnunet_setup_gns_edit_mx.glade \
-  gnunet_setup_gns_edit_txt.glade \
-  gnunet_setup_gns_edit_aaaa.glade \
-  gnunet_setup_gns_edit_pkey.glade \
-  gnunet_setup_gns_edit_leho.glade \
-  gnunet_setup_gns_edit_srv.glade \
-  gnunet_setup_gns_edit_vpn.glade 
+  gnunet_setup_main_window.glade \
+  gnunet_namestore_gtk_main_window.glade \
+  gnunet_namestore_gtk_qr_save_as_dialog.glade \
+  gnunet_namestore_edit_a.glade \
+  gnunet_namestore_edit_ns.glade \
+  gnunet_namestore_edit_cname.glade \
+  gnunet_namestore_edit_soa.glade \
+  gnunet_namestore_edit_ptr.glade \
+  gnunet_namestore_edit_mx.glade \
+  gnunet_namestore_edit_txt.glade \
+  gnunet_namestore_edit_aaaa.glade \
+  gnunet_namestore_edit_pkey.glade \
+  gnunet_namestore_edit_leho.glade \
+  gnunet_namestore_edit_srv.glade \
+  gnunet_namestore_edit_vpn.glade
 
 
 install-data-local:

Modified: gnunet-gtk/contrib/gnunet_identity_gtk_about_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_identity_gtk_about_window.glade   2013-10-07 
14:19:52 UTC (rev 29924)
+++ gnunet-gtk/contrib/gnunet_identity_gtk_about_window.glade   2013-10-07 
14:35:42 UTC (rev 29925)
@@ -91,7 +91,7 @@
           <object class="GtkLabel" id="about_name_version_label">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="label">GNUnet-Peerinfo-GTK 0.9.5</property>
+            <property name="label">GNUnet-Peerinfo-GTK 0.9.3</property>
             <attributes>
               <attribute name="weight" value="bold"/>
               <attribute name="size" value="200"/>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_a.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_a.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_a.glade                            
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_a.glade    2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,596 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_a_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_a_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_a_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_a_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_a_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the IPv4 address for the A record here. The format is the usual dotted-decimal 
format (i.e. 127.0.0.1).</property>
+                        <property name="max_length">15</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_a_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Destination 
IPv4 Address&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1" translatable="no">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1" translatable="no">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1" translatable="no">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_aaaa.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_aaaa.glade                         
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_aaaa.glade 2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkDialog" id="edit_aaaa_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_aaaa_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_aaaa_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_aaaa_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_aaaa_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_aaaa_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the IPv6 address for the A record here. The format is the usual format (i.e. 
::1).</property>
+                        <property name="max_length">45</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_aaaa_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_aaaa_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Destination 
IPv6 Address&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_cname.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_cname.glade                        
        (rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_cname.glade        2013-10-07 
14:35:42 UTC (rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkDialog" id="edit_cname_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_cname_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_cname_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_cname_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_cname_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_cname_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the name for which this name is an alias.</property>
+                        <property name="max_length">253</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_cname_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_cname_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Canonical 
Name (CNAME)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_leho.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_leho.glade                         
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_leho.glade 2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_leho_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_leho_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_leho_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_leho_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_leho_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_leho_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the DNS name under which this system is reachable using traditional 
DNS.</property>
+                        <property name="max_length">15</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_leho_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_leho_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Legacy 
Hostname in DNS (LEHO)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_mx.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_mx.glade                           
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_mx.glade   2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,631 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkAdjustment" id="mx_distance_adjustment">
+    <property name="upper">65535</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_mx_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_mx_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_mx_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_mx_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_mx_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_mx_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the hostname of the mail server here</property>
+                        <property name="max_length">253</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_mx_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_nx_distance_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">distance</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_mx_distance_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the preference number (or distance, as smaller values are preferred) of the 
given mailserver here</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">mx_distance_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_mx_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Mail 
eXchanger record (MX)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_ns.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_ns.glade                           
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_ns.glade   2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_ns_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_ns_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_ns_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_ns_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_ns_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_ns_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the name of the DNS nameserver for the subzone.</property>
+                        <property name="max_length">253</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_ns_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_ns_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Name of the 
authoritative name server for the given name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_pkey.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_pkey.glade                         
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_pkey.glade 2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_pkey_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_pkey_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_pkey_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_pkey_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_pkey_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_pkey_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the public key of the authority here.</property>
+                        <property name="max_length">105</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_pkey_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_pkey_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;GNS 
authority for the subzone (PKEY)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_ptr.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_ptr.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_ptr.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_ptr_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_ptr_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_ptr_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_ptr_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_ptr_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_ptr_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the IPv4 address for the A record here. The format is the usual dotted-decimal 
format (i.e. 127.0.0.1).</property>
+                        <property name="max_length">253</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_ptr_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_ptr_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Canonical 
name (PTR)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_soa.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_soa.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_soa.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,832 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkAdjustment" id="soa_expire_time_adjustment">
+    <property name="upper">4150788095</property>
+    <property name="value">86400</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="soa_minimum_ttl_adjustment">
+    <property name="upper">9999999</property>
+    <property name="value">3600</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="soa_refresh_time_adjustment">
+    <property name="upper">99999999</property>
+    <property name="value">3600</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="soa_retry_time_adjustment">
+    <property name="upper">999999999</property>
+    <property name="value">600</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="soa_serial_adjustment">
+    <property name="upper">99999999</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_soa_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_soa_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_soa_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_soa_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkTable" id="edit_dialog_soa_table">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="n_rows">7</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_source_host_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Source 
host:</property>
+                      </object>
+                      <packing>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_email_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Contact 
e-mail:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_serial_number_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Serial 
number:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_refresh_time_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Refresh 
time:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_retry_time_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Retry 
time:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_expire_time_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Expire 
time:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_soa_minimum_ttl_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Minimum 
TTL:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">6</property>
+                        <property name="bottom_attach">7</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_soa_serial_number_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">This 
number should be incremented for every zone update.</property>
+                        <property name="max_length">6</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">soa_serial_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_soa_refresh_time_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">soa_refresh_time_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_soa_retry_time_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">soa_retry_time_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_soa_expire_time_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">soa_expire_time_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">5</property>
+                        <property name="bottom_attach">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_soa_minimum_ttl_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">soa_minimum_ttl_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">6</property>
+                        <property name="bottom_attach">7</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" 
id="edit_dialog_soa_source_host_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the host responsible for the zone.</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_soa_source_host_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" 
id="edit_dialog_soa_contact_email_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Note 
that a "." is used instead of "@" in the e-mail address!</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_soa_contact_email_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_soa_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Start of 
Authority (SOA) information&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_srv.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_srv.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_srv.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,719 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkAdjustment" id="srv_port_adjustment">
+    <property name="upper">65535</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="srv_priority_adjustment">
+    <property name="upper">9999999</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="srv_weight_adjustment">
+    <property name="upper">65535</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_srv_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_srv_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_srv_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_srv_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkTable" id="edit_dialog_srv_table">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="n_rows">4</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_srv_priority_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Priority:</property>
+                      </object>
+                      <packing>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_srv_weight_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Weight:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="edit_dialog_srv_port_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Port:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_srv_target_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Target:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_srv_priority_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Priority of the target, lower values means more 
preferred</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">srv_priority_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_srv_weight_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative weight for records with the same priority</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">srv_weight_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" 
id="edit_dialog_srv_port_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">TCP 
or UDP port on which the service is to be found</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <property 
name="adjustment">srv_port_adjustment</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" 
id="edit_dialog_srv_target_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Canonical hostname of the machine providing the 
service</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_srv_target_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_srv_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Service 
record (SRV)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_txt.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_txt.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_txt.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_txt_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_txt_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_txt_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_txt_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_txt_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_txt_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="has_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the IPv4 address for the A record here. The format is the usual dotted-decimal 
format (i.e. 127.0.0.1).</property>
+                        <property name="max_length">0</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_txt_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_txt_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Text value 
(TXT)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_edit_vpn.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_edit_vpn.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_edit_vpn.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,697 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
+    <property name="upper">23</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">12</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
+    <property name="upper">59</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
+    <columns>
+      <!-- column-name relativetime -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">7 days</col>
+      </row>
+      <row>
+        <col id="0">1 day</col>
+      </row>
+      <row>
+        <col id="0">1 h</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="zone_liststore">
+    <columns>
+      <!-- column-name zonename -->
+      <column type="gchararray"/>
+      <!-- column-name optionname -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Master Zone</col>
+        <col id="1">ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Private Zone</col>
+        <col id="1">PRIVATE_ZONEKEY</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Shorten Zone</col>
+        <col id="1">SHORTEN_ZONEKEY</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkDialog" id="edit_vpn_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <signal name="response" handler="GNS_edit_vpn_dialog_response_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="edit_dialog_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="edit_dialog_action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="edit_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_delete_button">
+                <property name="label">gtk-delete</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="edit_dialog_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_name_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_name_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkHBox" id="edit_dialog_name_hbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_name_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
+                        <property name="max_length">63</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">in</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">10</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
+                        <property name="model">zone_liststore</property>
+                        <property name="active">0</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_name_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_vpn_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_vpn_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">4</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkTable" id="edit_dialog_vpn_table">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="n_rows">3</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_vpn_protocol_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Protocol:</property>
+                      </object>
+                      <packing>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="edit_dialog_vpn_peer_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Peer:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" 
id="edit_dialog_vpn_servicename_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">Identifier:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options"></property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_vpn_protocol_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_vpn_protocol_tcp_radiobutton">
+                            <property name="label" 
translatable="yes">TCP</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Service is available via TCP</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_vpn_protocol_udp_radiobutton">
+                            <property name="label" 
translatable="yes">UDP</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Service is available via UDP</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_vpn_protocol_tcp_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="edit_dialog_vpn_peer_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter 
the identity (gnunet-peerinfo -s) of the peer offering the service 
here.</property>
+                        <property name="max_length">127</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                        <signal name="changed" 
handler="GNS_edit_dialog_vpn_peer_entry_changed_cb" swapped="no"/>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" 
id="edit_dialog_vpn_identifier_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Each 
GNUnet service is identified by an identiifer (name, password) that can be 
freely chosen by the service provider.  This string should be entered 
here.</property>
+                        <property name="invisible_char">●</property>
+                        <property 
name="primary_icon_activatable">False</property>
+                        <property 
name="secondary_icon_activatable">False</property>
+                        <property name="primary_icon_sensitive">True</property>
+                        <property 
name="secondary_icon_sensitive">True</property>
+                      </object>
+                      <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>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_vpn_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;GNUnet VPN 
address (GNS only)&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="padding">5</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_options_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="edit_dialog_options_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_options_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
+                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
+                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_options_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="edit_dialog_expiration_frame">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="top_padding">5</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
+                            <property name="label" 
translatable="yes">Relative</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
+                            <property name="label" 
translatable="yes">Absolute</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
+                            <property name="label" 
translatable="yes">Never</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
+                        <property name="year">2012</property>
+                        <property name="month">9</property>
+                        <property name="day">17</property>
+                        <property name="show_week_numbers">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Hours:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Minutes:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Seconds:</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
+                            <property name="max_length">2</property>
+                            <property name="invisible_char">●</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
+                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
+                        <property name="entry_text_column">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="edit_dialog_expiration_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
+      <action-widget response="-2">edit_dialog_delete_button</action-widget>
+      <action-widget response="-5">edit_dialog_save_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Added: gnunet-gtk/contrib/gnunet_namestore_gtk_about_window.glade.in
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_gtk_about_window.glade.in               
                (rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_gtk_about_window.glade.in       
2013-10-07 14:35:42 UTC (rev 29925)
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.20"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkTextBuffer" id="credits_art_contents">
+    <property name="text">Jakub 'jimmac' Steiner &lt;address@hidden&gt;
+Christian Muellner &lt;address@hidden&gt;
+Alex Jones &lt;address@hidden&gt;
+Nicklas Larsson &lt;address@hidden&gt;</property>
+  </object>
+  <object class="GtkTextBuffer" id="credits_authors_contents">
+    <property name="text">Juergen Appel &lt;address@hidden&gt;
+Krista Grothoff &lt;address@hidden&gt;
+James Blackwell &lt;address@hidden&gt;
+Ludovic Courtes &lt;address@hidden&gt;
+Nils Durner &lt;address@hidden&gt;
+Renaldo Ferreira &lt;address@hidden&gt;
+Christian Grothoff &lt;address@hidden&gt;
+Eric Haumant
+Tzvetan Horozov &lt;address@hidden&gt;
+Gerd Knorr &lt;address@hidden&gt;
+Werner Koch &lt;address@hidden&gt;
+Uli Luckas &lt;address@hidden&gt;
+Blake Matheny
+Glenn McGrath
+Hendrik Pagenhardt &lt;address@hidden&gt;
+Ioana Patrascu &lt;address@hidden&gt;
+Marko Raeihae
+Paul Ruth &lt;address@hidden&gt;
+Risto Saarelma
+Antti Salonen
+Tiberius Stef &lt;address@hidden&gt;
+Tuomas Toivonen
+Tomi Tukiainen
+Kevin Vandersloot &lt;address@hidden&gt;
+Simo Viitanen
+Larry Waldo
+Igor Wronsky &lt;address@hidden&gt;
+&lt;address@hidden&gt;</property>
+  </object>
+  <object class="GtkTextBuffer" id="credits_docs_contents">
+    <property name="text">Christian Grothoff &lt;address@hidden&gt;
+Anders Carlsson &lt;address@hidden&gt;
+Nils Durner &lt;address@hidden&gt;
+Nicklas Larsson &lt;address@hidden&gt;
+Milan Bouchet-Valat &lt;address@hidden&gt;
+Igor Wronsky &lt;address@hidden&gt;</property>
+  </object>
+  <object class="GtkTextBuffer" id="credits_trans_contents">
+    <property name="text">Di Ma
+Jens Palsberg &lt;address@hidden&gt;
+Christian Grothoff &lt;address@hidden&gt;
+Nils Durner &lt;address@hidden&gt;
+Mathieu &lt;address@hidden&gt;
+Eric Haumant
address@hidden
+Hiroshi Yamauchi &lt;address@hidden&gt;
+Adam Welc &lt;address@hidden&gt;
+Bogdan Carbunar &lt;address@hidden&gt;
+Steven Michael Murphy &lt;address@hidden&gt;
+Phan Vinh Thinh &lt;address@hidden&gt;
+Daniel Nylander &lt;address@hidden&gt;</property>
+  </object>
+  <object class="GtkTextBuffer" id="license_contents">
+    <property name="text" translatable="yes">License should be loaded here at 
runtime from the license file (no need to copy the whole GPL in 
here...).</property>
+  </object>
+  <object class="GtkWindow" id="about_window">
+    <property name="can_focus">False</property>
+    <property name="modal">True</property>
+    <property name="destroy_with_parent">True</property>
+    <signal name="realize" handler="GNUNET_GTK_about_window_realized" 
swapped="no"/>
+    <signal name="delete-event" 
handler="GNUNET_GTK_about_window_got_delete_event" swapped="no"/>
+    <child>
+      <object class="GtkVBox" id="about_main_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">10</property>
+        <child>
+          <object class="GtkImage" id="about_logo_image">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="pixbuf">gnunet_logo.png</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="about_name_version_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">@GNUNET_SETUP_GTK_NAME@ 
@GNUNET_SETUP_GTK_VERSION3@</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+              <attribute name="size" value="200"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="about_copyright_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">(C) 
@address@hidden@GNUNET_SETUP_GTK_YEARTO@ The GNUnet Project</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="about_link_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">&lt;a href="https://gnunet.org/"&gt;GNUnet: 
GNU's Framework for Secure P2P Networking&lt;/a&gt;</property>
+            <property name="use_markup">True</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="about_credits_notebook">
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkScrolledWindow" 
id="about_credits_authors_scroller">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTextView" 
id="about_credits_authors_textview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">word</property>
+                    <property name="cursor_visible">False</property>
+                    <property name="buffer">credits_authors_contents</property>
+                    <property name="accepts_tab">False</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="about_credits_authors_tab">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Developed 
by</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" 
id="about_credits_docs_scroller">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTextView" id="about_credits_docs_textview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">word</property>
+                    <property name="cursor_visible">False</property>
+                    <property name="buffer">credits_docs_contents</property>
+                    <property name="accepts_tab">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="about_credits_docs_tab">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Documented 
by</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" 
id="about_credits_trans_scroller">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTextView" 
id="about_credits_trans_textview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">word</property>
+                    <property name="cursor_visible">False</property>
+                    <property name="buffer">credits_trans_contents</property>
+                    <property name="accepts_tab">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="about_credits_trans_tab">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Translated 
by</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" 
id="about_credits_art_scroller">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTextView" id="about_credits_art_textview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">word</property>
+                    <property name="cursor_visible">False</property>
+                    <property name="buffer">credits_art_contents</property>
+                    <property name="accepts_tab">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="about_credits_art_tab">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Artwork by</property>
+              </object>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="about_license_scroller">
+            <property name="can_focus">True</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="shadow_type">out</property>
+            <child>
+              <object class="GtkTextView" id="about_license_textview">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="editable">False</property>
+                <property name="wrap_mode">word</property>
+                <property name="cursor_visible">False</property>
+                <property name="buffer">license_contents</property>
+                <property name="accepts_tab">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="about_buttons_hbox">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="border_width">5</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkButton" id="about_credits_button">
+                <property name="label" translatable="yes">Credits</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="GNUNET_GTK_about_credits_button_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="about_license_button">
+                <property name="label" translatable="yes">License</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" 
handler="GNUNET_GTK_about_license_button_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="about_close_button">
+                <property name="label">gtk-close</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" 
handler="GNUNET_GTK_about_close_button_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_gtk_main_window.glade (from rev 
29914, gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_gtk_main_window.glade                   
        (rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_gtk_main_window.glade   2013-10-07 
14:35:42 UTC (rev 29925)
@@ -0,0 +1,550 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.20"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="gnunet_namestore_gtk_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">gnunet-setup</property>
+    <property name="window_position">center</property>
+    <property name="icon_name">preferences-system</property>
+    <property name="type_hint">normal</property>
+    <signal name="destroy" handler="GNUNET_NAMESTORE_GTK_quit_cb" 
swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="gnunet_namestore_gtk_dialog-vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkVBox" id="gnunet_namestore_gtk_gns_vbox">
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkHBox" id="gnunet_namestore_gtk_gns_top_hbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkVBox" 
id="gnunet_namestore_gtk_gns_zone_vbox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkHBox" 
id="gnunet_namestore_gtk_gns_zone_label_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="gnunet_namestore_gtk_gns_zone_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">&lt;b&gt;SET TO PUBLIC KEY OF THE ZONE&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" 
id="gnunet_namestore_gtk_gns_public_key_copy_button">
+                            <property name="label">gtk-copy</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="use_stock">True</property>
+                            <signal name="clicked" 
handler="gnunet_namestore_gtk_gns_public_key_copy_button_clicked_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">2</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" 
id="gnunet_namestore_gtk_gns_pseu_hbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <object class="GtkLabel" 
id="gnunet_namestore_gtk_gns_pseu_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" 
translatable="yes">Preferred zone name (PSEU):</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" 
id="gnunet_namestore_gtk_gns_pseu_entry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="max_length">63</property>
+                            <property name="invisible_char">●</property>
+                            <property name="width_chars">32</property>
+                            <property name="invisible_char_set">True</property>
+                            <property 
name="primary_icon_activatable">False</property>
+                            <property 
name="secondary_icon_activatable">False</property>
+                            <property 
name="primary_icon_sensitive">True</property>
+                            <property 
name="secondary_icon_sensitive">True</property>
+                            <signal name="changed" 
handler="gnunet_namestore_gtk_gns_pseu_entry_changed_cb" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">5</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHButtonBox" 
id="gnunet_namestore_gtk_gns_zone_selection_hbuttonbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="layout_style">center</property>
+                        <child>
+                          <object class="GtkRadioButton" 
id="gnunet_namestore_gtk_gns_master_zone_selection_radiobutton">
+                            <property name="label" translatable="yes">_Master 
Zone</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <signal name="toggled" 
handler="gnunet_namestore_gtk_gns_master_zone_selection_radiobutton_toggled_cb" 
swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">10</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="gnunet_namestore_gtk_gns_private_zone_selection_radiobutton">
+                            <property name="label" translatable="yes">_Private 
Zone</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">gnunet_namestore_gtk_gns_master_zone_selection_radiobutton</property>
+                            <signal name="toggled" 
handler="gnunet_namestore_gtk_gns_private_zone_selection_radiobutton_toggled_cb"
 swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">10</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" 
id="gnunet_namestore_gtk_gns_shorten_zone_selection_radiobutton">
+                            <property name="label" translatable="yes">_Shorten 
Zone</property>
+                            <property 
name="use_action_appearance">False</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property 
name="group">gnunet_namestore_gtk_gns_master_zone_selection_radiobutton</property>
+                            <signal name="toggled" 
handler="gnunet_namestore_gtk_gns_shorten_zone_selection_radiobutton_toggled_cb"
 swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="padding">10</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">5</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVSeparator" 
id="gnunet_namestore_gtk_gns_qr_vseparator">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkImage" 
id="gnunet_namestore_gtk_gns_qr_image">
+                    <property name="width_request">64</property>
+                    <property name="height_request">64</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="tooltip_text" translatable="yes">QR code 
for the selected zone</property>
+                    <property name="stock">gtk-missing-image</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" 
id="gnunet_namestore_gtk_gns_qr_saveas_button">
+                    <property name="label">gtk-save-as</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_stock">True</property>
+                    <signal name="clicked" 
handler="gnunet_namestore_gtk_gns_qr_saveas_button_clicked_cb" swapped="no"/>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" 
id="gnunet_namestore_gtk_gns_status_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">&lt;b&gt;&lt;big&gt;Loading...&lt;/big&gt;&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" 
id="gnunet_namestore_gtk_gns_main_scrolledwindow">
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkTreeView" 
id="gnunet_namestore_gtk_gns_main_treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property 
name="model">gnunet_namestore_gtk_gns_treestore</property>
+                    <property name="search_column">0</property>
+                    <signal name="button-press-event" 
handler="gnunet_namestore_gtk_gns_main_treeview_button_press_event_cb" 
swapped="no"/>
+                    <signal name="key-press-event" 
handler="gnunet_namestore_gtk_gns_main_treeview_key_press_event_cb" 
swapped="no"/>
+                    <signal name="popup-menu" 
handler="gnunet_namestore_gtk_gns_main_treeview_popup_menu_cb" swapped="no"/>
+                    <child>
+                      <object class="GtkTreeViewColumn" 
id="gnunet_namestore_gtk_gns_name_treeviewcolumn">
+                        <property name="title">Name</property>
+                        <property name="clickable">True</property>
+                        <property name="reorderable">True</property>
+                        <property name="sort_indicator">True</property>
+                        <property name="sort_column_id">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="gnunet_namestore_gtk_gns_name_cellrenderertext">
+                            <signal name="edited" 
handler="gnunet_namestore_gtk_gns_name_cellrenderertext_edited_cb" 
swapped="no"/>
+                          </object>
+                          <attributes>
+                            <attribute name="visible">9</attribute>
+                            <attribute name="background">13</attribute>
+                            <attribute name="editable">16</attribute>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" 
id="gnunet_namestore_gtk_gns_type_treeviewcolumn">
+                        <property name="sizing">autosize</property>
+                        <property name="fixed_width">90</property>
+                        <property name="title">Type</property>
+                        <property name="clickable">True</property>
+                        <property name="reorderable">True</property>
+                        <property name="sort_indicator">True</property>
+                        <property name="sort_column_id">3</property>
+                        <child>
+                          <object class="GtkCellRendererCombo" 
id="gnunet_namestore_gtk_gns_type_cellrenderercombo">
+                            <property 
name="model">gnunet_namestore_gtk_gns_type_liststore</property>
+                            <property name="text_column">1</property>
+                            <signal name="edited" 
handler="gnunet_namestore_gtk_gns_type_cellrenderercombo_edited_cb" 
swapped="no"/>
+                          </object>
+                          <attributes>
+                            <attribute name="visible">10</attribute>
+                            <attribute name="editable">14</attribute>
+                            <attribute name="text">3</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" 
id="gnunet_namestore_gtk_gns_value_treeviewcolumn">
+                        <property name="sizing">autosize</property>
+                        <property name="title">Value</property>
+                        <property name="expand">True</property>
+                        <property name="clickable">True</property>
+                        <property name="sort_column_id">7</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="gnunet_namestore_gtk_gns_value_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="sensitive">11</attribute>
+                            <attribute name="visible">10</attribute>
+                            <attribute name="background">8</attribute>
+                            <attribute name="text">7</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" 
id="gnunet_namestore_gtk_gns_expiration_treeviewcolumn">
+                        <property name="title">Expiration</property>
+                        <property name="clickable">True</property>
+                        <property name="reorderable">True</property>
+                        <property name="sort_indicator">True</property>
+                        <property name="sort_column_id">4</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="gnunet_namestore_gtk_gns_expiration_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="sensitive">11</attribute>
+                            <attribute name="visible">10</attribute>
+                            <attribute name="background">12</attribute>
+                            <attribute name="text">6</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" 
id="gnunet_namestore_gtk_gns_ispublic_treeviewcolumn">
+                        <property name="sizing">fixed</property>
+                        <property name="fixed_width">50</property>
+                        <property name="title">Public</property>
+                        <property name="clickable">True</property>
+                        <child>
+                          <object class="GtkCellRendererToggle" 
id="gnunet_namestore_gtk_gns_ispublic_cellrenderertoggle">
+                            <property name="sensitive">False</property>
+                          </object>
+                          <attributes>
+                            <attribute name="visible">11</attribute>
+                            <attribute name="active">1</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" 
id="gnunet_namestore_gtk_dialog-action_area">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" 
id="gnunet_namestore_gtk_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="gnunet_namestore_gtk_save_as_button">
+                <property name="label">gtk-save-as</property>
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="gnunet_namestore_gtk_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget 
response="-6">gnunet_namestore_gtk_cancel_button</action-widget>
+      <action-widget 
response="-5">gnunet_namestore_gtk_save_as_button</action-widget>
+      <action-widget 
response="-3">gnunet_namestore_gtk_save_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkMenu" id="gnunet_namestore_gtk_gns_edit_popup_menu">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkMenuItem" 
id="gnunet_namestore_gtk_gns_popup_edit_button">
+        <property name="use_action_appearance">False</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="tooltip_text" translatable="yes">Edit GNS 
entry</property>
+        <property name="label" translatable="yes">Edit</property>
+        <signal name="activate" 
handler="gnunet_namestore_gtk_gns_popup_edit_button_activate_cb" swapped="no"/>
+      </object>
+    </child>
+  </object>
+  <object class="GtkTreeStore" id="gnunet_namestore_gtk_gns_treestore">
+    <columns>
+      <!-- column-name name -->
+      <column type="gchararray"/>
+      <!-- column-name is_public -->
+      <column type="gboolean"/>
+      <!-- column-name record_type -->
+      <column type="guint"/>
+      <!-- column-name record_type_as_string -->
+      <column type="gchararray"/>
+      <!-- column-name expiration_time -->
+      <column type="guint64"/>
+      <!-- column-name expiration_time_is_relative -->
+      <column type="gboolean"/>
+      <!-- column-name expiration_time_as_string -->
+      <column type="gchararray"/>
+      <!-- column-name value_as_string -->
+      <column type="gchararray"/>
+      <!-- column-name value_color -->
+      <column type="gchararray"/>
+      <!-- column-name name_is_editable -->
+      <column type="gboolean"/>
+      <!-- column-name name_is_record_row -->
+      <column type="gboolean"/>
+      <!-- column-name not_dummy_row -->
+      <column type="gboolean"/>
+      <!-- column-name expiration_time_color -->
+      <column type="gchararray"/>
+      <!-- column-name name_color -->
+      <column type="gchararray"/>
+      <!-- column-name type_is_editable -->
+      <column type="gboolean"/>
+      <!-- column-name is_shadow -->
+      <column type="gboolean"/>
+      <!-- column-name name_is_editable1 -->
+      <column type="gboolean"/>
+      <!-- column-name record_offset -->
+      <column type="guint"/>
+    </columns>
+  </object>
+  <object class="GtkListStore" id="gnunet_namestore_gtk_gns_type_liststore">
+    <columns>
+      <!-- column-name type -->
+      <column type="guint"/>
+      <!-- column-name typename -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">1</col>
+        <col id="1">A</col>
+      </row>
+      <row>
+        <col id="0">5</col>
+        <col id="1">CNAME</col>
+      </row>
+      <row>
+        <col id="0">6</col>
+        <col id="1">SOA</col>
+      </row>
+      <row>
+        <col id="0">12</col>
+        <col id="1">PTR</col>
+      </row>
+      <row>
+        <col id="0">15</col>
+        <col id="1">MX</col>
+      </row>
+      <row>
+        <col id="0">16</col>
+        <col id="1">TXT</col>
+      </row>
+      <row>
+        <col id="0">28</col>
+        <col id="1">AAAA</col>
+      </row>
+      <row>
+        <col id="0">65536</col>
+        <col id="1">PKEY</col>
+      </row>
+      <row>
+        <col id="0">65538</col>
+        <col id="1">LEHO</col>
+      </row>
+      <row>
+        <col id="0">65539</col>
+        <col id="1">VPN</col>
+      </row>
+      <row>
+        <col id="0">65540</col>
+        <col id="1">GNS2DNS</col>
+      </row>
+    </data>
+  </object>
+</interface>

Copied: gnunet-gtk/contrib/gnunet_namestore_gtk_qr_save_as_dialog.glade (from 
rev 29914, gnunet-gtk/contrib/gnunet_setup_qr_save_as_dialog.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_namestore_gtk_qr_save_as_dialog.glade             
                (rev 0)
+++ gnunet-gtk/contrib/gnunet_namestore_gtk_qr_save_as_dialog.glade     
2013-10-07 14:35:42 UTC (rev 29925)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkFileChooserDialog" id="GNUNET_setup_qr_save_as_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="icon_name">document-save-as</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="action">save</property>
+    <signal name="response" 
handler="GNUNET_setup_qr_save_as_dialog_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="GNUNET_setup_qr_save_as_dialog_dialog-vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" 
id="GNUNET_setup_qr_save_as_dialog_dialog-action_area">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" 
id="GNUNET_setup_qr_save_as_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" 
id="GNUNET_setup_qr_save_as_dialog_confirm_button">
+                <property name="label">gtk-save-as</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget 
response="-6">GNUNET_setup_qr_save_as_dialog_cancel_button</action-widget>
+      <action-widget 
response="-5">GNUNET_setup_qr_save_as_dialog_confirm_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_a.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_a.glade    2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_a.glade    2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,596 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_a_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_a_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_a_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_a_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_a_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_a_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the IPv4 address for the A record here. The format is the usual dotted-decimal 
format (i.e. 127.0.0.1).</property>
-                        <property name="max_length">15</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_a_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_a_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Destination 
IPv4 Address&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1" translatable="no">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1" translatable="no">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1" translatable="no">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade 2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade 2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkDialog" id="edit_aaaa_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_aaaa_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_aaaa_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_aaaa_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_aaaa_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_aaaa_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the IPv6 address for the A record here. The format is the usual format (i.e. 
::1).</property>
-                        <property name="max_length">45</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_aaaa_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_aaaa_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Destination 
IPv6 Address&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade        2013-10-07 
14:19:52 UTC (rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade        2013-10-07 
14:35:42 UTC (rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkDialog" id="edit_cname_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_cname_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_cname_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_cname_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_cname_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_cname_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the name for which this name is an alias.</property>
-                        <property name="max_length">253</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_cname_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_cname_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Canonical 
Name (CNAME)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade 2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade 2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_leho_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_leho_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_leho_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_leho_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_leho_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_leho_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the DNS name under which this system is reachable using traditional 
DNS.</property>
-                        <property name="max_length">15</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_leho_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_leho_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Legacy 
Hostname in DNS (LEHO)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade   2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade   2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,631 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkAdjustment" id="mx_distance_adjustment">
-    <property name="upper">65535</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_mx_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_mx_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_mx_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_mx_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_mx_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_mx_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the hostname of the mail server here</property>
-                        <property name="max_length">253</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_mx_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_nx_distance_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">distance</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_mx_distance_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the preference number (or distance, as smaller values are preferred) of the 
given mailserver here</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">mx_distance_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_mx_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Mail 
eXchanger record (MX)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade   2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade   2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_ns_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_ns_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_ns_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_ns_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_ns_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_ns_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the name of the DNS nameserver for the subzone.</property>
-                        <property name="max_length">253</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_ns_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_ns_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Name of the 
authoritative name server for the given name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade 2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade 2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_pkey_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_pkey_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_pkey_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_pkey_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_pkey_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_pkey_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the public key of the authority here.</property>
-                        <property name="max_length">105</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_pkey_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_pkey_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;GNS 
authority for the subzone (PKEY)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade  2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_ptr_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_ptr_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_ptr_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_ptr_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_ptr_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_ptr_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the IPv4 address for the A record here. The format is the usual dotted-decimal 
format (i.e. 127.0.0.1).</property>
-                        <property name="max_length">253</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_ptr_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_ptr_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Canonical 
name (PTR)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade  2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,832 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkAdjustment" id="soa_expire_time_adjustment">
-    <property name="upper">4150788095</property>
-    <property name="value">86400</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="soa_minimum_ttl_adjustment">
-    <property name="upper">9999999</property>
-    <property name="value">3600</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="soa_refresh_time_adjustment">
-    <property name="upper">99999999</property>
-    <property name="value">3600</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="soa_retry_time_adjustment">
-    <property name="upper">999999999</property>
-    <property name="value">600</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="soa_serial_adjustment">
-    <property name="upper">99999999</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_soa_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_soa_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_soa_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_soa_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkTable" id="edit_dialog_soa_table">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="n_rows">7</property>
-                    <property name="n_columns">2</property>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_source_host_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Source 
host:</property>
-                      </object>
-                      <packing>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_email_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Contact 
e-mail:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_serial_number_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Serial 
number:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_refresh_time_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Refresh 
time:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_retry_time_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Retry 
time:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_expire_time_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Expire 
time:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">5</property>
-                        <property name="bottom_attach">6</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_soa_minimum_ttl_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Minimum 
TTL:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">6</property>
-                        <property name="bottom_attach">7</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_soa_serial_number_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">This 
number should be incremented for every zone update.</property>
-                        <property name="max_length">6</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">soa_serial_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_soa_refresh_time_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">soa_refresh_time_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_soa_retry_time_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">soa_retry_time_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_soa_expire_time_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">soa_expire_time_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">5</property>
-                        <property name="bottom_attach">6</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_soa_minimum_ttl_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">The 
value is in seconds.</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">soa_minimum_ttl_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">6</property>
-                        <property name="bottom_attach">7</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" 
id="edit_dialog_soa_source_host_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the host responsible for the zone.</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_soa_source_host_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" 
id="edit_dialog_soa_contact_email_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Note 
that a "." is used instead of "@" in the e-mail address!</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_soa_contact_email_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_soa_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Start of 
Authority (SOA) information&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade  2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,719 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkAdjustment" id="srv_port_adjustment">
-    <property name="upper">65535</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="srv_priority_adjustment">
-    <property name="upper">9999999</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="srv_weight_adjustment">
-    <property name="upper">65535</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_srv_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_srv_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_srv_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_srv_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkTable" id="edit_dialog_srv_table">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="n_rows">4</property>
-                    <property name="n_columns">2</property>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_srv_priority_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Priority:</property>
-                      </object>
-                      <packing>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_srv_weight_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Weight:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="edit_dialog_srv_port_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Port:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_srv_target_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Target:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_srv_priority_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Priority of the target, lower values means more 
preferred</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">srv_priority_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_srv_weight_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative weight for records with the same priority</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">srv_weight_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkSpinButton" 
id="edit_dialog_srv_port_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">TCP 
or UDP port on which the service is to be found</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <property 
name="adjustment">srv_port_adjustment</property>
-                        <property name="numeric">True</property>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" 
id="edit_dialog_srv_target_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Canonical hostname of the machine providing the 
service</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_srv_target_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_srv_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Service 
record (SRV)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade  2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_txt_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_txt_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_txt_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_txt_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_txt_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_txt_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="has_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the IPv4 address for the A record here. The format is the usual dotted-decimal 
format (i.e. 127.0.0.1).</property>
-                        <property name="max_length">0</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_txt_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_txt_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Text value 
(TXT)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade  2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade  2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,697 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="absolute_expiration_hours_adjustment">
-    <property name="upper">23</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">12</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_minutes_adjustment">
-    <property name="upper">59</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="absolute_expiration_seconds_adjustment">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="edit_dialog_expiration_relative_liststore">
-    <columns>
-      <!-- column-name relativetime -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">7 days</col>
-      </row>
-      <row>
-        <col id="0">1 day</col>
-      </row>
-      <row>
-        <col id="0">1 h</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="zone_liststore">
-    <columns>
-      <!-- column-name zonename -->
-      <column type="gchararray"/>
-      <!-- column-name optionname -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Master Zone</col>
-        <col id="1">ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Private Zone</col>
-        <col id="1">PRIVATE_ZONEKEY</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Shorten Zone</col>
-        <col id="1">SHORTEN_ZONEKEY</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkDialog" id="edit_vpn_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <signal name="response" handler="GNS_edit_vpn_dialog_response_cb" 
swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="edit_dialog_vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="edit_dialog_action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="edit_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_delete_button">
-                <property name="label">gtk-delete</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="edit_dialog_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes">Store the 
updated record in the database. If the record is public, GNUnet will begin to 
publish the record to the world, limiting your ability to change it later 
(based on the selected expiration values).</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_name_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_name_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkHBox" id="edit_dialog_name_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_name_entry">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="tooltip_text" translatable="yes">Name 
of the record in the zone.</property>
-                        <property name="max_length">63</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_name_in_zone_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">in</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">10</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_zone_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the desired zone for the record.  Changing this value 
here will move the record to the selected zone.</property>
-                        <property name="model">zone_liststore</property>
-                        <property name="active">0</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_zone_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_vpn_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_vpn_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">4</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkTable" id="edit_dialog_vpn_table">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="n_rows">3</property>
-                    <property name="n_columns">2</property>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_vpn_protocol_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Protocol:</property>
-                      </object>
-                      <packing>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="edit_dialog_vpn_peer_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Peer:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" 
id="edit_dialog_vpn_servicename_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">Identifier:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options"></property>
-                        <property name="y_options"></property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_vpn_protocol_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_vpn_protocol_tcp_radiobutton">
-                            <property name="label" 
translatable="yes">TCP</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Service is available via TCP</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_vpn_protocol_udp_radiobutton">
-                            <property name="label" 
translatable="yes">UDP</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Service is available via UDP</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_vpn_protocol_tcp_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="edit_dialog_vpn_peer_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Enter 
the identity (gnunet-peerinfo -s) of the peer offering the service 
here.</property>
-                        <property name="max_length">127</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                        <signal name="changed" 
handler="GNS_edit_dialog_vpn_peer_entry_changed_cb" swapped="no"/>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" 
id="edit_dialog_vpn_identifier_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" translatable="yes">Each 
GNUnet service is identified by an identiifer (name, password) that can be 
freely chosen by the service provider.  This string should be entered 
here.</property>
-                        <property name="invisible_char">●</property>
-                        <property 
name="primary_icon_activatable">False</property>
-                        <property 
name="secondary_icon_activatable">False</property>
-                        <property name="primary_icon_sensitive">True</property>
-                        <property 
name="secondary_icon_sensitive">True</property>
-                      </object>
-                      <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>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_vpn_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;GNUnet VPN 
address (GNS only)&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">5</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_options_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="edit_dialog_options_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_options_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_public_checkbutton">
-                        <property name="label" translatable="yes">Record is 
public (visible to other users)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">Not 
that while it is recommended that 'private' records should be in the 'private 
zone', you are allowed to mark records in other zones as private as well.  
Please be aware that once a record is made public, you are less free to change 
expiration times.  Most importantly, if your record is set to never expire, you 
will never be able to change the mapping in the future if the record is 
public.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" 
id="edit_dialog_options_shadow_checkbutton">
-                        <property name="label" translatable="yes">Record is a 
shadow record (valid after other records expire)</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="tooltip_text" translatable="yes">A 
shadow record is a record which becomes valid in the future.  They are not used 
as long as a second non-expired record with the same name and type exists. This 
is useful if a mapping is to be changed as soon as an existing record expires. 
For example, if a users are supposed to switch at midnight from one IP address 
to another, two records would be placed into the system: one that is valid 
until midnight, and a second "shadow" record that becomes valid at 
midnight.</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_options_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkFrame" id="edit_dialog_expiration_frame">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" 
id="edit_dialog_expiration_alignment">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="top_padding">5</property>
-                <property name="bottom_padding">5</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="edit_dialog_expiration_vbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" id="edit_dialog_expiration_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_relative_radiobutton">
-                            <property name="label" 
translatable="yes">Relative</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with a relative expiration time (such as 1 week) are 
always valid for at least that time period into the future. In other words, the 
auto-renew their own expiration to the given time period into the future. When 
you convert a public record with a relative expiration time to one with an 
absolute expiration time, the earliest possible expiration will be the 
respective relative time in the future. Use relative expiration times for 
entries for which you do not know a specific date when they will 
expire.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_absolute_radiobutton">
-                            <property name="label" 
translatable="yes">Absolute</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records with an absolute expiration time are valid until the 
specified date. You can change that date to an even later date, but you cannot 
set it to an earlier time (as other users may have cached the longer expiration 
time). Use absolute expiration times if you know that a particular record will 
only be valid until a particular day.</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                            <signal name="toggled" 
handler="GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb" 
swapped="no"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" 
id="edit_dialog_expiration_never_radiobutton">
-                            <property name="label" 
translatable="yes">Never</property>
-                            <property 
name="use_action_appearance">False</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" 
translatable="yes">Records can be set to be valid forever. This is great if you 
are worried about censorship or certain that the mapping will never change.  
Note that if you set a public record to never expire, you cannot later change 
it (as other users are free to cache the old value forever).</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">True</property>
-                            <property 
name="group">edit_dialog_expiration_relative_radiobutton</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" 
id="edit_dialog_expiration_absolute_calendar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Select the date on which you want this record to expire. At 
that date, you can then create a new mapping or have a shadow record go 
automatically into effect.  Note that for public records you cannot change the 
expiration time to an earlier date after the fact.</property>
-                        <property name="year">2012</property>
-                        <property name="month">9</property>
-                        <property name="day">17</property>
-                        <property name="show_week_numbers">True</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" 
id="edit_dialog_expiration_absolute_hbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_hours_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Hours:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_hours_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which hour of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_hours_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_minutes_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Minutes:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_minutes_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which minute of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_minutes_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" 
id="edit_dialog_expiration_absolute_seconds_label">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" 
translatable="yes">Seconds:</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkSpinButton" 
id="edit_dialog_expiration_absolute_seconds_spinbutton">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" 
translatable="yes">Which second of the day selected above should the record 
expire?</property>
-                            <property name="max_length">2</property>
-                            <property name="invisible_char">●</property>
-                            <property 
name="primary_icon_activatable">False</property>
-                            <property 
name="secondary_icon_activatable">False</property>
-                            <property 
name="primary_icon_sensitive">True</property>
-                            <property 
name="secondary_icon_sensitive">True</property>
-                            <property 
name="adjustment">absolute_expiration_seconds_adjustment</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">5</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBox" 
id="edit_dialog_expiration_relative_combobox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" 
translatable="yes">Relative expiration time of the record.  The syntax is a 
number followed by a space and a time unit, possibly followed by additional 
numbers and time units. For example, you can specify "1 d" or "6 h 30 m 15 s". 
Use the drop-down menu to select from a set of common defaults. (Editing is not 
possible right now as Gtk2 and Gtk3 use incompatible ways for doing this.) 
</property>
-                        <property 
name="model">edit_dialog_expiration_relative_liststore</property>
-                        <property name="entry_text_column">0</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="edit_dialog_expiration_relative_combobox_cellrenderertext"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="edit_dialog_expiration_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">&lt;b&gt;Expiration 
Time&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">edit_dialog_cancel_button</action-widget>
-      <action-widget response="-2">edit_dialog_delete_button</action-widget>
-      <action-widget response="-5">edit_dialog_save_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade       2013-10-07 
14:19:52 UTC (rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade       2013-10-07 
14:35:42 UTC (rev 29925)
@@ -1,4931 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.20"/>
-  <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkAdjustment" id="GNUNET_setup_bandwidth_in_adjustment">
-    <property name="lower">5000</property>
-    <property name="upper">999999999</property>
-    <property name="value">65536</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="GNUNET_setup_bandwidth_out_adjustment">
-    <property name="lower">1024</property>
-    <property name="upper">999999999</property>
-    <property name="value">65536</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkDialog" id="GNUNET_setup_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="title" translatable="yes">gnunet-setup</property>
-    <property name="window_position">center</property>
-    <property name="icon_name">preferences-system</property>
-    <property name="type_hint">normal</property>
-    <signal name="destroy" handler="GNUNET_SETUP_quit_cb" swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="GNUNET_setup_dialog-vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="GNUNET_setup_dialog-action_area">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="GNUNET_setup_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="GNUNET_setup_save_as_button">
-                <property name="label">gtk-save-as</property>
-                <property name="use_action_appearance">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="GNUNET_setup_save_button">
-                <property name="label">gtk-save</property>
-                <property name="use_action_appearance">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkNotebook" id="GNUNET_setup_notebook">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <signal name="switch-page" 
handler="GNUNET_setup_notebook_switch_page_cb" swapped="no"/>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_general_vbox">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" 
id="GNUNET_setup_defaultservices_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_defaultservices_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkHBox" 
id="GNUNET_setup_defaultservices_hbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_setup_general_services_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">Services:</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_topology_checkbutton">
-                                <property name="label" 
translatable="yes">Topology</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="tooltip_text" 
translatable="yes">The topology subsystem is required as it ensures that your 
peer connects to other peers.</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_hostlist_checkbutton">
-                                <property name="label" 
translatable="yes">Hostlist</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="tooltip_text" 
translatable="yes">Hostlist servers are used to find other peers.  Here you can 
choose to offer a hostlist or simply configure which hostlists by other peers 
you want to use.</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_fs_checkbutton">
-                                <property name="label" translatable="yes">File 
_Sharing</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="tooltip_text" 
translatable="yes">Enable GNUnet's file-sharing subsystem.</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_pt_checkbutton">
-                                <property name="label" 
translatable="yes">PT/VPN</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="tooltip_text" 
translatable="yes">Using the PT/VPN subsystems you can tunnel your Internet 
traffic over GNUnet.  This is useful if you want to access the IPv4-Internet if 
you only have IPv6-connectivity or vice versa.  Furthermore, if you are only 
connected to other peers using WLAN, you could also get Internet access in the 
first place by routing IP traffic over GNUnet.</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_exit_checkbutton">
-                                <property name="label" 
translatable="yes">EXIT</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="tooltip_text" 
translatable="yes">By offering an EXIT service, you can allow other peers to 
use your Internet connection to reach the IPv4 and/or IPv6 Internet.  
Naturally, as your machine will be seen as the origin of the traffic, this 
might be risky in some jurisdictions.  Enabling the exit for IPv4 and IPv6 and 
PT/VPN interception for IPv4 and IPv6 on the same machine will still give you 
4to6 and 6to4 protocol translation, allowing you to access IPv4-only servers 
from IPv6-only clients and IPv6-only servers from IPv4-only clients.</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">5</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_gns_checkbutton">
-                                <property name="label" 
translatable="yes">GNS</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="tooltip_text" 
translatable="yes">The GNS is GNUnet's replacement for DNS.  Enabling this 
subsystem will make the ".gnunet" TLD available on your system.  You will be in 
charge of your ".gnunet" TLD.</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">6</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_defaultservices_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Service Configuration&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">5</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_topology_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_topology_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkHBox" 
id="GNUNET_setup_topology_hbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_friends_only_checkbutton">
-                                <property name="label" translatable="yes">F_2F 
only</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_setup_friends_file_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">Friends file:</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkFileChooserButton" 
id="GNUNET_setup_friends_filechooserbutton">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVSeparator" id="vseparator1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_setup_minimum_friends_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Min. 
connected friends:</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">5</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkSpinButton" 
id="GNUNET_setup_minimum_friends_spinbutton">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">•</property>
-                                <property 
name="invisible_char_set">True</property>
-                                <property 
name="primary_icon_activatable">False</property>
-                                <property 
name="secondary_icon_activatable">False</property>
-                                <property 
name="primary_icon_sensitive">True</property>
-                                <property 
name="secondary_icon_sensitive">True</property>
-                                <property 
name="adjustment">GNUNET_setup_min_friends_adjustment</property>
-                                <property name="numeric">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">6</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_topology_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Friend-to-Friend Configuration (restricts P2P 
connections)&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">5</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_hostlist_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_hostlist_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_hostlist_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_hostlist_basics_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_client_enable_checkbutton">
-                                    <property name="label" 
translatable="yes">Use Hostlists to bootstrap</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_client_learn_checkbutton">
-                                    <property name="label" 
translatable="yes">Learn Servers from P2P Network</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_hostlist_options_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkVBox" 
id="GNUNET_setup_hostlist_server_vbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_offer_hostlist_checkbutton">
-                                        <property name="label" 
translatable="yes">Run Hostlist Server</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_hostlist_offer_hostlist_checkbutton_realize_cb" 
swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_advertise_checkbutton">
-                                        <property name="label" 
translatable="yes">Advertise Hostlist Server</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_hostlist_advertise_checkbutton_realize_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" id="hbox9">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_hostlist_port_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">Port:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" 
id="GNUNET_setup_hostlist_server_port_spin_button">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="invisible_char">•</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                            <property 
name="adjustment">GNUNET_setup_hostlist_server_port_adjustment</property>
-                                            <property 
name="numeric">True</property>
-                                            <signal name="realize" 
handler="GNUNET_setup_hostlist_server_port_spin_button_realize_cb" 
swapped="no"/>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" 
id="GNUNET_setup_hostlist_vbox ">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_hostlist_url_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Known Hostlist Servers:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkScrolledWindow" 
id="GNUNET_setup_hostlist_url_scrolledwindow">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="hadjustment">adjustment7</property>
-                                        <property 
name="vadjustment">adjustment8</property>
-                                        <property 
name="hscrollbar_policy">never</property>
-                                        <child>
-                                          <object class="GtkTreeView" 
id="GNUNET_setup_hostlist_url_treeview">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="model">GNUNET_setup_hostlist_url_liststore</property>
-                                            <property 
name="hadjustment">adjustment7</property>
-                                            <property 
name="vadjustment">adjustment8</property>
-                                            <property 
name="search_column">0</property>
-                                            <signal name="key-press-event" 
handler="GNUNET_setup_treeview_key_press_event_cb" swapped="no"/>
-                                            <child>
-                                              <object 
class="GtkTreeViewColumn" id="GNUNET_setup_hostlist_url_treeviewcolumn">
-                                                <property 
name="sizing">fixed</property>
-                                                <property 
name="title">URL</property>
-                                                <property 
name="expand">True</property>
-                                                <property 
name="clickable">True</property>
-                                                <property 
name="reorderable">True</property>
-                                                <property 
name="sort_indicator">True</property>
-                                                <property 
name="sort_column_id">0</property>
-                                                <child>
-                                                  <object 
class="GtkCellRendererText" id="GNUNET_setup_hostlist_url_cellrenderertext">
-                                                    <property 
name="editable">True</property>
-                                                    <signal name="edited" 
handler="GNUNET_setup_hostlist_url_cellrenderertext_edited_cb" swapped="no"/>
-                                                  </object>
-                                                  <attributes>
-                                                    <attribute 
name="text">0</attribute>
-                                                  </attributes>
-                                                </child>
-                                              </object>
-                                            </child>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_hostlist_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Hostlist Configuration (for bootstrapping the 
network)&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="padding">5</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </object>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_general_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_General</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_network_tab_vbox">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_bandwidth_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_bandwidth_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_bandwidth_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_bandwidth_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_bandwidth_in_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Max. download bandwidth (B/s):</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_setup_bandwidth_in_spinbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">•</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">GNUNET_setup_bandwidth_in_adjustment</property>
-                                    <property name="numeric">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_bandwidth_out_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Max. upload bandwidth (B/s)</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_setup_bandwidth_out_spinbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">•</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">GNUNET_setup_bandwidth_out_adjustment</property>
-                                    <property name="numeric">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_bandwidth_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Bandwidth Configuration&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" 
id="GNUNET_setup_transport_nat_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_transport_nat_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_transport_nat_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_transport_nat_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_transport_nat_checkbutton">
-                                    <property name="label" 
translatable="yes">Peer is behind _NAT</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">Check this box if your machine is behind a NAT box (router 
that performs network address translation).  Leave off if your machine has a 
globally unique IPv4 address.  NAT options only impact IPv4 addresses at this 
time.</property>
-                                    <property 
name="use_underline">True</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkButton" 
id="GNUNET_setup_transport_autoconfig_button">
-                                    <property name="label" 
translatable="yes">Attempt automatic configuration</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">True</property>
-                                    <signal name="clicked" 
handler="GNUNET_setup_transport_autoconfig_button_clicked_cb" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_transport_disable_ipv6_checkbutton">
-                                    <property name="label" 
translatable="yes">Disable IPv_6 support</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">Disable advertising IPv6 addresses. Check this box if you 
know that your system has no IPv6 Internet connectivity.</property>
-                                    <property 
name="use_underline">True</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_transport_nat_options_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="spacing">20</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_transport_nat_options_spacer_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" 
id="GNUNET_setup_transport_nat_options_vbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_hole_punched_checkbutton">
-                                        <property name="label" 
translatable="yes">NAT ports have been opened manually</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Set this option if you have configured your NAT to forward 
the ports for the various enabled GNUnet transports.  If the external ports are 
different, the respective values of the external port should be specified under 
"advertised port" for the respective transport. You also need to specify the 
"External (public) IPv4 address" of your NAT box below.</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_upnp_enable_checkbutton">
-                                        <property name="label" 
translatable="yes">Enable NAT traversal via UPnP or PMP</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">This option enables the use of upnpc from miniupnpd for NAT 
traversal</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_icmp_server_enable_checkbutton">
-                                        <property name="label" 
translatable="yes">Enable NAT traversal using ICMP method</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">This option enables the use of the "Autonomous NAT 
Traversal" method (presented at P2P 2010).  It requires 
gnunet-helper-nat-server to be installed SUID on the local system.</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" 
id="GNUNET_setup_transport_external_ip_hbox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_transport_external_ip_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="tooltip_text" 
translatable="yes">Globally visible IP address of your system (IP address of 
the external interface of your NAT).  You can also specify a hostname, in which 
case GNUnet will periodically look up the hostname in DNS to determine our 
external IP address (DynDNS setup).</property>
-                                            <property name="label" 
translatable="yes">External (public) IPv4 address:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="GNUNET_setup_transport_external_ip_address_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="max_length">255</property>
-                                            <property 
name="invisible_char">●</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_icmp_client_enable_checkbutton">
-                                        <property name="label" 
translatable="yes">Enable connecting to NATed peers using ICMP method</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">This method allows this peer to initiate connections to 
NATed peers using the 'Autonomous NAT traversal' method (presented at P2P 
2010). It requires having gnunet-helper-nat-client installed SUID on the local 
system.</property>
-                                        <property name="xalign">0</property>
-                                        <property name="active">True</property>
-                                        <property 
name="draw_indicator">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" 
id="GNUNET_setup_transport_internal_ip_hbox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_transport_internal_ip_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="tooltip_text" 
translatable="yes">Specify the IPv4 address of your computers main network 
interface (typically eth0 or wlan0).</property>
-                                            <property name="label" 
translatable="yes">Internal (private) IPv4 address:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="GNUNET_setup_transport_internal_ip_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="max_length">15</property>
-                                            <property 
name="invisible_char">●</property>
-                                            <property 
name="width_chars">15</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">5</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_transport_nat_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">&lt;b&gt;NAT 
Traversal Configuration&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="padding">5</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_network_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_Network</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="position">1</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkFrame" id="GNUNET_setup_transport_main_frame">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">none</property>
-                <child>
-                  <object class="GtkAlignment" 
id="GNUNET_setup_transport_main_alignment">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <object class="GtkVBox" 
id="GNUNET_setup_transport_main_vbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="spacing">5</property>
-                        <child>
-                          <object class="GtkHBox" 
id="GNUNET_setup_transport_plugins_hbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_setup_transportlabel">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">Plugins to use:</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_tcp_checkbutton">
-                                <property name="label" 
translatable="yes">_TCP</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_tcp_checkbutton_realize_cb" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_udp_checkbutton">
-                                <property name="label" 
translatable="yes">_UDP</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_udp_checkbutton_realize_cb" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_http_client_checkbutton">
-                                <property name="label" 
translatable="yes">_HTTP Client</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_http_client_checkbutton_realize_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_http_server_checkbutton">
-                                <property name="label" 
translatable="yes">HTT_P Server</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_http_server_checkbutton_realize_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_https_client_checkbutton">
-                                <property name="label" 
translatable="yes">HTTPS _Client</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_https_client_checkbutton_realize_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">5</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_https_server_checkbutton">
-                                <property name="label" 
translatable="yes">HTTPS _Server</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_https_server_checkbutton_realize_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">6</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_dv_checkbutton">
-                                <property name="label" 
translatable="yes">D_V</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_dv_checkbutton_realize_cb" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">7</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_wlan_checkbutton">
-                                <property name="label" 
translatable="yes">_WLAN</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="xalign">0</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="realize" 
handler="GNUNET_setup_transport_wlan_checkbutton_realize_cb" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">8</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkNotebook" 
id="GNUNET_setup_transport_notebook">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <child>
-                              <object class="GtkVBox" 
id="GNUNET_setup_transport_tcp_vbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="spacing">5</property>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_tcp_port_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Bind to port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_tcp_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_tcp_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_port_detail_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Use Port "0" to only allow outgoing TCP 
connections</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">10</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_tcp_adv_port_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_adv_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Advertised port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_tcp_adv_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">●</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_tcp_adv_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_adv_detail_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">10</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_tcp_test_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label3">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_transport_tcp_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_transport_tcp_test_button_clicked_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_tcp_test_success_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_tcp_test_fail_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label5">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">4</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                            </child>
-                            <child type="tab">
-                              <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">TCP</property>
-                              </object>
-                              <packing>
-                                <property name="tab_fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" 
id="GNUNET_setup_transport_udp_vbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_udp_port_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Port number that GNUnet's UDP transport should bind to on 
the local system</property>
-                                        <property name="label" 
translatable="yes">Bind to port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_udp_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_udp_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_udp_advertised_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_advertised_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Advertised port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_udp_advertised_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="invisible_char">●</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_udp_advertised_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_adv_detail_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">10</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_udp_test_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label1">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_transport_udp_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_transport_udp_test_button_clicked_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_udp_test_success_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_udp_test_fail_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label2">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">4</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child type="tab">
-                              <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">UDP</property>
-                              </object>
-                              <packing>
-                                <property name="position">1</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" 
id="GNUNET_setup_transport_http_vbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_http_port_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_http_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property 
name="has_tooltip">True</property>
-                                        <property name="tooltip_markup">Port 
number that GNUnet&amp;apos;s UDP transport should bind to on the local 
system</property>
-                                        <property name="tooltip_text" 
translatable="yes">Port number that GNUnet's UDP transport should bind to on 
the local system</property>
-                                        <property name="label" 
translatable="yes">Bind to port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_http_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_http_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_http_advertised_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_http_advertised_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Advertised port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_http_advertised_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">●</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_http_advertised_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_http_adv_detail_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">10</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_http_test_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label4">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_transport_http_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_transport_http_test_button_clicked_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_http_test_success_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_http_test_fail_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label6">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">4</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child type="tab">
-                              <object class="GtkLabel" 
id="GNUNET_setup_transport_http_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">HTTP</property>
-                              </object>
-                              <packing>
-                                <property name="position">2</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" 
id="GNUNET_setup_transport_https_vbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_https_port_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_https_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property 
name="has_tooltip">True</property>
-                                        <property name="tooltip_markup">Port 
number that GNUnet&amp;apos;s UDP transport should bind to on the local 
system</property>
-                                        <property name="tooltip_text" 
translatable="yes">Port number that GNUnet's UDP transport should bind to on 
the local system</property>
-                                        <property name="label" 
translatable="yes">Bind to port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_https_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_https_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_https_advertised_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_https_advertised_port_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Advertised port:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_https_advertised_port_spinbutton">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">5</property>
-                                        <property 
name="invisible_char">●</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <property 
name="adjustment">GNUNET_setup_transport_https_advertised_port_adjustment</property>
-                                        <property 
name="numeric">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_https_adv_detail_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">10</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_https_test_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" id="label7">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_transport_https_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_transport_https_test_button_clicked_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_https_test_success_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_transport_https_test_fail_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="label8">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">4</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child type="tab">
-                              <object class="GtkLabel" 
id="GNUNET_setup_transport_https_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">HTTPS</property>
-                              </object>
-                              <packing>
-                                <property name="position">3</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" 
id="GNUNET_setup_transport_dv_vbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <placeholder/>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child type="tab">
-                              <object class="GtkLabel" 
id="GNUNET_setup_transport_dv_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">DV</property>
-                              </object>
-                              <packing>
-                                <property name="position">4</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkVBox" 
id="GNUNET_setup_transport_wlan_vbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_wlan_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_wlan_interface_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Name of _Monitor Interface</property>
-                                        <property 
name="use_underline">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkEntry" 
id="GNUNET_setup_transport_wlan_interface_entry">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="max_length">255</property>
-                                        <property 
name="invisible_char">●</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">5</property>
-                              </packing>
-                            </child>
-                            <child type="tab">
-                              <object class="GtkLabel" 
id="GNUNET_setup_transport_wlan_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">WLAN</property>
-                              </object>
-                              <packing>
-                                <property name="position">5</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" 
id="GNUNET_setup_transport_notebook_label">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" 
translatable="yes">&lt;b&gt;Transport Configuration&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_transport_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" 
translatable="yes">_Transports</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="position">2</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_fs_main_vbox">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_fs_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_fs_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkHBox" 
id="GNUNET_setup_fs_migration_hbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_fs_migration_from_checkbutton">
-                                <property name="label" 
translatable="yes">Enable unsolicited content transmission from this 
peer</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_fs_migration_to_checkbutton">
-                                <property name="label" 
translatable="yes">Enable caching content at this peer</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_fs_options_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;File Sharing Options&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_datastore_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_datastore_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_datastore_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_datastore_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_datastore_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Database Backend to use:</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHButtonBox" 
id="GNUNET_setup_datastore_hbuttonbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property 
name="layout_style">start</property>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datastore_sqlite_radiobutton">
-                                        <property name="label" 
translatable="yes">sqLite</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="active">True</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_fs_datastore_sqlite_radiobutton_realize_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datastore_mysql_radiobutton">
-                                        <property name="label" 
translatable="yes">MySQL</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="yalign">0.50999999046325684</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <property 
name="group">GNUNET_setup_fs_datastore_sqlite_radiobutton</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_fs_datastore_mysql_radiobutton_realize_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datastore_postgres_radiobutton">
-                                        <property name="label" 
translatable="yes">Postgres</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <property 
name="group">GNUNET_setup_fs_datastore_sqlite_radiobutton</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_fs_datastore_postgres_radiobutton_realize_cb" 
swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVSeparator" 
id="GNUNET_setup_datastore_vseparator">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datastore_quota_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Quota (bytes):</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_setup_fs_datastore_quota_spinbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">•</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">GNUNET_setup_fs_datastore_quota_adjustment</property>
-                                    <property name="numeric">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">4</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkNotebook" 
id="GNUNET_setup_fs_datastore_notebook">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datastore_sqlite_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">No setup required.</property>
-                                  </object>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkLabel" 
id="GNUNET_setup_datastore_sqlite_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">sqLite</property>
-                                  </object>
-                                  <packing>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" 
id="GNUNET_setup_datastore_mysql_vbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_database_name_hbox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_database_name_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">MySQL database name:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_database_name_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="invisible_char">•</property>
-                                            <property name="text" 
translatable="yes">gnunet</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                            <signal name="changed" 
handler="GNUNET_setup_datastore_mysql_invalidate_cb" swapped="no"/>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_config_file_hbox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_config_file_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">Configuration file:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkFileChooserButton" 
id="GNUNET_setup_datastore_mysql_config_file_filechooserbutton">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_username_password_hbox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_username_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">Username:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_username_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="invisible_char">•</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_password_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">Password:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="position">2</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_password_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="invisible_char">•</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">3</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_hostname_hbox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_hostname_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">MySQL Server Hostname:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">0</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_hostname_entry">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="invisible_char">•</property>
-                                            <property name="text" 
translatable="yes">localhost</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">True</property>
-                                            <property 
name="fill">True</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">1</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_port_label">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">False</property>
-                                            <property name="label" 
translatable="yes">Port:</property>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">2</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <object class="GtkSpinButton" 
id="GNUNET_setup_datastore_mysql_port_spinbutton">
-                                            <property 
name="visible">True</property>
-                                            <property 
name="can_focus">True</property>
-                                            <property 
name="invisible_char">•</property>
-                                            <property 
name="invisible_char_set">True</property>
-                                            <property 
name="primary_icon_activatable">False</property>
-                                            <property 
name="secondary_icon_activatable">False</property>
-                                            <property 
name="primary_icon_sensitive">True</property>
-                                            <property 
name="secondary_icon_sensitive">True</property>
-                                            <property 
name="adjustment">GNUNET_setup_fs_datastore_mysql_port_adjustment</property>
-                                            <property 
name="numeric">True</property>
-                                            <signal name="value-changed" 
handler="GNUNET_setup_datastore_mysql_invalidate_cb" swapped="no"/>
-                                          </object>
-                                          <packing>
-                                            <property 
name="expand">False</property>
-                                            <property 
name="fill">False</property>
-                                            <property 
name="padding">5</property>
-                                            <property 
name="position">3</property>
-                                          </packing>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_tab_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">MySQL</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_datastore_mysql_tab_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_datastore_mysql_tab_test_button_clicked_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_mysql_tab_ok_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_mysql_tab_error_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_datastore_postgres_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_postgres_config_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Configuration:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkEntry" 
id="GNUNET_setup_datastore_postgres_config_entry">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <signal name="changed" 
handler="GNUNET_setup_datastore_postgres_invalidate_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkHBox" 
id="GNUNET_setup_datastore_postgres_hbox ">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_postgres_tab_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Postgres</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_datastore_postgres_tab_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_datastore_postgres_tab_test_button_clicked_cb" 
swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_postgres_tab_ok_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_postgres_tab_error_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_frame_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Configure Datastore (persistent 
storage)&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_datacache_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_datacache_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_datacache_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_datacache_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_datacache_label1">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Datacache:</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHButtonBox" 
id="GNUNET_setup_datacache_hbuttonbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property 
name="layout_style">start</property>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datacache_sqlite_radiobutton">
-                                        <property name="label" 
translatable="yes">sqLite</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="active">True</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_fs_datacache_sqlite_radiobutton_realize_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datacache_heap_radiobutton">
-                                        <property name="label" 
translatable="yes">Memory</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="yalign">0.50999999046325684</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <property 
name="group">GNUNET_setup_fs_datacache_sqlite_radiobutton</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_fs_datacache_heap_radiobutton_realize_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datacache_postgres_radiobutton">
-                                        <property name="label" 
translatable="yes">Postgres</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <property 
name="group">GNUNET_setup_fs_datacache_sqlite_radiobutton</property>
-                                        <signal name="realize" 
handler="GNUNET_setup_fs_datacache_postgres_radiobutton_realize_cb" 
swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVSeparator" 
id="GNUNET_setup_datacache_vseparator">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_quota_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Quota (bytes):</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_setup_fs_datacache_quota_spinbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">•</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">GNUNET_setup_fs_datacache_quota_adjustment</property>
-                                    <property name="numeric">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">4</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkNotebook" 
id="GNUNET_setup_fs_datacache_notebook">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_sqlite_body_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">No setup required.</property>
-                                  </object>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_sqlite_tab_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">sqLite</property>
-                                  </object>
-                                  <packing>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkVBox" 
id="GNUNET_setup_datacache_heap_vbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_heap_tab_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">sqLite</property>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_datacache_postgres_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_datacache_postgres_config_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Configuration:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkEntry" 
id="GNUNET_setup_datacache_postgres_config_entry">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                        <signal name="changed" 
handler="GNUNET_setup_datacache_postgres_invalidate_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkHBox" 
id="GNUNET_setup_datacache_postgres_tab_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_datacache_postgres_tab_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Postgres</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_datacache_postgres_tab_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_datacache_postgres_tab_test_button_clicked_cb" 
swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_datacache_postgres_tab_ok_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_datacache_postgres_tab_error_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">2</property>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_datacache_frame_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Configure Datacache (temporary 
storage)&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">3</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_fs_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_File 
Sharing</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="position">3</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_vpn_vbox">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_pt_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_pt_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="GNUNET_setup_pt_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_pt_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_pt_ipv4_checkbutton">
-                                    <property name="label" 
translatable="yes">Tunnel IPv4 Traffic</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">By enabling this option, all of your IPv4-Internet traffic 
will be routed over GNUnet to a GNUnet exit node.  Note that this will enable 
other GNUnet peers to observe your unencrypted Internet traffic. This enables 
4over6 tunneling and 4to6 protocol translation.</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_pt_ipv6_checkbutton">
-                                    <property name="label" 
translatable="yes">Tunnel IPv6 Traffic</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">By enabling this option, all of your IPv6-Internet traffic 
will be routed over GNUnet to a GNUnet exit node.  Note that this will enable 
other GNUnet peers to observe your unencrypted Internet traffic.  This enables 
6over4 tunneling and 6to4 protocol translation.</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_pt_dns_checkbutton">
-                                    <property name="label" 
translatable="yes">Tunnel DNS Traffic</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">Enabling this option will cause your DNS traffic to be 
routed via the GNUnet network to some other peer offering DNS exit 
functionality. This is needed if you have no Internet access (and are thus 
tunnelling both IPv4 and IPv6 traffic over GNUnet).  If you have regular 
Internet access, this option only makes sense if you want to get some 'weak' 
anonymity by tunnelling all of your traffic over GNUnet (using the network as a 
1-hop proxy in the worst-case, so this does not provide you with strong 
anonymity).</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="GNUNET_setup_pt_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Protocol Translation and Tunneling 
Configuration&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">5</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" 
id="GNUNET_setup_vpn_interface_configuration_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_vpn_interface_configuration_frame_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="GNUNET_setup_vpn__vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_vpn_interface_hbox">
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">_Interface name:</property>
-                                    <property 
name="use_underline">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="tooltip_text" 
translatable="yes">Name of the TUN interface GNUnet will create for 
intercepting outgoing Internet traffic from your machine.  The default 
"gnunet-vpn" is almost always fine.</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_vpn_interface_v4_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v4_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">IPv4 address for interface:</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_v4_ip_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v4_slash_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">/</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_v4_mask_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_vpn_interface_v6_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v6_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">IPv6 address for interface: </property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_v6_ip_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v6_slash_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">/</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_setup_vpn_interface_v6_mask_spinbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">GNUNET_setup_vpn_interface_mask_adjustment</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_configuration_frame_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">&lt;b&gt;VPN 
Interface Configuration&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="padding">5</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">4</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_vpn_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="tooltip_text" translatable="yes">Configuration 
of the GNUnet VPN and the Protocol Translation (6to4, 4to6, 6over4, 4over6) 
facilities</property>
-                <property name="label" translatable="yes">_VPN</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="position">4</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_exit_vbox">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_exit_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_exit_frame_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_exit_frame_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_exit_master_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_dns_enable_exit_checkbutton">
-                                    <property name="label" 
translatable="yes">Enable DNS Exit</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_exit_enable_ipv4_exit_checkbutton">
-                                    <property name="label" 
translatable="yes">Enable IPv4 Exit</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">This option will allow other peers to send IPv4 traffic to 
the Internet using your network connection.</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_setup_exit_enable_ipv6_exit_checkbutton">
-                                    <property name="label" 
translatable="yes">Enable IPv6 Exit</property>
-                                    <property 
name="use_action_appearance">False</property>
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property name="tooltip_text" 
translatable="yes">This option will allow other peers to send IPv6 traffic to 
the Internet using your network connection.  You should make sure that you have 
IPv6-support before enabling this option.</property>
-                                    <property name="xalign">0</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_dns_resolver_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_dns_resolver_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">IP Address of external DNS Resolver:</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_dns_resolver_ip_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_exit_frame_hbox">
-                                <property name="can_focus">False</property>
-                                <property name="spacing">5</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_interface_name_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Exit interface name: </property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_name_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="tooltip_text" 
translatable="yes">Name of the TUN interface GNUnet will create for Internet 
traffic exiting GNUnet via your machine.  The default "gnunet-exit" is almost 
always fine.</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_exit_ipv4_address_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv4_address_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">IPv4 address for Exit interface: </property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_v4_ip_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="tooltip_text" 
translatable="yes">Use a private IPv4 network here that does not conflict with 
your existing setup (i.e. something like 10.53.0.1/255.255.0.0 or 
192.168.0.1/255.255.0.0).  </property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv4_address_slash_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">/</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_v4_mask_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="padding">5</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_exit_ipv6_address_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv6_address_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">IPv6 address for Exit interface: </property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_v6_ip_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="tooltip_text" 
translatable="yes">This should be a globally routed IPv6 subnet of your host.  
Alternatively, if your kernel supports IPv6-NAT, you can pick any site-local 
prefix and manually configure IPv6-NAT.</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv6_address_slash_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">/</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_setup_exit_interface_v6_mask_spinbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">●</property>
-                                    <property 
name="primary_icon_activatable">False</property>
-                                    <property 
name="secondary_icon_activatable">False</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">GNUNET_setup_exit_interface_mask_adjustment</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">3</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_exit_frame_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;GNUnet Exit Configuration&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="padding">5</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">5</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_exit_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_Exit</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="position">5</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_namestore_vbox">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_namestore_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_namestore_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_namestore_vbox1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_setup_namestore_hbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_namestore_label1">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">Database Backend to use:</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHButtonBox" 
id="GNUNET_setup_namestore_hbuttonbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property 
name="layout_style">start</property>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_namestore_sqlite_radiobutton">
-                                        <property name="label" 
translatable="yes">sqLite</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="active">True</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <signal name="toggled" 
handler="GNUNET_setup_namestore_sqlite_radiobutton_toggled_cb" swapped="no"/>
-                                        <signal name="realize" 
handler="GNUNET_setup_namestore_sqlite_radiobutton_realize_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkRadioButton" 
id="GNUNET_setup_namestore_postgres_radiobutton">
-                                        <property name="label" 
translatable="yes">Postgres</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">False</property>
-                                        <property name="xalign">0</property>
-                                        <property 
name="draw_indicator">True</property>
-                                        <property 
name="group">GNUNET_setup_namestore_sqlite_radiobutton</property>
-                                        <signal name="toggled" 
handler="GNUNET_setup_namestore_postgres_radiobutton_toggled_cb" swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkNotebook" 
id="GNUNET_setup_namestore_notebook">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_setup_namestore_sqlite_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">No setup required.</property>
-                                  </object>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkLabel" 
id="GNUNET_setup_namestore_sqlite_tab_label">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" 
translatable="yes">sqLite</property>
-                                  </object>
-                                  <packing>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkHBox" 
id="GNUNET_setup_namestore_postgres_hbox">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_namestore_postgres_config_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Configuration:</property>
-                                      </object>
-                                      <packing>
-                                        <property 
name="expand">False</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkEntry" 
id="GNUNET_setup_namestore_postgres_config_entry">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="invisible_char">•</property>
-                                        <property 
name="invisible_char_set">True</property>
-                                        <property 
name="primary_icon_activatable">False</property>
-                                        <property 
name="secondary_icon_activatable">False</property>
-                                        <property 
name="primary_icon_sensitive">True</property>
-                                        <property 
name="secondary_icon_sensitive">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                                <child type="tab">
-                                  <object class="GtkHBox" 
id="GNUNET_setup_namestore_postgres_tab_hbox ">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <child>
-                                      <object class="GtkLabel" 
id="GNUNET_setup_namestore_postgres_tab_label">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">False</property>
-                                        <property name="label" 
translatable="yes">Postgres</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkButton" 
id="GNUNET_setup_namestore_postgres_tab_test_button">
-                                        <property name="label" 
translatable="yes">Test configuration</property>
-                                        <property 
name="use_action_appearance">False</property>
-                                        <property 
name="visible">True</property>
-                                        <property 
name="can_focus">True</property>
-                                        <property 
name="receives_default">True</property>
-                                        <signal name="clicked" 
handler="GNUNET_setup_namestore_postgres_tab_test_button_clicked_cb" 
swapped="no"/>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="padding">5</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_namestore_postgres_tab_ok_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">2</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_setup_namestore_postgres_tab_error_image">
-                                        <property 
name="can_focus">False</property>
-                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
-                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
-                                      </object>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                    <property name="tab_fill">False</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_namestore_frame_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Configure Namestore (persistent 
storage)&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="GNUNET_setup_gns_frame">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_setup_gns_alignment">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_setup_gns_option_vbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_gns_hijack_checkbutton">
-                                <property name="label" 
translatable="yes">Enable iptables-based DNS hijacking 
(GNU/Linux-only)</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" 
id="GNUNET_setup_gns_auto_import_checkbutton">
-                                <property name="label" 
translatable="yes">Enable automatic shortening</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" 
id="GNUNET_setup_gns_option_label">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" 
translatable="yes">&lt;b&gt;Configure GNUnet Naming System&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">5</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">6</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_namestore_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">GNS &amp; 
N_amestore</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="position">6</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkVBox" id="GNUNET_setup_gns_vbox">
-                <property name="can_focus">False</property>
-                <child>
-                  <object class="GtkHBox" id="GNUNET_setup_gns_top_hbox">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkVBox" id="GNUNET_setup_gns_zone_vbox">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkHBox" 
id="GNUNET_setup_gns_zone_label_hbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_setup_gns_zone_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">&lt;b&gt;SET TO PUBLIC KEY OF THE ZONE&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" 
id="GNUNET_setup_gns_public_key_copy_button">
-                                <property name="label">gtk-copy</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="clicked" 
handler="GNUNET_setup_gns_public_key_copy_button_clicked_cb" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">2</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkHBox" 
id="GNUNET_setup_gns_pseu_hbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_setup_gns_pseu_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" 
translatable="yes">Preferred zone name (PSEU):</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" 
id="GNUNET_setup_gns_pseu_entry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="max_length">63</property>
-                                <property name="invisible_char">●</property>
-                                <property name="width_chars">32</property>
-                                <property 
name="invisible_char_set">True</property>
-                                <property 
name="primary_icon_activatable">False</property>
-                                <property 
name="secondary_icon_activatable">False</property>
-                                <property 
name="primary_icon_sensitive">True</property>
-                                <property 
name="secondary_icon_sensitive">True</property>
-                                <signal name="changed" 
handler="GNUNET_setup_gns_pseu_entry_changed_cb" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">5</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkHButtonBox" 
id="GNUNET_setup_gns_zone_selection_hbuttonbox">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="layout_style">center</property>
-                            <child>
-                              <object class="GtkRadioButton" 
id="GNUNET_setup_gns_master_zone_selection_radiobutton">
-                                <property name="label" 
translatable="yes">_Master Zone</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="toggled" 
handler="GNUNET_setup_gns_master_zone_selection_radiobutton_toggled_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">10</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkRadioButton" 
id="GNUNET_setup_gns_private_zone_selection_radiobutton">
-                                <property name="label" 
translatable="yes">_Private Zone</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property 
name="group">GNUNET_setup_gns_master_zone_selection_radiobutton</property>
-                                <signal name="toggled" 
handler="GNUNET_setup_gns_private_zone_selection_radiobutton_toggled_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">10</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkRadioButton" 
id="GNUNET_setup_gns_shorten_zone_selection_radiobutton">
-                                <property name="label" 
translatable="yes">_Shorten Zone</property>
-                                <property 
name="use_action_appearance">False</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="receives_default">False</property>
-                                <property name="use_underline">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property 
name="group">GNUNET_setup_gns_master_zone_selection_radiobutton</property>
-                                <signal name="toggled" 
handler="GNUNET_setup_gns_shorten_zone_selection_radiobutton_toggled_cb" 
swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="padding">10</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkVSeparator" 
id="GNUNET_setup_gns_qr_vseparator">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkImage" id="GNUNET_setup_gns_qr_image">
-                        <property name="width_request">64</property>
-                        <property name="height_request">64</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="tooltip_text" translatable="yes">QR 
code for the selected zone</property>
-                        <property name="stock">gtk-missing-image</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" 
id="GNUNET_setup_gns_qr_saveas_button">
-                        <property name="label">gtk-save-as</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="clicked" 
handler="GNUNET_setup_gns_qr_saveas_button_clicked_cb" swapped="no"/>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">5</property>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkLabel" id="GNUNET_setup_gns_status_label">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" 
translatable="yes">&lt;b&gt;&lt;big&gt;Loading...&lt;/big&gt;&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkScrolledWindow" 
id="GNUNET_setup_gns_main_scrolledwindow">
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">automatic</property>
-                    <property name="vscrollbar_policy">automatic</property>
-                    <child>
-                      <object class="GtkTreeView" 
id="GNUNET_setup_gns_main_treeview">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property 
name="model">GNUNET_setup_gns_treestore</property>
-                        <property name="search_column">0</property>
-                        <signal name="button-press-event" 
handler="GNUNET_setup_gns_main_treeview_button_press_event_cb" swapped="no"/>
-                        <signal name="key-press-event" 
handler="GNUNET_setup_gns_main_treeview_key_press_event_cb" swapped="no"/>
-                        <signal name="popup-menu" 
handler="GNUNET_setup_gns_main_treeview_popup_menu_cb" swapped="no"/>
-                        <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_setup_gns_name_treeviewcolumn">
-                            <property name="title">Name</property>
-                            <property name="clickable">True</property>
-                            <property name="reorderable">True</property>
-                            <property name="sort_indicator">True</property>
-                            <property name="sort_column_id">0</property>
-                            <child>
-                              <object class="GtkCellRendererText" 
id="GNUNET_setup_gns_name_cellrenderertext">
-                                <signal name="edited" 
handler="GNUNET_setup_gns_name_cellrenderertext_edited_cb" swapped="no"/>
-                              </object>
-                              <attributes>
-                                <attribute name="visible">9</attribute>
-                                <attribute name="background">13</attribute>
-                                <attribute name="editable">16</attribute>
-                                <attribute name="text">0</attribute>
-                              </attributes>
-                            </child>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_setup_gns_type_treeviewcolumn">
-                            <property name="sizing">autosize</property>
-                            <property name="fixed_width">90</property>
-                            <property name="title">Type</property>
-                            <property name="clickable">True</property>
-                            <property name="reorderable">True</property>
-                            <property name="sort_indicator">True</property>
-                            <property name="sort_column_id">3</property>
-                            <child>
-                              <object class="GtkCellRendererCombo" 
id="GNUNET_setup_gns_type_cellrenderercombo">
-                                <property 
name="model">GNUNET_setup_gns_type_liststore</property>
-                                <property name="text_column">1</property>
-                                <signal name="edited" 
handler="GNUNET_setup_gns_type_cellrenderercombo_edited_cb" swapped="no"/>
-                              </object>
-                              <attributes>
-                                <attribute name="visible">10</attribute>
-                                <attribute name="editable">14</attribute>
-                                <attribute name="text">3</attribute>
-                              </attributes>
-                            </child>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_setup_gns_value_treeviewcolumn">
-                            <property name="sizing">autosize</property>
-                            <property name="title">Value</property>
-                            <property name="expand">True</property>
-                            <property name="clickable">True</property>
-                            <property name="sort_column_id">7</property>
-                            <child>
-                              <object class="GtkCellRendererText" 
id="GNUNET_setup_gns_value_cellrenderertext"/>
-                              <attributes>
-                                <attribute name="sensitive">11</attribute>
-                                <attribute name="visible">10</attribute>
-                                <attribute name="background">8</attribute>
-                                <attribute name="text">7</attribute>
-                              </attributes>
-                            </child>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_setup_gns_expiration_treeviewcolumn">
-                            <property name="title">Expiration</property>
-                            <property name="clickable">True</property>
-                            <property name="reorderable">True</property>
-                            <property name="sort_indicator">True</property>
-                            <property name="sort_column_id">4</property>
-                            <child>
-                              <object class="GtkCellRendererText" 
id="GNUNET_setup_gns_expiration_cellrenderertext">
-                               <property name="editable">False</property>
-                              </object>
-                              <attributes>
-                                <attribute name="sensitive">11</attribute>
-                                <attribute name="visible">10</attribute>
-                                <attribute name="background">12</attribute>
-                                <attribute name="text">6</attribute>
-                              </attributes>
-                            </child>
-                          </object>
-                        </child>
-                        <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_setup_gns_ispublic_treeviewcolumn">
-                            <property name="sizing">fixed</property>
-                            <property name="fixed_width">50</property>
-                            <property name="title">Public</property>
-                            <property name="clickable">True</property>
-                            <child>
-                              <object class="GtkCellRendererToggle" 
id="GNUNET_setup_gns_ispublic_cellrenderertoggle">
-                               <property name="sensitive">False</property>
-                              </object>
-                             <attributes>
-                                <attribute name="sensitive">11</attribute>
-                                <attribute name="visible">11</attribute>
-                                <attribute name="active">1</attribute>
-                              </attributes>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="position">7</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="GNUNET_setup_gnu_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">.gnu</property>
-              </object>
-              <packing>
-                <property name="position">7</property>
-                <property name="tab_fill">False</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkLinkButton" id="GNUNET_setup_help_text">
-            <property name="label" translatable="yes">Welcome to 
gnunet-setup.</property>
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="has_tooltip">True</property>
-            <property name="relief">none</property>
-            <property name="uri">https://gnunet.org/gnunet-setup</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">GNUNET_setup_cancel_button</action-widget>
-      <action-widget response="-5">GNUNET_setup_save_as_button</action-widget>
-      <action-widget response="-3">GNUNET_setup_save_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_exit_interface_mask_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">127</property>
-    <property name="value">48</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datacache_mysql_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">3306</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datacache_quota_adjustment">
-    <property name="lower">65536</property>
-    <property name="upper">9999999999</property>
-    <property name="value">1024000</property>
-    <property name="step_increment">65536</property>
-    <property name="page_increment">1024000</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datastore_mysql_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">3306</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datastore_quota_adjustment">
-    <property name="lower">1000000</property>
-    <property name="upper">999999999999</property>
-    <property name="value">100000000</property>
-    <property name="step_increment">1000000</property>
-    <property name="page_increment">1000000000</property>
-  </object>
-  <object class="GtkMenu" id="GNUNET_setup_gns_edit_popup_menu">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <child>
-      <object class="GtkMenuItem" id="GNUNET_setup_gns_popup_edit_button">
-        <property name="use_action_appearance">False</property>
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="tooltip_text" translatable="yes">Edit GNS 
entry</property>
-        <property name="label" translatable="yes">Edit</property>
-        <signal name="activate" 
handler="GNUNET_setup_gns_popup_edit_button_activate_cb" swapped="no"/>
-      </object>
-    </child>
-  </object>
-  <object class="GtkListStore" id="GNUNET_setup_gns_exit_dialog_liststore">
-    <columns>
-      <!-- column-name sourceport -->
-      <column type="guint"/>
-      <!-- column-name targetport -->
-      <column type="guint"/>
-      <!-- column-name targethostname -->
-      <column type="gchararray"/>
-      <!-- column-name isudp -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkTreeStore" id="GNUNET_setup_gns_treestore">
-    <columns>
-      <!-- column-name name -->
-      <column type="gchararray"/>
-      <!-- column-name is_public -->
-      <column type="gboolean"/>
-      <!-- column-name record_type -->
-      <column type="guint"/>
-      <!-- column-name record_type_as_string -->
-      <column type="gchararray"/>
-      <!-- column-name expiration_time -->
-      <column type="guint64"/>
-      <!-- column-name expiration_time_is_relative -->
-      <column type="gboolean"/>
-      <!-- column-name expiration_time_as_string -->
-      <column type="gchararray"/>
-      <!-- column-name value_as_string -->
-      <column type="gchararray"/>
-      <!-- column-name value_color -->
-      <column type="gchararray"/>
-      <!-- column-name name_is_editable -->
-      <column type="gboolean"/>
-      <!-- column-name name_is_record_row -->
-      <column type="gboolean"/>
-      <!-- column-name not_dummy_row -->
-      <column type="gboolean"/>
-      <!-- column-name expiration_time_color -->
-      <column type="gchararray"/>
-      <!-- column-name name_color -->
-      <column type="gchararray"/>
-      <!-- column-name type_is_editable -->
-      <column type="gboolean"/>
-      <!-- column-name is_shadow -->
-      <column type="gboolean"/>
-      <!-- column-name name_is_editable -->
-      <column type="gboolean"/>
-      <!-- column-name record_offset -->
-      <column type="guint"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="GNUNET_setup_gns_type_liststore">
-    <columns>
-      <!-- column-name type -->
-      <column type="guint"/>
-      <!-- column-name typename -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">1</col>
-        <col id="1">A</col>
-      </row>
-      <row>
-        <col id="0">2</col>
-        <col id="1">NS</col>
-      </row>
-      <row>
-        <col id="0">5</col>
-        <col id="1">CNAME</col>
-      </row>
-      <row>
-        <col id="0">6</col>
-        <col id="1">SOA</col>
-      </row>
-      <row>
-        <col id="0">12</col>
-        <col id="1">PTR</col>
-      </row>
-      <row>
-        <col id="0">15</col>
-        <col id="1">MX</col>
-      </row>
-      <row>
-        <col id="0">16</col>
-        <col id="1">TXT</col>
-      </row>
-      <row>
-        <col id="0">28</col>
-        <col id="1">AAAA</col>
-      </row>
-      <row>
-        <col id="0">65536</col>
-        <col id="1">PKEY</col>
-      </row>
-      <row>
-        <col id="0">65538</col>
-        <col id="1">LEHO</col>
-      </row>
-      <row>
-        <col id="0">65539</col>
-        <col id="1">VPN</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_hostlist_server_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">8080</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkListStore" id="GNUNET_setup_hostlist_url_liststore">
-    <columns>
-      <!-- column-name url -->
-      <column type="gchararray"/>
-      <!-- column-name editable -->
-      <column type="gboolean"/>
-    </columns>
-  </object>
-  <object class="GtkAdjustment" id="GNUNET_setup_min_friends_adjustment">
-    <property name="upper">9999</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_http_advertised_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">1080</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_http_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">1080</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_https_advertised_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">443</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_https_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">443</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_tcp_adv_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">2086</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_tcp_port_adjustment">
-    <property name="upper">65535</property>
-    <property name="value">2086</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_udp_advertised_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">2086</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_udp_port_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">65535</property>
-    <property name="value">2086</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" 
id="GNUNET_setup_vpn_interface_mask_adjustment">
-    <property name="lower">1</property>
-    <property name="upper">127</property>
-    <property name="value">48</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment1">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment2">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment3">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment4">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment5">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment6">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment7">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment8">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-</interface>

Copied: gnunet-gtk/contrib/gnunet_setup_main_window.glade (from rev 29914, 
gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade)
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_main_window.glade                           
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_main_window.glade   2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,4541 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.20"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkAdjustment" id="GNUNET_setup_bandwidth_in_adjustment">
+    <property name="lower">5000</property>
+    <property name="upper">999999999</property>
+    <property name="value">65536</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="GNUNET_setup_bandwidth_out_adjustment">
+    <property name="lower">1024</property>
+    <property name="upper">999999999</property>
+    <property name="value">65536</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkDialog" id="GNUNET_setup_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">gnunet-setup</property>
+    <property name="window_position">center</property>
+    <property name="icon_name">preferences-system</property>
+    <property name="type_hint">normal</property>
+    <signal name="destroy" handler="GNUNET_SETUP_quit_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="GNUNET_setup_dialog-vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="GNUNET_setup_dialog-action_area">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="GNUNET_setup_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="GNUNET_setup_save_as_button">
+                <property name="label">gtk-save-as</property>
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="GNUNET_setup_save_button">
+                <property name="label">gtk-save</property>
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkNotebook" id="GNUNET_setup_notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <signal name="switch-page" 
handler="GNUNET_setup_notebook_switch_page_cb" swapped="no"/>
+            <child>
+              <object class="GtkVBox" id="GNUNET_setup_general_vbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" 
id="GNUNET_setup_defaultservices_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_defaultservices_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkHBox" 
id="GNUNET_setup_defaultservices_hbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkLabel" 
id="GNUNET_setup_general_services_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">Services:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_topology_checkbutton">
+                                <property name="label" 
translatable="yes">Topology</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="sensitive">False</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="tooltip_text" 
translatable="yes">The topology subsystem is required as it ensures that your 
peer connects to other peers.</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_hostlist_checkbutton">
+                                <property name="label" 
translatable="yes">Hostlist</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="tooltip_text" 
translatable="yes">Hostlist servers are used to find other peers.  Here you can 
choose to offer a hostlist or simply configure which hostlists by other peers 
you want to use.</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_fs_checkbutton">
+                                <property name="label" translatable="yes">File 
_Sharing</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="tooltip_text" 
translatable="yes">Enable GNUnet's file-sharing subsystem.</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_pt_checkbutton">
+                                <property name="label" 
translatable="yes">PT/VPN</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="tooltip_text" 
translatable="yes">Using the PT/VPN subsystems you can tunnel your Internet 
traffic over GNUnet.  This is useful if you want to access the IPv4-Internet if 
you only have IPv6-connectivity or vice versa.  Furthermore, if you are only 
connected to other peers using WLAN, you could also get Internet access in the 
first place by routing IP traffic over GNUnet.</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_exit_checkbutton">
+                                <property name="label" 
translatable="yes">EXIT</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="tooltip_text" 
translatable="yes">By offering an EXIT service, you can allow other peers to 
use your Internet connection to reach the IPv4 and/or IPv6 Internet.  
Naturally, as your machine will be seen as the origin of the traffic, this 
might be risky in some jurisdictions.  Enabling the exit for IPv4 and IPv6 and 
PT/VPN interception for IPv4 and IPv6 on the same machine will still give you 
4to6 and 6to4 protocol translation, allowing you to access IPv4-only servers 
from IPv6-only clients and IPv6-only servers from IPv4-only clients.</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_general_services_gns_checkbutton">
+                                <property name="label" 
translatable="yes">GNS</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="tooltip_text" 
translatable="yes">The GNS is GNUnet's replacement for DNS.  Enabling this 
subsystem will make the ".gnunet" TLD available on your system.  You will be in 
charge of your ".gnunet" TLD.</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">6</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_defaultservices_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Service Configuration&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_topology_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_topology_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkHBox" 
id="GNUNET_setup_topology_hbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_friends_only_checkbutton">
+                                <property name="label" translatable="yes">F_2F 
only</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVSeparator" id="vseparator2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" 
id="GNUNET_setup_friends_file_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">Friends file:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkFileChooserButton" 
id="GNUNET_setup_friends_filechooserbutton">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVSeparator" id="vseparator1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" 
id="GNUNET_setup_minimum_friends_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Min. 
connected friends:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSpinButton" 
id="GNUNET_setup_minimum_friends_spinbutton">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">•</property>
+                                <property 
name="invisible_char_set">True</property>
+                                <property 
name="primary_icon_activatable">False</property>
+                                <property 
name="secondary_icon_activatable">False</property>
+                                <property 
name="primary_icon_sensitive">True</property>
+                                <property 
name="secondary_icon_sensitive">True</property>
+                                <property 
name="adjustment">GNUNET_setup_min_friends_adjustment</property>
+                                <property name="numeric">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">6</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_topology_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Friend-to-Friend Configuration (restricts P2P 
connections)&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_hostlist_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_hostlist_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_hostlist_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_hostlist_basics_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_client_enable_checkbutton">
+                                    <property name="label" 
translatable="yes">Use Hostlists to bootstrap</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_client_learn_checkbutton">
+                                    <property name="label" 
translatable="yes">Learn Servers from P2P Network</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_hostlist_options_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkVBox" 
id="GNUNET_setup_hostlist_server_vbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_offer_hostlist_checkbutton">
+                                        <property name="label" 
translatable="yes">Run Hostlist Server</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_hostlist_offer_hostlist_checkbutton_realize_cb" 
swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" 
id="GNUNET_setup_hostlist_advertise_checkbutton">
+                                        <property name="label" 
translatable="yes">Advertise Hostlist Server</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_hostlist_advertise_checkbutton_realize_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox9">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_hostlist_port_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">Port:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkSpinButton" 
id="GNUNET_setup_hostlist_server_port_spin_button">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="invisible_char">•</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                            <property 
name="adjustment">GNUNET_setup_hostlist_server_port_adjustment</property>
+                                            <property 
name="numeric">True</property>
+                                            <signal name="realize" 
handler="GNUNET_setup_hostlist_server_port_spin_button_realize_cb" 
swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" 
id="GNUNET_setup_hostlist_vbox ">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_hostlist_url_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Known Hostlist Servers:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkScrolledWindow" 
id="GNUNET_setup_hostlist_url_scrolledwindow">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="hadjustment">adjustment7</property>
+                                        <property 
name="vadjustment">adjustment8</property>
+                                        <property 
name="hscrollbar_policy">never</property>
+                                        <child>
+                                          <object class="GtkTreeView" 
id="GNUNET_setup_hostlist_url_treeview">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="model">GNUNET_setup_hostlist_url_liststore</property>
+                                            <property 
name="hadjustment">adjustment7</property>
+                                            <property 
name="vadjustment">adjustment8</property>
+                                            <property 
name="search_column">0</property>
+                                            <signal name="key-press-event" 
handler="GNUNET_setup_treeview_key_press_event_cb" swapped="no"/>
+                                            <child>
+                                              <object 
class="GtkTreeViewColumn" id="GNUNET_setup_hostlist_url_treeviewcolumn">
+                                                <property 
name="sizing">fixed</property>
+                                                <property 
name="title">URL</property>
+                                                <property 
name="expand">True</property>
+                                                <property 
name="clickable">True</property>
+                                                <property 
name="reorderable">True</property>
+                                                <property 
name="sort_indicator">True</property>
+                                                <property 
name="sort_column_id">0</property>
+                                                <child>
+                                                  <object 
class="GtkCellRendererText" id="GNUNET_setup_hostlist_url_cellrenderertext">
+                                                    <property 
name="editable">True</property>
+                                                    <signal name="edited" 
handler="GNUNET_setup_hostlist_url_cellrenderertext_edited_cb" swapped="no"/>
+                                                  </object>
+                                                  <attributes>
+                                                    <attribute 
name="text">0</attribute>
+                                                  </attributes>
+                                                </child>
+                                              </object>
+                                            </child>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_hostlist_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Hostlist Configuration (for bootstrapping the 
network)&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_general_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_General</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="GNUNET_setup_network_tab_vbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_bandwidth_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_bandwidth_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_bandwidth_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_bandwidth_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_bandwidth_in_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Max. download bandwidth (B/s):</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" 
id="GNUNET_setup_bandwidth_in_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">•</property>
+                                    <property 
name="invisible_char_set">True</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                    <property 
name="adjustment">GNUNET_setup_bandwidth_in_adjustment</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_bandwidth_out_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Max. upload bandwidth (B/s)</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" 
id="GNUNET_setup_bandwidth_out_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">•</property>
+                                    <property 
name="invisible_char_set">True</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                    <property 
name="adjustment">GNUNET_setup_bandwidth_out_adjustment</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_bandwidth_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Bandwidth Configuration&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" 
id="GNUNET_setup_transport_nat_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_transport_nat_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_transport_nat_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_transport_nat_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_transport_nat_checkbutton">
+                                    <property name="label" 
translatable="yes">Peer is behind _NAT</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">Check this box if your machine is behind a NAT box (router 
that performs network address translation).  Leave off if your machine has a 
globally unique IPv4 address.  NAT options only impact IPv4 addresses at this 
time.</property>
+                                    <property 
name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" 
id="GNUNET_setup_transport_autoconfig_button">
+                                    <property name="label" 
translatable="yes">Attempt automatic configuration</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">True</property>
+                                    <signal name="clicked" 
handler="GNUNET_setup_transport_autoconfig_button_clicked_cb" swapped="no"/>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_transport_disable_ipv6_checkbutton">
+                                    <property name="label" 
translatable="yes">Disable IPv_6 support</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">Disable advertising IPv6 addresses. Check this box if you 
know that your system has no IPv6 Internet connectivity.</property>
+                                    <property 
name="use_underline">True</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_transport_nat_options_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="spacing">20</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_transport_nat_options_spacer_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" 
id="GNUNET_setup_transport_nat_options_vbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_hole_punched_checkbutton">
+                                        <property name="label" 
translatable="yes">NAT ports have been opened manually</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Set this option if you have configured your NAT to forward 
the ports for the various enabled GNUnet transports.  If the external ports are 
different, the respective values of the external port should be specified under 
"advertised port" for the respective transport. You also need to specify the 
"External (public) IPv4 address" of your NAT box below.</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_upnp_enable_checkbutton">
+                                        <property name="label" 
translatable="yes">Enable NAT traversal via UPnP or PMP</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">This option enables the use of upnpc from miniupnpd for NAT 
traversal</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_icmp_server_enable_checkbutton">
+                                        <property name="label" 
translatable="yes">Enable NAT traversal using ICMP method</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">This option enables the use of the "Autonomous NAT 
Traversal" method (presented at P2P 2010).  It requires 
gnunet-helper-nat-server to be installed SUID on the local system.</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" 
id="GNUNET_setup_transport_external_ip_hbox">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_transport_external_ip_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="tooltip_text" 
translatable="yes">Globally visible IP address of your system (IP address of 
the external interface of your NAT).  You can also specify a hostname, in which 
case GNUnet will periodically look up the hostname in DNS to determine our 
external IP address (DynDNS setup).</property>
+                                            <property name="label" 
translatable="yes">External (public) IPv4 address:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" 
id="GNUNET_setup_transport_external_ip_address_entry">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="max_length">255</property>
+                                            <property 
name="invisible_char">●</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckButton" 
id="GNUNET_setup_transport_icmp_client_enable_checkbutton">
+                                        <property name="label" 
translatable="yes">Enable connecting to NATed peers using ICMP method</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">This method allows this peer to initiate connections to 
NATed peers using the 'Autonomous NAT traversal' method (presented at P2P 
2010). It requires having gnunet-helper-nat-client installed SUID on the local 
system.</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property 
name="draw_indicator">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" 
id="GNUNET_setup_transport_internal_ip_hbox">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_transport_internal_ip_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="tooltip_text" 
translatable="yes">Specify the IPv4 address of your computers main network 
interface (typically eth0 or wlan0).</property>
+                                            <property name="label" 
translatable="yes">Internal (private) IPv4 address:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" 
id="GNUNET_setup_transport_internal_ip_entry">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="max_length">15</property>
+                                            <property 
name="invisible_char">●</property>
+                                            <property 
name="width_chars">15</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">5</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_transport_nat_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;NAT 
Traversal Configuration&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_network_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Network</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="GNUNET_setup_transport_main_frame">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" 
id="GNUNET_setup_transport_main_alignment">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkVBox" 
id="GNUNET_setup_transport_main_vbox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">5</property>
+                        <child>
+                          <object class="GtkHBox" 
id="GNUNET_setup_transport_plugins_hbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkLabel" 
id="GNUNET_setup_transportlabel">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">Plugins to use:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_tcp_checkbutton">
+                                <property name="label" 
translatable="yes">_TCP</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_tcp_checkbutton_realize_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_udp_checkbutton">
+                                <property name="label" 
translatable="yes">_UDP</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_udp_checkbutton_realize_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_http_client_checkbutton">
+                                <property name="label" 
translatable="yes">_HTTP Client</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_http_client_checkbutton_realize_cb" 
swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_http_server_checkbutton">
+                                <property name="label" 
translatable="yes">HTT_P Server</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_http_server_checkbutton_realize_cb" 
swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_https_client_checkbutton">
+                                <property name="label" 
translatable="yes">HTTPS _Client</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_https_client_checkbutton_realize_cb" 
swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_https_server_checkbutton">
+                                <property name="label" 
translatable="yes">HTTPS _Server</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_https_server_checkbutton_realize_cb" 
swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">6</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_dv_checkbutton">
+                                <property name="label" 
translatable="yes">D_V</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_dv_checkbutton_realize_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">7</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_transport_wlan_checkbutton">
+                                <property name="label" 
translatable="yes">_WLAN</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="xalign">0</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="realize" 
handler="GNUNET_setup_transport_wlan_checkbutton_realize_cb" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">8</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkNotebook" 
id="GNUNET_setup_transport_notebook">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <child>
+                              <object class="GtkVBox" 
id="GNUNET_setup_transport_tcp_vbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="spacing">5</property>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_tcp_port_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Bind to port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_tcp_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_tcp_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_port_detail_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Use Port "0" to only allow outgoing TCP 
connections</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">10</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_tcp_adv_port_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_adv_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Advertised port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_tcp_adv_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">●</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_tcp_adv_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_adv_detail_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">10</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_tcp_test_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label3">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_transport_tcp_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_transport_tcp_test_button_clicked_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_tcp_test_success_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_tcp_test_fail_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label5">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="tab">
+                              <object class="GtkLabel" 
id="GNUNET_setup_transport_tcp_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">TCP</property>
+                              </object>
+                              <packing>
+                                <property name="tab_fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" 
id="GNUNET_setup_transport_udp_vbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_udp_port_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Port number that GNUnet's UDP transport should bind to on 
the local system</property>
+                                        <property name="label" 
translatable="yes">Bind to port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_udp_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_udp_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_udp_advertised_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_advertised_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Advertised port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_udp_advertised_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="invisible_char">●</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_udp_advertised_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_adv_detail_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">10</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_udp_test_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label1">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_transport_udp_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_transport_udp_test_button_clicked_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_udp_test_success_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_udp_test_fail_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label2">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child type="tab">
+                              <object class="GtkLabel" 
id="GNUNET_setup_transport_udp_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">UDP</property>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                                <property name="tab_fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" 
id="GNUNET_setup_transport_http_vbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_http_port_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_http_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property 
name="has_tooltip">True</property>
+                                        <property name="tooltip_markup">Port 
number that GNUnet&amp;apos;s UDP transport should bind to on the local 
system</property>
+                                        <property name="tooltip_text" 
translatable="yes">Port number that GNUnet's UDP transport should bind to on 
the local system</property>
+                                        <property name="label" 
translatable="yes">Bind to port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_http_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_http_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_http_advertised_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_http_advertised_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Advertised port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_http_advertised_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">●</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_http_advertised_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_http_adv_detail_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">10</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_http_test_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label4">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_transport_http_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_transport_http_test_button_clicked_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_http_test_success_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_http_test_fail_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label6">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child type="tab">
+                              <object class="GtkLabel" 
id="GNUNET_setup_transport_http_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">HTTP</property>
+                              </object>
+                              <packing>
+                                <property name="position">2</property>
+                                <property name="tab_fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" 
id="GNUNET_setup_transport_https_vbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_https_port_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_https_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property 
name="has_tooltip">True</property>
+                                        <property name="tooltip_markup">Port 
number that GNUnet&amp;apos;s UDP transport should bind to on the local 
system</property>
+                                        <property name="tooltip_text" 
translatable="yes">Port number that GNUnet's UDP transport should bind to on 
the local system</property>
+                                        <property name="label" 
translatable="yes">Bind to port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_https_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_https_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_https_advertised_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="spacing">5</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_https_advertised_port_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Advertised port:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkSpinButton" 
id="GNUNET_setup_transport_https_advertised_port_spinbutton">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">5</property>
+                                        <property 
name="invisible_char">●</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <property 
name="adjustment">GNUNET_setup_transport_https_advertised_port_adjustment</property>
+                                        <property 
name="numeric">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_https_adv_detail_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">External port visible on our public IP address after 
mappings by NAT/firewalls</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">10</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_https_test_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label7">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_transport_https_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test your network configuration by contacting a public 
gnunet-nat-server and asking it to establish a connection to your system for 
testing.  This test can only work if you are not running your peer at the time 
you run the test.</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_transport_https_test_button_clicked_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_https_test_success_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_transport_https_test_fail_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Test failed!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label8">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">4</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                            <child type="tab">
+                              <object class="GtkLabel" 
id="GNUNET_setup_transport_https_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">HTTPS</property>
+                              </object>
+                              <packing>
+                                <property name="position">3</property>
+                                <property name="tab_fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" 
id="GNUNET_setup_transport_dv_vbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">4</property>
+                              </packing>
+                            </child>
+                            <child type="tab">
+                              <object class="GtkLabel" 
id="GNUNET_setup_transport_dv_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">DV</property>
+                              </object>
+                              <packing>
+                                <property name="position">4</property>
+                                <property name="tab_fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" 
id="GNUNET_setup_transport_wlan_vbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_transport_wlan_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_transport_wlan_interface_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Name of _Monitor Interface</property>
+                                        <property 
name="use_underline">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" 
id="GNUNET_setup_transport_wlan_interface_entry">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="max_length">255</property>
+                                        <property 
name="invisible_char">●</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">5</property>
+                              </packing>
+                            </child>
+                            <child type="tab">
+                              <object class="GtkLabel" 
id="GNUNET_setup_transport_wlan_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" 
translatable="yes">WLAN</property>
+                              </object>
+                              <packing>
+                                <property name="position">5</property>
+                                <property name="tab_fill">False</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" 
id="GNUNET_setup_transport_notebook_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">&lt;b&gt;Transport Configuration&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_transport_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">_Transports</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="GNUNET_setup_fs_main_vbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_fs_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_fs_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkHBox" 
id="GNUNET_setup_fs_migration_hbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_fs_migration_from_checkbutton">
+                                <property name="label" 
translatable="yes">Enable unsolicited content transmission from this 
peer</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_fs_migration_to_checkbutton">
+                                <property name="label" 
translatable="yes">Enable caching content at this peer</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="xalign">0</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_fs_options_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;File Sharing Options&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_datastore_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_datastore_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_datastore_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_datastore_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_datastore_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Database Backend to use:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHButtonBox" 
id="GNUNET_setup_datastore_hbuttonbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property 
name="layout_style">start</property>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datastore_sqlite_radiobutton">
+                                        <property name="label" 
translatable="yes">sqLite</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_fs_datastore_sqlite_radiobutton_realize_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datastore_mysql_radiobutton">
+                                        <property name="label" 
translatable="yes">MySQL</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="yalign">0.50999999046325684</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <property 
name="group">GNUNET_setup_fs_datastore_sqlite_radiobutton</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_fs_datastore_mysql_radiobutton_realize_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datastore_postgres_radiobutton">
+                                        <property name="label" 
translatable="yes">Postgres</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <property 
name="group">GNUNET_setup_fs_datastore_sqlite_radiobutton</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_fs_datastore_postgres_radiobutton_realize_cb" 
swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVSeparator" 
id="GNUNET_setup_datastore_vseparator">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datastore_quota_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Quota (bytes):</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" 
id="GNUNET_setup_fs_datastore_quota_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">•</property>
+                                    <property 
name="invisible_char_set">True</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                    <property 
name="adjustment">GNUNET_setup_fs_datastore_quota_adjustment</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">4</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkNotebook" 
id="GNUNET_setup_fs_datastore_notebook">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datastore_sqlite_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">No setup required.</property>
+                                  </object>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkLabel" 
id="GNUNET_setup_datastore_sqlite_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">sqLite</property>
+                                  </object>
+                                  <packing>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" 
id="GNUNET_setup_datastore_mysql_vbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_database_name_hbox">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_database_name_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">MySQL database name:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_database_name_entry">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="invisible_char">•</property>
+                                            <property name="text" 
translatable="yes">gnunet</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                            <signal name="changed" 
handler="GNUNET_setup_datastore_mysql_invalidate_cb" swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_config_file_hbox">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_config_file_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">Configuration file:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkFileChooserButton" 
id="GNUNET_setup_datastore_mysql_config_file_filechooserbutton">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_username_password_hbox">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_username_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">Username:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_username_entry">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="invisible_char">•</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_password_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">Password:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="position">2</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_password_entry">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="invisible_char">•</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">3</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_hostname_hbox">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_hostname_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">MySQL Server Hostname:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" 
id="GNUNET_setup_datastore_mysql_hostname_entry">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="invisible_char">•</property>
+                                            <property name="text" 
translatable="yes">localhost</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_port_label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property name="label" 
translatable="yes">Port:</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">2</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkSpinButton" 
id="GNUNET_setup_datastore_mysql_port_spinbutton">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="invisible_char">•</property>
+                                            <property 
name="invisible_char_set">True</property>
+                                            <property 
name="primary_icon_activatable">False</property>
+                                            <property 
name="secondary_icon_activatable">False</property>
+                                            <property 
name="primary_icon_sensitive">True</property>
+                                            <property 
name="secondary_icon_sensitive">True</property>
+                                            <property 
name="adjustment">GNUNET_setup_fs_datastore_mysql_port_adjustment</property>
+                                            <property 
name="numeric">True</property>
+                                            <signal name="value-changed" 
handler="GNUNET_setup_datastore_mysql_invalidate_cb" swapped="no"/>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">False</property>
+                                            <property 
name="padding">5</property>
+                                            <property 
name="position">3</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkHBox" 
id="GNUNET_setup_datastore_mysql_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_mysql_tab_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">MySQL</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_datastore_mysql_tab_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_datastore_mysql_tab_test_button_clicked_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_mysql_tab_ok_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_mysql_tab_error_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_datastore_postgres_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_postgres_config_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Configuration:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" 
id="GNUNET_setup_datastore_postgres_config_entry">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <signal name="changed" 
handler="GNUNET_setup_datastore_postgres_invalidate_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkHBox" 
id="GNUNET_setup_datastore_postgres_hbox ">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_postgres_tab_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Postgres</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_datastore_postgres_tab_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_datastore_postgres_tab_test_button_clicked_cb" 
swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_postgres_tab_ok_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_datastore_postgres_tab_error_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">2</property>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_datastore_frame_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Configure Datastore (persistent 
storage)&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_datacache_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_datacache_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_datacache_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_datacache_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_datacache_label1">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Datacache:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHButtonBox" 
id="GNUNET_setup_datacache_hbuttonbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property 
name="layout_style">start</property>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datacache_sqlite_radiobutton">
+                                        <property name="label" 
translatable="yes">sqLite</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_fs_datacache_sqlite_radiobutton_realize_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datacache_heap_radiobutton">
+                                        <property name="label" 
translatable="yes">Memory</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="yalign">0.50999999046325684</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <property 
name="group">GNUNET_setup_fs_datacache_sqlite_radiobutton</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_fs_datacache_heap_radiobutton_realize_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_fs_datacache_postgres_radiobutton">
+                                        <property name="label" 
translatable="yes">Postgres</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <property 
name="group">GNUNET_setup_fs_datacache_sqlite_radiobutton</property>
+                                        <signal name="realize" 
handler="GNUNET_setup_fs_datacache_postgres_radiobutton_realize_cb" 
swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVSeparator" 
id="GNUNET_setup_datacache_vseparator">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_quota_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Quota (bytes):</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" 
id="GNUNET_setup_fs_datacache_quota_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">•</property>
+                                    <property 
name="invisible_char_set">True</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                    <property 
name="adjustment">GNUNET_setup_fs_datacache_quota_adjustment</property>
+                                    <property name="numeric">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">4</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkNotebook" 
id="GNUNET_setup_fs_datacache_notebook">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_sqlite_body_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">No setup required.</property>
+                                  </object>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_sqlite_tab_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">sqLite</property>
+                                  </object>
+                                  <packing>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkVBox" 
id="GNUNET_setup_datacache_heap_vbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkLabel" 
id="GNUNET_setup_fs_datacache_heap_tab_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">sqLite</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_datacache_postgres_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_datacache_postgres_config_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Configuration:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" 
id="GNUNET_setup_datacache_postgres_config_entry">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                        <signal name="changed" 
handler="GNUNET_setup_datacache_postgres_invalidate_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">2</property>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkHBox" 
id="GNUNET_setup_datacache_postgres_tab_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_datacache_postgres_tab_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Postgres</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_datacache_postgres_tab_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_datacache_postgres_tab_test_button_clicked_cb" 
swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_datacache_postgres_tab_ok_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_datacache_postgres_tab_error_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">2</property>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_datacache_frame_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Configure Datacache (temporary 
storage)&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_fs_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_File 
Sharing</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="GNUNET_setup_vpn_vbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_pt_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_pt_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="GNUNET_setup_pt_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_pt_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_pt_ipv4_checkbutton">
+                                    <property name="label" 
translatable="yes">Tunnel IPv4 Traffic</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">By enabling this option, all of your IPv4-Internet traffic 
will be routed over GNUnet to a GNUnet exit node.  Note that this will enable 
other GNUnet peers to observe your unencrypted Internet traffic. This enables 
4over6 tunneling and 4to6 protocol translation.</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_pt_ipv6_checkbutton">
+                                    <property name="label" 
translatable="yes">Tunnel IPv6 Traffic</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">By enabling this option, all of your IPv6-Internet traffic 
will be routed over GNUnet to a GNUnet exit node.  Note that this will enable 
other GNUnet peers to observe your unencrypted Internet traffic.  This enables 
6over4 tunneling and 6to4 protocol translation.</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_pt_dns_checkbutton">
+                                    <property name="label" 
translatable="yes">Tunnel DNS Traffic</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">Enabling this option will cause your DNS traffic to be 
routed via the GNUnet network to some other peer offering DNS exit 
functionality. This is needed if you have no Internet access (and are thus 
tunnelling both IPv4 and IPv6 traffic over GNUnet).  If you have regular 
Internet access, this option only makes sense if you want to get some 'weak' 
anonymity by tunnelling all of your traffic over GNUnet (using the network as a 
1-hop proxy in the worst-case, so this does not provide you with strong 
anonymity).</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" id="GNUNET_setup_pt_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Protocol Translation and Tunneling 
Configuration&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" 
id="GNUNET_setup_vpn_interface_configuration_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_vpn_interface_configuration_frame_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" id="GNUNET_setup_vpn__vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_vpn_interface_hbox">
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">_Interface name:</property>
+                                    <property 
name="use_underline">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="tooltip_text" 
translatable="yes">Name of the TUN interface GNUnet will create for 
intercepting outgoing Internet traffic from your machine.  The default 
"gnunet-vpn" is almost always fine.</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_vpn_interface_v4_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v4_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">IPv4 address for interface:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_v4_ip_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v4_slash_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">/</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_v4_mask_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_vpn_interface_v6_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v6_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">IPv6 address for interface: </property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_vpn_interface_v6_ip_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_v6_slash_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">/</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" 
id="GNUNET_setup_vpn_interface_v6_mask_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                    <property 
name="adjustment">GNUNET_setup_vpn_interface_mask_adjustment</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_vpn_interface_configuration_frame_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;VPN 
Interface Configuration&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">4</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_vpn_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="tooltip_text" translatable="yes">Configuration 
of the GNUnet VPN and the Protocol Translation (6to4, 4to6, 6over4, 4over6) 
facilities</property>
+                <property name="label" translatable="yes">_VPN</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">4</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="GNUNET_setup_exit_vbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_exit_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_exit_frame_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_exit_frame_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_exit_master_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_dns_enable_exit_checkbutton">
+                                    <property name="label" 
translatable="yes">Enable DNS Exit</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_exit_enable_ipv4_exit_checkbutton">
+                                    <property name="label" 
translatable="yes">Enable IPv4 Exit</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">This option will allow other peers to send IPv4 traffic to 
the Internet using your network connection.</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" 
id="GNUNET_setup_exit_enable_ipv6_exit_checkbutton">
+                                    <property name="label" 
translatable="yes">Enable IPv6 Exit</property>
+                                    <property 
name="use_action_appearance">False</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="receives_default">False</property>
+                                    <property name="tooltip_text" 
translatable="yes">This option will allow other peers to send IPv6 traffic to 
the Internet using your network connection.  You should make sure that you have 
IPv6-support before enabling this option.</property>
+                                    <property name="xalign">0</property>
+                                    <property 
name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_dns_resolver_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_dns_resolver_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">IP Address of external DNS Resolver:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_dns_resolver_ip_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_exit_frame_hbox">
+                                <property name="can_focus">False</property>
+                                <property name="spacing">5</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_interface_name_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Exit interface name: </property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_name_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="tooltip_text" 
translatable="yes">Name of the TUN interface GNUnet will create for Internet 
traffic exiting GNUnet via your machine.  The default "gnunet-exit" is almost 
always fine.</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_exit_ipv4_address_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv4_address_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">IPv4 address for Exit interface: </property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_v4_ip_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="tooltip_text" 
translatable="yes">Use a private IPv4 network here that does not conflict with 
your existing setup (i.e. something like 10.53.0.1/255.255.0.0 or 
192.168.0.1/255.255.0.0).  </property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv4_address_slash_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">/</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_v4_mask_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="padding">5</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_exit_ipv6_address_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv6_address_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">IPv6 address for Exit interface: </property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkEntry" 
id="GNUNET_setup_exit_interface_v6_ip_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="tooltip_text" 
translatable="yes">This should be a globally routed IPv6 subnet of your host.  
Alternatively, if your kernel supports IPv6-NAT, you can pick any site-local 
prefix and manually configure IPv6-NAT.</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_exit_ipv6_address_slash_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">/</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" 
id="GNUNET_setup_exit_interface_v6_mask_spinbutton">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="invisible_char">●</property>
+                                    <property 
name="primary_icon_activatable">False</property>
+                                    <property 
name="secondary_icon_activatable">False</property>
+                                    <property 
name="primary_icon_sensitive">True</property>
+                                    <property 
name="secondary_icon_sensitive">True</property>
+                                    <property 
name="adjustment">GNUNET_setup_exit_interface_mask_adjustment</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">3</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">True</property>
+                                <property name="position">4</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_exit_frame_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;GNUnet Exit Configuration&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">5</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_exit_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Exit</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">5</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="GNUNET_setup_namestore_vbox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_namestore_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_namestore_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_namestore_vbox1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkHBox" 
id="GNUNET_setup_namestore_hbox">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_namestore_label1">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">Database Backend to use:</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">5</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHButtonBox" 
id="GNUNET_setup_namestore_hbuttonbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property 
name="layout_style">start</property>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_namestore_sqlite_radiobutton">
+                                        <property name="label" 
translatable="yes">sqLite</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <signal name="toggled" 
handler="GNUNET_setup_namestore_sqlite_radiobutton_toggled_cb" swapped="no"/>
+                                        <signal name="realize" 
handler="GNUNET_setup_namestore_sqlite_radiobutton_realize_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkRadioButton" 
id="GNUNET_setup_namestore_postgres_radiobutton">
+                                        <property name="label" 
translatable="yes">Postgres</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property 
name="draw_indicator">True</property>
+                                        <property 
name="group">GNUNET_setup_namestore_sqlite_radiobutton</property>
+                                        <signal name="toggled" 
handler="GNUNET_setup_namestore_postgres_radiobutton_toggled_cb" swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkNotebook" 
id="GNUNET_setup_namestore_notebook">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <child>
+                                  <object class="GtkLabel" 
id="GNUNET_setup_namestore_sqlite_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">No setup required.</property>
+                                  </object>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkLabel" 
id="GNUNET_setup_namestore_sqlite_tab_label">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="label" 
translatable="yes">sqLite</property>
+                                  </object>
+                                  <packing>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHBox" 
id="GNUNET_setup_namestore_postgres_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_namestore_postgres_config_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Configuration:</property>
+                                      </object>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" 
id="GNUNET_setup_namestore_postgres_config_entry">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="invisible_char">•</property>
+                                        <property 
name="invisible_char_set">True</property>
+                                        <property 
name="primary_icon_activatable">False</property>
+                                        <property 
name="secondary_icon_activatable">False</property>
+                                        <property 
name="primary_icon_sensitive">True</property>
+                                        <property 
name="secondary_icon_sensitive">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child type="tab">
+                                  <object class="GtkHBox" 
id="GNUNET_setup_namestore_postgres_tab_hbox ">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkLabel" 
id="GNUNET_setup_namestore_postgres_tab_label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">Postgres</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" 
id="GNUNET_setup_namestore_postgres_tab_test_button">
+                                        <property name="label" 
translatable="yes">Test configuration</property>
+                                        <property 
name="use_action_appearance">False</property>
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">True</property>
+                                        <property 
name="receives_default">True</property>
+                                        <signal name="clicked" 
handler="GNUNET_setup_namestore_postgres_tab_test_button_clicked_cb" 
swapped="no"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_namestore_postgres_tab_ok_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration works!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-ok.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkImage" 
id="GNUNET_setup_namestore_postgres_tab_error_image">
+                                        <property 
name="can_focus">False</property>
+                                        <property name="tooltip_text" 
translatable="yes">Configuration error!</property>
+                                        <property 
name="pixbuf">gnunet-setup-oxygen-cancel.png</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                    <property name="tab_fill">False</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_namestore_frame_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Configure Namestore (persistent 
storage)&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkFrame" id="GNUNET_setup_gns_frame">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <object class="GtkAlignment" 
id="GNUNET_setup_gns_alignment">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkVBox" 
id="GNUNET_setup_gns_option_vbox">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_gns_hijack_checkbutton">
+                                <property name="label" 
translatable="yes">Enable iptables-based DNS hijacking 
(GNU/Linux-only)</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">5</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" 
id="GNUNET_setup_gns_auto_import_checkbutton">
+                                <property name="label" 
translatable="yes">Enable automatic shortening</property>
+                                <property 
name="use_action_appearance">False</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property 
name="receives_default">False</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child type="label">
+                      <object class="GtkLabel" 
id="GNUNET_setup_gns_option_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" 
translatable="yes">&lt;b&gt;Configure GNUnet Naming System&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">6</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="GNUNET_setup_namestore_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">GNS &amp; 
N_amestore</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="position">6</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLinkButton" id="GNUNET_setup_help_text">
+            <property name="label" translatable="yes">Welcome to 
gnunet-setup.</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="has_tooltip">True</property>
+            <property name="relief">none</property>
+            <property name="uri">https://gnunet.org/gnunet-setup</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">GNUNET_setup_cancel_button</action-widget>
+      <action-widget response="-5">GNUNET_setup_save_as_button</action-widget>
+      <action-widget response="-3">GNUNET_setup_save_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_exit_interface_mask_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">127</property>
+    <property name="value">48</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datacache_mysql_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">3306</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datacache_quota_adjustment">
+    <property name="lower">65536</property>
+    <property name="upper">9999999999</property>
+    <property name="value">1024000</property>
+    <property name="step_increment">65536</property>
+    <property name="page_increment">1024000</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datastore_mysql_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">3306</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_fs_datastore_quota_adjustment">
+    <property name="lower">1000000</property>
+    <property name="upper">999999999999</property>
+    <property name="value">100000000</property>
+    <property name="step_increment">1000000</property>
+    <property name="page_increment">1000000000</property>
+  </object>
+  <object class="GtkListStore" id="GNUNET_setup_gns_exit_dialog_liststore">
+    <columns>
+      <!-- column-name sourceport -->
+      <column type="guint"/>
+      <!-- column-name targetport -->
+      <column type="guint"/>
+      <!-- column-name targethostname -->
+      <column type="gchararray"/>
+      <!-- column-name isudp -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkTreeStore" id="GNUNET_setup_gns_treestore">
+    <columns>
+      <!-- column-name name -->
+      <column type="gchararray"/>
+      <!-- column-name is_public -->
+      <column type="gboolean"/>
+      <!-- column-name record_type -->
+      <column type="guint"/>
+      <!-- column-name record_type_as_string -->
+      <column type="gchararray"/>
+      <!-- column-name expiration_time -->
+      <column type="guint64"/>
+      <!-- column-name expiration_time_is_relative -->
+      <column type="gboolean"/>
+      <!-- column-name expiration_time_as_string -->
+      <column type="gchararray"/>
+      <!-- column-name value_as_string -->
+      <column type="gchararray"/>
+      <!-- column-name value_color -->
+      <column type="gchararray"/>
+      <!-- column-name name_is_editable -->
+      <column type="gboolean"/>
+      <!-- column-name name_is_record_row -->
+      <column type="gboolean"/>
+      <!-- column-name not_dummy_row -->
+      <column type="gboolean"/>
+      <!-- column-name expiration_time_color -->
+      <column type="gchararray"/>
+      <!-- column-name name_color -->
+      <column type="gchararray"/>
+      <!-- column-name type_is_editable -->
+      <column type="gboolean"/>
+      <!-- column-name is_shadow -->
+      <column type="gboolean"/>
+      <!-- column-name name_is_editable1 -->
+      <column type="gboolean"/>
+      <!-- column-name record_offset -->
+      <column type="guint"/>
+    </columns>
+  </object>
+  <object class="GtkListStore" id="GNUNET_setup_gns_type_liststore">
+    <columns>
+      <!-- column-name type -->
+      <column type="guint"/>
+      <!-- column-name typename -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">1</col>
+        <col id="1">A</col>
+      </row>
+      <row>
+        <col id="0">2</col>
+        <col id="1">NS</col>
+      </row>
+      <row>
+        <col id="0">5</col>
+        <col id="1">CNAME</col>
+      </row>
+      <row>
+        <col id="0">6</col>
+        <col id="1">SOA</col>
+      </row>
+      <row>
+        <col id="0">12</col>
+        <col id="1">PTR</col>
+      </row>
+      <row>
+        <col id="0">15</col>
+        <col id="1">MX</col>
+      </row>
+      <row>
+        <col id="0">16</col>
+        <col id="1">TXT</col>
+      </row>
+      <row>
+        <col id="0">28</col>
+        <col id="1">AAAA</col>
+      </row>
+      <row>
+        <col id="0">65536</col>
+        <col id="1">PKEY</col>
+      </row>
+      <row>
+        <col id="0">65538</col>
+        <col id="1">LEHO</col>
+      </row>
+      <row>
+        <col id="0">65539</col>
+        <col id="1">VPN</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_hostlist_server_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">8080</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkListStore" id="GNUNET_setup_hostlist_url_liststore">
+    <columns>
+      <!-- column-name url -->
+      <column type="gchararray"/>
+      <!-- column-name editable -->
+      <column type="gboolean"/>
+    </columns>
+  </object>
+  <object class="GtkAdjustment" id="GNUNET_setup_min_friends_adjustment">
+    <property name="upper">9999</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_http_advertised_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">1080</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_http_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">1080</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_https_advertised_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">443</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_https_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">443</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_tcp_adv_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">2086</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_tcp_port_adjustment">
+    <property name="upper">65535</property>
+    <property name="value">2086</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_udp_advertised_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">2086</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_transport_udp_port_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">65535</property>
+    <property name="value">2086</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" 
id="GNUNET_setup_vpn_interface_mask_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">127</property>
+    <property name="value">48</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment3">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment5">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment6">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment7">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment8">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+</interface>

Deleted: gnunet-gtk/contrib/gnunet_setup_qr_save_as_dialog.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_qr_save_as_dialog.glade     2013-10-07 
14:19:52 UTC (rev 29924)
+++ gnunet-gtk/contrib/gnunet_setup_qr_save_as_dialog.glade     2013-10-07 
14:35:42 UTC (rev 29925)
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
-  <object class="GtkFileChooserDialog" id="GNUNET_setup_qr_save_as_dialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="icon_name">document-save-as</property>
-    <property name="type_hint">dialog</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <property name="action">save</property>
-    <signal name="response" 
handler="GNUNET_setup_qr_save_as_dialog_response_cb" swapped="no"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="GNUNET_setup_qr_save_as_dialog_dialog-vbox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" 
id="GNUNET_setup_qr_save_as_dialog_dialog-action_area">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" 
id="GNUNET_setup_qr_save_as_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" 
id="GNUNET_setup_qr_save_as_dialog_confirm_button">
-                <property name="label">gtk-save-as</property>
-                <property name="use_action_appearance">False</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget 
response="-6">GNUNET_setup_qr_save_as_dialog_cancel_button</action-widget>
-      <action-widget 
response="-5">GNUNET_setup_qr_save_as_dialog_confirm_button</action-widget>
-    </action-widgets>
-  </object>
-</interface>

Modified: gnunet-gtk/src/Makefile.am
===================================================================
--- gnunet-gtk/src/Makefile.am  2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/src/Makefile.am  2013-10-07 14:35:42 UTC (rev 29925)
@@ -1 +1 @@
-SUBDIRS = . include lib $(GNUNET_FS_APP) $(GNUNET_SETUP_APP) 
$(GNUNET_PEERINFO_APP) statistics identity
+SUBDIRS = . include lib $(GNUNET_FS_APP) $(GNUNET_SETUP_APP) 
$(GNUNET_PEERINFO_APP) statistics identity namestore

Index: gnunet-gtk/src/namestore
===================================================================
--- gnunet-gtk/src/namestore    2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/src/namestore    2013-10-07 14:35:42 UTC (rev 29925)

Property changes on: gnunet-gtk/src/namestore
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,4 ##
+Makefile.in
+Makefile
+gnunet-setup
+.deps
Added: gnunet-gtk/src/namestore/Makefile.am
===================================================================
--- gnunet-gtk/src/namestore/Makefile.am                                (rev 0)
+++ gnunet-gtk/src/namestore/Makefile.am        2013-10-07 14:35:42 UTC (rev 
29925)
@@ -0,0 +1,26 @@
+SUBDIRS = .
+
+INCLUDES = \
+  -I$(top_srcdir)/ \
+  -I$(top_srcdir)/src/include
+
+bin_PROGRAMS = gnunet-setup
+
+gnunet_setup_SOURCES = \
+  gnunet-namestore-gtk.c \
+  gnunet-namestore-gtk_edit.c gnunet-namestore-gtk_edit.h
+gnunet_setup_LDADD = \
+  $(top_builddir)/src/lib/libgnunetgtk.la \
+  @GTK_LIBS@ @GNUNET_LIBS@ @GLADE_LIBS@ @QR_LIBS@ \
+  $(WINLIBS) \
+  -lgnunetutil -lgnunetnamestore -lgnunetdnsparser \
+  -lgnunetidentity \
+  $(INTLLIBS)
+gnunet_setup_CFLAGS = \
+  @GTK_CFLAGS@ \
+  @GNUNET_CFLAGS@ \
+  @GLADE_CFLAGS@ \
+  @QR_CFLAGS@
+
+gnunet_setup_LDFLAGS = \
+  -export-dynamic

Added: gnunet-gtk/src/namestore/gnunet-namestore-gtk.c
===================================================================
--- gnunet-gtk/src/namestore/gnunet-namestore-gtk.c                             
(rev 0)
+++ gnunet-gtk/src/namestore/gnunet-namestore-gtk.c     2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -0,0 +1,2279 @@
+/*
+     This file is part of GNUnet
+     (C) 2012, 2013 Christian Grothoff (and other contributing authors)
+
+     GNUnet 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 3, or (at your
+     option) any later version.
+
+     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file src/namestore/gnunet-namestore-gtk.c
+ * @author Christian Grothoff
+ * @brief edit GNS zones
+ */
+#include "gnunet_gtk.h"
+#include "gnunet-namestore-gtk_edit.h"
+#include <gnunet/gnunet_gns_service.h>
+#include <gnunet/gnunet_identity_service.h>
+#include <gnunet/gnunet_namestore_service.h>
+#include <gnunet/gnunet_dnsparser_lib.h>
+
+/**
+ * Text we use for the 'name' entry for the user to select
+ * for creating a new name.
+ */
+#define NEW_NAME_STR gettext_noop ("<new name>")
+
+/**
+ * Text we use for the 'type' selection for the user to
+ * select when adding a new record.
+ */
+#define NEW_RECORD_STR gettext_noop ("<new record>")
+
+/**
+ * Text we use for the expiration to mean 'never expires'.
+ */
+#define EXPIRE_NEVER_STRING gettext_noop ("never")
+
+/**
+ * Text we use for invalid values.
+ */
+#define EXPIRE_INVALID_STRING gettext_noop ("invalid")
+
+/**
+ * Height and width of the QR code we display
+ */
+#define QRCODE_IMAGE_SIZE 64
+
+/**
+ * Columns in the gns model.
+ */
+enum GNSTreestoreColumn
+{
+  /**
+   * A gchararray with the value for the 'name' column.
+   */
+  GNS_TREESTORE_COL_NAME = 0,
+
+  /**
+   * A gboolean, TRUE if the record is public, FALSE if it is private.
+   */
+  GNS_TREESTORE_COL_IS_PUBLIC,
+
+  /**
+   * A guint with the record type (numeric value)
+   */
+  GNS_TREESTORE_COL_RECORD_TYPE,
+
+  /**
+   * A gchararray with the record type (human-readable string)
+   */
+  GNS_TREESTORE_COL_RECORD_TYPE_AS_STR,
+
+  /**
+   * A guint64 with the expiration time (relative or absolute)
+   */
+  GNS_TREESTORE_COL_EXP_TIME,
+
+  /**
+   * A gboolean, TRUE if the expiration time is relative.
+   */
+  GNS_TREESTORE_COL_EXP_TIME_IS_REL,
+
+  /**
+   * A gchararray with the expiration time as a human-readable string.
+   */
+  GNS_TREESTORE_COL_EXP_TIME_AS_STR,
+
+  /**
+   * A gchararray with the value of the record as a human-readable string.
+   */
+  GNS_TREESTORE_COL_VAL_AS_STR,
+
+  /**
+   * A gchararray with the background color to use for the value.
+   */
+  GNS_TREESTORE_COL_VAL_COLOR,
+
+  /**
+   * A gboolean; TRUE if the 'name' column should be shown,
+   * FALSE for the lines with the individual records under a name.
+   */
+  GNS_TREESTORE_COL_NAME_IS_VISIBLE,
+
+  /**
+   * A gboolean, TRUE if this row is for editing a record,
+   * FALSE if the 'public', 'type', 'expiration' and 'value'
+   * columns should be hidden.
+   */
+  GNS_TREESTORE_COL_IS_RECORD_ROW,
+
+  /**
+   * A gboolean, FALSE if this is one of our 'dummy' rows that
+   * is used to create a new name or record, TRUE if this is
+   * a normal row with either a name or a record.
+   */
+  GNS_TREESTORE_COL_NOT_DUMMY_ROW,
+
+  /**
+   * A gchararray with the name of the color to use for the
+   * expiration column.
+   */
+  GNS_TREESTORE_COL_EXP_TIME_COLOR,
+
+  /**
+   * A gchararray with the name of the color to use for the
+   * name column.
+   */
+  GNS_TREESTORE_COL_NAME_COLOR,
+
+  /**
+   * A gboolean; TRUE if the 'type' column can still be changed;
+   * FALSE once we have edited the value.
+   */
+  GNS_TREESTORE_COL_TYPE_IS_EDITABLE,
+
+  /**
+   * A gboolean; TRUE if the value is a shadow record.
+   */
+  GNS_TREESTORE_COL_IS_SHADOW,
+
+  /**
+   * A gboolean; TRUE if the name is editable (dummy line).
+   */
+  GNS_TREESTORE_COL_NAME_IS_EDITABLE,
+
+  /**
+   * A guint; offset of this record in the array.
+   */
+  GNS_TREESTORE_COL_RECORD_OFFSET
+};
+
+
+/**
+ * Columns in the gns type model.
+ */
+enum LIST_COLUMNS
+{
+
+  /**
+   * A guint
+   */
+  GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPE = 0,
+
+
+  /**
+   * A gchararray
+   */
+  GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME
+};
+
+
+/**
+ * Closure for 'operation_done_cont'.
+ */
+struct OperationContext
+{
+
+  /**
+   * Kept in a DLL.
+   */
+  struct OperationContext *next;
+
+  /**
+   * Kept in a DLL.
+   */
+  struct OperationContext *prev;
+
+  /**
+   * Associated namestore operation.
+   */
+  struct GNUNET_NAMESTORE_QueueEntry *qe;
+
+};
+
+
+/**
+ * Closure for 'merge_with_existing_records'.
+ */
+struct MoveOperationContext
+{
+
+  /**
+   * Kept in a DLL.
+   */
+  struct MoveOperationContext *next;
+
+  /**
+   * Kept in a DLL.
+   */
+  struct MoveOperationContext *prev;
+
+  /**
+   * Associated namestore operation.
+   */
+  struct GNUNET_NAMESTORE_QueueEntry *qe;
+
+  /**
+   * Info from editing dialog.
+   */
+  struct EditDialogContext *edc;
+
+  /**
+   * Private key of target zone.
+   */
+  struct GNUNET_CRYPTO_EccPrivateKey *pk;
+
+  /**
+   * Data to free.
+   */
+  void *data;
+
+  /**
+   * Record to merge.
+   */
+  struct GNUNET_NAMESTORE_RecordData rd;
+
+};
+
+
+/**
+ * Information we keep per name.
+ */
+struct RecordInfo
+{
+
+  /**
+   * Name for this record.
+   */
+  char *name;
+
+  /**
+   * Location of this record in the tree view.
+   */
+  GtkTreeRowReference *rr;
+
+  /**
+   * Serialized records under this name.
+   */
+  void *data;
+
+  /**
+   * Number of bytes in 'data'.
+   */
+  size_t data_size;
+
+  /**
+   * Number of records serialized in 'data'.
+   */
+  unsigned int rd_count;
+
+};
+
+
+
+
+
+/**
+ * Hash map from the H(name) in the zone to the 'struct RecordInfo'
+ * for the respective entry in the tree view.
+ */
+static struct GNUNET_CONTAINER_MultiHashMap *n2r;
+
+/**
+ * Our current zone monitor.
+ */
+static struct GNUNET_NAMESTORE_ZoneMonitor *zmon;
+
+/**
+ * Head of linked list of active operations.
+ */
+static struct OperationContext *oc_head;
+
+/**
+ * Tail of linked list of active operations.
+ */
+static struct OperationContext *oc_tail;
+
+/**
+ * Head of linked list of active operations.
+ */
+static struct MoveOperationContext *moc_head;
+
+/**
+ * Tail of linked list of active operations.
+ */
+static struct MoveOperationContext *moc_tail;
+
+/**
+ * Handle to the namestore.
+ */
+static struct GNUNET_NAMESTORE_Handle *namestore;
+
+/**
+ * Tree store with all of the values we're modifying for GNS.
+ */
+static GtkTreeStore *ts;
+
+/**
+ * Tree model (same object as 'ts', just different type).
+ */
+static GtkTreeModel *tm;
+
+/**
+ * The main tree view for 'gns' that shows the records.
+ */
+static GtkTreeView *tv;
+
+/**
+ * Private key of the zone we are currently editing.
+ */
+static struct GNUNET_CRYPTO_EccPrivateKey *pkey;
+
+/**
+ * Public key of the zone we are currently editing.
+ */
+static struct GNUNET_CRYPTO_EccPublicSignKey pubkey;
+
+/**
+ * Pseudonym of the current zone we are editing.
+ */
+static char *current_pseudonym;
+
+/**
+ * Pointer to name of the configuration option that gives the
+ * zone key for the zone we are editing right now.
+ */
+static const char *current_zone_option;
+
+/**
+ * Connection to identity service.
+ */
+static struct GNUNET_IDENTITY_Handle *identity;
+
+/**
+ * Request for our ego.
+ */
+static struct GNUNET_IDENTITY_Operation *id_op;
+
+/**
+ * Main loop handle.
+ */
+static struct GNUNET_GTK_MainLoop *ml;
+
+/**
+ * Name of the configuration file.
+ */
+static const char *cfgName;
+
+/**
+ * Our configuration.
+ */
+struct GNUNET_CONFIGURATION_Handle *cfg;
+
+/**
+ * Global return value (for success/failure of gnunet-setup).
+ */
+static int gret;
+
+
+
+/**
+ * Get an object from the main window.
+ *
+ * @param name name of the object
+ * @return NULL on error, otherwise the object
+ */
+static GObject *
+get_object (const char *name)
+{
+  if (NULL == ml)
+    return NULL;
+  return GNUNET_GTK_main_loop_get_object (ml, name);
+}
+
+
+
+#if HAVE_QRENCODE_H
+#include <qrencode.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+/**
+ * Create the QR code image for our zone.
+ *
+ * @param scale factor for scaling up the size of the image to create
+ * @return NULL on error
+ */
+static GdkPixbuf *
+create_qrcode (unsigned int scale)
+{
+  QRinput * qri;
+  QRcode *qrc;
+  char *str;
+  const gchar *pseu;
+  GtkEntry *entry;
+  GdkPixbuf *pb;
+  unsigned int x;
+  unsigned int y;
+  unsigned int off;
+  guchar *pixels;
+  int n_channels;
+  int c;
+  const char *dir;
+  char *fn;
+  unsigned int size;
+
+  qri = QRinput_new2 (0, QR_ECLEVEL_Q);
+  if (NULL == qri)
+  {
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRinput_new2");
+    return NULL;
+  }
+  entry = GTK_ENTRY (get_object ("gnunet_namestore_gtk_gns_pseu_entry"));
+  pseu = gtk_entry_get_text (GTK_ENTRY(entry));
+  GNUNET_asprintf (&str,
+                  "gnunet://gns/%s/%s\n",
+                  GNUNET_NAMESTORE_z2s (&pubkey),
+                  pseu);
+  if (0 != QRinput_append (qri,
+                          QR_MODE_8,
+                          strlen (str),
+                          (unsigned char*) str))
+  {
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRinput_append");
+    GNUNET_free (str);
+    return NULL;
+  }
+  GNUNET_free (str);
+  qrc = QRcode_encodeInput (qri);
+  if (NULL == qrc)
+  {
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRcode_encodeInput");
+    QRinput_free (qri);
+    return NULL;
+  }
+  /* We use a trick to create a pixbuf in a way that works for both Gtk2 and 
Gtk3
+     by loading a dummy file from disk; all other methods are not portable to 
both
+     Gtk2 and Gtk3. */
+  dir = GNUNET_GTK_get_data_dir ();
+  GNUNET_asprintf (&fn,
+                  "%s%s",
+                  dir,
+                  "qr_dummy.png");
+  size = qrc->width * scale;
+  size += 8 - (size % 8);
+  pb = gdk_pixbuf_new_from_file_at_size (fn,
+                                        size, size,
+                                        NULL);
+  GNUNET_free (fn);
+  if (NULL == pb)
+  {
+    QRinput_free (qri);
+    return NULL;
+  }
+  pixels = gdk_pixbuf_get_pixels (pb);
+  n_channels = gdk_pixbuf_get_n_channels (pb);
+  for (x=0;x<size;x++)
+    for (y=0;y<size;y++)
+    {
+      off = (x * qrc->width / size) +
+       (y * qrc->width / size) * qrc->width;
+      for (c = 0; c < n_channels; c++)
+       pixels[(y * size + x) * n_channels + c] = (0 == (qrc->data[off] & 1)) ? 
0xFF : 0;
+    }
+  QRcode_free (qrc);
+  QRinput_free (qri);
+  return pb;
+}
+
+
+/**
+ * Create the QR code image for our zone.
+ */
+static void
+setup_qrcode ()
+{
+  GdkPixbuf *pb;
+  GtkImage *image;
+
+  pb = create_qrcode (2);
+  if (NULL == pb)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("Failed to initialize QR-code 
pixbuf"));
+    return;
+  }
+  image = GTK_IMAGE (get_object ("gnunet_namestore_gtk_gns_qr_image"));
+  if (NULL == image)
+  {
+    GNUNET_break (0);
+    return;
+  }
+  gtk_image_set_from_pixbuf (image, pb);
+  g_object_unref (pb);
+}
+
+#endif
+
+
+/**
+ * Function called upon completion of the qr-code 'save as' dialog.
+ *
+ * @param dialog the dialog
+ * @param response_id reason for the dialog closing
+ * @param user_data the 'GtkBuilder' we used to create the dialog
+ */
+void
+gnunet_namestore_gtk_qr_save_as_dialog_response_cb (GtkDialog *dialog,
+                                           gint response_id,
+                                           gpointer user_data)
+{
+#if HAVE_QRENCODE_H
+  GtkBuilder *builder = user_data;
+  GdkPixbuf *pb;
+  char *filename;
+
+  if (GTK_RESPONSE_OK != response_id)
+  {
+    gtk_widget_destroy (GTK_WIDGET (dialog));
+    g_object_unref (G_OBJECT (builder));
+    return;
+  }
+  filename =
+    GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (dialog));
+  pb = create_qrcode (8);
+  if (NULL == pb)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("Failed to initialize QR-code 
pixbuf"));
+    return;
+  }
+  gdk_pixbuf_save (pb,
+                  filename,
+                  "png",
+                  NULL, NULL);
+  g_free (filename);
+  g_object_unref (pb);
+  gtk_widget_destroy (GTK_WIDGET (dialog));
+  g_object_unref (G_OBJECT (builder));
+#else
+  GNUNET_break (0);
+#endif
+}
+
+
+/**
+ * User clicked on 'save as' to extract the QR code.  Open 'save as'
+ * dialog to get the desired filename and file type.
+ */
+void
+gnunet_namestore_gtk_gns_qr_saveas_button_clicked_cb (GtkButton *button,
+                                             gpointer user_data)
+{
+  GtkBuilder *builder;
+  GtkWindow *dialog;
+  const gchar *pseu;
+  GtkEntry *entry;
+  char *suggestion;
+
+  entry = GTK_ENTRY (get_object ("gnunet_namestore_gtk_gns_pseu_entry"));
+  pseu = gtk_entry_get_text (GTK_ENTRY(entry));
+  builder =
+    GNUNET_GTK_get_new_builder ("gnunet_namestore_gtk_qr_save_as_dialog.glade",
+                               NULL);
+  if (NULL == builder)
+  {
+    GNUNET_break (0);
+    return;
+  }
+  GNUNET_asprintf (&suggestion,
+                  "%s.png",
+                  pseu);
+  dialog = GTK_WINDOW (gtk_builder_get_object
+                      (builder, "gnunet_namestore_gtk_qr_save_as_dialog"));
+  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog),
+                                    suggestion);
+  GNUNET_free (suggestion);
+  gtk_window_present (dialog);
+}
+
+
+/**
+ * Check if adding a record of the given type is Ok given the other
+ * records already present for the given name.
+ *
+ * @param rd_count size of the 'rd' array
+ * @param rd existing records
+ * @param n_type new record to be added
+ * @return GNUNET_OK if adding this record is OK, GNUNET_NO if not
+ */
+static int
+check_record_permitted (unsigned int rd_count,
+                       const struct GNUNET_NAMESTORE_RecordData *rd,
+                       gint n_type)
+{
+  unsigned int i;
+
+  for (i=0;i<rd_count;i++)
+  {
+    switch (rd[i].record_type)
+    {
+    case GNUNET_DNSPARSER_TYPE_CNAME:
+      return GNUNET_NO;
+    case GNUNET_DNSPARSER_TYPE_NS:
+      if ( (GNUNET_DNSPARSER_TYPE_A == n_type) ||
+          (GNUNET_DNSPARSER_TYPE_AAAA == n_type) )
+       return GNUNET_OK;
+      return GNUNET_NO;
+    case GNUNET_NAMESTORE_TYPE_PKEY:
+      return GNUNET_NO;
+    default:
+      break;
+    }
+  }
+  if (0 == rd_count)
+    return GNUNET_OK;
+  switch (n_type)
+  {
+  case GNUNET_DNSPARSER_TYPE_CNAME:
+    return GNUNET_NO;
+  case GNUNET_DNSPARSER_TYPE_NS:
+    for (i=0;i<rd_count;i++)
+      if ( (GNUNET_DNSPARSER_TYPE_A != rd[i].record_type) &&
+          (GNUNET_DNSPARSER_TYPE_AAAA != rd[i].record_type) )
+       return GNUNET_NO;
+      return GNUNET_OK;
+  case GNUNET_NAMESTORE_TYPE_PKEY:
+    return GNUNET_NO;
+  default:
+    break;
+  }
+  return GNUNET_OK;
+}
+
+
+/**
+ * Function called upon completion of an operation.
+ *
+ * @param cls the 'struct OperationContext' of the operation that completed
+ * @param success GNUNET_OK if the operation succeeded
+ * @param emsg error message if the operation failed
+ */
+static void
+operation_done_cont (void *cls,
+                    int32_t success,
+                    const char *emsg)
+{
+  struct OperationContext *oc = cls;
+  GtkWidget *dialog;
+  GtkWindow *main_window;
+
+  oc->qe = NULL;
+  GNUNET_CONTAINER_DLL_remove (oc_head,
+                              oc_tail,
+                              oc);
+  if (GNUNET_SYSERR == success)
+  {
+    main_window = GTK_WINDOW (get_object ("gnunet_namestore_gtk_dialog"));
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Operation failed: `%s'\n"), emsg);
+    dialog = gtk_message_dialog_new (main_window,
+                                    GTK_DIALOG_DESTROY_WITH_PARENT,
+                                    GTK_MESSAGE_ERROR,
+                                    GTK_BUTTONS_CLOSE,
+                                    _("Operation failed: `%s'\n"),
+                                    emsg);
+    g_signal_connect_swapped (dialog, "response",
+                              G_CALLBACK (gtk_widget_destroy),
+                              dialog);
+    gtk_widget_show_all (dialog);
+  }
+  GNUNET_free (oc);
+}
+
+
+/**
+ * Release the record info.
+ *
+ * @param cls NULL
+ * @param key unused
+ * @param value a RecordInfo to release
+ * @return #GNUNET_OK (continue to iterate)
+ */
+static int
+release_ri (void *cls,
+           const struct GNUNET_HashCode *key,
+           void *value)
+{
+  struct RecordInfo *ri = value;
+
+  gtk_tree_row_reference_free (ri->rr);
+  GNUNET_free_non_null (ri->data);
+  GNUNET_free (ri->name);
+  GNUNET_break (GNUNET_YES ==
+               GNUNET_CONTAINER_multihashmap_remove (n2r, key, ri));
+  GNUNET_free (ri);
+  return GNUNET_OK;
+}
+
+
+/**
+ * Clear all entries in the zone view and hide the tree view.
+ */
+static void
+clear_zone_view ()
+{
+  GNUNET_CONTAINER_multihashmap_iterate (n2r,
+                                        &release_ri,
+                                        NULL);
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_zone_selection_hbuttonbox")));
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_status_label")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_main_scrolledwindow")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_image")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_saveas_button")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_vseparator")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_pseu_hbox")));
+  gtk_tree_store_clear (ts);
+}
+
+
+/**
+ * Load a particular zone into the main tree view.
+ *
+ * @param zonename name of the option in the configuration file
+ *        with the name of the file with the private key of the
+ *        zone to load
+ */
+static void
+load_zone (const char *zonename);
+
+
+/**
+ * Display an error message for the user.
+ *
+ * @param title title of the error message
+ * @param emsg error message to show
+ */
+static void
+show_error_message (const char *title,
+                   const char *emsg)
+{
+  GtkWindow *main_window;
+  GtkDialog *dialog;
+
+  /* TODO: consider replacing with widget in the main window */
+  main_window = GTK_WINDOW (get_object ("gnunet_namestore_gtk_dialog"));
+  dialog = GTK_DIALOG(gtk_message_dialog_new (main_window,
+                                             GTK_DIALOG_DESTROY_WITH_PARENT,
+                                             GTK_MESSAGE_ERROR,
+                                             GTK_BUTTONS_CLOSE,
+                                             _("%s\n%s\n"),
+                                             title,
+                                             emsg));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
+  gtk_widget_show_all (GTK_WIDGET(dialog));
+}
+
+
+/**
+ * Release resources of an edit dialog context.
+ *
+ * @param edc resources to free
+ */
+static void
+free_edit_dialog_context (struct EditDialogContext *edc)
+{
+  g_free (edc->name);
+  g_free (edc->n_value);
+  g_free (edc->new_zone_option);
+  GNUNET_free (edc);
+}
+
+
+
+/**
+ * Process a record that was stored in the namestore.
+ *
+ * @param cls closure
+ * @param rd_count number of entries in 'rd' array
+ * @param rd array of records with data to store
+ */
+static void
+merge_with_existing_records (void *cls,
+                            unsigned int rd_count,
+                            const struct GNUNET_NAMESTORE_RecordData *rd)
+{
+  struct MoveOperationContext *moc = cls;
+  struct EditDialogContext *edc = moc->edc;
+  struct GNUNET_NAMESTORE_RecordData rd_new[rd_count + 1];
+  struct OperationContext *oc;
+
+  GNUNET_CONTAINER_DLL_remove (moc_head, moc_tail, moc);
+  if (GNUNET_OK !=
+      check_record_permitted (rd_count, rd,
+                             edc->record_type))
+  {
+    show_error_message (_("Record combination not permitted"),
+                       _("Given the existing records, adding a new record of 
this type is not allowed."));
+    GNUNET_free (moc->pk);
+    GNUNET_free (moc->data);
+    GNUNET_free (moc);
+    free_edit_dialog_context (edc);
+    return;
+  }
+
+  memcpy (rd_new, rd, rd_count * sizeof (struct GNUNET_NAMESTORE_RecordData));
+  rd_new[rd_count] = moc->rd;
+  /* FIXME: sanity-check merge... */
+  oc = GNUNET_new (struct OperationContext);
+  GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+  oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                          moc->pk,
+                                          edc->name,
+                                          rd_count + 1,
+                                          rd_new,
+                                          &operation_done_cont, oc);
+  GNUNET_free (moc->pk);
+  GNUNET_free (moc->data);
+  GNUNET_free (moc);
+  free_edit_dialog_context (edc);
+}
+
+
+/**
+ * Process an encrypted that was stored in the namestore for
+ * merging.
+ *
+ * @param cls closure
+ * @param block block to decrypt
+ */
+static void
+decrypt_block_for_merge (void *cls,
+                        const struct GNUNET_NAMESTORE_Block *block)
+{
+  struct MoveOperationContext *moc = cls;
+  struct GNUNET_CRYPTO_EccPublicSignKey pubkey;
+
+  GNUNET_CRYPTO_ecc_key_get_public_for_signature (moc->pk,
+                                   &pubkey);
+  if (GNUNET_OK !=
+      GNUNET_NAMESTORE_block_decrypt (block,
+                                     &pubkey,
+                                     moc->edc->name,
+                                     &merge_with_existing_records,
+                                     moc))
+  {
+    show_error_message (_("Failed to decode existing record in target zone"),
+                       _("Failed to add new record."));
+    GNUNET_free (moc->pk);
+    GNUNET_free (moc->data);
+    free_edit_dialog_context (moc->edc);
+    GNUNET_free (moc);
+    return;
+  }
+}
+
+
+/**
+ * The edit dialog completed; update the namestore and the
+ * view based on the new values in 'edc'.
+ *
+ * @param edc editing context information
+ * @param ret return code of the dialog
+ */
+static void
+edit_dialog_continuation (struct EditDialogContext *edc,
+                         GtkResponseType ret)
+{
+  struct RecordInfo *ri = edc->ri;
+  unsigned int rd_count = (NULL == ri) ? 0 : ri->rd_count;
+  struct GNUNET_NAMESTORE_RecordData rd_old[rd_count];
+  struct GNUNET_NAMESTORE_RecordData rd;
+  void *data;
+  size_t data_size;
+  struct OperationContext *oc;
+
+  if ( (NULL != ri) &&
+       (GNUNET_OK !=
+       GNUNET_NAMESTORE_records_deserialize (ri->data_size,
+                                             ri->data,
+                                             ri->rd_count,
+                                             rd_old)) )
+  {
+    GNUNET_break (0);
+    free_edit_dialog_context (edc);
+    return;
+  }
+  if ( (GTK_RESPONSE_CANCEL == ret) ||
+       (GTK_RESPONSE_DELETE_EVENT == ret) )
+  {
+    free_edit_dialog_context (edc);
+    return;
+  }
+  if (GNUNET_OK != GNUNET_NAMESTORE_string_to_value (edc->record_type, 
edc->n_value,
+                                                    &data, &data_size))
+  {
+    GNUNET_break (0);
+    free_edit_dialog_context (edc);
+    return;
+  }
+  if (edc->n_public)
+    rd.flags = GNUNET_NAMESTORE_RF_NONE;
+  else
+    rd.flags = GNUNET_NAMESTORE_RF_PRIVATE;
+  if (edc->n_is_shadow)
+    rd.flags |= GNUNET_NAMESTORE_RF_SHADOW_RECORD;
+  rd.record_type = edc->record_type;
+  rd.expiration_time = edc->n_exp_time;
+  if (edc->n_is_relative)
+    rd.flags |= GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION;
+  rd.data_size = data_size;
+  rd.data = data;
+  switch (ret)
+  {
+  case GTK_RESPONSE_REJECT: /* code for 'delete' */
+    if (GNUNET_YES == edc->old_record_in_namestore)
+    {
+      /* remove item from tree view and namestore */
+      struct GNUNET_NAMESTORE_RecordData rd_new[rd_count - 1];
+
+      GNUNET_assert (NULL != ri);
+      memcpy (rd_new, rd_old, (rd_count - 1) * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
+      rd_new[edc->off] = rd_old[rd_count - 1];
+      oc = GNUNET_new (struct OperationContext);
+      GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+      oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                              pkey, edc->name,
+                                              rd_count + 1,
+                                              rd_new,
+                                              &operation_done_cont, oc);
+    }
+    else
+    {
+      /* invalid choice, 'delete' should have been hidden... */
+      GNUNET_break (0);
+    }
+    break;
+  case GTK_RESPONSE_OK:
+    /* update model */
+    if (0 == strcmp (edc->new_zone_option,
+                    current_zone_option))
+    {
+      if (GNUNET_YES == edc->old_record_in_namestore)
+      {
+       struct GNUNET_NAMESTORE_RecordData rd_new[rd_count];
+
+       GNUNET_assert (NULL != ri);
+       memcpy (rd_new, rd_old, rd_count * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
+       rd_new[edc->off] = rd;
+       oc = GNUNET_new (struct OperationContext);
+       GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+       oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                                pkey, edc->name,
+                                                rd_count,
+                                                rd_new,
+                                                &operation_done_cont, oc);
+      }
+      else
+      {
+       struct GNUNET_NAMESTORE_RecordData rd_new[rd_count + 1];
+
+       memcpy (rd_new, rd_old, rd_count * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
+       rd_new[rd_count] = rd;
+       oc = GNUNET_new (struct OperationContext);
+       GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+       oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                                pkey, edc->name,
+                                                rd_count + 1,
+                                                rd_new,
+                                                &operation_done_cont, oc);
+      }
+    }
+    else
+    {
+      char *keyfile;
+      struct GNUNET_CRYPTO_EccPrivateKey *pk;
+      struct MoveOperationContext *moc;
+      struct GNUNET_HashCode query;
+
+      /* determine target zone */
+      if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg,
+                                                               "gns",
+                                                               
edc->new_zone_option,
+                                                               &keyfile))
+      {
+       char *emsg;
+
+       GNUNET_asprintf (&emsg,
+                        _("Option `%s' missing in section `%s'\n"),
+                        edc->new_zone_option, "gns");
+       show_error_message (_("Failed to access key for target zone"),
+                           emsg);
+       GNUNET_free (emsg);
+      }
+      pk = GNUNET_CRYPTO_ecc_key_create_from_file (keyfile);
+      GNUNET_free (keyfile);
+      if (NULL == pk)
+      {
+       show_error_message (_("Failed to load private key for target zone"),
+                           NULL);
+       break;
+      }
+      GNUNET_NAMESTORE_query_from_private_key (pk,
+                                              edc->name,
+                                              &query);
+      moc = GNUNET_new (struct MoveOperationContext);
+      moc->data = data;
+      moc->rd = rd;
+      moc->edc = edc;
+      moc->pk = pk;
+      GNUNET_CONTAINER_DLL_insert (moc_head, moc_tail, moc);
+
+      moc->qe = GNUNET_NAMESTORE_lookup_block (namestore,
+                                              &query,
+                                              &decrypt_block_for_merge,
+                                              moc);
+      /* zone changed, remove record from old zone, add to new zone! */
+      if (GNUNET_YES == edc->old_record_in_namestore)
+      {
+       /* remove item from tree view and namestore */
+       struct GNUNET_NAMESTORE_RecordData rd_new[rd_count - 1];
+
+       GNUNET_assert (NULL != ri);
+       memcpy (rd_new, rd_old, (rd_count - 1) * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
+       rd_new[edc->off] = rd_old[rd_count - 1];
+       oc = GNUNET_new (struct OperationContext);
+       GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+       oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                                pkey, edc->name,
+                                                rd_count - 1,
+                                                rd_new,
+                                                &operation_done_cont, oc);
+
+      }
+      return;
+    }
+    break;
+  default:
+    GNUNET_break (0);
+    break;
+  }
+  GNUNET_free (data);
+  free_edit_dialog_context (edc);
+}
+
+
+/**
+ * Launch a record editing dialog.
+ *
+ * @param n_type type of the record to edit
+ * @param name name of the record to edit
+ * @param ri record information for this name (can be NULL
+ *        if this is the first record for the name)
+ * @param off offset of the record being edited in the
+ *        ri's list; UINT_MAX if this is a new record
+ */
+static void
+launch_edit_dialog (gint n_type,
+                   const char *name,
+                   struct RecordInfo *ri,
+                   unsigned int off)
+{
+  struct EditDialogContext *edc;
+
+  edc = GNUNET_new (struct EditDialogContext);
+  if ( (NULL != ri) &&
+       (off < ri->rd_count) )
+  {
+    struct GNUNET_NAMESTORE_RecordData rd_old[ri->rd_count];
+
+    GNUNET_break (GNUNET_OK ==
+                 GNUNET_NAMESTORE_records_deserialize (ri->data_size,
+                                                       ri->data,
+                                                       ri->rd_count,
+                                                       rd_old));
+    edc->n_value = GNUNET_NAMESTORE_value_to_string (n_type,
+                                                    rd_old[off].data,
+                                                    rd_old[off].data_size);
+    edc->n_public = (0 == (rd_old[off].flags & GNUNET_NAMESTORE_RF_PRIVATE));
+    edc->n_is_relative = (0 != (rd_old[off].flags & 
GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION));
+    edc->n_is_shadow = (0 != (rd_old[off].flags & 
GNUNET_NAMESTORE_RF_SHADOW_RECORD));
+    edc->n_exp_time = rd_old[off].expiration_time;
+    edc->old_record_in_namestore = GNUNET_YES;
+  }
+  else
+  {
+    edc->n_exp_time = 1000LL * (time (NULL) + 365 * 24 * 60 * 60); /* + 1y */
+  }
+  edc->ri = ri;
+  edc->off = off;
+  edc->name = GNUNET_strdup (name);
+  edc->new_zone_option = g_strdup (current_zone_option);
+  edc->record_type = n_type;
+  edc->cont = &edit_dialog_continuation;
+  switch (n_type)
+  {
+  case GNUNET_DNSPARSER_TYPE_A:
+    GNS_edit_dialog_a (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_AAAA:
+    GNS_edit_dialog_aaaa (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_CNAME:
+    GNS_edit_dialog_cname (edc);
+    break;
+  case GNUNET_NAMESTORE_TYPE_LEHO:
+    GNS_edit_dialog_leho (edc);
+    break;
+  case GNUNET_NAMESTORE_TYPE_PKEY:
+    GNS_edit_dialog_pkey (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_PTR:
+    GNS_edit_dialog_ptr (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_MX:
+    GNS_edit_dialog_mx (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_NS:
+    GNS_edit_dialog_ns (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_SOA:
+    GNS_edit_dialog_soa (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_SRV:
+    GNS_edit_dialog_srv (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_TXT:
+    GNS_edit_dialog_txt (edc);
+    break;
+  case GNUNET_NAMESTORE_TYPE_VPN:
+    GNS_edit_dialog_vpn (edc);
+    break;
+  case GNUNET_DNSPARSER_TYPE_TLSA:
+  default:
+    GNUNET_break (0);
+    edit_dialog_continuation (edc,
+                             GTK_RESPONSE_CANCEL);
+    break;
+  }
+}
+
+
+/**
+ * Check if, with the given record info, we are allowed to add
+ * another record of the given type.
+ *
+ * @param ri existing records
+ * @param n_type type of the new record
+ * @return GNUNET_OK if this is allowed
+ */
+static int
+check_permissions (struct RecordInfo *ri,
+                 guint n_type)
+{
+  struct GNUNET_NAMESTORE_RecordData rd[ri->rd_count];
+
+  GNUNET_break (GNUNET_OK ==
+               GNUNET_NAMESTORE_records_deserialize (ri->data_size,
+                                                     ri->data,
+                                                     ri->rd_count,
+                                                     rd));
+  if (GNUNET_OK !=
+      check_record_permitted (ri->rd_count,
+                             rd,
+                             n_type))
+  {
+    show_error_message (_("Record combination not permitted"),
+                       _("Given the existing records, adding a new record of 
this type is not allowed.\n"
+                         "CNAME and PKEY records cannot co-exist with other 
records.\n"
+                         "NS records in GNS can only co-exist with A and AAAA 
records.\n"));
+    return GNUNET_NO;
+  }
+  return GNUNET_OK;
+}
+
+
+/**
+ * User selected 'edit' in the popup menu.  Edit the
+ * selected row.
+ *
+ * @param widget the GtkTreeView
+ * @param user_data main window builder
+ */
+void
+gnunet_namestore_gtk_gns_popup_edit_button_activate_cb (GtkWidget *widget,
+                                               gpointer user_data)
+{
+  GtkTreeSelection *sel;
+  gint n_type;
+  gchar *n_name;
+  guint off;
+  struct RecordInfo *ri;
+  GtkTreeIter iter;
+  struct GNUNET_HashCode name_hash;
+
+  sel = gtk_tree_view_get_selection (tv);
+  if (! gtk_tree_selection_get_selected (sel, NULL, &iter))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "No row selected\n");
+    return;
+  }
+  gtk_tree_model_get (tm, &iter,
+                     GNS_TREESTORE_COL_NAME, &n_name,
+                     GNS_TREESTORE_COL_RECORD_TYPE, &n_type,
+                     GNS_TREESTORE_COL_RECORD_OFFSET, &off,
+                     -1);
+  if (NULL == n_name)
+  {
+    GNUNET_break (0);
+    return;
+  }
+  GNUNET_CRYPTO_hash (n_name, strlen (n_name), &name_hash);
+  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &name_hash);
+  if ( (NULL == ri) ||
+       (off >= ri->rd_count) )
+  {
+    GNUNET_break (0);
+    g_free (n_name);
+    return;
+  }
+  launch_edit_dialog (n_type, n_name,
+                     ri, off);
+  g_free (n_name);
+}
+
+
+/**
+ * The user has selected a new record type.  Update the
+ * model and then start the 'edit' dialog.
+ *
+ * @param text renderer updated renderer
+ * @param path_string the path identifying the edited cell
+ * @param new_text updated text
+ * @param user_data unused
+ */
+void
+gnunet_namestore_gtk_gns_type_cellrenderercombo_edited_cb (GtkCellRendererText 
*text,
+                                                  gchar *path_string,
+                                                  gchar *new_text,
+                                                  gpointer user_data)
+{
+  GtkTreeIter it;
+  guint type;
+  char *name_str;
+  struct GNUNET_HashCode name_hash;
+  struct RecordInfo *ri;
+
+  if (0 == strcmp (new_text, _(NEW_RECORD_STR)))
+  {
+    GNUNET_break (0);
+    g_free (new_text);
+    return; /* no record type was selected */
+  }
+  type = GNUNET_NAMESTORE_typename_to_number (new_text);
+  if (UINT32_MAX == type)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Invalid or unsupported record type `%s'\n",
+               new_text);
+    show_error_message (_("Unsupported record type"),
+                       new_text);
+    g_free (new_text);
+    return;
+  }
+  /* check if this is a new record */
+  gtk_tree_model_get_iter_from_string (tm, &it, path_string);
+  gtk_tree_model_get (tm, &it,
+                     GNS_TREESTORE_COL_NAME, &name_str,
+                     -1);
+  if (NULL == name_str)
+  {
+    GNUNET_break (0);
+    g_free (new_text);
+    return;
+  }
+  GNUNET_CRYPTO_hash (name_str, strlen (name_str), &name_hash);
+  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &name_hash);
+  if ( (NULL == ri) ||
+       (GNUNET_OK == check_permissions (ri, type)) )
+    launch_edit_dialog (type, name_str, ri, UINT_MAX);
+  g_free (name_str);
+  g_free (new_text);
+}
+
+
+/**
+ * The user has edited a 'name' cell.  Update the model (and if needed
+ * create another fresh line for additional records).
+ *
+ * @param renderer updated renderer
+ * @param path the path identifying the edited cell
+ * @param new_text the new name (not modified)
+ * @param user_data unused
+ */
+void
+gnunet_namestore_gtk_gns_name_cellrenderertext_edited_cb (GtkCellRendererText 
*renderer,
+                                                 gchar *path,
+                                                 gchar *new_text,
+                                                 gpointer user_data)
+{
+  GtkTreeIter it;
+  gboolean not_dummy;
+  char *name;
+  struct RecordInfo *ri;
+  struct GNUNET_HashCode name_hash;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "New text for `%s' is `%s'\n",
+             path, new_text);
+  if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
+    return;
+  if ( (GNUNET_OK !=
+       GNUNET_DNSPARSER_check_label (new_text)) &&
+       (0 != strcmp (new_text, GNUNET_GNS_MASTERZONE_STR)) )
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+               _("Name `%s' invalid for GNS/DNS (too long for a DNS 
label?)\n"),
+               new_text);
+    gdk_beep ();
+    return;
+  }
+  gtk_tree_model_get_iter_from_string (tm, &it, path);
+  gtk_tree_model_get (tm, &it,
+                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, &not_dummy,
+                     GNS_TREESTORE_COL_NAME, &name,
+                     -1);
+  GNUNET_break (! not_dummy);
+  GNUNET_break (0 == strcmp (name, _(NEW_NAME_STR)));
+  g_free (name);
+
+  GNUNET_CRYPTO_hash (new_text, strlen (new_text), &name_hash);
+  ri = GNUNET_CONTAINER_multihashmap_get (n2r,
+                                         &name_hash);
+  if (NULL != ri)
+  {
+    GtkTreeSelection *sel;
+    GtkTreePath *sel_path;
+
+    sel_path = gtk_tree_row_reference_get_path (ri->rr);
+    sel = gtk_tree_view_get_selection(tv);
+    gtk_tree_selection_select_path (sel, sel_path);
+    gtk_tree_path_free (sel_path);
+    return;
+  }
+
+  /* change dummy line to new name, then add new dummy */
+  gtk_tree_store_set (ts, &it,
+                     GNS_TREESTORE_COL_NAME, new_text,
+                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
+                     GNS_TREESTORE_COL_RECORD_TYPE, 0,
+                     GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
+                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
+                     GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE,
+                     GNS_TREESTORE_COL_TYPE_IS_EDITABLE, TRUE,
+                     GNS_TREESTORE_COL_NAME_IS_EDITABLE, FALSE,
+                     -1);
+  /* add a new dummy line */
+  gtk_tree_store_insert_with_values (ts, &it,NULL, 0,
+                                    GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
+                                    GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
+                                    GNS_TREESTORE_COL_RECORD_TYPE, 
GNUNET_DNSPARSER_TYPE_A,
+                                    GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
+                                    GNS_TREESTORE_COL_IS_RECORD_ROW, FALSE,
+                                    GNS_TREESTORE_COL_TYPE_IS_EDITABLE, FALSE,
+                                    GNS_TREESTORE_COL_NAME_IS_EDITABLE, TRUE,
+                                    GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX,
+                                    -1);
+}
+
+
+/**
+ * Create a context (popup) menu for the zone iteration treeview
+ * (if applicable).
+ *
+ * @return TRUE if a menu was activated
+ */
+static gboolean
+create_popup_menu ()
+{
+  GtkTreeIter it;
+  GtkMenu *popup;
+  GtkTreeSelection *sel;
+  gboolean name_vis;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Considering creating popup menu...\n");
+  sel = gtk_tree_view_get_selection (tv);
+  if (! gtk_tree_selection_get_selected (sel, NULL, &it))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "No row selected\n");
+    return FALSE;
+  }
+  gtk_tree_model_get (tm, &it,
+                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, &name_vis,
+                     -1);
+  if (name_vis)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Selected row is not a record row\n");
+    return FALSE;
+  }
+  popup  = GTK_MENU (get_object ("gnunet_namestore_edit_popup_menu"));
+  gtk_widget_show_all (GTK_WIDGET (popup));
+  gtk_menu_popup (popup, NULL, NULL, NULL, NULL, 0, 0);
+  return TRUE;
+}
+
+
+/**
+ * The zone treeview pop up menu is supposed to be created.
+ * (Note: this is not the only method that might need to be
+ * written to handle events to create pop up menus; right-clicks
+ * need to be managed separately).
+ *
+ * @param widget the widget
+ * @param user_data unused
+ * @return TRUE if a menu was activated
+ */
+gboolean
+gnunet_namestore_gtk_gns_main_treeview_popup_menu_cb (GtkWidget *widget,
+                                             gpointer user_data)
+{
+  return create_popup_menu ();
+}
+
+
+/**
+ * A button was pressed in the GtkTreeView, check for right button and
+ * if applicable create the popup menu.
+ *
+ * @param widget the GtkTreeView
+ * @param event the event
+ * @param user_data unused
+ * @return TRUE if a menu was activated (event was handled)
+ */
+gboolean
+gnunet_namestore_gtk_gns_main_treeview_button_press_event_cb (GtkWidget 
*widget,
+                                                     GdkEventButton *event,
+                                                     gpointer user_data)
+{
+  /* Check for right click*/
+  if (NULL == widget)
+    return FALSE;
+  if ( (GDK_BUTTON_PRESS == event->type) &&
+       (3 == event->button) )
+    return create_popup_menu ();
+  return FALSE;
+}
+
+
+/**
+ * User pushed a key in the GtkTreeView.  Check for 'del' and if so, delete
+ * the currently selected row.
+ *
+ * @param widget originating widget
+ * @param event event information
+ * @param user_data unused
+ * @return TRUE if the key was processed ('del')
+ */
+gboolean
+gnunet_namestore_gtk_gns_main_treeview_key_press_event_cb (GtkWidget *widget,
+                                                  GdkEventKey *event,
+                                                  gpointer user_data)
+{
+  GtkTreeIter iter;
+  GtkTreeSelection *sel;
+  int not_dummy;
+  GtkTreeIter parent;
+  char *name;
+  struct GNUNET_HashCode name_hash;
+  struct RecordInfo *ri;
+  struct OperationContext *oc;
+
+  /* Check for delete key */
+  if ( (GDK_KEY_PRESS != event->type) ||
+       (GDK_KEY_Delete != event->keyval) )
+    return FALSE;
+  sel = gtk_tree_view_get_selection(tv);
+  if (! gtk_tree_selection_get_selected (sel, NULL, &iter))
+    return TRUE; /* nothing selected */
+  gtk_tree_model_get (tm, &iter,
+                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, &not_dummy,
+                     GNS_TREESTORE_COL_NAME, &name,
+                     -1);
+  if (GNUNET_NO == not_dummy)
+  {
+    g_free (name);
+    return TRUE; /* do not delete the dummy line */
+  }
+  GNUNET_CRYPTO_hash (name, strlen (name), &name_hash);
+  ri = GNUNET_CONTAINER_multihashmap_get (n2r,
+                                         &name_hash);
+  GNUNET_assert (NULL != ri);
+
+  if ( (gtk_tree_model_iter_parent (tm, &parent, &iter)) &&
+       (ri->rd_count > 0) )
+  {
+    struct GNUNET_NAMESTORE_RecordData rd_old[ri->rd_count];
+    struct GNUNET_NAMESTORE_RecordData rd_new[ri->rd_count - 1];
+    struct GNUNET_NAMESTORE_RecordData rd;
+    unsigned int off;
+    int n_type;
+    gboolean n_public;
+    guint64 n_exp_time;
+    gboolean n_is_relative;
+    gboolean n_is_shadow;
+    char *n_value;
+
+    /* Removing a single record */
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Removing single record for name `%s'\n",
+               name);
+    GNUNET_break (GNUNET_OK ==
+                 GNUNET_NAMESTORE_records_deserialize (ri->data_size,
+                                                       ri->data,
+                                                       ri->rd_count,
+                                                       rd_old));
+    gtk_tree_model_get (tm, &iter,
+                       GNS_TREESTORE_COL_RECORD_TYPE, &n_type,
+                       GNS_TREESTORE_COL_IS_PUBLIC, &n_public,
+                       GNS_TREESTORE_COL_EXP_TIME, &n_exp_time,
+                       GNS_TREESTORE_COL_EXP_TIME_IS_REL, &n_is_relative,
+                       GNS_TREESTORE_COL_IS_SHADOW, &n_is_shadow,
+                       GNS_TREESTORE_COL_VAL_AS_STR, &n_value,
+                       -1);
+    /* valid name */
+    if (n_public)
+      rd.flags = GNUNET_NAMESTORE_RF_NONE;
+    else
+      rd.flags = GNUNET_NAMESTORE_RF_PRIVATE;
+    if (n_is_relative)
+      rd.flags |= GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION;
+    if (n_is_shadow)
+      rd.flags |= GNUNET_NAMESTORE_RF_SHADOW_RECORD;
+    rd.record_type = n_type;
+    rd.expiration_time = n_exp_time;
+    if (GNUNET_OK !=
+       GNUNET_NAMESTORE_string_to_value (n_type, n_value,
+                                         (void**)&rd.data, &rd.data_size))
+    {
+      /* can't remove, value invalid */
+      GNUNET_assert (0);
+      g_free (n_value);
+      g_free (name);
+      return TRUE;
+    }
+    for (off=0;off<ri->rd_count;off++)
+      if (GNUNET_YES ==
+         GNUNET_NAMESTORE_records_cmp (&rd,
+                                       &rd_old[off]))
+       break;
+    GNUNET_assert (off != ri->rd_count);
+    memcpy (rd_new, rd_old, (ri->rd_count - 1) * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
+    rd_new[off] = rd_old[ri->rd_count - 1];
+    oc = GNUNET_new (struct OperationContext);
+    GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+    oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                            pkey, name,
+                                            ri->rd_count - 1,
+                                            rd_new,
+                                            &operation_done_cont, oc);
+    g_free (n_value);
+  }
+  else
+  {
+    oc = GNUNET_new (struct OperationContext);
+    GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+    oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                            pkey, name,
+                                            0, NULL,
+                                            &operation_done_cont, oc);
+  }
+  g_free (name);
+
+  return TRUE;
+}
+
+
+/**
+ * The user edited the preferred name (PSEU) of this namespace.
+ * Push the update to the namestore.
+ *
+ * @param editable the edited widget
+ * @param user_data unused
+ */
+void
+gnunet_namestore_gtk_gns_pseu_entry_changed_cb (GtkEditable *editable,
+                                       gpointer user_data)
+{
+  const gchar *pseu;
+  struct RecordInfo *ri;
+  struct GNUNET_HashCode hc;
+  unsigned int rd_count;
+  struct OperationContext *oc;
+
+  pseu = gtk_entry_get_text (GTK_ENTRY (editable));
+  if ( (NULL != current_pseudonym) &&
+       (0 == strcmp (pseu,
+                    current_pseudonym)) )
+    return;
+  if (GNUNET_OK !=
+      GNUNET_DNSPARSER_check_label (pseu))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+               _("Name `%s' invalid for GNS (too long for a DNS label?)\n"),
+               pseu);
+    gdk_beep ();
+    gtk_entry_set_text (GTK_ENTRY (editable),
+                       current_pseudonym);
+    return;
+  }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "New Pseudonym is `%s' %u\n",
+             pseu);
+  GNUNET_free_non_null (current_pseudonym);
+  if ( (NULL != pseu) &&
+       (0 != strlen (pseu)) )
+    current_pseudonym = GNUNET_strdup (pseu);
+  else
+    current_pseudonym = NULL;
+
+  GNUNET_CRYPTO_hash ("+", 1, &hc);
+  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &hc);
+  if (NULL == ri)
+    rd_count = 0;
+  else
+    rd_count = ri->rd_count;
+
+  /* get old records, append new one or update/remove existing one */
+  {
+    struct GNUNET_NAMESTORE_RecordData rd_old[rd_count];
+    struct GNUNET_NAMESTORE_RecordData rd_new[rd_count + 1];
+    unsigned int off;
+    unsigned int total;
+
+    total = rd_count;
+    if (NULL != ri)
+      GNUNET_break (GNUNET_OK ==
+                   GNUNET_NAMESTORE_records_deserialize (ri->data_size,
+                                                         ri->data,
+                                                         rd_count,
+                                                         rd_old));
+    memcpy (rd_new, rd_old, sizeof (struct GNUNET_NAMESTORE_RecordData) * 
rd_count);
+    for (off=0;off<rd_count;off++)
+      if (GNUNET_NAMESTORE_TYPE_PSEU == rd_new[off].record_type)
+       break;
+    if (off == rd_count)
+      total++;
+    if ( (NULL == pseu) ||
+        (0 == strlen (pseu)) )
+    {
+      rd_new[off] = rd_new[rd_count - 1];
+      total--;
+    }
+    else
+    {
+      rd_new[off].record_type = GNUNET_NAMESTORE_TYPE_PSEU;
+      rd_new[off].expiration_time = UINT64_MAX;
+      rd_new[off].flags = GNUNET_NAMESTORE_RF_NONE;
+      rd_new[off].data_size = strlen (pseu) + 1;
+      rd_new[off].data = pseu;
+    }
+    oc = GNUNET_new (struct OperationContext);
+    GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
+    oc->qe = GNUNET_NAMESTORE_records_store (namestore,
+                                            pkey,
+                                            GNUNET_GNS_MASTERZONE_STR,
+                                            total,
+                                            rd_new,
+                                            &operation_done_cont, oc);
+  }
+#if HAVE_QRENCODE_H
+  setup_qrcode ();
+#endif
+}
+
+
+/**
+ * The user clicked on the 'copy' button.  Copy the full string
+ * with the hash of our public key to the clipboard.
+ *
+ * @param button the button that was clicked
+ * @param user_data unused
+ */
+void
+gnunet_namestore_gtk_gns_public_key_copy_button_clicked_cb (GtkButton *button,
+                                                   gpointer user_data)
+{
+  GtkClipboard *cb;
+
+  if (NULL == pkey)
+    return;
+  cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+  gtk_clipboard_set_text (cb,
+                         GNUNET_NAMESTORE_z2s (&pubkey),
+                         -1);
+}
+
+
+/**
+ * Function called once our model should be consistent with
+ * the current zone.  Makes the view visible.
+ *
+ * @param cls NULL
+ */
+static void
+zone_sync_proc (void *cls)
+{
+  if (0 == strcmp (current_zone_option, "ZONEKEY"))
+    gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_pseu_hbox")));
+#if HAVE_QRENCODE_H
+  setup_qrcode ();
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_image")));
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_saveas_button")));
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_vseparator")));
+#else
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_image")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_saveas_button")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_qr_vseparator")));
+#endif
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_status_label")));
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_main_scrolledwindow")));
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_zone_selection_hbuttonbox")));
+}
+
+
+/**
+ * Function called for each record in the current zone.  Update the
+ * widgets accordingly.
+ *
+ * @param cls NULL
+ * @param zone_key private key of the zone
+ * @param name name that is being mapped (at most 255 characters long)
+ * @param rd_count number of entries in @a rd array
+ * @param rd array of records with data to store
+ */
+static void
+zone_iteration_proc (void *cls,
+                    const struct GNUNET_CRYPTO_EccPrivateKey *zone_key,
+                    const char *name,
+                    unsigned int rd_count,
+                    const struct GNUNET_NAMESTORE_RecordData *rd)
+{
+  GtkTreeRowReference *rr;
+  GtkTreePath *path;
+  GtkTreeIter iter_name;
+  GtkTreeIter iter_record;
+  int c;
+  const char *exp;
+  char *val;
+  char *type_str;
+  gboolean time_is_relative;
+  gboolean public;
+  guint64 exp_t;
+  GtkEntry *pseu_entry;
+  struct GNUNET_HashCode name_hash;
+  struct RecordInfo *ri;
+  GtkTreeSelection *sel;
+  GtkTreeIter sel_iter;
+  GtkTreePath *sel_path;
+
+  if ((NULL == zone_key) && (NULL == name))
+  {
+    /* disconnect from namestore, clear view */
+    clear_zone_view ();
+    return;
+  }
+  if ( (GNUNET_SYSERR == GNUNET_DNSPARSER_check_label (name)) &&
+       (0 != strcmp (name, GNUNET_GNS_MASTERZONE_STR)) )
+  {
+    GNUNET_break (0);
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+               _("Got invalid record name `%s' from namestore\n"),
+               name);
+    return;
+  }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Zone iteration result `%s', %u records\n",
+             name, rd_count);
+  GNUNET_CRYPTO_hash (name,
+                     strlen (name),
+                     &name_hash);
+  sel = gtk_tree_view_get_selection (tv);
+  if (gtk_tree_selection_get_selected (sel, NULL, &sel_iter))
+    sel_path = gtk_tree_model_get_path (tm, &sel_iter);
+  else
+    sel_path = NULL;
+  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &name_hash);
+  if (NULL != ri)
+  {
+    rr = ri->rr;
+    path = gtk_tree_row_reference_get_path (rr);
+    GNUNET_assert (gtk_tree_model_get_iter (tm,
+                                           &iter_name,
+                                           path));
+    gtk_tree_path_free (path);
+    /* remove all records, we'll re-add those that are left next */
+    if (gtk_tree_model_iter_children (tm, &iter_record, &iter_name))
+      while (gtk_tree_store_remove (ts, &iter_record)) ;
+  }
+  else
+  {
+    ri = GNUNET_new (struct RecordInfo);
+    gtk_tree_store_append (ts, &iter_name, NULL);
+    gtk_tree_store_set (ts, &iter_name,
+                       GNS_TREESTORE_COL_NAME, name,
+                       GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
+                       GNS_TREESTORE_COL_RECORD_TYPE, 
GNUNET_NAMESTORE_TYPE_ANY,
+                       GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
+                       GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE,
+                       GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
+                       GNS_TREESTORE_COL_TYPE_IS_EDITABLE, TRUE,
+                       GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX,
+                       -1);
+
+    path = gtk_tree_model_get_path (tm,
+                                   &iter_name);
+    rr = gtk_tree_row_reference_new (tm,
+                                    path);
+    ri->rr = rr;
+    ri->name = GNUNET_strdup (name);
+    gtk_tree_path_free (path);
+    GNUNET_assert (GNUNET_OK ==
+                  GNUNET_CONTAINER_multihashmap_put (n2r,
+                                                     &name_hash,
+                                                     ri,
+                                                     
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+  }
+  if (0 == rd_count)
+  {
+    /* all records removed, remove name as well */
+    gtk_tree_store_remove (ts, &iter_name);
+    GNUNET_assert (GNUNET_YES ==
+                  GNUNET_CONTAINER_multihashmap_remove (n2r, &name_hash, ri));
+    gtk_tree_row_reference_free (rr);
+    GNUNET_free (ri->name);
+    GNUNET_free_non_null (ri->data);
+    GNUNET_free (ri);
+    return;
+  }
+  /* update record info serialized version of the records */
+  GNUNET_free_non_null (ri->data);
+  ri->rd_count = rd_count;
+  ri->data_size = GNUNET_NAMESTORE_records_get_size (rd_count, rd);
+  if (0 != ri->data_size)
+    ri->data = GNUNET_malloc (ri->data_size);
+  GNUNET_break (ri->data_size ==
+               GNUNET_NAMESTORE_records_serialize (rd_count, rd,
+                                                   ri->data_size, ri->data));
+
+  /* Append elements for records in tree view */
+  for (c = 0; c < rd_count; c ++)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+               "Record %u: type %u flags %u expiration %llu data_size %u\n",
+               c, rd[c].record_type, rd[c].flags,
+               rd[c].expiration_time,
+               rd[c].data_size);
+
+    /* Set public toggle */
+    public = ((rd[c].flags & GNUNET_NAMESTORE_RF_PRIVATE) != 
GNUNET_NAMESTORE_RF_PRIVATE);
+    /* Expiration time */
+    time_is_relative = (0 != (rd[c].flags & 
GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION));
+
+    if (time_is_relative)
+    {
+      struct GNUNET_TIME_Relative rel_time;
+
+      rel_time.rel_value_us = rd[c].expiration_time;
+      exp_t = rel_time.rel_value_us;
+      exp = GNUNET_STRINGS_relative_time_to_string (rel_time, GNUNET_NO);
+    }
+    else
+    {
+      struct GNUNET_TIME_Absolute exp_abs;
+
+      exp_abs.abs_value_us = rd[c].expiration_time;
+      exp_t = exp_abs.abs_value_us;
+      exp = GNUNET_STRINGS_absolute_time_to_string (exp_abs);
+    }
+    /* value */
+    val = GNUNET_NAMESTORE_value_to_string (rd[c].record_type,
+                                            rd[c].data,
+                                            rd[c].data_size);
+    if (NULL == val)
+      GNUNET_asprintf (&val, "%s", EXPIRE_INVALID_STRING);
+
+    if (NULL != GNUNET_NAMESTORE_number_to_typename (rd[c].record_type))
+      type_str = strdup (GNUNET_NAMESTORE_number_to_typename 
(rd[c].record_type));
+    else
+      GNUNET_asprintf (&type_str, "%s", EXPIRE_INVALID_STRING);
+
+    if ( (0 == strcmp (name, GNUNET_GNS_MASTERZONE_STR)) &&
+        (GNUNET_NAMESTORE_TYPE_PSEU == rd[c].record_type) &&
+        (NULL == current_pseudonym) )
+    {
+      pseu_entry = GTK_ENTRY((get_object 
("gnunet_namestore_gtk_gns_pseu_entry")));
+      gtk_entry_set_text (pseu_entry, val);
+#if HAVE_QRENCODE_H
+      setup_qrcode ();
+#endif
+    }
+    gtk_tree_store_insert_with_values (ts, &iter_record , &iter_name, 0,
+                                      GNS_TREESTORE_COL_NAME, name,
+                                      GNS_TREESTORE_COL_NAME_IS_VISIBLE, FALSE,
+                                      GNS_TREESTORE_COL_RECORD_TYPE, 
rd[c].record_type,
+                                      GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, 
type_str,
+                                      GNS_TREESTORE_COL_IS_PUBLIC, public,
+                                      GNS_TREESTORE_COL_EXP_TIME, exp_t,
+                                      GNS_TREESTORE_COL_EXP_TIME_AS_STR, exp,
+                                      GNS_TREESTORE_COL_EXP_TIME_IS_REL, 
time_is_relative,
+                                      GNS_TREESTORE_COL_VAL_AS_STR, val,
+                                      GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE,
+                                      GNS_TREESTORE_COL_NOT_DUMMY_ROW, TRUE,
+                                      GNS_TREESTORE_COL_RECORD_OFFSET, (guint) 
c,
+                                      -1);
+    GNUNET_free (type_str);
+    GNUNET_free (val);
+  }
+  if (NULL != sel_path)
+  {
+    gtk_tree_selection_select_path (sel, sel_path);
+    gtk_tree_view_expand_to_path (tv, sel_path);
+    gtk_tree_path_free (sel_path);
+  }
+}
+
+
+/**
+ * Method called to inform about the egos of this peer.  Called
+ * when we are doing a #load_zone operation and are getting the
+ * private key of the new zone to edit.
+ *
+ * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get,
+ * this function is only called ONCE, and 'NULL' being passed in
+ * @a ego does indicate an error (i.e. name is taken or no default
+ * value is known).  If @a ego is non-NULL and if '*ctx'
+ * is set in those callbacks, the value WILL be passed to a subsequent
+ * call to the identity callback of #GNUNET_IDENTITY_connect (if
+ * that one was not NULL).
+ *
+ * @param cls closure with the 'const char *' zonename
+ * @param ego ego handle
+ * @param ctx context for application to store data for this ego
+ *                 (during the lifetime of this process, initially NULL)
+ * @param name name assigned by the user for this ego,
+ *                   NULL if the user just deleted the ego and it
+ *                   must thus no longer be used
+ */
+static void
+identity_cb (void *cls,
+            struct GNUNET_IDENTITY_Ego *ego,
+            void **ctx,
+            const char *name)
+{
+  const char *zonename = cls;
+  char *emsg;
+  char *label;
+  GtkTreeIter toplevel;
+
+  id_op = NULL;
+  /* setup crypto keys */
+  if (NULL == ego)
+  {
+    GNUNET_asprintf (&emsg,
+                    _("Default zone for `%s' not set; did you run 
gnunet-gns-import.sh?\n"),
+                    zonename);
+    show_error_message (_("Failed to load zone"),
+                       emsg);
+    GNUNET_free (emsg);
+    gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_zone_selection_hbuttonbox")));
+    return;
+  }
+  pkey = GNUNET_new (struct GNUNET_CRYPTO_EccPrivateKey);
+  *pkey = *GNUNET_IDENTITY_ego_get_private_key (ego);
+  GNUNET_CRYPTO_ecc_key_get_public_for_signature (pkey, &pubkey);
+  label = g_markup_printf_escaped (_("<b>Editing zone %s</b>"),
+                                  GNUNET_NAMESTORE_z2s (&pubkey));
+  gtk_label_set_markup (GTK_LABEL (get_object 
("gnunet_namestore_gtk_gns_zone_label")),
+                       label);
+  g_free (label);
+  /* Append a top level row and leave it empty */
+  gtk_tree_store_insert_with_values (ts, &toplevel, NULL, 0,
+                                     GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
+                                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
+                                     GNS_TREESTORE_COL_RECORD_TYPE, 
GNUNET_DNSPARSER_TYPE_A,
+                                     GNS_TREESTORE_COL_IS_RECORD_ROW, FALSE,
+                                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
+                                    GNS_TREESTORE_COL_TYPE_IS_EDITABLE, FALSE,
+                                    GNS_TREESTORE_COL_NAME_IS_EDITABLE, TRUE,
+                                    GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX,
+                                     -1);
+  /* Load zone from namestore! */
+#if HAVE_QRENCODE_H
+  setup_qrcode ();
+#endif
+  zmon = GNUNET_NAMESTORE_zone_monitor_start (cfg, pkey,
+                                             &zone_iteration_proc,
+                                             &zone_sync_proc,
+                                             NULL);
+}
+
+
+/**
+ * Load a particular zone into the main tree view.
+ *
+ * @param zonename name of the option in the configuration file
+ *        with the name of the file with the private key of the
+ *        zone to load
+ */
+static void
+load_zone (const char *zonename)
+{
+  /* clear previous zone */
+  if (NULL != zmon)
+  {
+    GNUNET_NAMESTORE_zone_monitor_stop (zmon);
+    zmon = NULL;
+  }
+  if (NULL != id_op)
+  {
+    GNUNET_IDENTITY_cancel (id_op);
+    id_op = NULL;
+  }
+  clear_zone_view ();
+  current_zone_option = zonename;
+  GNUNET_free_non_null (pkey);
+  pkey = NULL;
+  id_op = GNUNET_IDENTITY_get (identity,
+                              zonename,
+                              &identity_cb,
+                              (void *) zonename);
+}
+
+
+/**
+ * A different zone was selected in the zone toggle bar.  Load the
+ * appropriate zone.
+ *
+ * @param togglebutton button that was toggled (could be to "on" or "off", we 
only react to "on")
+ * @param user_data builder, unused
+ */
+void
+gnunet_namestore_gtk_gns_shorten_zone_selection_radiobutton_toggled_cb 
(GtkToggleButton *togglebutton,
+                                                               gpointer 
user_data)
+{
+  if (gtk_toggle_button_get_active (togglebutton))
+    load_zone ("gns-short");
+}
+
+
+/**
+ * A different zone was selected in the zone toggle bar.  Load the
+ * appropriate zone.
+ *
+ * @param togglebutton button that was toggled (could be to "on" or "off", we 
only react to "on")
+ * @param user_data builder, unused
+ */
+void
+gnunet_namestore_gtk_gns_private_zone_selection_radiobutton_toggled_cb 
(GtkToggleButton *togglebutton,
+                                                               gpointer 
user_data)
+{
+  if (gtk_toggle_button_get_active (togglebutton))
+    load_zone ("gns-private");
+}
+
+
+/**
+ * A different zone was selected in the zone toggle bar.  Load the
+ * appropriate zone.
+ *
+ * @param togglebutton button that was toggled (could be to "on" or "off", we 
only react to "on")
+ * @param user_data builder, unused
+ */
+void
+gnunet_namestore_gtk_gns_master_zone_selection_radiobutton_toggled_cb 
(GtkToggleButton *togglebutton,
+                                                              gpointer 
user_data)
+{
+  if (gtk_toggle_button_get_active (togglebutton))
+    load_zone ("gns-master");
+}
+
+
+/**
+ * Actual main to tear down the system.
+ *
+ * @param cls the main loop handle
+ * @param tc scheduler context
+ */
+static void
+cleanup_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  struct OperationContext *oc;
+  struct MoveOperationContext *moc;
+
+  if (NULL == ml)
+  {
+    GNUNET_break (0);
+    return;
+  }
+  GNUNET_GTK_main_loop_quit (ml);
+
+
+  gtk_widget_show (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_status_label")));
+  gtk_widget_hide (GTK_WIDGET (get_object 
("gnunet_namestore_gtk_gns_main_scrolledwindow")));
+  if (NULL != zmon)
+  {
+    GNUNET_NAMESTORE_zone_monitor_stop (zmon);
+    zmon = NULL;
+  }
+  while (NULL != (oc = oc_head))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+               _("A pending namestore operation was not transmitted to the 
namestore.\n"));
+    GNUNET_CONTAINER_DLL_remove (oc_head, oc_tail, oc);
+    GNUNET_NAMESTORE_cancel (oc->qe);
+    GNUNET_free (oc);
+  }
+  while (NULL != (moc = moc_head))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+               _("A pending namestore operation was not transmitted to the 
namestore.\n"));
+    GNUNET_CONTAINER_DLL_remove (moc_head, moc_tail, moc);
+    GNUNET_NAMESTORE_cancel (moc->qe);
+    GNUNET_free (moc->pk);
+    free_edit_dialog_context (moc->edc);
+    GNUNET_free (moc->data);
+    GNUNET_free (moc);
+  }
+  if (NULL != n2r)
+  {
+    GNUNET_CONTAINER_multihashmap_iterate (n2r,
+                                          &release_ri,
+                                          NULL);
+    GNUNET_CONTAINER_multihashmap_destroy (n2r);
+    n2r = NULL;
+  }
+  gtk_tree_store_clear (ts);
+  if (NULL != namestore)
+  {
+    GNUNET_NAMESTORE_disconnect (namestore);
+    namestore = NULL;
+  }
+  if (NULL != pkey)
+  {
+    GNUNET_free (pkey);
+    pkey = NULL;
+  }
+  if (NULL != current_pseudonym)
+  {
+    GNUNET_free (current_pseudonym);
+    current_pseudonym = NULL;
+  }
+  if (NULL != id_op)
+  {
+    GNUNET_IDENTITY_cancel (id_op);
+    id_op = NULL;
+  }
+  if (NULL != identity)
+  {
+    GNUNET_IDENTITY_disconnect (identity);
+    identity = NULL;
+  }
+}
+
+
+/**
+ * Callback invoked if the application is supposed to exit.
+ */
+void
+gnunet_namestore_gtk_quit_cb (GObject * object,
+                              gpointer user_data)
+{
+  GNUNET_SCHEDULER_shutdown ();
+}
+
+
+/**
+ * Actual main method that sets up the configuration window.
+ *
+ * @param cls the main loop handle
+ * @param tc scheduler context
+ */
+static void
+run (void *cls,
+     const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  GtkWidget *main_window;
+  gchar *label;
+  GtkLabel *status_label;
+
+  ml = cls;
+  if (GNUNET_OK != GNUNET_GTK_main_loop_build_window (ml, NULL))
+    return;
+
+  cfgName = GNUNET_GTK_main_loop_get_configuration_file (ml);
+  main_window = GTK_WIDGET (get_object ("gnunet_namestore_dialog"));
+  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
+                               &cleanup_task, NULL);
+
+  namestore = GNUNET_NAMESTORE_connect (cfg);
+  if (NULL == namestore)
+  {
+    status_label = GTK_LABEL (get_object 
("gnunet_namestore_gtk_gns_status_label"));
+    label = g_markup_printf_escaped (_("<b><big>Failed to connect to 
namestore</b></big>"));
+    gtk_label_set_markup (status_label, label);
+    g_free (label);
+    return;
+  }
+  identity = GNUNET_IDENTITY_connect (cfg, NULL, NULL);
+  ts = GTK_TREE_STORE (get_object ("gnunet_namestore_gtk_gns_treestore"));
+  tv = GTK_TREE_VIEW (get_object ("gnunet_namestore_gtk_gns_main_treeview"));
+  tm = GTK_TREE_MODEL (ts);
+  n2r = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_NO);
+  load_zone ("gns-master");
+  gtk_widget_show (main_window);
+  gtk_window_present (GTK_WINDOW (main_window));
+}
+
+
+/**
+ * Main function for gnunet-namestore-gtk.
+ *
+ * @param argc number of arguments
+ * @param argv arguments
+ * @return 0 on success
+ */
+int
+main (int argc, char *const *argv)
+{
+  struct GNUNET_GETOPT_CommandLineOption options[] = {
+    GNUNET_GETOPT_OPTION_END
+  };
+  int ret;
+
+  if (GNUNET_OK ==
+      GNUNET_GTK_main_loop_start ("gnunet-namestore-gtk",
+                                  "gnunet-namestore-gtk", argc, argv,
+                                  options, 
"gnunet_namestore_gtk_main_window.glade",
+                                  &run))
+    ret = gret;
+  else
+    ret = 1;
+  return ret;
+}
+
+
+
+/* end of gnunet-namestore-gtk.c */

Copied: gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.c (from rev 29914, 
gnunet-gtk/src/setup/gnunet-setup-gns-edit.c)
===================================================================
--- gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.c                        
        (rev 0)
+++ gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.c        2013-10-07 
14:35:42 UTC (rev 29925)
@@ -0,0 +1,1903 @@
+/*
+     This file is part of GNUnet
+     (C) 2012 Christian Grothoff (and other contributing authors)
+
+     GNUnet 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 3, or (at your
+     option) any later version.
+
+     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+/**
+ * @file src/namestore/gnunet-namestore-gtk_edit.c
+ * @author Christian Grothoff
+ * @brief editing dialogs for GNS records
+ */
+#include "gnunet-namestore-gtk_edit.h"
+#include <gnunet/gnunet_gns_service.h>
+
+
+/**
+ * Columns in the 'zone_liststore'.
+ */
+enum ZoneListColumn
+{
+  /**
+   * A gchararray with the name of the zone for users.
+   */
+  ZONELIST_COL_NAME = 0,
+
+  /**
+   * A gchararray with the name of the configuration file option with
+   * the zone key.
+   */
+  ZONELIST_COL_OPTION = 1
+};
+
+
+/**
+ * Disable 'save' button, dialog state is not acceptable.
+ *
+ * @param edc dialog to modify
+ */
+static void
+edit_dialog_disable_save (struct EditDialogContext *edc)
+{
+  gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                               
"edit_dialog_save_button")),
+                           FALSE);
+}
+
+
+/**
+ * Enable 'save' button, dialog state is acceptable.
+ *
+ * @param edc dialog to modify
+ */
+static void
+edit_dialog_enable_save (struct EditDialogContext *edc)
+{
+  gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                               
"edit_dialog_save_button")),
+                           TRUE);
+}
+
+
+/**
+ * Check that the common elements of the edit dialog are valid;
+ * if so, call 'edit_dialog_enable_save', otherwise 'edit_dialog_disable_save'.
+ *
+ * @param edc edit dialog to check
+ */
+static void
+edit_dialog_check_save (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *name;
+
+  /* check name */
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_name_entry"));
+  name = gtk_editable_get_chars (entry, 0, -1);
+  if ( (GNUNET_SYSERR == GNUNET_DNSPARSER_check_label (name)) &&
+       (0 != strcmp (name, GNUNET_GNS_MASTERZONE_STR)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  /* any other checks should go here */
+  edit_dialog_enable_save (edc);
+}
+
+
+/**
+ * The 'relative' expiration time radiobutton was toggled (on or off).
+ *
+ * @param button the button
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb (GtkToggleButton 
*button,
+                                                           gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  if (gtk_toggle_button_get_active (button))
+    gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_relative_combobox")));
+  else
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_relative_combobox")));
+}
+
+
+/**
+ * The 'forever' expiration time radiobutton was toggled (on or off).
+ *
+ * @param button the button
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_expiration_forever_radiobutton_toggled_cb (GtkToggleButton 
*button,
+                                                           gpointer user_data)
+{
+  /* nothing to do */
+}
+
+
+/**
+ * The 'absolute' expiration time radiobutton was toggled (on or off).
+ *
+ * @param button the button
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb (GtkToggleButton 
*button,
+                                                           gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  if (gtk_toggle_button_get_active (button))
+  {
+    gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_calendar")));
+    gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_hbox")));
+  }
+  else
+  {
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_calendar")));
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_hbox")));
+  }
+}
+
+
+/**
+ * Initialize widgets of the edit dialog that are the same regardless of
+ * the type of the record.
+ *
+ * @param edc dialog context
+ */
+static void
+edit_dialog_setup_common_elements (struct EditDialogContext *edc)
+{
+  GtkComboBox *cb;
+  GtkTreeModel *tm;
+  GtkListStore *ls;
+  GtkTreeIter iter;
+  gchar *opt;
+  struct GNUNET_TIME_Absolute at;
+  struct GNUNET_TIME_Relative rt;
+  time_t tp;
+  struct tm *ymd;
+  GtkCalendar *cal;
+
+  if (GNUNET_YES !=
+      edc->old_record_in_namestore)
+  {
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_delete_button")));
+    edit_dialog_disable_save (edc);
+  }
+  gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_name_entry")),
+                     edc->name);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                          
"edit_dialog_options_public_checkbutton")),
+                               edc->n_public);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                          
"edit_dialog_options_shadow_checkbutton")),
+                               edc->n_is_shadow);
+  if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us == edc->n_exp_time)
+  {
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                            
"edit_dialog_expiration_never_radiobutton")),
+                                 TRUE);
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_calendar")));
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_hbox")));
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_relative_combobox")));
+  }
+  if ( (edc->n_is_relative) &&
+       (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != edc->n_exp_time) )
+  {
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                            
"edit_dialog_expiration_relative_radiobutton")),
+                                 TRUE);
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_calendar")));
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_absolute_hbox")));
+    rt.rel_value_us = edc->n_exp_time;
+  }
+  else
+  {
+    /* select a sane default */
+    rt = GNUNET_TIME_UNIT_DAYS;
+  }
+  cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
+                                             
"edit_dialog_expiration_relative_combobox"));
+  ls = GTK_LIST_STORE (gtk_combo_box_get_model (cb));
+  gtk_list_store_insert_with_values (ls, &iter,
+                                    -1 /* position: append */,
+                                    0, GNUNET_STRINGS_relative_time_to_string 
(rt, GNUNET_NO),
+                                    -1);
+  gtk_combo_box_set_active_iter (cb, &iter);
+  if ( (! edc->n_is_relative) &&
+       (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us != edc->n_exp_time) )
+  {
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                            
"edit_dialog_expiration_absolute_radiobutton")),
+                                 TRUE);
+
+    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
+                                                        
"edit_dialog_expiration_relative_combobox")));
+    at.abs_value_us = edc->n_exp_time;
+  }
+  else
+  {
+    /* select a sane default: right now */
+    at = GNUNET_TIME_absolute_get ();
+  }
+  tp = (time_t) (at.abs_value_us / 1000000LL); /* convert to seconds */
+  ymd = gmtime (&tp);
+  cal = GTK_CALENDAR (gtk_builder_get_object (edc->builder,
+                                             
"edit_dialog_expiration_absolute_calendar"));
+  gtk_calendar_select_month (cal,
+                            ymd->tm_mon,
+                            ymd->tm_year + 1900);
+  gtk_calendar_mark_day (cal,
+                        ymd->tm_mday);
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                     
"edit_dialog_expiration_absolute_hours_spinbutton")),
+                            (double) ymd->tm_hour);
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                     
"edit_dialog_expiration_absolute_minutes_spinbutton")),
+                            (double) ymd->tm_min);
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                     
"edit_dialog_expiration_absolute_seconds_spinbutton")),
+                            (double) ymd->tm_sec);
+
+  /* set source zone! */
+  cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
+                                             "edit_dialog_zone_combobox"));
+  tm = gtk_combo_box_get_model (cb);
+  opt = NULL;
+  if (gtk_tree_model_get_iter_first (tm, &iter))
+  {
+    do
+    {
+      gtk_tree_model_get (tm, &iter,
+                         ZONELIST_COL_OPTION, &opt,
+                         -1);
+      if ( (NULL != opt) &&
+          (0 == strcasecmp (opt,
+                            edc->new_zone_option)) )
+       break;
+      g_free (opt);
+      opt = NULL;
+    } while (gtk_tree_model_iter_next (tm, &iter));
+  }
+  if (NULL != opt)
+  {
+    gtk_combo_box_set_active_iter (cb, &iter);
+    g_free (opt);
+  }
+}
+
+
+/**
+ * Perform the reverse of the 'edit_dialog_setup_common_elements' function,
+ * that is, extract the values from the (common) widgets and store the
+ * values in 'edc'.
+ *
+ * @param edc edit dialog to extract data from
+ */
+static void
+edit_dialog_putes_common_elements (struct EditDialogContext *edc)
+{
+  const char *rt_s;
+  struct GNUNET_TIME_Relative rt;
+  GtkComboBox *cb;
+  GtkTreeModel *tm;
+  GtkTreeIter iter;
+  gchar *opt;
+
+  /* is public flag */
+  edc->n_public = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
           "edit_dialog_options_public_checkbutton")));
+  /* is shadow flag */
+  edc->n_is_shadow = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
              "edit_dialog_options_shadow_checkbutton")));
+
+  /* 'forever' expiration time */
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                              
"edit_dialog_expiration_never_radiobutton"))))
+  {
+    edc->n_exp_time = GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us;
+    edc->n_is_relative = TRUE; /* doesn't matter, but make sure it is 
well-defined anyway */
+  }
+
+  /* 'relative' expiration time */
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                              
"edit_dialog_expiration_relative_radiobutton"))))
+  {
+    cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
+                                               
"edit_dialog_expiration_relative_combobox"));
+    tm = gtk_combo_box_get_model (cb);
+    if (! gtk_combo_box_get_active_iter (cb, &iter))
+    {
+      GNUNET_break (0);
+      return;
+    }
+    gtk_tree_model_get (tm, &iter,
+                       0, &rt_s,
+                       -1);
+    GNUNET_break (GNUNET_YES ==
+                 GNUNET_STRINGS_fancy_time_to_relative (rt_s,
+                                                        &rt));
+    edc->n_exp_time = rt.rel_value_us;
+    edc->n_is_relative = TRUE;
+  }
+
+  /* 'absolute' expiration time */
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                              
"edit_dialog_expiration_absolute_radiobutton"))))
+  {
+    guint year;
+    guint month;
+    guint day;
+    guint hour;
+    guint minute;
+    guint second;
+    char fancydate[128];
+    struct GNUNET_TIME_Absolute atime;
+
+    gtk_calendar_get_date (GTK_CALENDAR (gtk_builder_get_object (edc->builder,
+                                                                
"edit_dialog_expiration_absolute_calendar")),
+                          &year, &month, &day);
+    hour = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                              
"edit_dialog_expiration_absolute_hours_spinbutton")));
+    minute = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                         
"edit_dialog_expiration_absolute_minutes_spinbutton")));
+    second = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
 "edit_dialog_expiration_absolute_seconds_spinbutton")));
+    GNUNET_snprintf (fancydate,
+                    sizeof (fancydate),
+                    "%u-%u-%u %u:%u:%u",
+                    (unsigned int) year,
+                    (unsigned int) month + 1,
+                    (unsigned int) day,
+                    (unsigned int) hour,
+                    (unsigned int) minute,
+                    (unsigned int) second);
+    GNUNET_break (GNUNET_OK ==
+                 GNUNET_STRINGS_fancy_time_to_absolute (fancydate,
+                                                        &atime));
+    edc->n_exp_time = atime.abs_value_us;
+    edc->n_is_relative = FALSE;
+  }
+
+  /* extract target zone! */
+  cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
+                                             "edit_dialog_zone_combobox"));
+  tm = gtk_combo_box_get_model (cb);
+  if (! gtk_combo_box_get_active_iter (cb, &iter))
+  {
+    GNUNET_break (0);
+  }
+  else
+  {
+    gtk_tree_model_get (tm, &iter,
+                       ZONELIST_COL_OPTION, &opt,
+                       -1);
+    if (NULL == opt)
+      GNUNET_break (0);
+    else
+    {
+      g_free (edc->new_zone_option);
+      edc->new_zone_option = g_strdup (opt);
+      g_free (opt);
+    }
+  }
+}
+
+
+/**
+ * Run the edit dialog.  Performs all of the common initialization
+ * steps to run an edit dialog for records.
+ *
+ * @param edc editing context
+ */
+static void
+run_edit_dialog (struct EditDialogContext *edc)
+{
+  edit_dialog_setup_common_elements (edc);
+  gtk_dialog_set_default_response (edc->dialog,
+                                  GTK_RESPONSE_OK);
+  gtk_window_present (GTK_WINDOW (edc->dialog));
+}
+
+
+/* ************************ A records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for A-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_a_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+  struct in_addr v4;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_a_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (1 != inet_pton (AF_INET, preedit, &v4)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_a_dialog_response_cb (GtkDialog *dialog,
+                              gint response_id,
+                              gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_a_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the A record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_a_entry_changed_cb (GtkEditable *entry,
+                                   gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_a_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'A' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_a (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_a.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set A record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_a_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_a_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_a_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ AAAA records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for AAAA-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_aaaa_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+  struct in6_addr v6;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_aaaa_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (1 != inet_pton (AF_INET6, preedit, &v6)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_aaaa_dialog_response_cb (GtkDialog *dialog,
+                                 gint response_id,
+                                 gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_aaaa_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the AAAA record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_aaaa_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_aaaa_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'AAAA' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_aaaa (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_namestore_edit_aaaa.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set AAAA record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_aaaa_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_aaaa_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_aaaa_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ CNAME records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for AAAA-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_cname_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_cname_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_cname_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_cname_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the CNAME record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_cname_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_cname_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'CNAME' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_cname (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_namestore_edit_cname.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set CNAME record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_cname_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_cname_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_cname_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ LEHO records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for LEHO-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_leho_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_leho_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_leho_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_leho_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the LEHO record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_leho_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_leho_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'LEHO' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_leho (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_namestore_edit_leho.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set LEHO record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_leho_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_leho_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_leho_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ MX records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for MX-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_mx_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_mx_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_mx_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+  char *result;
+  unsigned int distance;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_mx_entry"));
+    value = gtk_entry_get_text (entry);
+    distance = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
   "edit_dialog_mx_distance_spinbutton")));
+    g_free (edc->n_value);
+    GNUNET_asprintf (&result,
+                    "%hu,%s",
+                    distance,
+                    value);
+    edc->n_value = g_strdup (result);
+    GNUNET_free (result);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the MX record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_mx_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_mx_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'MX' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_mx (struct EditDialogContext *edc)
+{
+  uint16_t mx_pref;
+  char result[253 + 1];
+
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_mx.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    if (2 != SSCANF(edc->n_value,
+                   "%hu,%253s", &mx_pref, result))
+    {
+      GNUNET_break (0);
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  _("Unable to parse MX record `%s'\n"),
+                 edc->n_value);
+    }
+    else
+    {
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_mx_entry")),
+                         result);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_mx_distance_spinbutton")),
+                                mx_pref);
+    }
+  }
+  edc->validator = &edit_dialog_mx_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_mx_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ NS records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for NS-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_ns_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_ns_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_ns_dialog_response_cb (GtkDialog *dialog,
+                               gint response_id,
+                               gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_ns_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the NS record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_ns_entry_changed_cb (GtkEditable *entry,
+                                    gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_ns_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'NS' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ns (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_ns.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set NS record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_ns_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_ns_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_ns_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ PKEY records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for PKEY-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_pkey_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+  struct GNUNET_CRYPTO_EccPublicSignKey pub;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_pkey_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK !=
+       GNUNET_CRYPTO_ecc_public_sign_key_from_string (preedit,
+                                                 strlen (preedit),
+                                                 &pub)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_pkey_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_pkey_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the PKEY record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_pkey_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_pkey_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'PKEY' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_pkey (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_namestore_edit_pkey.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set PKEY record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_pkey_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_pkey_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_pkey_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ PTR records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for PTR-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_ptr_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_ptr_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_ptr_dialog_response_cb (GtkDialog *dialog,
+                                gint response_id,
+                                gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_ptr_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the PTR record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_ptr_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_ptr_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'PTR' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ptr (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_ptr.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set PTR record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_ptr_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_ptr_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_ptr_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ SOA records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for SOA-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_soa_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               
"edit_dialog_soa_source_host_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  /* check for '@' in the e-mail --- required format uses "." instead! */
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               
"edit_dialog_soa_contact_email_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (NULL != strstr (preedit, "@")) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    /* E-mail is specified in the RFC also as a 'domain-name', hence
+       we check above that it follows those conventions as well; the '@'
+       is a common mistake, and while it should be illegal despite IDN,
+       it feels better to check explicitly. */
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_soa_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *source_host;
+  const gchar *contact_email;
+  unsigned int soa_serial;
+  unsigned int soa_refresh;
+  unsigned int soa_retry;
+  unsigned int soa_expire;
+  unsigned int soa_min;
+  char *result;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              
"edit_dialog_soa_source_host_entry"));
+    source_host = gtk_entry_get_text (entry);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              
"edit_dialog_soa_contact_email_entry"));
+    contact_email = gtk_entry_get_text (entry);
+    soa_serial = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
     "edit_dialog_soa_serial_number_spinbutton")));
+    soa_refresh = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
      "edit_dialog_soa_refresh_time_spinbutton")));
+    soa_retry = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
    "edit_dialog_soa_retry_time_spinbutton")));
+    soa_expire = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
     "edit_dialog_soa_expire_time_spinbutton")));
+    soa_min = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
  "edit_dialog_soa_minimum_ttl_spinbutton")));
+    GNUNET_asprintf (&result,
+                    "rname=%s mname=%s %lu,%lu,%lu,%lu,%lu",
+                    source_host, contact_email,
+                    soa_serial,
+                    soa_refresh,
+                    soa_retry,
+                    soa_expire,
+                    soa_min);
+    edc->n_value = g_strdup (result);
+    GNUNET_free (result);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the SOA record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_soa_contact_email_entry_changed_cb (GtkEditable *entry,
+                                                   gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_soa_validity_check (edc);
+}
+
+
+/**
+ * The user has edited the SOA record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_soa_source_host_entry_changed_cb (GtkEditable *entry,
+                                                 gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_soa_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'SOA' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_soa (struct EditDialogContext *edc)
+{
+  char soa_rname[253 + 1];
+  char soa_mname[253 + 1];
+  unsigned int soa_serial;
+  unsigned int soa_refresh;
+  unsigned int soa_retry;
+  unsigned int soa_expire;
+  unsigned int soa_min;
+
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_soa.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    if (7 != SSCANF (edc->n_value,
+                    "rname=%253s mname=%253s %u,%u,%u,%u,%u",
+                    soa_rname, soa_mname,
+                    &soa_serial, &soa_refresh, &soa_retry, &soa_expire, 
&soa_min))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  _("Unable to parse SOA record `%s'\n"),
+                 edc->n_value);
+    }
+    else
+    {
+      /* set SOA record */
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_soa_source_host_entry")),
+                         soa_rname);
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_soa_contact_email_entry")),
+                         soa_mname);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_soa_serial_number_spinbutton")),
+                                soa_serial);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_soa_refresh_time_spinbutton")),
+                                soa_refresh);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_soa_retry_time_spinbutton")),
+                                soa_retry);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_soa_expire_time_spinbutton")),
+                                soa_expire);
+      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                         
"edit_dialog_soa_minimum_ttl_spinbutton")),
+                                soa_min);
+    }
+  }
+  edc->validator = &edit_dialog_soa_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_soa_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ SRV records *********************** */
+/* *** Not implemented: namestore_common.c as well as here! *** */
+/* ************************ SRV records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for SRV-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_srv_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               
"edit_dialog_srv_target_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_name_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+#if 0
+  /* FIXME: check service name format! */
+#endif
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_srv_dialog_response_cb (GtkDialog *dialog,
+                                  gint response_id,
+                                  gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+#if 0
+    GtkEntry *entry;
+    const gchar *value;
+
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_srv_target_entry"));
+    /* FIXME: build srv record */
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+#endif
+
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the SRV record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_srv_target_entry_changed_cb (GtkEditable *entry,
+                                            gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_srv_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'SRV' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_srv (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_srv.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+#if 0
+    /* FIXME */
+    /* set SRV record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_srv_target_entry")),
+                       edc->n_value);
+#endif
+  }
+  edc->validator = &edit_dialog_srv_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_srv_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ TXT records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for TXT-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_txt_validity_check (struct EditDialogContext *edc)
+{
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_txt_dialog_response_cb (GtkDialog *dialog,
+                                gint response_id,
+                                gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *value;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_txt_entry"));
+    value = gtk_entry_get_text (entry);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (value);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the TXT record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_txt_entry_changed_cb (GtkEditable *entry,
+                                      gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_txt_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'TXT' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_txt (struct EditDialogContext *edc)
+{
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_txt.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set TXT record */
+    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                          
"edit_dialog_txt_entry")),
+                       edc->n_value);
+  }
+  edc->validator = &edit_dialog_txt_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_txt_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* ************************ VPN records *********************** */
+
+/**
+ * Check validity of the value in the edit dialog for VPN-records.
+ * Then call the shared validity check if the result is OK.
+ *
+ * @param edc edit dialog context
+ */
+static void
+edit_dialog_vpn_validity_check (struct EditDialogContext *edc)
+{
+  GtkEditable *entry;
+  const gchar *preedit;
+  struct GNUNET_HashCode hc;
+
+  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
+                                               "edit_dialog_vpn_peer_entry")),
+  preedit = gtk_editable_get_chars (entry, 0, -1);
+  if ( (NULL == preedit) ||
+       (GNUNET_OK !=
+       GNUNET_CRYPTO_hash_from_string (preedit, &hc)) )
+  {
+    edit_dialog_disable_save (edc);
+    return;
+  }
+  edit_dialog_check_save (edc);
+}
+
+
+/**
+ * Editing dialog was closed, get the data and call the
+ * continuation.
+ *
+ * @param dialog editing dialog
+ * @param response_id action that caused the dialog to be closed
+ * @param user_data the 'struct EditDialogContext'
+ */
+void
+GNS_edit_vpn_dialog_response_cb (GtkDialog *dialog,
+                                gint response_id,
+                                gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+  GtkEntry *entry;
+  const gchar *identifier;
+  const gchar *peer;
+  unsigned int proto;
+  char *result;
+
+  if (GTK_RESPONSE_OK == response_id)
+  {
+    edit_dialog_putes_common_elements (edc);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              
"edit_dialog_vpn_identifier_entry"));
+    identifier = gtk_entry_get_text (entry);
+    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                              "edit_dialog_vpn_peer_entry"));
+    peer = gtk_entry_get_text (entry);
+    proto = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(gtk_builder_get_object (edc->builder,
+                                                                               
     "edit_dialog_vpn_protocol_tcp_radiobutton"))) ? IPPROTO_TCP : IPPROTO_UDP;
+    GNUNET_asprintf (&result,
+                    "%u %s %s",
+                    proto,
+                    (const char *) peer,
+                    (const char *) identifier);
+    g_free (edc->n_value);
+    edc->n_value = g_strdup (result);
+    GNUNET_free (result);
+  }
+  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
+  g_object_unref (edc->builder);
+  edc->builder = NULL;
+  edc->cont (edc, response_id);
+}
+
+
+/**
+ * The user has edited the VPN record value.  Enable/disable 'save'
+ * button depending on the validity of the value.
+ *
+ * @param entry editing widget
+ * @param user_data the 'struct EditDialogContext' of the dialog
+ */
+void
+GNS_edit_dialog_vpn_peer_entry_changed_cb (GtkEditable *entry,
+                                          gpointer user_data)
+{
+  struct EditDialogContext *edc = user_data;
+
+  edit_dialog_vpn_validity_check (edc);
+}
+
+
+/**
+ * Run an GNS Edit dialog for an 'VPN' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_vpn (struct EditDialogContext *edc)
+{
+  char s_peer[103 + 1];
+  char s_serv[253 + 1];
+  unsigned int proto;
+
+  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_namestore_edit_vpn.glade",
+                                            edc);
+  if (NULL == edc->builder)
+  {
+    GNUNET_break (0);
+    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
+    return;
+  }
+  if (GNUNET_YES ==
+      edc->old_record_in_namestore)
+  {
+    /* set VPN record */
+    if (3 != SSCANF (edc->n_value,"%u %103s %253s",
+                    &proto, s_peer, s_serv))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  _("Unable to parse VPN record string `%s'\n"),
+                 edc->n_value);
+    }
+    else
+    {
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_vpn_identifier_entry")),
+                         s_serv);
+      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
+                                                            
"edit_dialog_vpn_peer_entry")),
+                         s_peer);
+      if (IPPROTO_UDP == proto)
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                               
 "edit_dialog_vpn_protocol_udp_radiobutton")), TRUE);
+      else
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
+                                                                               
 "edit_dialog_vpn_protocol_tcp_radiobutton")), TRUE);
+    }
+  }
+  edc->validator = &edit_dialog_vpn_validity_check;
+  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
+                                                   "edit_vpn_dialog"));
+  run_edit_dialog (edc);
+}
+
+
+/* end of gnunet-namestore-gtk_edit.c */

Copied: gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.h (from rev 29914, 
gnunet-gtk/src/setup/gnunet-setup-gns-edit.h)
===================================================================
--- gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.h                        
        (rev 0)
+++ gnunet-gtk/src/namestore/gnunet-namestore-gtk_edit.h        2013-10-07 
14:35:42 UTC (rev 29925)
@@ -0,0 +1,253 @@
+/*
+     This file is part of GNUnet
+     (C) 2012 Christian Grothoff (and other contributing authors)
+
+     GNUnet 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 3, or (at your
+     option) any later version.
+
+     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file src/namestore/gnunet-namestore-gtk_edit.h
+ * @author Christian Grothoff
+ * @brief editing dialogs for GNS records
+ */
+#ifndef GNUNET_SETUP_GNS_EDIT_H
+#define GNUNET_SETUP_GNS_EDIT_H
+
+#include "gnunet_gtk.h"
+#include <gnunet/gnunet_namestore_service.h>
+#include <gnunet/gnunet_dnsparser_lib.h>
+
+
+/**
+ * Context for edit operations.
+ */
+struct EditDialogContext;
+
+
+/**
+ * Signature of the continuation function invoked once the
+ * edit dialog is done.
+ *
+ * @param edc dialog context
+ * @param ret return code from the dialog
+ */
+typedef void (*GNS_EditContinuation)(struct EditDialogContext *edc,
+                                    GtkResponseType ret);
+
+
+/**
+ * Signature of a dialog-specific validation function to validate the
+ * value.  Should either call 'edit_dialog_disable_save' if the value
+ * is invalid, or 'edit_dialog_check_save' if the value is valid.
+ */
+typedef void (*GNS_EditValidator)(struct EditDialogContext *edc);
+
+
+/**
+ * Context for edit operations.
+ */
+struct EditDialogContext
+{
+
+  /**
+   * Where in the tree view are we editing?
+   */
+  struct RecordInfo *ri;
+
+  /**
+   * Function to call at the end.
+   */
+  GNS_EditContinuation cont;
+
+  /**
+   * Function to call to validate the state of the dialog and
+   * ultimately update the 'save' button sensitivity.
+   */
+  GNS_EditValidator validator;
+
+  /**
+   * Builder for the dialog (internal to gnunet-setup-gns-edit.c).
+   */
+  GtkBuilder *builder;
+
+  /**
+   * Main dialog window.
+   */
+  GtkDialog *dialog;
+
+  /**
+   * Name of the record.
+   */
+  gchar *name;
+
+  /**
+   * Value of the record in string format.
+   */
+  gchar *n_value;
+
+  /**
+   * Zone into which the record should be placed.
+   */
+  gchar *new_zone_option;
+
+  /**
+   * Expiration time value (absolute or relative).
+   */
+  guint64 n_exp_time;
+
+  /**
+   * Offset of the record we are editing in the 'rd' list of 'ri'.
+   */
+  unsigned int off;
+
+  /**
+   * Flag indicating if the old record was in the namestore.
+   */
+  int old_record_in_namestore;
+
+  /**
+   * Type of the record.
+   */
+  uint32_t record_type;
+
+  /**
+   * Is this record 'public'?
+   */
+  gboolean n_public;
+
+  /**
+   * Is the expiration time relative?
+   */
+  gboolean n_is_relative;
+
+  /**
+   * Is this record a shadow record?
+   */
+  gboolean n_is_shadow;
+
+};
+
+
+
+/**
+ * Run an GNS Edit dialog for an 'A' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_a (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'AAAA' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_aaaa (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'CNAME' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_cname (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'LEHO' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_leho (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'MX' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_mx (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'NS' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ns (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'PKEY' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_pkey (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'PTR' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_ptr (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'SOA' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_soa (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'SRV' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_srv (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'TXT' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_txt (struct EditDialogContext *edc);
+
+
+/**
+ * Run an GNS Edit dialog for an 'VPN' Record.
+ *
+ * @param edc editing context to use
+ */
+void
+GNS_edit_dialog_vpn (struct EditDialogContext *edc);
+
+
+#endif

Modified: gnunet-gtk/src/setup/Makefile.am
===================================================================
--- gnunet-gtk/src/setup/Makefile.am    2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/src/setup/Makefile.am    2013-10-07 14:35:42 UTC (rev 29925)
@@ -5,7 +5,7 @@
   -I$(top_srcdir)/src/include
 
 if MINGW
-  WINLIBS = -lregex 
+  WINLIBS = -lregex
 endif
 
 bin_PROGRAMS = gnunet-setup
@@ -26,22 +26,18 @@
   gnunet-setup-datacache-config.c \
   gnunet-setup-namestore-plugins.c \
   gnunet-setup-namestore-config.c \
-  gnunet-setup-gns.c gnunet-setup-gns.h \
-  gnunet-setup-gns-edit.c gnunet-setup-gns-edit.h \
   gnunet-setup-hostlist-editing.c \
-  gnunet-setup-hostlist-server.c 
+  gnunet-setup-hostlist-server.c
 gnunet_setup_LDADD = \
   $(top_builddir)/src/lib/libgnunetgtk.la \
-  @GTK_LIBS@ @GNUNET_LIBS@ @GLADE_LIBS@ @QR_LIBS@ \
+  @GTK_LIBS@ @GNUNET_LIBS@ @GLADE_LIBS@ \
   $(WINLIBS) \
-  -lgnunetutil -lgnunetnat -lgnunetnamestore -lgnunetdnsparser \
-  -lgnunetidentity \
-  $(INTLLIBS) 
+  -lgnunetutil -lgnunetnat \
+  $(INTLLIBS)
 gnunet_setup_CFLAGS = \
   @GTK_CFLAGS@ \
   @GNUNET_CFLAGS@ \
-  @GLADE_CFLAGS@ \
-  @QR_CFLAGS@ 
+  @GLADE_CFLAGS@
 
 gnunet_setup_LDFLAGS = \
-  -export-dynamic 
+  -export-dynamic

Deleted: gnunet-gtk/src/setup/gnunet-setup-gns-edit.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns-edit.c        2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/src/setup/gnunet-setup-gns-edit.c        2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,1903 +0,0 @@
-/*
-     This file is part of GNUnet
-     (C) 2012 Christian Grothoff (and other contributing authors)
-
-     GNUnet 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 3, or (at your
-     option) any later version.
-
-     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
-*/
-/**
- * @file src/setup/gnunet-setup-gns-edit.c
- * @author Christian Grothoff
- * @brief editing dialogs for GNS records
- */
-#include "gnunet-setup-gns-edit.h"
-#include <gnunet/gnunet_gns_service.h>
-
-
-/**
- * Columns in the 'zone_liststore'.
- */
-enum ZoneListColumn
-{
-  /**
-   * A gchararray with the name of the zone for users.
-   */
-  ZONELIST_COL_NAME = 0,
-
-  /**
-   * A gchararray with the name of the configuration file option with
-   * the zone key.
-   */
-  ZONELIST_COL_OPTION = 1
-};
-
-
-/**
- * Disable 'save' button, dialog state is not acceptable.
- *
- * @param edc dialog to modify
- */
-static void
-edit_dialog_disable_save (struct EditDialogContext *edc)
-{
-  gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                               
"edit_dialog_save_button")),
-                           FALSE);
-}
-
-
-/**
- * Enable 'save' button, dialog state is acceptable.
- *
- * @param edc dialog to modify
- */
-static void
-edit_dialog_enable_save (struct EditDialogContext *edc)
-{
-  gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                               
"edit_dialog_save_button")),
-                           TRUE);
-}
-
-
-/**
- * Check that the common elements of the edit dialog are valid;
- * if so, call 'edit_dialog_enable_save', otherwise 'edit_dialog_disable_save'.
- *
- * @param edc edit dialog to check
- */
-static void
-edit_dialog_check_save (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *name;
-
-  /* check name */
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_name_entry"));
-  name = gtk_editable_get_chars (entry, 0, -1);
-  if ( (GNUNET_SYSERR == GNUNET_DNSPARSER_check_label (name)) &&
-       (0 != strcmp (name, GNUNET_GNS_MASTERZONE_STR)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  /* any other checks should go here */
-  edit_dialog_enable_save (edc);
-}
-
-
-/**
- * The 'relative' expiration time radiobutton was toggled (on or off).
- *
- * @param button the button
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_expiration_relative_radiobutton_toggled_cb (GtkToggleButton 
*button,
-                                                           gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  if (gtk_toggle_button_get_active (button))
-    gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_relative_combobox")));
-  else
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_relative_combobox")));
-}
-
-
-/**
- * The 'forever' expiration time radiobutton was toggled (on or off).
- *
- * @param button the button
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_expiration_forever_radiobutton_toggled_cb (GtkToggleButton 
*button,
-                                                           gpointer user_data)
-{
-  /* nothing to do */
-}
-
-
-/**
- * The 'absolute' expiration time radiobutton was toggled (on or off).
- *
- * @param button the button
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_expiration_absolute_radiobutton_toggled_cb (GtkToggleButton 
*button,
-                                                           gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  if (gtk_toggle_button_get_active (button))
-  {
-    gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_calendar")));
-    gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_hbox")));
-  }
-  else
-  {
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_calendar")));
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_hbox")));
-  }
-}
-
-
-/**
- * Initialize widgets of the edit dialog that are the same regardless of
- * the type of the record.
- *
- * @param edc dialog context
- */
-static void
-edit_dialog_setup_common_elements (struct EditDialogContext *edc)
-{
-  GtkComboBox *cb;
-  GtkTreeModel *tm;
-  GtkListStore *ls;
-  GtkTreeIter iter;
-  gchar *opt;
-  struct GNUNET_TIME_Absolute at;
-  struct GNUNET_TIME_Relative rt;
-  time_t tp;
-  struct tm *ymd;
-  GtkCalendar *cal;
-
-  if (GNUNET_YES !=
-      edc->old_record_in_namestore)
-  {
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_delete_button")));
-    edit_dialog_disable_save (edc);
-  }
-  gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_name_entry")),
-                     edc->name);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                          
"edit_dialog_options_public_checkbutton")),
-                               edc->n_public);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                          
"edit_dialog_options_shadow_checkbutton")),
-                               edc->n_is_shadow);
-  if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us == edc->n_exp_time)
-  {
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                            
"edit_dialog_expiration_never_radiobutton")),
-                                 TRUE);
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_calendar")));
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_hbox")));
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_relative_combobox")));
-  }
-  if ( (edc->n_is_relative) &&
-       (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != edc->n_exp_time) )
-  {
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                            
"edit_dialog_expiration_relative_radiobutton")),
-                                 TRUE);
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_calendar")));
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_absolute_hbox")));
-    rt.rel_value_us = edc->n_exp_time;
-  }
-  else
-  {
-    /* select a sane default */
-    rt = GNUNET_TIME_UNIT_DAYS;
-  }
-  cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
-                                             
"edit_dialog_expiration_relative_combobox"));
-  ls = GTK_LIST_STORE (gtk_combo_box_get_model (cb));
-  gtk_list_store_insert_with_values (ls, &iter,
-                                    -1 /* position: append */,
-                                    0, GNUNET_STRINGS_relative_time_to_string 
(rt, GNUNET_NO),
-                                    -1);
-  gtk_combo_box_set_active_iter (cb, &iter);
-  if ( (! edc->n_is_relative) &&
-       (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us != edc->n_exp_time) )
-  {
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                            
"edit_dialog_expiration_absolute_radiobutton")),
-                                 TRUE);
-
-    gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (edc->builder,
-                                                        
"edit_dialog_expiration_relative_combobox")));
-    at.abs_value_us = edc->n_exp_time;
-  }
-  else
-  {
-    /* select a sane default: right now */
-    at = GNUNET_TIME_absolute_get ();
-  }
-  tp = (time_t) (at.abs_value_us / 1000000LL); /* convert to seconds */
-  ymd = gmtime (&tp);
-  cal = GTK_CALENDAR (gtk_builder_get_object (edc->builder,
-                                             
"edit_dialog_expiration_absolute_calendar"));
-  gtk_calendar_select_month (cal,
-                            ymd->tm_mon,
-                            ymd->tm_year + 1900);
-  gtk_calendar_mark_day (cal,
-                        ymd->tm_mday);
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                     
"edit_dialog_expiration_absolute_hours_spinbutton")),
-                            (double) ymd->tm_hour);
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                     
"edit_dialog_expiration_absolute_minutes_spinbutton")),
-                            (double) ymd->tm_min);
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                     
"edit_dialog_expiration_absolute_seconds_spinbutton")),
-                            (double) ymd->tm_sec);
-
-  /* set source zone! */
-  cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
-                                             "edit_dialog_zone_combobox"));
-  tm = gtk_combo_box_get_model (cb);
-  opt = NULL;
-  if (gtk_tree_model_get_iter_first (tm, &iter))
-  {
-    do
-    {
-      gtk_tree_model_get (tm, &iter,
-                         ZONELIST_COL_OPTION, &opt,
-                         -1);
-      if ( (NULL != opt) &&
-          (0 == strcasecmp (opt,
-                            edc->new_zone_option)) )
-       break;
-      g_free (opt);
-      opt = NULL;
-    } while (gtk_tree_model_iter_next (tm, &iter));
-  }
-  if (NULL != opt)
-  {
-    gtk_combo_box_set_active_iter (cb, &iter);
-    g_free (opt);
-  }
-}
-
-
-/**
- * Perform the reverse of the 'edit_dialog_setup_common_elements' function,
- * that is, extract the values from the (common) widgets and store the
- * values in 'edc'.
- *
- * @param edc edit dialog to extract data from
- */
-static void
-edit_dialog_putes_common_elements (struct EditDialogContext *edc)
-{
-  const char *rt_s;
-  struct GNUNET_TIME_Relative rt;
-  GtkComboBox *cb;
-  GtkTreeModel *tm;
-  GtkTreeIter iter;
-  gchar *opt;
-
-  /* is public flag */
-  edc->n_public = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
           "edit_dialog_options_public_checkbutton")));
-  /* is shadow flag */
-  edc->n_is_shadow = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
              "edit_dialog_options_shadow_checkbutton")));
-
-  /* 'forever' expiration time */
-  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                              
"edit_dialog_expiration_never_radiobutton"))))
-  {
-    edc->n_exp_time = GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us;
-    edc->n_is_relative = TRUE; /* doesn't matter, but make sure it is 
well-defined anyway */
-  }
-
-  /* 'relative' expiration time */
-  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                              
"edit_dialog_expiration_relative_radiobutton"))))
-  {
-    cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
-                                               
"edit_dialog_expiration_relative_combobox"));
-    tm = gtk_combo_box_get_model (cb);
-    if (! gtk_combo_box_get_active_iter (cb, &iter))
-    {
-      GNUNET_break (0);
-      return;
-    }
-    gtk_tree_model_get (tm, &iter,
-                       0, &rt_s,
-                       -1);
-    GNUNET_break (GNUNET_YES ==
-                 GNUNET_STRINGS_fancy_time_to_relative (rt_s,
-                                                        &rt));
-    edc->n_exp_time = rt.rel_value_us;
-    edc->n_is_relative = TRUE;
-  }
-
-  /* 'absolute' expiration time */
-  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                              
"edit_dialog_expiration_absolute_radiobutton"))))
-  {
-    guint year;
-    guint month;
-    guint day;
-    guint hour;
-    guint minute;
-    guint second;
-    char fancydate[128];
-    struct GNUNET_TIME_Absolute atime;
-
-    gtk_calendar_get_date (GTK_CALENDAR (gtk_builder_get_object (edc->builder,
-                                                                
"edit_dialog_expiration_absolute_calendar")),
-                          &year, &month, &day);
-    hour = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                              
"edit_dialog_expiration_absolute_hours_spinbutton")));
-    minute = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                         
"edit_dialog_expiration_absolute_minutes_spinbutton")));
-    second = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
 "edit_dialog_expiration_absolute_seconds_spinbutton")));
-    GNUNET_snprintf (fancydate,
-                    sizeof (fancydate),
-                    "%u-%u-%u %u:%u:%u",
-                    (unsigned int) year,
-                    (unsigned int) month + 1,
-                    (unsigned int) day,
-                    (unsigned int) hour,
-                    (unsigned int) minute,
-                    (unsigned int) second);
-    GNUNET_break (GNUNET_OK ==
-                 GNUNET_STRINGS_fancy_time_to_absolute (fancydate,
-                                                        &atime));
-    edc->n_exp_time = atime.abs_value_us;
-    edc->n_is_relative = FALSE;
-  }
-
-  /* extract target zone! */
-  cb = GTK_COMBO_BOX (gtk_builder_get_object (edc->builder,
-                                             "edit_dialog_zone_combobox"));
-  tm = gtk_combo_box_get_model (cb);
-  if (! gtk_combo_box_get_active_iter (cb, &iter))
-  {
-    GNUNET_break (0);
-  }
-  else
-  {
-    gtk_tree_model_get (tm, &iter,
-                       ZONELIST_COL_OPTION, &opt,
-                       -1);
-    if (NULL == opt)
-      GNUNET_break (0);
-    else
-    {
-      g_free (edc->new_zone_option);
-      edc->new_zone_option = g_strdup (opt);
-      g_free (opt);
-    }
-  }
-}
-
-
-/**
- * Run the edit dialog.  Performs all of the common initialization
- * steps to run an edit dialog for records.
- *
- * @param edc editing context
- */
-static void
-run_edit_dialog (struct EditDialogContext *edc)
-{
-  edit_dialog_setup_common_elements (edc);
-  gtk_dialog_set_default_response (edc->dialog,
-                                  GTK_RESPONSE_OK);
-  gtk_window_present (GTK_WINDOW (edc->dialog));
-}
-
-
-/* ************************ A records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for A-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_a_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-  struct in_addr v4;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_a_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (1 != inet_pton (AF_INET, preedit, &v4)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_a_dialog_response_cb (GtkDialog *dialog,
-                              gint response_id,
-                              gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_a_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the A record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_a_entry_changed_cb (GtkEditable *entry,
-                                   gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_a_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'A' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_a (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_a.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set A record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_a_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_a_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_a_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ AAAA records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for AAAA-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_aaaa_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-  struct in6_addr v6;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_aaaa_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (1 != inet_pton (AF_INET6, preedit, &v6)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_aaaa_dialog_response_cb (GtkDialog *dialog,
-                                 gint response_id,
-                                 gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_aaaa_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the AAAA record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_aaaa_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_aaaa_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'AAAA' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_aaaa (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_aaaa.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set AAAA record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_aaaa_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_aaaa_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_aaaa_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ CNAME records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for AAAA-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_cname_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_cname_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_cname_dialog_response_cb (GtkDialog *dialog,
-                                  gint response_id,
-                                  gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_cname_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the CNAME record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_cname_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_cname_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'CNAME' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_cname (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_cname.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set CNAME record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_cname_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_cname_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_cname_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ LEHO records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for LEHO-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_leho_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_leho_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_leho_dialog_response_cb (GtkDialog *dialog,
-                                  gint response_id,
-                                  gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_leho_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the LEHO record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_leho_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_leho_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'LEHO' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_leho (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_leho.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set LEHO record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_leho_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_leho_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_leho_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ MX records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for MX-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_mx_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_mx_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_mx_dialog_response_cb (GtkDialog *dialog,
-                                  gint response_id,
-                                  gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-  char *result;
-  unsigned int distance;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_mx_entry"));
-    value = gtk_entry_get_text (entry);
-    distance = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
   "edit_dialog_mx_distance_spinbutton")));
-    g_free (edc->n_value);
-    GNUNET_asprintf (&result,
-                    "%hu,%s",
-                    distance,
-                    value);
-    edc->n_value = g_strdup (result);
-    GNUNET_free (result);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the MX record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_mx_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_mx_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'MX' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_mx (struct EditDialogContext *edc)
-{
-  uint16_t mx_pref;
-  char result[253 + 1];
-
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_mx.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    if (2 != SSCANF(edc->n_value,
-                   "%hu,%253s", &mx_pref, result))
-    {
-      GNUNET_break (0);
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  _("Unable to parse MX record `%s'\n"),
-                 edc->n_value);
-    }
-    else
-    {
-      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                            
"edit_dialog_mx_entry")),
-                         result);
-      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                         
"edit_dialog_mx_distance_spinbutton")),
-                                mx_pref);
-    }
-  }
-  edc->validator = &edit_dialog_mx_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_mx_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ NS records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for NS-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_ns_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_ns_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_ns_dialog_response_cb (GtkDialog *dialog,
-                               gint response_id,
-                               gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_ns_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the NS record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_ns_entry_changed_cb (GtkEditable *entry,
-                                    gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_ns_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'NS' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_ns (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_ns.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set NS record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_ns_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_ns_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_ns_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ PKEY records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for PKEY-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_pkey_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-  struct GNUNET_CRYPTO_EccPublicSignKey pub;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_pkey_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK !=
-       GNUNET_CRYPTO_ecc_public_sign_key_from_string (preedit,
-                                                 strlen (preedit),
-                                                 &pub)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_pkey_dialog_response_cb (GtkDialog *dialog,
-                                  gint response_id,
-                                  gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_pkey_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the PKEY record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_pkey_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_pkey_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'PKEY' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_pkey (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder 
("gnunet_setup_gns_edit_pkey.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set PKEY record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_pkey_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_pkey_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_pkey_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ PTR records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for PTR-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_ptr_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_ptr_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_ptr_dialog_response_cb (GtkDialog *dialog,
-                                gint response_id,
-                                gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_ptr_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the PTR record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_ptr_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_ptr_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'PTR' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_ptr (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_ptr.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set PTR record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_ptr_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_ptr_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_ptr_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ SOA records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for SOA-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_soa_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               
"edit_dialog_soa_source_host_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  /* check for '@' in the e-mail --- required format uses "." instead! */
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               
"edit_dialog_soa_contact_email_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (NULL != strstr (preedit, "@")) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    /* E-mail is specified in the RFC also as a 'domain-name', hence
-       we check above that it follows those conventions as well; the '@'
-       is a common mistake, and while it should be illegal despite IDN,
-       it feels better to check explicitly. */
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_soa_dialog_response_cb (GtkDialog *dialog,
-                                  gint response_id,
-                                  gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *source_host;
-  const gchar *contact_email;
-  unsigned int soa_serial;
-  unsigned int soa_refresh;
-  unsigned int soa_retry;
-  unsigned int soa_expire;
-  unsigned int soa_min;
-  char *result;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              
"edit_dialog_soa_source_host_entry"));
-    source_host = gtk_entry_get_text (entry);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              
"edit_dialog_soa_contact_email_entry"));
-    contact_email = gtk_entry_get_text (entry);
-    soa_serial = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
     "edit_dialog_soa_serial_number_spinbutton")));
-    soa_refresh = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
      "edit_dialog_soa_refresh_time_spinbutton")));
-    soa_retry = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
    "edit_dialog_soa_retry_time_spinbutton")));
-    soa_expire = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
     "edit_dialog_soa_expire_time_spinbutton")));
-    soa_min = gtk_spin_button_get_value (GTK_SPIN_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
  "edit_dialog_soa_minimum_ttl_spinbutton")));
-    GNUNET_asprintf (&result,
-                    "rname=%s mname=%s %lu,%lu,%lu,%lu,%lu",
-                    source_host, contact_email,
-                    soa_serial,
-                    soa_refresh,
-                    soa_retry,
-                    soa_expire,
-                    soa_min);
-    edc->n_value = g_strdup (result);
-    GNUNET_free (result);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the SOA record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_soa_contact_email_entry_changed_cb (GtkEditable *entry,
-                                                   gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_soa_validity_check (edc);
-}
-
-
-/**
- * The user has edited the SOA record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_soa_source_host_entry_changed_cb (GtkEditable *entry,
-                                                 gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_soa_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'SOA' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_soa (struct EditDialogContext *edc)
-{
-  char soa_rname[253 + 1];
-  char soa_mname[253 + 1];
-  unsigned int soa_serial;
-  unsigned int soa_refresh;
-  unsigned int soa_retry;
-  unsigned int soa_expire;
-  unsigned int soa_min;
-
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_soa.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    if (7 != SSCANF (edc->n_value,
-                    "rname=%253s mname=%253s %u,%u,%u,%u,%u",
-                    soa_rname, soa_mname,
-                    &soa_serial, &soa_refresh, &soa_retry, &soa_expire, 
&soa_min))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  _("Unable to parse SOA record `%s'\n"),
-                 edc->n_value);
-    }
-    else
-    {
-      /* set SOA record */
-      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                            
"edit_dialog_soa_source_host_entry")),
-                         soa_rname);
-      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                            
"edit_dialog_soa_contact_email_entry")),
-                         soa_mname);
-      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                         
"edit_dialog_soa_serial_number_spinbutton")),
-                                soa_serial);
-      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                         
"edit_dialog_soa_refresh_time_spinbutton")),
-                                soa_refresh);
-      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                         
"edit_dialog_soa_retry_time_spinbutton")),
-                                soa_retry);
-      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                         
"edit_dialog_soa_expire_time_spinbutton")),
-                                soa_expire);
-      gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                         
"edit_dialog_soa_minimum_ttl_spinbutton")),
-                                soa_min);
-    }
-  }
-  edc->validator = &edit_dialog_soa_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_soa_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ SRV records *********************** */
-/* *** Not implemented: namestore_common.c as well as here! *** */
-/* ************************ SRV records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for SRV-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_srv_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               
"edit_dialog_srv_target_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK != GNUNET_DNSPARSER_check_name (preedit)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_name_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-#if 0
-  /* FIXME: check service name format! */
-#endif
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_srv_dialog_response_cb (GtkDialog *dialog,
-                                  gint response_id,
-                                  gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-#if 0
-    GtkEntry *entry;
-    const gchar *value;
-
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_srv_target_entry"));
-    /* FIXME: build srv record */
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-#endif
-
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the SRV record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_srv_target_entry_changed_cb (GtkEditable *entry,
-                                            gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_srv_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'SRV' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_srv (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_srv.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-#if 0
-    /* FIXME */
-    /* set SRV record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_srv_target_entry")),
-                       edc->n_value);
-#endif
-  }
-  edc->validator = &edit_dialog_srv_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_srv_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ TXT records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for TXT-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_txt_validity_check (struct EditDialogContext *edc)
-{
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_txt_dialog_response_cb (GtkDialog *dialog,
-                                gint response_id,
-                                gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *value;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_txt_entry"));
-    value = gtk_entry_get_text (entry);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (value);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the TXT record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_txt_entry_changed_cb (GtkEditable *entry,
-                                      gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_txt_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'TXT' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_txt (struct EditDialogContext *edc)
-{
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_txt.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set TXT record */
-    gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                          
"edit_dialog_txt_entry")),
-                       edc->n_value);
-  }
-  edc->validator = &edit_dialog_txt_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_txt_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* ************************ VPN records *********************** */
-
-/**
- * Check validity of the value in the edit dialog for VPN-records.
- * Then call the shared validity check if the result is OK.
- *
- * @param edc edit dialog context
- */
-static void
-edit_dialog_vpn_validity_check (struct EditDialogContext *edc)
-{
-  GtkEditable *entry;
-  const gchar *preedit;
-  struct GNUNET_HashCode hc;
-
-  entry = GTK_EDITABLE (gtk_builder_get_object (edc->builder,
-                                               "edit_dialog_vpn_peer_entry")),
-  preedit = gtk_editable_get_chars (entry, 0, -1);
-  if ( (NULL == preedit) ||
-       (GNUNET_OK !=
-       GNUNET_CRYPTO_hash_from_string (preedit, &hc)) )
-  {
-    edit_dialog_disable_save (edc);
-    return;
-  }
-  edit_dialog_check_save (edc);
-}
-
-
-/**
- * Editing dialog was closed, get the data and call the
- * continuation.
- *
- * @param dialog editing dialog
- * @param response_id action that caused the dialog to be closed
- * @param user_data the 'struct EditDialogContext'
- */
-void
-GNS_edit_vpn_dialog_response_cb (GtkDialog *dialog,
-                                gint response_id,
-                                gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-  GtkEntry *entry;
-  const gchar *identifier;
-  const gchar *peer;
-  unsigned int proto;
-  char *result;
-
-  if (GTK_RESPONSE_OK == response_id)
-  {
-    edit_dialog_putes_common_elements (edc);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              
"edit_dialog_vpn_identifier_entry"));
-    identifier = gtk_entry_get_text (entry);
-    entry = GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                              "edit_dialog_vpn_peer_entry"));
-    peer = gtk_entry_get_text (entry);
-    proto = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(gtk_builder_get_object (edc->builder,
-                                                                               
     "edit_dialog_vpn_protocol_tcp_radiobutton"))) ? IPPROTO_TCP : IPPROTO_UDP;
-    GNUNET_asprintf (&result,
-                    "%u %s %s",
-                    proto,
-                    (const char *) peer,
-                    (const char *) identifier);
-    g_free (edc->n_value);
-    edc->n_value = g_strdup (result);
-    GNUNET_free (result);
-  }
-  gtk_widget_destroy (GTK_WIDGET (edc->dialog));
-  g_object_unref (edc->builder);
-  edc->builder = NULL;
-  edc->cont (edc, response_id);
-}
-
-
-/**
- * The user has edited the VPN record value.  Enable/disable 'save'
- * button depending on the validity of the value.
- *
- * @param entry editing widget
- * @param user_data the 'struct EditDialogContext' of the dialog
- */
-void
-GNS_edit_dialog_vpn_peer_entry_changed_cb (GtkEditable *entry,
-                                          gpointer user_data)
-{
-  struct EditDialogContext *edc = user_data;
-
-  edit_dialog_vpn_validity_check (edc);
-}
-
-
-/**
- * Run an GNS Edit dialog for an 'VPN' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_vpn (struct EditDialogContext *edc)
-{
-  char s_peer[103 + 1];
-  char s_serv[253 + 1];
-  unsigned int proto;
-
-  edc->builder = GNUNET_GTK_get_new_builder ("gnunet_setup_gns_edit_vpn.glade",
-                                            edc);
-  if (NULL == edc->builder)
-  {
-    GNUNET_break (0);
-    edc->cont (edc, GTK_RESPONSE_CANCEL);  /* treat as 'cancel' */
-    return;
-  }
-  if (GNUNET_YES ==
-      edc->old_record_in_namestore)
-  {
-    /* set VPN record */
-    if (3 != SSCANF (edc->n_value,"%u %103s %253s",
-                    &proto, s_peer, s_serv))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  _("Unable to parse VPN record string `%s'\n"),
-                 edc->n_value);
-    }
-    else
-    {
-      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                            
"edit_dialog_vpn_identifier_entry")),
-                         s_serv);
-      gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (edc->builder,
-                                                            
"edit_dialog_vpn_peer_entry")),
-                         s_peer);
-      if (IPPROTO_UDP == proto)
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                               
 "edit_dialog_vpn_protocol_udp_radiobutton")), TRUE);
-      else
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object 
(edc->builder,
-                                                                               
 "edit_dialog_vpn_protocol_tcp_radiobutton")), TRUE);
-    }
-  }
-  edc->validator = &edit_dialog_vpn_validity_check;
-  edc->dialog = GTK_DIALOG (gtk_builder_get_object (edc->builder,
-                                                   "edit_vpn_dialog"));
-  run_edit_dialog (edc);
-}
-
-
-/* end of gnunet-setup-gns-edit.c */

Deleted: gnunet-gtk/src/setup/gnunet-setup-gns-edit.h
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns-edit.h        2013-10-07 14:19:52 UTC 
(rev 29924)
+++ gnunet-gtk/src/setup/gnunet-setup-gns-edit.h        2013-10-07 14:35:42 UTC 
(rev 29925)
@@ -1,254 +0,0 @@
-/*
-     This file is part of GNUnet
-     (C) 2012 Christian Grothoff (and other contributing authors)
-
-     GNUnet 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 3, or (at your
-     option) any later version.
-
-     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
-*/
-
-/**
- * @file src/setup/gnunet-setup-gns-edit.h
- * @author Christian Grothoff
- * @brief editing dialogs for GNS records
- */
-#ifndef GNUNET_SETUP_GNS_EDIT_H
-#define GNUNET_SETUP_GNS_EDIT_H
-
-#include "gnunet_gtk.h"
-#include "gnunet-setup-gns.h"
-#include <gnunet/gnunet_namestore_service.h>
-#include <gnunet/gnunet_dnsparser_lib.h>
-
-
-/**
- * Context for edit operations.
- */
-struct EditDialogContext;
-
-
-/**
- * Signature of the continuation function invoked once the
- * edit dialog is done.
- *
- * @param edc dialog context
- * @param ret return code from the dialog
- */
-typedef void (*GNS_EditContinuation)(struct EditDialogContext *edc,
-                                    GtkResponseType ret);
-
-
-/**
- * Signature of a dialog-specific validation function to validate the
- * value.  Should either call 'edit_dialog_disable_save' if the value
- * is invalid, or 'edit_dialog_check_save' if the value is valid.
- */
-typedef void (*GNS_EditValidator)(struct EditDialogContext *edc);
-
-
-/**
- * Context for edit operations.
- */
-struct EditDialogContext
-{
-
-  /**
-   * Where in the tree view are we editing?
-   */
-  struct RecordInfo *ri;
-
-  /**
-   * Function to call at the end.
-   */
-  GNS_EditContinuation cont;
-
-  /**
-   * Function to call to validate the state of the dialog and
-   * ultimately update the 'save' button sensitivity.
-   */
-  GNS_EditValidator validator;
-
-  /**
-   * Builder for the dialog (internal to gnunet-setup-gns-edit.c).
-   */
-  GtkBuilder *builder;
-
-  /**
-   * Main dialog window.
-   */
-  GtkDialog *dialog;
-
-  /**
-   * Name of the record.
-   */
-  gchar *name;
-
-  /**
-   * Value of the record in string format.
-   */
-  gchar *n_value;
-
-  /**
-   * Zone into which the record should be placed.
-   */
-  gchar *new_zone_option;
-
-  /**
-   * Expiration time value (absolute or relative).
-   */
-  guint64 n_exp_time;
-
-  /**
-   * Offset of the record we are editing in the 'rd' list of 'ri'.
-   */
-  unsigned int off;
-
-  /**
-   * Flag indicating if the old record was in the namestore.
-   */
-  int old_record_in_namestore;
-
-  /**
-   * Type of the record.
-   */
-  uint32_t record_type;
-
-  /**
-   * Is this record 'public'?
-   */
-  gboolean n_public;
-
-  /**
-   * Is the expiration time relative?
-   */
-  gboolean n_is_relative;
-
-  /**
-   * Is this record a shadow record?
-   */
-  gboolean n_is_shadow;
-
-};
-
-
-
-/**
- * Run an GNS Edit dialog for an 'A' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_a (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'AAAA' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_aaaa (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'CNAME' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_cname (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'LEHO' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_leho (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'MX' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_mx (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'NS' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_ns (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'PKEY' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_pkey (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'PTR' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_ptr (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'SOA' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_soa (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'SRV' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_srv (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'TXT' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_txt (struct EditDialogContext *edc);
-
-
-/**
- * Run an GNS Edit dialog for an 'VPN' Record.
- *
- * @param edc editing context to use
- */
-void
-GNS_edit_dialog_vpn (struct EditDialogContext *edc);
-
-
-#endif

Deleted: gnunet-gtk/src/setup/gnunet-setup-gns.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns.c     2013-10-07 14:19:52 UTC (rev 
29924)
+++ gnunet-gtk/src/setup/gnunet-setup-gns.c     2013-10-07 14:35:42 UTC (rev 
29925)
@@ -1,2180 +0,0 @@
-/*
-     This file is part of GNUnet
-     (C) 2012, 2013 Christian Grothoff (and other contributing authors)
-
-     GNUnet 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 3, or (at your
-     option) any later version.
-
-     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
-*/
-
-/**
- * @file src/setup/gnunet-setup-gns.c
- * @author Christian Grothoff
- * @brief everything releated to the main GNS zone tree view
- */
-#include "gnunet_gtk.h"
-#include "gnunet-setup-gns.h"
-#include "gnunet-setup-gns-edit.h"
-#include <gnunet/gnunet_gns_service.h>
-#include <gnunet/gnunet_identity_service.h>
-#include <gnunet/gnunet_namestore_service.h>
-#include <gnunet/gnunet_dnsparser_lib.h>
-
-/**
- * Text we use for the 'name' entry for the user to select
- * for creating a new name.
- */
-#define NEW_NAME_STR gettext_noop ("<new name>")
-
-/**
- * Text we use for the 'type' selection for the user to
- * select when adding a new record.
- */
-#define NEW_RECORD_STR gettext_noop ("<new record>")
-
-/**
- * Text we use for the expiration to mean 'never expires'.
- */
-#define EXPIRE_NEVER_STRING gettext_noop ("never")
-
-/**
- * Text we use for invalid values.
- */
-#define EXPIRE_INVALID_STRING gettext_noop ("invalid")
-
-/**
- * Height and width of the QR code we display
- */
-#define QRCODE_IMAGE_SIZE 64
-
-/**
- * Columns in the gns model.
- */
-enum GNSTreestoreColumn
-{
-  /**
-   * A gchararray with the value for the 'name' column.
-   */
-  GNS_TREESTORE_COL_NAME = 0,
-
-  /**
-   * A gboolean, TRUE if the record is public, FALSE if it is private.
-   */
-  GNS_TREESTORE_COL_IS_PUBLIC,
-
-  /**
-   * A guint with the record type (numeric value)
-   */
-  GNS_TREESTORE_COL_RECORD_TYPE,
-
-  /**
-   * A gchararray with the record type (human-readable string)
-   */
-  GNS_TREESTORE_COL_RECORD_TYPE_AS_STR,
-
-  /**
-   * A guint64 with the expiration time (relative or absolute)
-   */
-  GNS_TREESTORE_COL_EXP_TIME,
-
-  /**
-   * A gboolean, TRUE if the expiration time is relative.
-   */
-  GNS_TREESTORE_COL_EXP_TIME_IS_REL,
-
-  /**
-   * A gchararray with the expiration time as a human-readable string.
-   */
-  GNS_TREESTORE_COL_EXP_TIME_AS_STR,
-
-  /**
-   * A gchararray with the value of the record as a human-readable string.
-   */
-  GNS_TREESTORE_COL_VAL_AS_STR,
-
-  /**
-   * A gchararray with the background color to use for the value.
-   */
-  GNS_TREESTORE_COL_VAL_COLOR,
-
-  /**
-   * A gboolean; TRUE if the 'name' column should be shown,
-   * FALSE for the lines with the individual records under a name.
-   */
-  GNS_TREESTORE_COL_NAME_IS_VISIBLE,
-
-  /**
-   * A gboolean, TRUE if this row is for editing a record,
-   * FALSE if the 'public', 'type', 'expiration' and 'value'
-   * columns should be hidden.
-   */
-  GNS_TREESTORE_COL_IS_RECORD_ROW,
-
-  /**
-   * A gboolean, FALSE if this is one of our 'dummy' rows that
-   * is used to create a new name or record, TRUE if this is
-   * a normal row with either a name or a record.
-   */
-  GNS_TREESTORE_COL_NOT_DUMMY_ROW,
-
-  /**
-   * A gchararray with the name of the color to use for the
-   * expiration column.
-   */
-  GNS_TREESTORE_COL_EXP_TIME_COLOR,
-
-  /**
-   * A gchararray with the name of the color to use for the
-   * name column.
-   */
-  GNS_TREESTORE_COL_NAME_COLOR,
-
-  /**
-   * A gboolean; TRUE if the 'type' column can still be changed;
-   * FALSE once we have edited the value.
-   */
-  GNS_TREESTORE_COL_TYPE_IS_EDITABLE,
-
-  /**
-   * A gboolean; TRUE if the value is a shadow record.
-   */
-  GNS_TREESTORE_COL_IS_SHADOW,
-
-  /**
-   * A gboolean; TRUE if the name is editable (dummy line).
-   */
-  GNS_TREESTORE_COL_NAME_IS_EDITABLE,
-
-  /**
-   * A guint; offset of this record in the array.
-   */
-  GNS_TREESTORE_COL_RECORD_OFFSET
-};
-
-
-/**
- * Columns in the gns type model.
- */
-enum LIST_COLUMNS
-{
-
-  /**
-   * A guint
-   */
-  GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPE = 0,
-
-
-  /**
-   * A gchararray
-   */
-  GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME
-};
-
-
-/**
- * Closure for 'operation_done_cont'.
- */
-struct OperationContext
-{
-
-  /**
-   * Kept in a DLL.
-   */
-  struct OperationContext *next;
-
-  /**
-   * Kept in a DLL.
-   */
-  struct OperationContext *prev;
-
-  /**
-   * Associated namestore operation.
-   */
-  struct GNUNET_NAMESTORE_QueueEntry *qe;
-
-};
-
-
-/**
- * Closure for 'merge_with_existing_records'.
- */
-struct MoveOperationContext
-{
-
-  /**
-   * Kept in a DLL.
-   */
-  struct MoveOperationContext *next;
-
-  /**
-   * Kept in a DLL.
-   */
-  struct MoveOperationContext *prev;
-
-  /**
-   * Associated namestore operation.
-   */
-  struct GNUNET_NAMESTORE_QueueEntry *qe;
-
-  /**
-   * Info from editing dialog.
-   */
-  struct EditDialogContext *edc;
-
-  /**
-   * Private key of target zone.
-   */
-  struct GNUNET_CRYPTO_EccPrivateKey *pk;
-
-  /**
-   * Data to free.
-   */
-  void *data;
-
-  /**
-   * Record to merge.
-   */
-  struct GNUNET_NAMESTORE_RecordData rd;
-
-};
-
-
-/**
- * Information we keep per name.
- */
-struct RecordInfo
-{
-
-  /**
-   * Name for this record.
-   */
-  char *name;
-
-  /**
-   * Location of this record in the tree view.
-   */
-  GtkTreeRowReference *rr;
-
-  /**
-   * Serialized records under this name.
-   */
-  void *data;
-
-  /**
-   * Number of bytes in 'data'.
-   */
-  size_t data_size;
-
-  /**
-   * Number of records serialized in 'data'.
-   */
-  unsigned int rd_count;
-
-};
-
-
-
-
-
-/**
- * Hash map from the H(name) in the zone to the 'struct RecordInfo'
- * for the respective entry in the tree view.
- */
-static struct GNUNET_CONTAINER_MultiHashMap *n2r;
-
-/**
- * Our current zone monitor.
- */
-static struct GNUNET_NAMESTORE_ZoneMonitor *zmon;
-
-/**
- * Head of linked list of active operations.
- */
-static struct OperationContext *oc_head;
-
-/**
- * Tail of linked list of active operations.
- */
-static struct OperationContext *oc_tail;
-
-/**
- * Head of linked list of active operations.
- */
-static struct MoveOperationContext *moc_head;
-
-/**
- * Tail of linked list of active operations.
- */
-static struct MoveOperationContext *moc_tail;
-
-/**
- * Handle to the namestore.
- */
-static struct GNUNET_NAMESTORE_Handle *namestore;
-
-/**
- * Tree store with all of the values we're modifying for GNS.
- */
-static GtkTreeStore *ts;
-
-/**
- * Tree model (same object as 'ts', just different type).
- */
-static GtkTreeModel *tm;
-
-/**
- * The main tree view for 'gns' that shows the records.
- */
-static GtkTreeView *tv;
-
-/**
- * Private key of the zone we are currently editing.
- */
-static struct GNUNET_CRYPTO_EccPrivateKey *pkey;
-
-/**
- * Public key of the zone we are currently editing.
- */
-static struct GNUNET_CRYPTO_EccPublicSignKey pubkey;
-
-/**
- * Pseudonym of the current zone we are editing.
- */
-static char *current_pseudonym;
-
-/**
- * Pointer to name of the configuration option that gives the
- * zone key for the zone we are editing right now.
- */
-static const char *current_zone_option;
-
-/**
- * Connection to identity service.
- */
-static struct GNUNET_IDENTITY_Handle *identity;
-
-/**
- * Request for our ego.
- */
-static struct GNUNET_IDENTITY_Operation *id_op;
-
-
-
-#if HAVE_QRENCODE_H
-#include <qrencode.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-/**
- * Create the QR code image for our zone.
- *
- * @param scale factor for scaling up the size of the image to create
- * @return NULL on error
- */
-static GdkPixbuf *
-create_qrcode (unsigned int scale)
-{
-  QRinput * qri;
-  QRcode *qrc;
-  char *str;
-  const gchar *pseu;
-  GtkEntry *entry;
-  GdkPixbuf *pb;
-  unsigned int x;
-  unsigned int y;
-  unsigned int off;
-  guchar *pixels;
-  int n_channels;
-  int c;
-  const char *dir;
-  char *fn;
-  unsigned int size;
-
-  qri = QRinput_new2 (0, QR_ECLEVEL_Q);
-  if (NULL == qri)
-  {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRinput_new2");
-    return NULL;
-  }
-  entry = GTK_ENTRY (GNUNET_SETUP_get_object ("GNUNET_setup_gns_pseu_entry"));
-  pseu = gtk_entry_get_text (GTK_ENTRY(entry));
-  GNUNET_asprintf (&str,
-                  "gnunet://gns/%s/%s\n",
-                  GNUNET_NAMESTORE_z2s (&pubkey),
-                  pseu);
-  if (0 != QRinput_append (qri,
-                          QR_MODE_8,
-                          strlen (str),
-                          (unsigned char*) str))
-  {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRinput_append");
-    GNUNET_free (str);
-    return NULL;
-  }
-  GNUNET_free (str);
-  qrc = QRcode_encodeInput (qri);
-  if (NULL == qrc)
-  {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRcode_encodeInput");
-    QRinput_free (qri);
-    return NULL;
-  }
-  /* We use a trick to create a pixbuf in a way that works for both Gtk2 and 
Gtk3
-     by loading a dummy file from disk; all other methods are not portable to 
both
-     Gtk2 and Gtk3. */
-  dir = GNUNET_GTK_get_data_dir ();
-  GNUNET_asprintf (&fn,
-                  "%s%s",
-                  dir,
-                  "qr_dummy.png");
-  size = qrc->width * scale;
-  size += 8 - (size % 8);
-  pb = gdk_pixbuf_new_from_file_at_size (fn,
-                                        size, size,
-                                        NULL);
-  GNUNET_free (fn);
-  if (NULL == pb)
-  {
-    QRinput_free (qri);
-    return NULL;
-  }
-  pixels = gdk_pixbuf_get_pixels (pb);
-  n_channels = gdk_pixbuf_get_n_channels (pb);
-  for (x=0;x<size;x++)
-    for (y=0;y<size;y++)
-    {
-      off = (x * qrc->width / size) +
-       (y * qrc->width / size) * qrc->width;
-      for (c = 0; c < n_channels; c++)
-       pixels[(y * size + x) * n_channels + c] = (0 == (qrc->data[off] & 1)) ? 
0xFF : 0;
-    }
-  QRcode_free (qrc);
-  QRinput_free (qri);
-  return pb;
-}
-
-
-/**
- * Create the QR code image for our zone.
- */
-static void
-setup_qrcode ()
-{
-  GdkPixbuf *pb;
-  GtkImage *image;
-
-  pb = create_qrcode (2);
-  if (NULL == pb)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("Failed to initialize QR-code 
pixbuf"));
-    return;
-  }
-  image = GTK_IMAGE (GNUNET_SETUP_get_object ("GNUNET_setup_gns_qr_image"));
-  if (NULL == image)
-  {
-    GNUNET_break (0);
-    return;
-  }
-  gtk_image_set_from_pixbuf (image, pb);
-  g_object_unref (pb);
-}
-
-#endif
-
-
-/**
- * Function called upon completion of the qr-code 'save as' dialog.
- *
- * @param dialog the dialog
- * @param response_id reason for the dialog closing
- * @param user_data the 'GtkBuilder' we used to create the dialog
- */
-void
-GNUNET_setup_qr_save_as_dialog_response_cb (GtkDialog *dialog,
-                                           gint response_id,
-                                           gpointer user_data)
-{
-#if HAVE_QRENCODE_H
-  GtkBuilder *builder = user_data;
-  GdkPixbuf *pb;
-  char *filename;
-
-  if (GTK_RESPONSE_OK != response_id)
-  {
-    gtk_widget_destroy (GTK_WIDGET (dialog));
-    g_object_unref (G_OBJECT (builder));
-    return;
-  }
-  filename =
-    GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (dialog));
-  pb = create_qrcode (8);
-  if (NULL == pb)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("Failed to initialize QR-code 
pixbuf"));
-    return;
-  }
-  gdk_pixbuf_save (pb,
-                  filename,
-                  "png",
-                  NULL, NULL);
-  g_free (filename);
-  g_object_unref (pb);
-  gtk_widget_destroy (GTK_WIDGET (dialog));
-  g_object_unref (G_OBJECT (builder));
-#else
-  GNUNET_break (0);
-#endif
-}
-
-
-/**
- * User clicked on 'save as' to extract the QR code.  Open 'save as'
- * dialog to get the desired filename and file type.
- */
-void
-GNUNET_setup_gns_qr_saveas_button_clicked_cb (GtkButton *button,
-                                             gpointer user_data)
-{
-  GtkBuilder *builder;
-  GtkWindow *dialog;
-  const gchar *pseu;
-  GtkEntry *entry;
-  char *suggestion;
-
-  entry = GTK_ENTRY (GNUNET_SETUP_get_object ("GNUNET_setup_gns_pseu_entry"));
-  pseu = gtk_entry_get_text (GTK_ENTRY(entry));
-  builder =
-    GNUNET_GTK_get_new_builder ("gnunet_setup_qr_save_as_dialog.glade",
-                               NULL);
-  if (NULL == builder)
-  {
-    GNUNET_break (0);
-    return;
-  }
-  GNUNET_asprintf (&suggestion,
-                  "%s.png",
-                  pseu);
-  dialog = GTK_WINDOW (gtk_builder_get_object
-                      (builder, "GNUNET_setup_qr_save_as_dialog"));
-  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog),
-                                    suggestion);
-  GNUNET_free (suggestion);
-  gtk_window_present (dialog);
-}
-
-
-/**
- * Check if adding a record of the given type is Ok given the other
- * records already present for the given name.
- *
- * @param rd_count size of the 'rd' array
- * @param rd existing records
- * @param n_type new record to be added
- * @return GNUNET_OK if adding this record is OK, GNUNET_NO if not
- */
-static int
-check_record_permitted (unsigned int rd_count,
-                       const struct GNUNET_NAMESTORE_RecordData *rd,
-                       gint n_type)
-{
-  unsigned int i;
-
-  for (i=0;i<rd_count;i++)
-  {
-    switch (rd[i].record_type)
-    {
-    case GNUNET_DNSPARSER_TYPE_CNAME:
-      return GNUNET_NO;
-    case GNUNET_DNSPARSER_TYPE_NS:
-      if ( (GNUNET_DNSPARSER_TYPE_A == n_type) ||
-          (GNUNET_DNSPARSER_TYPE_AAAA == n_type) )
-       return GNUNET_OK;
-      return GNUNET_NO;
-    case GNUNET_NAMESTORE_TYPE_PKEY:
-      return GNUNET_NO;
-    default:
-      break;
-    }
-  }
-  if (0 == rd_count)
-    return GNUNET_OK;
-  switch (n_type)
-  {
-  case GNUNET_DNSPARSER_TYPE_CNAME:
-    return GNUNET_NO;
-  case GNUNET_DNSPARSER_TYPE_NS:
-    for (i=0;i<rd_count;i++)
-      if ( (GNUNET_DNSPARSER_TYPE_A != rd[i].record_type) &&
-          (GNUNET_DNSPARSER_TYPE_AAAA != rd[i].record_type) )
-       return GNUNET_NO;
-      return GNUNET_OK;
-  case GNUNET_NAMESTORE_TYPE_PKEY:
-    return GNUNET_NO;
-  default:
-    break;
-  }
-  return GNUNET_OK;
-}
-
-
-/**
- * Function called upon completion of an operation.
- *
- * @param cls the 'struct OperationContext' of the operation that completed
- * @param success GNUNET_OK if the operation succeeded
- * @param emsg error message if the operation failed
- */
-static void
-operation_done_cont (void *cls,
-                    int32_t success,
-                    const char *emsg)
-{
-  struct OperationContext *oc = cls;
-  GtkWidget *dialog;
-  GtkWindow *main_window;
-
-  oc->qe = NULL;
-  GNUNET_CONTAINER_DLL_remove (oc_head,
-                              oc_tail,
-                              oc);
-  if (GNUNET_SYSERR == success)
-  {
-    main_window = GTK_WINDOW (GNUNET_SETUP_get_object ("GNUNET_setup_dialog"));
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Operation failed: `%s'\n"), emsg);
-    dialog = gtk_message_dialog_new (main_window,
-                                    GTK_DIALOG_DESTROY_WITH_PARENT,
-                                    GTK_MESSAGE_ERROR,
-                                    GTK_BUTTONS_CLOSE,
-                                    _("Operation failed: `%s'\n"),
-                                    emsg);
-    g_signal_connect_swapped (dialog, "response",
-                              G_CALLBACK (gtk_widget_destroy),
-                              dialog);
-    gtk_widget_show_all (dialog);
-  }
-  GNUNET_free (oc);
-}
-
-
-/**
- * Release the record info.
- *
- * @param cls NULL
- * @param key unused
- * @param value a RecordInfo to release
- * @return GNUNET_OK (continue to iterate)
- */
-static int
-release_ri (void *cls,
-           const struct GNUNET_HashCode *key,
-           void *value)
-{
-  struct RecordInfo *ri = value;
-
-  gtk_tree_row_reference_free (ri->rr);
-  GNUNET_free_non_null (ri->data);
-  GNUNET_free (ri->name);
-  GNUNET_break (GNUNET_YES ==
-               GNUNET_CONTAINER_multihashmap_remove (n2r, key, ri));
-  GNUNET_free (ri);
-  return GNUNET_OK;
-}
-
-
-/**
- * Clear all entries in the zone view and hide the tree view.
- */
-static void
-clear_zone_view ()
-{
-  GNUNET_CONTAINER_multihashmap_iterate (n2r,
-                                        &release_ri,
-                                        NULL);
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_zone_selection_hbuttonbox")));
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_status_label")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_main_scrolledwindow")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_image")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_saveas_button")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_vseparator")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_pseu_hbox")));
-  gtk_tree_store_clear (ts);
-}
-
-
-/**
- * Load a particular zone into the main tree view.
- *
- * @param zonename name of the option in the configuration file
- *        with the name of the file with the private key of the
- *        zone to load
- */
-static void
-load_zone (const char *zonename);
-
-
-/**
- * Display an error message for the user.
- *
- * @param title title of the error message
- * @param emsg error message to show
- */
-static void
-show_error_message (const char *title,
-                   const char *emsg)
-{
-  GtkWindow *main_window;
-  GtkDialog *dialog;
-
-  /* TODO: consider replacing with widget in the main window */
-  main_window = GTK_WINDOW (GNUNET_SETUP_get_object ("GNUNET_setup_dialog"));
-  dialog = GTK_DIALOG(gtk_message_dialog_new (main_window,
-                                             GTK_DIALOG_DESTROY_WITH_PARENT,
-                                             GTK_MESSAGE_ERROR,
-                                             GTK_BUTTONS_CLOSE,
-                                             _("%s\n%s\n"),
-                                             title,
-                                             emsg));
-  g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
-  gtk_widget_show_all (GTK_WIDGET(dialog));
-}
-
-
-/**
- * Release resources of an edit dialog context.
- *
- * @param edc resources to free
- */
-static void
-free_edit_dialog_context (struct EditDialogContext *edc)
-{
-  g_free (edc->name);
-  g_free (edc->n_value);
-  g_free (edc->new_zone_option);
-  GNUNET_free (edc);
-}
-
-
-
-/**
- * Process a record that was stored in the namestore.
- *
- * @param cls closure
- * @param rd_count number of entries in 'rd' array
- * @param rd array of records with data to store
- */
-static void
-merge_with_existing_records (void *cls,
-                            unsigned int rd_count,
-                            const struct GNUNET_NAMESTORE_RecordData *rd)
-{
-  struct MoveOperationContext *moc = cls;
-  struct EditDialogContext *edc = moc->edc;
-  struct GNUNET_NAMESTORE_RecordData rd_new[rd_count + 1];
-  struct OperationContext *oc;
-
-  GNUNET_CONTAINER_DLL_remove (moc_head, moc_tail, moc);
-  if (GNUNET_OK !=
-      check_record_permitted (rd_count, rd,
-                             edc->record_type))
-  {
-    show_error_message (_("Record combination not permitted"),
-                       _("Given the existing records, adding a new record of 
this type is not allowed."));
-    GNUNET_free (moc->pk);
-    GNUNET_free (moc->data);
-    GNUNET_free (moc);
-    free_edit_dialog_context (edc);
-    return;
-  }
-
-  memcpy (rd_new, rd, rd_count * sizeof (struct GNUNET_NAMESTORE_RecordData));
-  rd_new[rd_count] = moc->rd;
-  /* FIXME: sanity-check merge... */
-  oc = GNUNET_new (struct OperationContext);
-  GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-  oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                          moc->pk,
-                                          edc->name,
-                                          rd_count + 1,
-                                          rd_new,
-                                          &operation_done_cont, oc);
-  GNUNET_free (moc->pk);
-  GNUNET_free (moc->data);
-  GNUNET_free (moc);
-  free_edit_dialog_context (edc);
-}
-
-
-/**
- * Process an encrypted that was stored in the namestore for
- * merging.
- *
- * @param cls closure
- * @param block block to decrypt
- */
-static void
-decrypt_block_for_merge (void *cls,
-                        const struct GNUNET_NAMESTORE_Block *block)
-{
-  struct MoveOperationContext *moc = cls;
-  struct GNUNET_CRYPTO_EccPublicSignKey pubkey;
-
-  GNUNET_CRYPTO_ecc_key_get_public_for_signature (moc->pk,
-                                   &pubkey);
-  if (GNUNET_OK !=
-      GNUNET_NAMESTORE_block_decrypt (block,
-                                     &pubkey,
-                                     moc->edc->name,
-                                     &merge_with_existing_records,
-                                     moc))
-  {
-    show_error_message (_("Failed to decode existing record in target zone"),
-                       _("Failed to add new record."));
-    GNUNET_free (moc->pk);
-    GNUNET_free (moc->data);
-    free_edit_dialog_context (moc->edc);
-    GNUNET_free (moc);
-    return;
-  }
-}
-
-
-/**
- * The edit dialog completed; update the namestore and the
- * view based on the new values in 'edc'.
- *
- * @param edc editing context information
- * @param ret return code of the dialog
- */
-static void
-edit_dialog_continuation (struct EditDialogContext *edc,
-                         GtkResponseType ret)
-{
-  struct RecordInfo *ri = edc->ri;
-  unsigned int rd_count = (NULL == ri) ? 0 : ri->rd_count;
-  struct GNUNET_NAMESTORE_RecordData rd_old[rd_count];
-  struct GNUNET_NAMESTORE_RecordData rd;
-  void *data;
-  size_t data_size;
-  struct OperationContext *oc;
-
-  if ( (NULL != ri) &&
-       (GNUNET_OK !=
-       GNUNET_NAMESTORE_records_deserialize (ri->data_size,
-                                             ri->data,
-                                             ri->rd_count,
-                                             rd_old)) )
-  {
-    GNUNET_break (0);
-    free_edit_dialog_context (edc);
-    return;
-  }
-  if ( (GTK_RESPONSE_CANCEL == ret) ||
-       (GTK_RESPONSE_DELETE_EVENT == ret) )
-  {
-    free_edit_dialog_context (edc);
-    return;
-  }
-  if (GNUNET_OK != GNUNET_NAMESTORE_string_to_value (edc->record_type, 
edc->n_value,
-                                                    &data, &data_size))
-  {
-    GNUNET_break (0);
-    free_edit_dialog_context (edc);
-    return;
-  }
-  if (edc->n_public)
-    rd.flags = GNUNET_NAMESTORE_RF_NONE;
-  else
-    rd.flags = GNUNET_NAMESTORE_RF_PRIVATE;
-  if (edc->n_is_shadow)
-    rd.flags |= GNUNET_NAMESTORE_RF_SHADOW_RECORD;
-  rd.record_type = edc->record_type;
-  rd.expiration_time = edc->n_exp_time;
-  if (edc->n_is_relative)
-    rd.flags |= GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION;
-  rd.data_size = data_size;
-  rd.data = data;
-  switch (ret)
-  {
-  case GTK_RESPONSE_REJECT: /* code for 'delete' */
-    if (GNUNET_YES == edc->old_record_in_namestore)
-    {
-      /* remove item from tree view and namestore */
-      struct GNUNET_NAMESTORE_RecordData rd_new[rd_count - 1];
-
-      GNUNET_assert (NULL != ri);
-      memcpy (rd_new, rd_old, (rd_count - 1) * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
-      rd_new[edc->off] = rd_old[rd_count - 1];
-      oc = GNUNET_new (struct OperationContext);
-      GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-      oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                              pkey, edc->name,
-                                              rd_count + 1,
-                                              rd_new,
-                                              &operation_done_cont, oc);
-    }
-    else
-    {
-      /* invalid choice, 'delete' should have been hidden... */
-      GNUNET_break (0);
-    }
-    break;
-  case GTK_RESPONSE_OK:
-    /* update model */
-    if (0 == strcmp (edc->new_zone_option,
-                    current_zone_option))
-    {
-      if (GNUNET_YES == edc->old_record_in_namestore)
-      {
-       struct GNUNET_NAMESTORE_RecordData rd_new[rd_count];
-       
-       GNUNET_assert (NULL != ri);
-       memcpy (rd_new, rd_old, rd_count * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
-       rd_new[edc->off] = rd;
-       oc = GNUNET_new (struct OperationContext);
-       GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-       oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                                pkey, edc->name,
-                                                rd_count,
-                                                rd_new,
-                                                &operation_done_cont, oc);
-      }
-      else
-      {
-       struct GNUNET_NAMESTORE_RecordData rd_new[rd_count + 1];
-       
-       memcpy (rd_new, rd_old, rd_count * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
-       rd_new[rd_count] = rd;
-       oc = GNUNET_new (struct OperationContext);
-       GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-       oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                                pkey, edc->name,
-                                                rd_count + 1,
-                                                rd_new,
-                                                &operation_done_cont, oc);
-      }
-    }
-    else
-    {
-      char *keyfile;
-      struct GNUNET_CRYPTO_EccPrivateKey *pk;
-      struct MoveOperationContext *moc;
-      struct GNUNET_HashCode query;
-
-      /* determine target zone */
-      if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg,
-                                                               "gns",
-                                                               
edc->new_zone_option,
-                                                               &keyfile))
-      {
-       char *emsg;
-
-       GNUNET_asprintf (&emsg,
-                        _("Option `%s' missing in section `%s'\n"),
-                        edc->new_zone_option, "gns");
-       show_error_message (_("Failed to access key for target zone"),
-                           emsg);
-       GNUNET_free (emsg);
-      }
-      pk = GNUNET_CRYPTO_ecc_key_create_from_file (keyfile);
-      GNUNET_free (keyfile);
-      if (NULL == pk)
-      {
-       show_error_message (_("Failed to load private key for target zone"),
-                           NULL);
-       break;
-      }
-      GNUNET_NAMESTORE_query_from_private_key (pk,
-                                              edc->name,
-                                              &query);
-      moc = GNUNET_new (struct MoveOperationContext);
-      moc->data = data;
-      moc->rd = rd;
-      moc->edc = edc;
-      moc->pk = pk;
-      GNUNET_CONTAINER_DLL_insert (moc_head, moc_tail, moc);
-
-      moc->qe = GNUNET_NAMESTORE_lookup_block (namestore,
-                                              &query,
-                                              &decrypt_block_for_merge,
-                                              moc);
-      /* zone changed, remove record from old zone, add to new zone! */
-      if (GNUNET_YES == edc->old_record_in_namestore)
-      {
-       /* remove item from tree view and namestore */  
-       struct GNUNET_NAMESTORE_RecordData rd_new[rd_count - 1];
-       
-       GNUNET_assert (NULL != ri);
-       memcpy (rd_new, rd_old, (rd_count - 1) * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
-       rd_new[edc->off] = rd_old[rd_count - 1];
-       oc = GNUNET_new (struct OperationContext);
-       GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-       oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                                pkey, edc->name,
-                                                rd_count - 1,
-                                                rd_new,
-                                                &operation_done_cont, oc);
-       
-      }
-      return;
-    }
-    break;
-  default:
-    GNUNET_break (0);
-    break;
-  }
-  GNUNET_free (data);
-  free_edit_dialog_context (edc);
-}
-
-
-/**
- * Launch a record editing dialog.
- *
- * @param n_type type of the record to edit
- * @param name name of the record to edit
- * @param ri record information for this name (can be NULL
- *        if this is the first record for the name)
- * @param off offset of the record being edited in the
- *        ri's list; UINT_MAX if this is a new record
- */
-static void
-launch_edit_dialog (gint n_type,
-                   const char *name,
-                   struct RecordInfo *ri,
-                   unsigned int off)
-{
-  struct EditDialogContext *edc;
-
-  edc = GNUNET_new (struct EditDialogContext);
-  if ( (NULL != ri) &&
-       (off < ri->rd_count) )
-  {
-    struct GNUNET_NAMESTORE_RecordData rd_old[ri->rd_count];
-
-    GNUNET_break (GNUNET_OK ==
-                 GNUNET_NAMESTORE_records_deserialize (ri->data_size,
-                                                       ri->data,
-                                                       ri->rd_count,
-                                                       rd_old));
-    edc->n_value = GNUNET_NAMESTORE_value_to_string (n_type,
-                                                    rd_old[off].data,
-                                                    rd_old[off].data_size);
-    edc->n_public = (0 == (rd_old[off].flags & GNUNET_NAMESTORE_RF_PRIVATE));
-    edc->n_is_relative = (0 != (rd_old[off].flags & 
GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION));
-    edc->n_is_shadow = (0 != (rd_old[off].flags & 
GNUNET_NAMESTORE_RF_SHADOW_RECORD));
-    edc->n_exp_time = rd_old[off].expiration_time;
-    edc->old_record_in_namestore = GNUNET_YES;
-  }
-  else
-  {
-    edc->n_exp_time = 1000LL * (time (NULL) + 365 * 24 * 60 * 60); /* + 1y */
-  }
-  edc->ri = ri;
-  edc->off = off;
-  edc->name = GNUNET_strdup (name);
-  edc->new_zone_option = g_strdup (current_zone_option);
-  edc->record_type = n_type;
-  edc->cont = &edit_dialog_continuation;
-  switch (n_type)
-  {
-  case GNUNET_DNSPARSER_TYPE_A:
-    GNS_edit_dialog_a (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_AAAA:
-    GNS_edit_dialog_aaaa (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_CNAME:
-    GNS_edit_dialog_cname (edc);
-    break;
-  case GNUNET_NAMESTORE_TYPE_LEHO:
-    GNS_edit_dialog_leho (edc);
-    break;
-  case GNUNET_NAMESTORE_TYPE_PKEY:
-    GNS_edit_dialog_pkey (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_PTR:
-    GNS_edit_dialog_ptr (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_MX:
-    GNS_edit_dialog_mx (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_NS:
-    GNS_edit_dialog_ns (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_SOA:
-    GNS_edit_dialog_soa (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_SRV:
-    GNS_edit_dialog_srv (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_TXT:
-    GNS_edit_dialog_txt (edc);
-    break;
-  case GNUNET_NAMESTORE_TYPE_VPN:
-    GNS_edit_dialog_vpn (edc);
-    break;
-  case GNUNET_DNSPARSER_TYPE_TLSA:
-  default:
-    GNUNET_break (0);
-    edit_dialog_continuation (edc,
-                             GTK_RESPONSE_CANCEL);
-    break;
-  }
-}
-
-
-/**
- * Check if, with the given record info, we are allowed to add
- * another record of the given type.
- *
- * @param ri existing records
- * @param n_type type of the new record
- * @return GNUNET_OK if this is allowed
- */
-static int
-check_permissions (struct RecordInfo *ri,
-                 guint n_type)
-{
-  struct GNUNET_NAMESTORE_RecordData rd[ri->rd_count];
-
-  GNUNET_break (GNUNET_OK ==
-               GNUNET_NAMESTORE_records_deserialize (ri->data_size,
-                                                     ri->data,
-                                                     ri->rd_count,
-                                                     rd));
-  if (GNUNET_OK !=
-      check_record_permitted (ri->rd_count,
-                             rd,
-                             n_type))
-  {
-    show_error_message (_("Record combination not permitted"),
-                       _("Given the existing records, adding a new record of 
this type is not allowed.\n"
-                         "CNAME and PKEY records cannot co-exist with other 
records.\n"
-                         "NS records in GNS can only co-exist with A and AAAA 
records.\n"));
-    return GNUNET_NO;
-  }
-  return GNUNET_OK;
-}
-
-
-/**
- * User selected 'edit' in the popup menu.  Edit the
- * selected row.
- *
- * @param widget the GtkTreeView
- * @param user_data main window builder
- */
-void
-GNUNET_setup_gns_popup_edit_button_activate_cb (GtkWidget *widget,
-                                               gpointer user_data)
-{
-  GtkTreeSelection *sel;
-  gint n_type;
-  gchar *n_name;
-  guint off;
-  struct RecordInfo *ri;
-  GtkTreeIter iter;
-  struct GNUNET_HashCode name_hash;
-
-  sel = gtk_tree_view_get_selection (tv);
-  if (! gtk_tree_selection_get_selected (sel, NULL, &iter))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "No row selected\n");
-    return;
-  }
-  gtk_tree_model_get (tm, &iter,
-                     GNS_TREESTORE_COL_NAME, &n_name,
-                     GNS_TREESTORE_COL_RECORD_TYPE, &n_type,
-                     GNS_TREESTORE_COL_RECORD_OFFSET, &off,
-                     -1);
-  if (NULL == n_name)
-  {
-    GNUNET_break (0);
-    return;
-  }
-  GNUNET_CRYPTO_hash (n_name, strlen (n_name), &name_hash);
-  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &name_hash);
-  if ( (NULL == ri) ||
-       (off >= ri->rd_count) )
-  {
-    GNUNET_break (0);
-    g_free (n_name);
-    return;
-  }
-  launch_edit_dialog (n_type, n_name,
-                     ri, off);
-  g_free (n_name);
-}
-
-
-/**
- * The user has selected a new record type.  Update the
- * model and then start the 'edit' dialog.
- *
- * @param text renderer updated renderer
- * @param path_string the path identifying the edited cell
- * @param new_text updated text
- * @param user_data unused
- */
-void
-GNUNET_setup_gns_type_cellrenderercombo_edited_cb (GtkCellRendererText *text,
-                                                  gchar *path_string,
-                                                  gchar *new_text,
-                                                  gpointer user_data)
-{
-  GtkTreeIter it;
-  guint type;
-  char *name_str;
-  struct GNUNET_HashCode name_hash;
-  struct RecordInfo *ri;
-
-  if (0 == strcmp (new_text, _(NEW_RECORD_STR)))
-  {
-    GNUNET_break (0);
-    g_free (new_text);
-    return; /* no record type was selected */
-  }
-  type = GNUNET_NAMESTORE_typename_to_number (new_text);
-  if (UINT32_MAX == type)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Invalid or unsupported record type `%s'\n",
-               new_text);
-    show_error_message (_("Unsupported record type"),
-                       new_text);
-    g_free (new_text);
-    return;
-  }
-  /* check if this is a new record */
-  gtk_tree_model_get_iter_from_string (tm, &it, path_string);
-  gtk_tree_model_get (tm, &it,
-                     GNS_TREESTORE_COL_NAME, &name_str,
-                     -1);
-  if (NULL == name_str)
-  {
-    GNUNET_break (0);
-    g_free (new_text);
-    return;
-  }
-  GNUNET_CRYPTO_hash (name_str, strlen (name_str), &name_hash);
-  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &name_hash);
-  if ( (NULL == ri) ||
-       (GNUNET_OK == check_permissions (ri, type)) )
-    launch_edit_dialog (type, name_str, ri, UINT_MAX);
-  g_free (name_str);
-  g_free (new_text);
-}
-
-
-/**
- * The user has edited a 'name' cell.  Update the model (and if needed
- * create another fresh line for additional records).
- *
- * @param renderer updated renderer
- * @param path the path identifying the edited cell
- * @param new_text the new name (not modified)
- * @param user_data unused
- */
-void
-GNUNET_setup_gns_name_cellrenderertext_edited_cb (GtkCellRendererText 
*renderer,
-                                                 gchar *path,
-                                                 gchar *new_text,
-                                                 gpointer user_data)
-{
-  GtkTreeIter it;
-  gboolean not_dummy;
-  char *name;
-  struct RecordInfo *ri;
-  struct GNUNET_HashCode name_hash;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "New text for `%s' is `%s'\n",
-             path, new_text);
-  if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
-    return;
-  if ( (GNUNET_OK !=
-       GNUNET_DNSPARSER_check_label (new_text)) &&
-       (0 != strcmp (new_text, GNUNET_GNS_MASTERZONE_STR)) )
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               _("Name `%s' invalid for GNS/DNS (too long for a DNS 
label?)\n"),
-               new_text);
-    gdk_beep ();
-    return;
-  }
-  gtk_tree_model_get_iter_from_string (tm, &it, path);
-  gtk_tree_model_get (tm, &it,
-                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, &not_dummy,
-                     GNS_TREESTORE_COL_NAME, &name,
-                     -1);
-  GNUNET_break (! not_dummy);
-  GNUNET_break (0 == strcmp (name, _(NEW_NAME_STR)));
-  g_free (name);
-
-  GNUNET_CRYPTO_hash (new_text, strlen (new_text), &name_hash);
-  ri = GNUNET_CONTAINER_multihashmap_get (n2r,
-                                         &name_hash);
-  if (NULL != ri)
-  {
-    GtkTreeSelection *sel;
-    GtkTreePath *sel_path;
-
-    sel_path = gtk_tree_row_reference_get_path (ri->rr);
-    sel = gtk_tree_view_get_selection(tv);
-    gtk_tree_selection_select_path (sel, sel_path);
-    gtk_tree_path_free (sel_path);
-    return;
-  }
-
-  /* change dummy line to new name, then add new dummy */
-  gtk_tree_store_set (ts, &it,
-                     GNS_TREESTORE_COL_NAME, new_text,
-                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
-                     GNS_TREESTORE_COL_RECORD_TYPE, 0,
-                     GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
-                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
-                     GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE,
-                     GNS_TREESTORE_COL_TYPE_IS_EDITABLE, TRUE,
-                     GNS_TREESTORE_COL_NAME_IS_EDITABLE, FALSE,
-                     -1);
-  /* add a new dummy line */
-  gtk_tree_store_insert_with_values (ts, &it,NULL, 0,
-                                    GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
-                                    GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
-                                    GNS_TREESTORE_COL_RECORD_TYPE, 
GNUNET_DNSPARSER_TYPE_A,
-                                    GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
-                                    GNS_TREESTORE_COL_IS_RECORD_ROW, FALSE,
-                                    GNS_TREESTORE_COL_TYPE_IS_EDITABLE, FALSE,
-                                    GNS_TREESTORE_COL_NAME_IS_EDITABLE, TRUE,
-                                    GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX,
-                                    -1);
-}
-
-
-/**
- * Create a context (popup) menu for the zone iteration treeview
- * (if applicable).
- *
- * @return TRUE if a menu was activated
- */
-static gboolean
-create_popup_menu ()
-{
-  GtkTreeIter it;
-  GtkMenu *popup;
-  GtkTreeSelection *sel;
-  gboolean name_vis;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Considering creating popup menu...\n");
-  sel = gtk_tree_view_get_selection (tv);
-  if (! gtk_tree_selection_get_selected (sel, NULL, &it))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "No row selected\n");
-    return FALSE;
-  }
-  gtk_tree_model_get (tm, &it,
-                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, &name_vis,
-                     -1);
-  if (name_vis)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Selected row is not a record row\n");
-    return FALSE;
-  }
-  popup  = GTK_MENU (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_edit_popup_menu"));
-  gtk_widget_show_all (GTK_WIDGET (popup));
-  gtk_menu_popup (popup, NULL, NULL, NULL, NULL, 0, 0);
-  return TRUE;
-}
-
-
-/**
- * The zone treeview pop up menu is supposed to be created.
- * (Note: this is not the only method that might need to be
- * written to handle events to create pop up menus; right-clicks
- * need to be managed separately).
- *
- * @param widget the widget
- * @param user_data unused
- * @return TRUE if a menu was activated
- */
-gboolean
-GNUNET_setup_gns_main_treeview_popup_menu_cb (GtkWidget *widget,
-                                             gpointer user_data)
-{
-  return create_popup_menu ();
-}
-
-
-/**
- * A button was pressed in the GtkTreeView, check for right button and
- * if applicable create the popup menu.
- *
- * @param widget the GtkTreeView
- * @param event the event
- * @param user_data unused
- * @return TRUE if a menu was activated (event was handled)
- */
-gboolean
-GNUNET_setup_gns_main_treeview_button_press_event_cb (GtkWidget *widget,
-                                                     GdkEventButton *event,
-                                                     gpointer user_data)
-{
-  /* Check for right click*/
-  if (NULL == widget)
-    return FALSE;
-  if ( (GDK_BUTTON_PRESS == event->type) &&
-       (3 == event->button) )
-    return create_popup_menu ();
-  return FALSE;
-}
-
-
-/**
- * User pushed a key in the GtkTreeView.  Check for 'del' and if so, delete
- * the currently selected row.
- *
- * @param widget originating widget
- * @param event event information
- * @param user_data unused
- * @return TRUE if the key was processed ('del')
- */
-gboolean
-GNUNET_setup_gns_main_treeview_key_press_event_cb (GtkWidget *widget,
-                                                  GdkEventKey *event,
-                                                  gpointer user_data)
-{
-  GtkTreeIter iter;
-  GtkTreeSelection *sel;
-  int not_dummy;
-  GtkTreeIter parent;
-  char *name;
-  struct GNUNET_HashCode name_hash;
-  struct RecordInfo *ri;
-  struct OperationContext *oc;
-
-  /* Check for delete key */
-  if ( (GDK_KEY_PRESS != event->type) ||
-       (GDK_KEY_Delete != event->keyval) )
-    return FALSE;
-  sel = gtk_tree_view_get_selection(tv);
-  if (! gtk_tree_selection_get_selected (sel, NULL, &iter))
-    return TRUE; /* nothing selected */
-  gtk_tree_model_get (tm, &iter,
-                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, &not_dummy,
-                     GNS_TREESTORE_COL_NAME, &name,
-                     -1);
-  if (GNUNET_NO == not_dummy)
-  {
-    g_free (name);
-    return TRUE; /* do not delete the dummy line */
-  }
-  GNUNET_CRYPTO_hash (name, strlen (name), &name_hash);
-  ri = GNUNET_CONTAINER_multihashmap_get (n2r,
-                                         &name_hash);
-  GNUNET_assert (NULL != ri);
-
-  if ( (gtk_tree_model_iter_parent (tm, &parent, &iter)) &&
-       (ri->rd_count > 0) )
-  {
-    struct GNUNET_NAMESTORE_RecordData rd_old[ri->rd_count];
-    struct GNUNET_NAMESTORE_RecordData rd_new[ri->rd_count - 1];
-    struct GNUNET_NAMESTORE_RecordData rd;
-    unsigned int off;
-    int n_type;
-    gboolean n_public;
-    guint64 n_exp_time;
-    gboolean n_is_relative;
-    gboolean n_is_shadow;
-    char *n_value;
-
-    /* Removing a single record */
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Removing single record for name `%s'\n",
-               name);
-    GNUNET_break (GNUNET_OK ==
-                 GNUNET_NAMESTORE_records_deserialize (ri->data_size,
-                                                       ri->data,
-                                                       ri->rd_count,
-                                                       rd_old));
-    gtk_tree_model_get (tm, &iter,
-                       GNS_TREESTORE_COL_RECORD_TYPE, &n_type,
-                       GNS_TREESTORE_COL_IS_PUBLIC, &n_public,
-                       GNS_TREESTORE_COL_EXP_TIME, &n_exp_time,
-                       GNS_TREESTORE_COL_EXP_TIME_IS_REL, &n_is_relative,
-                       GNS_TREESTORE_COL_IS_SHADOW, &n_is_shadow,
-                       GNS_TREESTORE_COL_VAL_AS_STR, &n_value,
-                       -1);
-    /* valid name */
-    if (n_public)
-      rd.flags = GNUNET_NAMESTORE_RF_NONE;
-    else
-      rd.flags = GNUNET_NAMESTORE_RF_PRIVATE;
-    if (n_is_relative)
-      rd.flags |= GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION;
-    if (n_is_shadow)
-      rd.flags |= GNUNET_NAMESTORE_RF_SHADOW_RECORD;
-    rd.record_type = n_type;
-    rd.expiration_time = n_exp_time;
-    if (GNUNET_OK !=
-       GNUNET_NAMESTORE_string_to_value (n_type, n_value,
-                                         (void**)&rd.data, &rd.data_size))
-    {
-      /* can't remove, value invalid */
-      GNUNET_assert (0);
-      g_free (n_value);
-      g_free (name);
-      return TRUE;
-    }
-    for (off=0;off<ri->rd_count;off++)
-      if (GNUNET_YES ==
-         GNUNET_NAMESTORE_records_cmp (&rd,
-                                       &rd_old[off]))
-       break;
-    GNUNET_assert (off != ri->rd_count);
-    memcpy (rd_new, rd_old, (ri->rd_count - 1) * sizeof (struct 
GNUNET_NAMESTORE_RecordData));
-    rd_new[off] = rd_old[ri->rd_count - 1];
-    oc = GNUNET_new (struct OperationContext);
-    GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-    oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                            pkey, name,
-                                            ri->rd_count - 1,
-                                            rd_new,
-                                            &operation_done_cont, oc);
-    g_free (n_value);
-  }
-  else
-  {
-    oc = GNUNET_new (struct OperationContext);
-    GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-    oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                            pkey, name,
-                                            0, NULL,
-                                            &operation_done_cont, oc);
-  }
-  g_free (name);
-
-  return TRUE;
-}
-
-
-/**
- * The user edited the preferred name (PSEU) of this namespace.
- * Push the update to the namestore.
- *
- * @param editable the edited widget
- * @param user_data unused
- */
-void
-GNUNET_setup_gns_pseu_entry_changed_cb (GtkEditable *editable,
-                                       gpointer user_data)
-{
-  const gchar *pseu;
-  struct RecordInfo *ri;
-  struct GNUNET_HashCode hc;
-  unsigned int rd_count;
-  struct OperationContext *oc;
-
-  pseu = gtk_entry_get_text (GTK_ENTRY (editable));
-  if ( (NULL != current_pseudonym) &&
-       (0 == strcmp (pseu,
-                    current_pseudonym)) )
-    return;
-  if (GNUNET_OK !=
-      GNUNET_DNSPARSER_check_label (pseu))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-               _("Name `%s' invalid for GNS (too long for a DNS label?)\n"),
-               pseu);
-    gdk_beep ();
-    gtk_entry_set_text (GTK_ENTRY (editable),
-                       current_pseudonym);
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "New Pseudonym is `%s' %u\n",
-             pseu);
-  GNUNET_free_non_null (current_pseudonym);
-  if ( (NULL != pseu) &&
-       (0 != strlen (pseu)) )
-    current_pseudonym = GNUNET_strdup (pseu);
-  else
-    current_pseudonym = NULL;
-
-  GNUNET_CRYPTO_hash ("+", 1, &hc);
-  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &hc);
-  if (NULL == ri)
-    rd_count = 0;
-  else
-    rd_count = ri->rd_count;
-
-  /* get old records, append new one or update/remove existing one */
-  {
-    struct GNUNET_NAMESTORE_RecordData rd_old[rd_count];
-    struct GNUNET_NAMESTORE_RecordData rd_new[rd_count + 1];
-    unsigned int off;
-    unsigned int total;
-
-    total = rd_count;
-    if (NULL != ri)
-      GNUNET_break (GNUNET_OK ==
-                   GNUNET_NAMESTORE_records_deserialize (ri->data_size,
-                                                         ri->data,
-                                                         rd_count,
-                                                         rd_old));
-    memcpy (rd_new, rd_old, sizeof (struct GNUNET_NAMESTORE_RecordData) * 
rd_count);
-    for (off=0;off<rd_count;off++)
-      if (GNUNET_NAMESTORE_TYPE_PSEU == rd_new[off].record_type)
-       break;
-    if (off == rd_count)
-      total++;
-    if ( (NULL == pseu) ||
-        (0 == strlen (pseu)) )
-    {
-      rd_new[off] = rd_new[rd_count - 1];
-      total--;
-    }
-    else
-    {
-      rd_new[off].record_type = GNUNET_NAMESTORE_TYPE_PSEU;
-      rd_new[off].expiration_time = UINT64_MAX;
-      rd_new[off].flags = GNUNET_NAMESTORE_RF_NONE;
-      rd_new[off].data_size = strlen (pseu) + 1;
-      rd_new[off].data = pseu;
-    }
-    oc = GNUNET_new (struct OperationContext);
-    GNUNET_CONTAINER_DLL_insert (oc_head, oc_tail, oc);
-    oc->qe = GNUNET_NAMESTORE_records_store (namestore,
-                                            pkey,
-                                            GNUNET_GNS_MASTERZONE_STR,
-                                            total,
-                                            rd_new,
-                                            &operation_done_cont, oc);
-  }
-#if HAVE_QRENCODE_H
-  setup_qrcode ();
-#endif
-}
-
-
-/**
- * The user clicked on the 'copy' button.  Copy the full string
- * with the hash of our public key to the clipboard.
- *
- * @param button the button that was clicked
- * @param user_data unused
- */
-void
-GNUNET_setup_gns_public_key_copy_button_clicked_cb (GtkButton *button,
-                                                   gpointer user_data)
-{
-  GtkClipboard *cb;
-
-  if (NULL == pkey)
-    return;
-  cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
-  gtk_clipboard_set_text (cb,
-                         GNUNET_NAMESTORE_z2s (&pubkey),
-                         -1);
-}
-
-
-/**
- * Function called once our model should be consistent with
- * the current zone.  Makes the view visible.
- *
- * @param cls NULL
- */
-static void
-zone_sync_proc (void *cls)
-{
-  if (0 == strcmp (current_zone_option, "ZONEKEY"))
-    gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_pseu_hbox")));
-#if HAVE_QRENCODE_H
-  setup_qrcode ();
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_image")));
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_saveas_button")));
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_vseparator")));
-#else
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_image")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_saveas_button")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_qr_vseparator")));
-#endif
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_status_label")));
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_main_scrolledwindow")));
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_zone_selection_hbuttonbox")));
-}
-
-
-/**
- * Function called for each record in the current zone.  Update the
- * widgets accordingly.
- *
- * @param cls NULL
- * @param zone_key private key of the zone
- * @param name name that is being mapped (at most 255 characters long)
- * @param rd_count number of entries in @a rd array
- * @param rd array of records with data to store
- */
-static void
-zone_iteration_proc (void *cls,
-                    const struct GNUNET_CRYPTO_EccPrivateKey *zone_key,
-                    const char *name,
-                    unsigned int rd_count,
-                    const struct GNUNET_NAMESTORE_RecordData *rd)
-{
-  GtkTreeRowReference *rr;
-  GtkTreePath *path;
-  GtkTreeIter iter_name;
-  GtkTreeIter iter_record;
-  int c;
-  const char *exp;
-  char *val;
-  char *type_str;
-  gboolean time_is_relative;
-  gboolean public;
-  guint64 exp_t;
-  GtkEntry *pseu_entry;
-  struct GNUNET_HashCode name_hash;
-  struct RecordInfo *ri;
-  GtkTreeSelection *sel;
-  GtkTreeIter sel_iter;
-  GtkTreePath *sel_path;
-
-  if ((NULL == zone_key) && (NULL == name))
-  {
-    /* disconnect from namestore, clear view */
-    clear_zone_view ();
-    return;
-  }
-  if ( (GNUNET_SYSERR == GNUNET_DNSPARSER_check_label (name)) &&
-       (0 != strcmp (name, GNUNET_GNS_MASTERZONE_STR)) )
-  {
-    GNUNET_break (0);
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               _("Got invalid record name `%s' from namestore\n"),
-               name);
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Zone iteration result `%s', %u records\n",
-             name, rd_count);
-  GNUNET_CRYPTO_hash (name,
-                     strlen (name),
-                     &name_hash);
-  sel = gtk_tree_view_get_selection (tv);
-  if (gtk_tree_selection_get_selected (sel, NULL, &sel_iter))
-    sel_path = gtk_tree_model_get_path (tm, &sel_iter);
-  else
-    sel_path = NULL;
-  ri = GNUNET_CONTAINER_multihashmap_get (n2r, &name_hash);
-  if (NULL != ri)
-  {
-    rr = ri->rr;
-    path = gtk_tree_row_reference_get_path (rr);
-    GNUNET_assert (gtk_tree_model_get_iter (tm,
-                                           &iter_name,
-                                           path));
-    gtk_tree_path_free (path);
-    /* remove all records, we'll re-add those that are left next */
-    if (gtk_tree_model_iter_children (tm, &iter_record, &iter_name))
-      while (gtk_tree_store_remove (ts, &iter_record)) ;
-  }
-  else
-  {
-    ri = GNUNET_new (struct RecordInfo);
-    gtk_tree_store_append (ts, &iter_name, NULL);
-    gtk_tree_store_set (ts, &iter_name,
-                       GNS_TREESTORE_COL_NAME, name,
-                       GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
-                       GNS_TREESTORE_COL_RECORD_TYPE, 
GNUNET_NAMESTORE_TYPE_ANY,
-                       GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
-                       GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE,
-                       GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
-                       GNS_TREESTORE_COL_TYPE_IS_EDITABLE, TRUE,
-                       GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX,
-                       -1);
-
-    path = gtk_tree_model_get_path (tm,
-                                   &iter_name);
-    rr = gtk_tree_row_reference_new (tm,
-                                    path);
-    ri->rr = rr;
-    ri->name = GNUNET_strdup (name);
-    gtk_tree_path_free (path);
-    GNUNET_assert (GNUNET_OK ==
-                  GNUNET_CONTAINER_multihashmap_put (n2r,
-                                                     &name_hash,
-                                                     ri,
-                                                     
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
-  }
-  if (0 == rd_count)
-  {
-    /* all records removed, remove name as well */
-    gtk_tree_store_remove (ts, &iter_name);
-    GNUNET_assert (GNUNET_YES ==
-                  GNUNET_CONTAINER_multihashmap_remove (n2r, &name_hash, ri));
-    gtk_tree_row_reference_free (rr);
-    GNUNET_free (ri->name);
-    GNUNET_free_non_null (ri->data);
-    GNUNET_free (ri);
-    return;
-  }
-  /* update record info serialized version of the records */
-  GNUNET_free_non_null (ri->data);
-  ri->rd_count = rd_count;
-  ri->data_size = GNUNET_NAMESTORE_records_get_size (rd_count, rd);
-  if (0 != ri->data_size)
-    ri->data = GNUNET_malloc (ri->data_size);
-  GNUNET_break (ri->data_size ==
-               GNUNET_NAMESTORE_records_serialize (rd_count, rd,
-                                                   ri->data_size, ri->data));
-
-  /* Append elements for records in tree view */
-  for (c = 0; c < rd_count; c ++)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-               "Record %u: type %u flags %u expiration %llu data_size %u\n",
-               c, rd[c].record_type, rd[c].flags,
-               rd[c].expiration_time,
-               rd[c].data_size);
-
-    /* Set public toggle */
-    public = ((rd[c].flags & GNUNET_NAMESTORE_RF_PRIVATE) != 
GNUNET_NAMESTORE_RF_PRIVATE);
-    /* Expiration time */
-    time_is_relative = (0 != (rd[c].flags & 
GNUNET_NAMESTORE_RF_RELATIVE_EXPIRATION));
-
-    if (time_is_relative)
-    {
-      struct GNUNET_TIME_Relative rel_time;
-
-      rel_time.rel_value_us = rd[c].expiration_time;
-      exp_t = rel_time.rel_value_us;
-      exp = GNUNET_STRINGS_relative_time_to_string (rel_time, GNUNET_NO);
-    }
-    else
-    {
-      struct GNUNET_TIME_Absolute exp_abs;
-
-      exp_abs.abs_value_us = rd[c].expiration_time;
-      exp_t = exp_abs.abs_value_us;
-      exp = GNUNET_STRINGS_absolute_time_to_string (exp_abs);
-    }
-    /* value */
-    val = GNUNET_NAMESTORE_value_to_string (rd[c].record_type,
-                                            rd[c].data,
-                                            rd[c].data_size);
-    if (NULL == val)
-      GNUNET_asprintf (&val, "%s", EXPIRE_INVALID_STRING);
-
-    if (NULL != GNUNET_NAMESTORE_number_to_typename (rd[c].record_type))
-      type_str = strdup (GNUNET_NAMESTORE_number_to_typename 
(rd[c].record_type));
-    else
-      GNUNET_asprintf (&type_str, "%s", EXPIRE_INVALID_STRING);
-
-    if ( (0 == strcmp (name, GNUNET_GNS_MASTERZONE_STR)) &&
-        (GNUNET_NAMESTORE_TYPE_PSEU == rd[c].record_type) &&
-        (NULL == current_pseudonym) )
-    {
-      pseu_entry = GTK_ENTRY((GNUNET_SETUP_get_object 
("GNUNET_setup_gns_pseu_entry")));
-      gtk_entry_set_text (pseu_entry, val);
-#if HAVE_QRENCODE_H
-      setup_qrcode ();
-#endif
-    }
-    gtk_tree_store_insert_with_values (ts, &iter_record , &iter_name, 0,
-                                      GNS_TREESTORE_COL_NAME, name,
-                                      GNS_TREESTORE_COL_NAME_IS_VISIBLE, FALSE,
-                                      GNS_TREESTORE_COL_RECORD_TYPE, 
rd[c].record_type,
-                                      GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, 
type_str,
-                                      GNS_TREESTORE_COL_IS_PUBLIC, public,
-                                      GNS_TREESTORE_COL_EXP_TIME, exp_t,
-                                      GNS_TREESTORE_COL_EXP_TIME_AS_STR, exp,
-                                      GNS_TREESTORE_COL_EXP_TIME_IS_REL, 
time_is_relative,
-                                      GNS_TREESTORE_COL_VAL_AS_STR, val,
-                                      GNS_TREESTORE_COL_IS_RECORD_ROW, TRUE,
-                                      GNS_TREESTORE_COL_NOT_DUMMY_ROW, TRUE,
-                                      GNS_TREESTORE_COL_RECORD_OFFSET, (guint) 
c,                              
-                                      -1);
-    GNUNET_free (type_str);
-    GNUNET_free (val);
-  }
-  if (NULL != sel_path)
-  {
-    gtk_tree_selection_select_path (sel, sel_path);
-    gtk_tree_view_expand_to_path (tv, sel_path);
-    gtk_tree_path_free (sel_path);
-  }
-}
-
-
-/**
- * Method called to inform about the egos of this peer.  Called
- * when we are doing a #load_zone operation and are getting the
- * private key of the new zone to edit.
- *
- * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get,
- * this function is only called ONCE, and 'NULL' being passed in
- * @a ego does indicate an error (i.e. name is taken or no default
- * value is known).  If @a ego is non-NULL and if '*ctx'
- * is set in those callbacks, the value WILL be passed to a subsequent
- * call to the identity callback of #GNUNET_IDENTITY_connect (if
- * that one was not NULL).
- *
- * @param cls closure with the 'const char *' zonename
- * @param ego ego handle
- * @param ctx context for application to store data for this ego
- *                 (during the lifetime of this process, initially NULL)
- * @param name name assigned by the user for this ego,
- *                   NULL if the user just deleted the ego and it
- *                   must thus no longer be used
- */
-static void
-identity_cb (void *cls,
-            struct GNUNET_IDENTITY_Ego *ego,
-            void **ctx,
-            const char *name)
-{
-  const char *zonename = cls;
-  char *emsg;
-  char *label;
-  GtkTreeIter toplevel;
-
-  id_op = NULL;
-  /* setup crypto keys */
-  if (NULL == ego)
-  {
-    GNUNET_asprintf (&emsg,
-                    _("Default zone for `%s' not set; did you run 
gnunet-gns-import.sh?\n"),
-                    zonename);
-    show_error_message (_("Failed to load zone"),
-                       emsg);
-    GNUNET_free (emsg);
-    gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_zone_selection_hbuttonbox")));
-    return;
-  }
-  pkey = GNUNET_new (struct GNUNET_CRYPTO_EccPrivateKey);
-  *pkey = *GNUNET_IDENTITY_ego_get_private_key (ego);
-  GNUNET_CRYPTO_ecc_key_get_public_for_signature (pkey, &pubkey);
-  label = g_markup_printf_escaped (_("<b>Editing zone %s</b>"),
-                                  GNUNET_NAMESTORE_z2s (&pubkey));
-  gtk_label_set_markup (GTK_LABEL (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_zone_label")),
-                       label);
-  g_free (label);
-  /* Append a top level row and leave it empty */
-  gtk_tree_store_insert_with_values (ts, &toplevel, NULL, 0,
-                                     GNS_TREESTORE_COL_NAME, _(NEW_NAME_STR),
-                                     GNS_TREESTORE_COL_NAME_IS_VISIBLE, TRUE,
-                                     GNS_TREESTORE_COL_RECORD_TYPE, 
GNUNET_DNSPARSER_TYPE_A,
-                                     GNS_TREESTORE_COL_IS_RECORD_ROW, FALSE,
-                                     GNS_TREESTORE_COL_NOT_DUMMY_ROW, FALSE,
-                                    GNS_TREESTORE_COL_TYPE_IS_EDITABLE, FALSE,
-                                    GNS_TREESTORE_COL_NAME_IS_EDITABLE, TRUE,
-                                    GNS_TREESTORE_COL_RECORD_OFFSET, UINT_MAX,
-                                     -1);
-  /* Load zone from namestore! */
-#if HAVE_QRENCODE_H
-  setup_qrcode ();
-#endif
-  zmon = GNUNET_NAMESTORE_zone_monitor_start (cfg, pkey,
-                                             &zone_iteration_proc,
-                                             &zone_sync_proc,
-                                             NULL);
-}
-
-
-/**
- * Load a particular zone into the main tree view.
- *
- * @param zonename name of the option in the configuration file
- *        with the name of the file with the private key of the
- *        zone to load
- */
-static void
-load_zone (const char *zonename)
-{
-  /* clear previous zone */
-  if (NULL != zmon)
-  {
-    GNUNET_NAMESTORE_zone_monitor_stop (zmon);
-    zmon = NULL;
-  }
-  if (NULL != id_op)
-  {
-    GNUNET_IDENTITY_cancel (id_op);
-    id_op = NULL;
-  }
-  clear_zone_view ();
-  current_zone_option = zonename;
-  GNUNET_free_non_null (pkey);
-  pkey = NULL;
-  id_op = GNUNET_IDENTITY_get (identity,
-                              zonename,
-                              &identity_cb,
-                              (void *) zonename);
-}
-
-
-/**
- * A different zone was selected in the zone toggle bar.  Load the
- * appropriate zone.
- *
- * @param togglebutton button that was toggled (could be to "on" or "off", we 
only react to "on")
- * @param user_data builder, unused
- */
-void
-GNUNET_setup_gns_shorten_zone_selection_radiobutton_toggled_cb 
(GtkToggleButton *togglebutton,
-                                                               gpointer 
user_data)
-{
-  if (gtk_toggle_button_get_active (togglebutton))
-    load_zone ("gns-short");
-}
-
-
-/**
- * A different zone was selected in the zone toggle bar.  Load the
- * appropriate zone.
- *
- * @param togglebutton button that was toggled (could be to "on" or "off", we 
only react to "on")
- * @param user_data builder, unused
- */
-void
-GNUNET_setup_gns_private_zone_selection_radiobutton_toggled_cb 
(GtkToggleButton *togglebutton,
-                                                               gpointer 
user_data)
-{
-  if (gtk_toggle_button_get_active (togglebutton))
-    load_zone ("gns-private");
-}
-
-
-/**
- * A different zone was selected in the zone toggle bar.  Load the
- * appropriate zone.
- *
- * @param togglebutton button that was toggled (could be to "on" or "off", we 
only react to "on")
- * @param user_data builder, unused
- */
-void
-GNUNET_setup_gns_master_zone_selection_radiobutton_toggled_cb (GtkToggleButton 
*togglebutton,
-                                                              gpointer 
user_data)
-{
-  if (gtk_toggle_button_get_active (togglebutton))
-    load_zone ("gns-master");
-}
-
-
-/**
- * Connect to the namestore and initialize the main
- * GNS tree view.
- */
-void
-GNUNET_SETUP_gns_init ()
-{
-  gchar *label;
-  GtkLabel *status_label;
-
-  namestore = GNUNET_NAMESTORE_connect (cfg);
-  if (NULL == namestore)
-  {
-    status_label = GTK_LABEL (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_status_label"));
-    label = g_markup_printf_escaped (_("<b><big>Failed to connect to 
namestore</b></big>"));
-    gtk_label_set_markup (status_label, label);
-    g_free (label);                    
-    return;
-  }
-  identity = GNUNET_IDENTITY_connect (cfg, NULL, NULL);
-  ts = GTK_TREE_STORE (GNUNET_SETUP_get_object ("GNUNET_setup_gns_treestore"));
-  tv = GTK_TREE_VIEW (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_main_treeview"));
-  tm = GTK_TREE_MODEL (ts);
-  n2r = GNUNET_CONTAINER_multihashmap_create (128, GNUNET_NO);
-  load_zone ("gns-master");
-}
-
-
-/**
- * Disconnect from the namestore and clean up the main
- * GNS tree view.
- */
-void
-GNUNET_SETUP_gns_done ()
-{
-  struct OperationContext *oc;
-  struct MoveOperationContext *moc;
-
-  gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_status_label")));
-  gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_gns_main_scrolledwindow")));
-  if (NULL != zmon)
-  {
-    GNUNET_NAMESTORE_zone_monitor_stop (zmon);
-    zmon = NULL;
-  }
-  while (NULL != (oc = oc_head))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               _("A pending namestore operation was not transmitted to the 
namestore.\n"));
-    GNUNET_CONTAINER_DLL_remove (oc_head, oc_tail, oc);
-    GNUNET_NAMESTORE_cancel (oc->qe);
-    GNUNET_free (oc);
-  }
-  while (NULL != (moc = moc_head))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               _("A pending namestore operation was not transmitted to the 
namestore.\n"));
-    GNUNET_CONTAINER_DLL_remove (moc_head, moc_tail, moc);
-    GNUNET_NAMESTORE_cancel (moc->qe);
-    GNUNET_free (moc->pk);
-    free_edit_dialog_context (moc->edc);
-    GNUNET_free (moc->data);
-    GNUNET_free (moc);
-  }
-  if (NULL != n2r)
-  {
-    GNUNET_CONTAINER_multihashmap_iterate (n2r,
-                                          &release_ri,
-                                          NULL);
-    GNUNET_CONTAINER_multihashmap_destroy (n2r);
-    n2r = NULL;
-  }
-  gtk_tree_store_clear (ts);
-  if (NULL != namestore)
-  {
-    GNUNET_NAMESTORE_disconnect (namestore);
-    namestore = NULL;
-  }
-  if (NULL != pkey)
-  {
-    GNUNET_free (pkey);
-    pkey = NULL;
-  }
-  if (NULL != current_pseudonym)
-  {
-    GNUNET_free (current_pseudonym);
-    current_pseudonym = NULL;
-  }
-  if (NULL != id_op)
-  {
-    GNUNET_IDENTITY_cancel (id_op);
-    id_op = NULL;
-  }
-  if (NULL != identity)
-  {
-    GNUNET_IDENTITY_disconnect (identity);
-    identity = NULL;
-  }
-}
-
-
-/* end of gnunet-setup-gns.c */

Deleted: gnunet-gtk/src/setup/gnunet-setup-gns.h
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-gns.h     2013-10-07 14:19:52 UTC (rev 
29924)
+++ gnunet-gtk/src/setup/gnunet-setup-gns.h     2013-10-07 14:35:42 UTC (rev 
29925)
@@ -1,47 +0,0 @@
-/*
-     This file is part of GNUnet.
-     (C) 2012 Christian Grothoff (and other contributing authors)
-
-     GNUnet 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 3, or (at your
-     option) any later version.
-
-     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
-*/
-
-/**
- * @file src/setup/gnunet-setup-gns.h
- * @brief gns interaction management
- * @author Christian Grothoff
- */
-#ifndef GNUNET_SETUP_GNS_H
-#define GNUNET_SETUP_GNS_H
-
-#include "gnunet-setup.h"
-
-
-/**
- * Connect to the namestore and initialize the main
- * GNS tree view.
- */
-void
-GNUNET_SETUP_gns_init (void);
-
-
-/**
- * Disconnect from the namestore and clean up the main
- * GNS tree view.
- */
-void
-GNUNET_SETUP_gns_done (void);
-
-#endif

Modified: gnunet-gtk/src/setup/gnunet-setup-options.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-options.c 2013-10-07 14:19:52 UTC (rev 
29924)
+++ gnunet-gtk/src/setup/gnunet-setup-options.c 2013-10-07 14:35:42 UTC (rev 
29925)
@@ -781,10 +781,9 @@
 
 
 /**
- * Hide "gnu" and "namestore" tabs if GNS not active.
+ * Hide "namestore" tab if GNS not active.
  */
 static struct GNUNET_SETUP_VisibilitySpecification hide_gns_tabs[] = {
-  {"GNUNET_setup_gns_vbox", "(^| )gns($| )", NULL},
   {"GNUNET_setup_namestore_vbox", "(^| )gns($| )", NULL},
   {NULL, NULL, NULL}
 };

Modified: gnunet-gtk/src/setup/gnunet-setup.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup.c 2013-10-07 14:19:52 UTC (rev 29924)
+++ gnunet-gtk/src/setup/gnunet-setup.c 2013-10-07 14:35:42 UTC (rev 29925)
@@ -26,7 +26,6 @@
 #include "gnunet-setup.h"
 #include "gnunet-setup-transport.h"
 #include "gnunet-setup-options.h"
-#include "gnunet-setup-gns.h"
 #include <gnunet/gnunet_constants.h>
 #include <regex.h>
 #if ENABLE_NLS
@@ -79,13 +78,6 @@
  * Flag to enable privilege escalation.
  */
 static int do_gksu;
-
-/**
- * Show all configuration options, even if we are run
- * as a normal user and a 'gnunet' user exists and thus
- * most options should not apply to the normal user.
- */
-static int force_full_setup;
 #endif
 
 
@@ -355,7 +347,7 @@
 
 
 /**
- * Actual main method that sets up the configuration window.
+ * Method run on shutdown.
  *
  * @param cls the main loop handle
  * @param tc scheduler context
@@ -368,7 +360,6 @@
     GNUNET_break (0);
     return;
   }
-  GNUNET_SETUP_gns_done ();
   GNUNET_GTK_main_loop_quit (ml);
   ml = NULL;
   if (GNUNET_OK != write_configuration ())
@@ -409,7 +400,6 @@
 {
   if (GNUNET_OK != write_configuration ())
     return; /* no point in re-starting namestore ... */
-  GNUNET_SETUP_gns_done ();
   if (NULL != namestore)
   {
     GNUNET_break (0 == GNUNET_OS_process_kill (namestore, SIGTERM));
@@ -422,7 +412,6 @@
                              NULL, NULL,
                              "gnunet-service-namestore",
                             "gnunet-service-namestore", NULL);
-  GNUNET_SETUP_gns_init ();
 }
 
 
@@ -588,8 +577,7 @@
 #ifndef MINGW
   if ( (0 != my_uid) &&
        (NULL != gnunet_pw) &&
-       (my_uid != gnunet_pw->pw_uid) &&
-       (0 == force_full_setup) )
+       (my_uid != gnunet_pw->pw_uid) )
   {
     /* load system defaults, system/'gnunet' user's configuration and THEN
        our configuration file */
@@ -638,24 +626,6 @@
                              GNUNET_CONSTANTS_SERVICE_TIMEOUT,
                              &start_identity, NULL);
   load_options ();
-  GNUNET_SETUP_gns_init ();
-#ifndef MINGW
-  if ( (0 != my_uid) &&
-       (NULL != gnunet_pw) &&
-       (my_uid != gnunet_pw->pw_uid) &&
-       (0 == force_full_setup) )
-  {
-    /* hide all options that are not for individual users; this
-       run is only for per-user options, not for per-peer options */
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_general_vbox")));
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_transport_main_frame")));
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_network_tab_vbox")));
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_fs_main_vbox")));
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_vpn_vbox")));
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_exit_vbox")));
-    gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object 
("GNUNET_setup_namestore_vbox")));
-  }
-#endif
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                &cleanup_task, NULL);
   if (do_autoconfig)
@@ -688,9 +658,6 @@
     { 'e', "elevate-priviledges", NULL,
       gettext_noop ("run as user 'gnunet', if necessary by executing gksu to 
elevate rights"),
       0, &GNUNET_GETOPT_set_one, &do_gksu },
-    { 'f', "force-full-setup", NULL,
-      gettext_noop ("force showing the full set of options, even if 
gnunet-setup is run as a normal user and as a user 'gnunet' exists on the 
system, most options should not apply to the normal user as GNUnet should be 
run by the 'gnunet' user"),
-      0, &GNUNET_GETOPT_set_one, &force_full_setup },
 #endif
     GNUNET_GETOPT_OPTION_END
   };
@@ -698,7 +665,7 @@
 
   if (GNUNET_OK ==
       GNUNET_GTK_main_loop_start ("gnunet-setup", "gnunet-setup", argc, argv,
-                                  options, 
"gnunet_setup_gtk_main_window.glade",
+                                  options, "gnunet_setup_main_window.glade",
                                   &run))
     ret = gret;
   else




reply via email to

[Prev in Thread] Current Thread [Next in Thread]