gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r25220 - gnunet-gtk/contrib


From: gnunet
Subject: [GNUnet-SVN] r25220 - gnunet-gtk/contrib
Date: Tue, 4 Dec 2012 13:26:09 +0100

Author: grothoff
Date: 2012-12-04 13:26:09 +0100 (Tue, 04 Dec 2012)
New Revision: 25220

Added:
   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
Modified:
   gnunet-gtk/contrib/Makefile.am
   gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade
Log:
more custom record type editing dialogs

Modified: gnunet-gtk/contrib/Makefile.am
===================================================================
--- gnunet-gtk/contrib/Makefile.am      2012-12-04 10:47:05 UTC (rev 25219)
+++ gnunet-gtk/contrib/Makefile.am      2012-12-04 12:26:09 UTC (rev 25220)
@@ -51,7 +51,19 @@
   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_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_gns_edit_pseu.glade
 
 install-data-local:
        $(mkinstalldirs) $(DESTDIR)$(pkgpixdir)

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade                         
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_aaaa.glade 2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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">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_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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade                        
        (rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_cname.glade        2012-12-04 
12:26:09 UTC (rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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">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_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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade                         
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_leho.glade 2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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_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_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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade                           
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_mx.glade   2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -0,0 +1,625 @@
+<?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_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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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="GtkVBox" 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">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>
+                    <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>
+                      </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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade                           
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_ns.glade   2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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">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_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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade                         
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_pkey.glade 2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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 hash of the public key of the authority here.</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;GADS 
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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_ptr.glade  2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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_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_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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_soa.glade  2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -0,0 +1,831 @@
+<?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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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>
+                      </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>
+                      </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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_srv.glade  2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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_weight_adjustment">
+    <property name="upper">65535</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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>
+                      </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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_txt.glade  2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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="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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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">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_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>

Added: gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade                          
(rev 0)
+++ gnunet-gtk/contrib/gnunet_setup_gns_edit_vpn.glade  2012-12-04 12:26:09 UTC 
(rev 25220)
@@ -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_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">True</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>
+                        <signal name="changed" 
handler="GNS_edit_dialog_name_entry_changed_cb" swapped="no"/>
+                      </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>
+                      </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 (GADS 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>

Modified: gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade       2012-12-04 
10:47:05 UTC (rev 25219)
+++ gnunet-gtk/contrib/gnunet_setup_gtk_main_window.glade       2012-12-04 
12:26:09 UTC (rev 25220)
@@ -4685,60 +4685,52 @@
     <data>
       <row>
         <col id="0">1</col>
-        <col id="1" translatable="yes">A</col>
+        <col id="1" translatable="no">A</col>
       </row>
       <row>
         <col id="0">2</col>
-        <col id="1" translatable="yes">NS</col>
+        <col id="1" translatable="no">NS</col>
       </row>
       <row>
         <col id="0">5</col>
-        <col id="1" translatable="yes">CNAME</col>
+        <col id="1" translatable="no">CNAME</col>
       </row>
       <row>
         <col id="0">6</col>
-        <col id="1" translatable="yes">SOA</col>
+        <col id="1" translatable="no">SOA</col>
       </row>
       <row>
         <col id="0">12</col>
-        <col id="1" translatable="yes">PTR</col>
+        <col id="1" translatable="no">PTR</col>
       </row>
       <row>
         <col id="0">15</col>
-        <col id="1" translatable="yes">MX</col>
+        <col id="1" translatable="no">MX</col>
       </row>
       <row>
         <col id="0">16</col>
-        <col id="1" translatable="yes">TXT</col>
+        <col id="1" translatable="no">TXT</col>
       </row>
       <row>
         <col id="0">28</col>
-        <col id="1" translatable="yes">AAAA</col>
+        <col id="1" translatable="no">AAAA</col>
       </row>
       <row>
         <col id="0">65536</col>
-        <col id="1" translatable="yes">PKEY</col>
+        <col id="1" translatable="no">PKEY</col>
       </row>
       <row>
         <col id="0">65538</col>
-        <col id="1" translatable="yes">LEHO</col>
+        <col id="1" translatable="no">LEHO</col>
       </row>
       <row>
         <col id="0">33</col>
-        <col id="1" translatable="yes">SRV</col>
+        <col id="1" translatable="no">SRV</col>
       </row>
       <row>
         <col id="0">65539</col>
-        <col id="1" translatable="yes">VPN</col>
+        <col id="1" translatable="no">VPN</col>
       </row>
-      <row>
-        <col id="0">65540</col>
-        <col id="1" translatable="yes">REV</col>
-      </row>
-      <row>
-        <col id="0">65537</col>
-        <col id="1" translatable="yes">PSEU</col>
-      </row>
     </data>
   </object>
   <object class="GtkAdjustment" 
id="GNUNET_setup_hostlist_server_port_adjustment">




reply via email to

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