gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r18964 - in gnunet-gtk: contrib src/fs src/lib


From: gnunet
Subject: [GNUnet-SVN] r18964 - in gnunet-gtk: contrib src/fs src/lib
Date: Wed, 4 Jan 2012 07:51:07 +0100

Author: grothoff
Date: 2012-01-04 07:51:07 +0100 (Wed, 04 Jan 2012)
New Revision: 18964

Modified:
   gnunet-gtk/contrib/Makefile.am
   gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
   gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.c
   gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.h
   gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c
   gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_publish.c
   gnunet-gtk/src/fs/gnunet-fs-gtk.c
   gnunet-gtk/src/fs/gnunet-fs-gtk.h
   gnunet-gtk/src/lib/about.c
Log:
-LRN: unbuilder the pubication editor dialog

Modified: gnunet-gtk/contrib/Makefile.am
===================================================================
--- gnunet-gtk/contrib/Makefile.am      2012-01-04 01:11:41 UTC (rev 18963)
+++ gnunet-gtk/contrib/Makefile.am      2012-01-04 06:51:07 UTC (rev 18964)
@@ -18,6 +18,7 @@
   gnunet_fs_gtk_create_namespace_dialog.glade \
   gnunet_fs_gtk_download_as_dialog.glade \
   gnunet_fs_gtk_main_window.glade \
+  gnunet_fs_gtk_edit_publication.glade \
   gnunet_fs_gtk_open_directory_dialog.glade \
   gnunet_fs_gtk_open_url_dialog.glade \
   gnunet_fs_gtk_publish_dialog.glade \

Modified: gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade  2012-01-04 01:11:41 UTC 
(rev 18963)
+++ gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade  2012-01-04 06:51:07 UTC 
(rev 18964)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="2.20"/>
   <!-- interface-naming-policy project-wide -->
@@ -12,225 +12,6 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store">
-    <columns>
-      <!-- column-name extractor_meta_type -->
-      <column type="guint"/>
-      <!-- column-name extractor_meta_format -->
-      <column type="guint"/>
-      <!-- column-name extractor_meta_type_string -->
-      <column type="gchararray"/>
-      <!-- column-name extracotr_meta_value -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="GNUNET_GTK_peer_info_list_store">
-    <columns>
-      <!-- column-name peer_identity -->
-      <column type="gchararray"/>
-      <!-- column-name number_of_known_addresses -->
-      <column type="guint"/>
-      <!-- column-name country_name -->
-      <column type="gchararray"/>
-      <!-- column-name country_flag -->
-      <column type="GdkPixbuf"/>
-      <!-- column-name bandwidth -->
-      <column type="guint64"/>
-    </columns>
-  </object>
-  <object class="GtkTreeStore" id="GNUNET_GTK_pseudonym_tree_store">
-    <columns>
-      <!-- column-name local_name -->
-      <column type="gchararray"/>
-      <!-- column-name namespace_handle -->
-      <column type="gpointer"/>
-      <!-- column-name last_id -->
-      <column type="gchararray"/>
-      <!-- column-name last_uri -->
-      <column type="gchararray"/>
-      <!-- column-name last_meta -->
-      <column type="gpointer"/>
-      <!-- column-name next_id -->
-      <column type="gchararray"/>
-      <!-- column-name last_description_from_meta -->
-      <column type="gchararray"/>
-      <!-- column-name next_id_editable -->
-      <column type="gboolean"/>
-      <!-- column-name current_id_editable -->
-      <column type="gboolean"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="GNUNET_GTK_publication_keywords_liststore">
-    <columns>
-      <!-- column-name Keyword -->
-      <column type="gchararray"/>
-      <!-- column-name Added -->
-      <column type="gboolean"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="GNUNET_GTK_publication_metadata_liststore">
-    <columns>
-      <!-- column-name Type -->
-      <column type="guint"/>
-      <!-- column-name Format -->
-      <column type="guint"/>
-      <!-- column-name Type_name -->
-      <column type="gchararray"/>
-      <!-- column-name Value -->
-      <column type="gchararray"/>
-      <!-- column-name Description -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" 
id="GNUNET_GTK_publication_metadata_types_liststore">
-    <columns>
-      <!-- column-name Type -->
-      <column type="gint"/>
-      <!-- column-name Format -->
-      <column type="gint"/>
-      <!-- column-name Type1 -->
-      <column type="gchararray"/>
-      <!-- column-name Description -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="GNUNET_GTK_publication_types_liststore">
-    <columns>
-      <!-- column-name Type -->
-      <column type="gint"/>
-      <!-- column-name Type_name -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0">0</col>
-        <col id="1" translatable="yes">Generic</col>
-      </row>
-      <row>
-        <col id="0">1</col>
-        <col id="1" translatable="yes">Text</col>
-      </row>
-      <row>
-        <col id="0">2</col>
-        <col id="1" translatable="yes">Music</col>
-      </row>
-      <row>
-        <col id="0">3</col>
-        <col id="1" translatable="yes">Video</col>
-      </row>
-      <row>
-        <col id="0">4</col>
-        <col id="1" translatable="yes">Image</col>
-      </row>
-      <row>
-        <col id="0">5</col>
-        <col id="1" translatable="yes">Software</col>
-      </row>
-      <row>
-        <col id="0">6</col>
-        <col id="1" translatable="yes">Namespace</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" 
id="GNUNET_GTK_publish_file_dialog_expiration_list_store">
-    <columns>
-      <!-- column-name human_readable_time -->
-      <column type="gchararray"/>
-      <!-- column-name time_in_ms -->
-      <column type="guint64"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="GNUNET_GTK_select_pseudonym_liststore">
-    <columns>
-      <!-- column-name namespace_name -->
-      <column type="gchararray"/>
-      <!-- column-name namespace_handle -->
-      <column type="gpointer"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="main_window_search_anonymity_liststore">
-    <columns>
-      <!-- column-name Name -->
-      <column type="gchararray"/>
-      <!-- column-name Level -->
-      <column type="guint"/>
-      <!-- column-name Color -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">None</col>
-        <col id="1">0</col>
-        <col id="2" translatable="yes">#AAAA00000000</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Normal</col>
-        <col id="1">1</col>
-        <col id="2" translatable="yes">#000000000000</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Paranoid</col>
-        <col id="1">10</col>
-        <col id="2" translatable="yes">#0000AAAA0000</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkListStore" id="main_window_search_mime_liststore">
-    <columns>
-      <!-- column-name MIME -->
-      <column type="gchararray"/>
-      <!-- column-name Type -->
-      <column type="gchararray"/>
-      <!-- column-name Extension -->
-      <column type="gchararray"/>
-      <!-- column-name Lossyness -->
-      <column type="gchararray"/>
-      <!-- column-name Freedom -->
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0"> </col>
-        <col id="1" translatable="yes">Any</col>
-        <col id="2" translatable="yes"> </col>
-        <col id="3" translatable="yes"> </col>
-        <col id="4" translatable="yes"> </col>
-      </row>
-      <row>
-        <col id="0">plain/text</col>
-        <col id="1" translatable="yes">Text</col>
-        <col id="2">txt</col>
-        <col id="3" translatable="yes">N/A</col>
-        <col id="4" translatable="yes">N/A</col>
-      </row>
-      <row>
-        <col id="0">application/zip</col>
-        <col id="1" translatable="yes">Zip</col>
-        <col id="2">zip</col>
-        <col id="3" translatable="yes">lossless</col>
-        <col id="4" translatable="yes">free</col>
-      </row>
-      <row>
-        <col id="0">audio/mpeg</col>
-        <col id="1" translatable="yes">MPEG audio</col>
-        <col id="2">mp3, mp2, mpeg</col>
-        <col id="3" translatable="yes">lossy</col>
-        <col id="4" translatable="yes">non-free</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkTreeStore" id="main_window_search_namespace_treestore">
-    <columns>
-      <!-- column-name Name -->
-      <column type="gchararray"/>
-      <!-- column-name Key -->
-      <column type="gpointer"/>
-      <!-- column-name Root -->
-      <column type="gchararray"/>
-      <!-- column-name Tooltip -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
   <object class="GtkTreeStore" 
id="GNUNET_GTK_file_sharing_publishing_tree_store">
     <columns>
       <!-- column-name filesize -->
@@ -251,944 +32,280 @@
       <column type="guint"/>
     </columns>
   </object>
-  <object class="GtkWindow" id="GNUNET_GTK_edit_publication_window">
-    <property name="border_width">4</property>
+  <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store">
+    <columns>
+      <!-- column-name extractor_meta_type -->
+      <column type="guint"/>
+      <!-- column-name extractor_meta_format -->
+      <column type="guint"/>
+      <!-- column-name extractor_meta_type_string -->
+      <column type="gchararray"/>
+      <!-- column-name extracotr_meta_value -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkWindow" id="GNUNET_GTK_open_url_window">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Enter the URI to be 
downloaded</property>
     <property name="modal">True</property>
-    <property name="window_position">center-on-parent</property>
+    <property name="default_width">640</property>
+    <property name="default_height">240</property>
     <property name="destroy_with_parent">True</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="skip_pager_hint">True</property>
     <property name="deletable">False</property>
     <property name="transient_for">GNUNET_GTK_main_window</property>
-    <signal name="realize" 
handler="GNUNET_GTK_edit_publication_window_realize_cb"/>
-    <signal name="delete_event" 
handler="GNUNET_GTK_edit_publication_window_delete_event_cb"/>
+    <signal name="delete-event" 
handler="GNUNET_GTK_open_url_window_delete_event_cb" swapped="no"/>
     <child>
-      <object class="GtkVBox" id="GNUNET_GTK_edit_publication_master_vbox">
+      <object class="GtkVBox" id="GNUNET_GTK_open_url_dialog_main_vbox">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
+        <property name="can_focus">False</property>
         <property name="spacing">2</property>
         <child>
-          <object class="GtkVPaned" 
id="GNUNET_GTK_edit_publication_main_vpaned">
+          <object class="GtkHBox" id="GNUNET_GTK_open_url_dialog_query_hbox">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="orientation">vertical</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkHPaned" 
id="GNUNET_GTK_edit_publication_top_hpaned">
+              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_url_label">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="position_set">True</property>
-                <child>
-                  <object class="GtkVBox" 
id="GNUNET_GTK_edit_publication_metadata_vbox">
-                    <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_hbox">
-                        <property name="visible">True</property>
-                        <child>
-                          <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_type_label">
-                            <property name="visible">True</property>
-                            <property name="label" 
translatable="yes">_Publication type:</property>
-                            <property name="use_underline">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkComboBox" 
id="GNUNET_GTK_edit_publication_type_combo">
-                            <property name="visible">True</property>
-                            <property 
name="model">GNUNET_GTK_publication_types_liststore</property>
-                            <property name="active">0</property>
-                            <signal name="changed" 
handler="GNUNET_GTK_edit_publication_type_combo_changed_cb"/>
-                            <child>
-                              <object class="GtkCellRendererText" 
id="cellrenderertext2"/>
-                              <attributes>
-                                <attribute name="text">1</attribute>
-                              </attributes>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" 
id="GNUNET_GTK_edit_publication_add_button">
-                            <property name="label">gtk-add</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_stock">True</property>
-                            <signal name="clicked" 
handler="GNUNET_GTK_edit_publication_add_button_clicked_cb"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" 
id="GNUNET_GTK_edit_publication_delete_button">
-                            <property name="label">gtk-delete</property>
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_stock">True</property>
-                            <signal name="clicked" 
handler="GNUNET_GTK_edit_publication_delete_button_clicked_cb"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">3</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkScrolledWindow" 
id="GNUNET_GTK_edit_publication_metadata_scrolled_window">
-                        <property name="width_request">400</property>
-                        <property name="height_request">120</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
-                        <child>
-                          <object class="GtkTreeView" 
id="GNUNET_GTK_edit_publication_metadata_tree_view">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property 
name="model">GNUNET_GTK_publication_metadata_liststore</property>
-                            <property name="enable_search">False</property>
-                            <property name="search_column">0</property>
-                            <property name="tooltip_column">4</property>
-                            <child>
-                              <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_edit_publication_metadata_tree_view_type_column">
-                                <property name="resizable">True</property>
-                                <property name="title">Type</property>
-                                <property name="clickable">True</property>
-                                <property name="sort_column_id">2</property>
-                                <child>
-                                  <object class="GtkCellRendererCombo" 
id="GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer">
-                                    <property name="editable">True</property>
-                                    <property name="has_entry">False</property>
-                                    <property name="text_column">2</property>
-                                    <property 
name="model">GNUNET_GTK_publication_metadata_types_liststore</property>
-                                    <signal name="edited" 
handler="GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb"/>
-                                    <signal name="changed" 
handler="GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_changed_cb"/>
-                                  </object>
-                                  <attributes>
-                                    <attribute name="text">2</attribute>
-                                  </attributes>
-                                </child>
-                              </object>
-                            </child>
-                            <child>
-                              <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_edit_publication_metadata_tree_view_description_column">
-                                <property name="sizing">autosize</property>
-                                <property name="title">Value</property>
-                                <property name="expand">True</property>
-                                <property name="clickable">True</property>
-                                <property name="sort_column_id">3</property>
-                                <child>
-                                  <object class="GtkCellRendererText" 
id="GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer">
-                                    <property name="editable">True</property>
-                                    <signal name="edited" 
handler="GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb"/>
-                                  </object>
-                                  <attributes>
-                                    <attribute name="text">3</attribute>
-                                  </attributes>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="resize">True</property>
-                    <property name="shrink">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" 
id="GNUNET_GTK_edit_publication_metadata_preview_frame">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <child>
-                      <object class="GtkAlignment" 
id="GNUNET_GTK_edit_publication_metadata_preview_alignment">
-                        <property name="visible">True</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_GTK_edit_publication_metadata_preview_vbox">
-                            <property name="visible">True</property>
-                            <child>
-                              <object class="GtkFileChooserButton" 
id="GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="create_folders">False</property>
-                                <property name="title" 
translatable="yes">Select file</property>
-                                <signal name="file_set" 
handler="GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button_file_set_cb"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkScrolledWindow" 
id="GNUNET_GTK_edit_publication_metadata_preview_image_scrolled_window">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="hadjustment">GNUNET_GTK_edit_publication_metadata_preview_image_horizontal_adjustment</property>
-                                <property 
name="vadjustment">GNUNET_GTK_edit_publication_metadata_preview_image_verticall_adjustment</property>
-                                <property 
name="hscrollbar_policy">automatic</property>
-                                <property 
name="vscrollbar_policy">automatic</property>
-                                <child>
-                                  <object class="GtkViewport" 
id="GNUNET_GTK_edit_publication_metadata_preview_image_viewport">
-                                    <property name="visible">True</property>
-                                    <property 
name="hadjustment">GNUNET_GTK_edit_publication_metadata_preview_image_horizontal_adjustment</property>
-                                    <property 
name="vadjustment">GNUNET_GTK_edit_publication_metadata_preview_image_verticall_adjustment</property>
-                                    <property 
name="shadow_type">none</property>
-                                    <child>
-                                      <object class="GtkImage" 
id="GNUNET_GTK_edit_publication_metadata_preview_image">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="stock">gtk-missing-image</property>
-                                      </object>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="label" 
translatable="yes">Preview:</property>
-                        <property name="use_markup">True</property>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="resize">True</property>
-                    <property name="shrink">False</property>
-                  </packing>
-                </child>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_URI:</property>
+                <property name="use_underline">True</property>
+                <property 
name="mnemonic_widget">GNUNET_GTK_open_url_dialog_url_textview</property>
               </object>
               <packing>
-                <property name="resize">True</property>
-                <property name="shrink">False</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">4</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_secondary_hbox">
+              <object class="GtkFrame" id="frame1">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">in</property>
                 <child>
-                  <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_keyword_list_hbox">
+                  <object class="GtkAlignment" id="alignment1">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
+                    <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkVBox" id="vbox2">
+                      <object class="GtkTextView" 
id="GNUNET_GTK_open_url_dialog_url_textview">
                         <property name="visible">True</property>
-                        <property name="orientation">vertical</property>
-                        <child>
-                          <object class="GtkHBox" id="hbox3">
-                            <property name="visible">True</property>
-                            <child>
-                              <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_keyword_label">
-                                <property name="visible">True</property>
-                                <property name="label" 
translatable="yes">_Keyword:</property>
-                                <property name="use_underline">True</property>
-                                <property 
name="mnemonic_widget">GNUNET_GTK_edit_publication_keyword_entry</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" 
id="GNUNET_GTK_edit_publication_keyword_entry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="invisible_char">&#x25CF;</property>
-                                <property 
name="invisible_char_set">True</property>
-                                <property 
name="caps_lock_warning">False</property>
-                                <property 
name="primary_icon_sensitive">True</property>
-                                <property 
name="secondary_icon_sensitive">True</property>
-                                <signal name="key_press_event" 
handler="GNUNET_GTK_edit_publication_keyword_entry_key_press_event_cb"/>
-                              </object>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkScrolledWindow" 
id="GNUNET_GTK_edit_publication_keyword_scrolled_window">
-                            <property name="width_request">400</property>
-                            <property name="height_request">120</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">never</property>
-                            <property 
name="vscrollbar_policy">automatic</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkTreeView" 
id="GNUNET_GTK_edit_publication_keyword_list_tree_view">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property 
name="model">GNUNET_GTK_publication_keywords_liststore</property>
-                                <property name="search_column">0</property>
-                                <child>
-                                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_edit_publication_keyword_list_tree_view_column">
-                                    <property name="title">Keywords</property>
-                                    <property name="clickable">True</property>
-                                    <property 
name="reorderable">True</property>
-                                    <property 
name="sort_column_id">0</property>
-                                    <child>
-                                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_edit_publication_keyword_list_tree_view_renderer"/>
-                                      <attributes>
-                                        <attribute name="text">0</attribute>
-                                      </attributes>
-                                    </child>
-                                  </object>
-                                </child>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_KEY_PRESS_MASK | 
GDK_STRUCTURE_MASK</property>
+                        <property name="wrap_mode">char</property>
+                        <property name="indent">20</property>
+                        <property 
name="buffer">GNUNET_GTK_open_url_dialog_url_textview_buffer</property>
+                        <property name="accepts_tab">False</property>
+                        <signal name="key-press-event" 
handler="GNUNET_GTK_open_url_dialog_url_textview_key_press_event_cb" 
swapped="no"/>
                       </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
                     </child>
-                    <child>
-                      <object class="GtkVBox" 
id="GNUNET_GTK_edit_publication_keyword_list_button_vbox">
-                        <property name="visible">True</property>
-                        <property name="orientation">vertical</property>
-                        <child>
-                          <object class="GtkButton" 
id="GNUNET_GTK_edit_publication_keyword_list_add_button">
-                            <property name="label">Add key_word</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="image">add_stock_image</property>
-                            <property name="use_underline">True</property>
-                            <signal name="clicked" 
handler="GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" 
id="GNUNET_GTK_edit_publication_keyword_list_del_button">
-                            <property name="label">Delete _selected</property>
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="image">del_stock_image</property>
-                            <property name="use_underline">True</property>
-                            <signal name="clicked" 
handler="GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb"/>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="pack_type">end</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">5</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
                   </object>
-                  <packing>
-                    <property name="padding">4</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
-                <child>
-                  <object class="GtkFrame" id="frame3">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment3">
-                        <property name="visible">True</property>
-                        <property name="yalign">0</property>
-                        <property name="yscale">0</property>
-                        <property name="left_padding">4</property>
-                        <property name="right_padding">4</property>
-                        <child>
-                          <object class="GtkVBox" 
id="GNUNET_GTK_edit_publication_misc_vbox">
-                            <property name="visible">True</property>
-                            <property name="orientation">vertical</property>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_root_hbox">
-                                <property name="visible">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_root_label">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" 
translatable="yes">_Root keyword:</property>
-                                    <property 
name="use_underline">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkEntry" 
id="GNUNET_GTK_edit_publication_root_entry">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">&#x2022;</property>
-                                    <property name="text">root</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_index_hbox">
-                                <property name="visible">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_index_label">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" 
translatable="yes">_Index file:</property>
-                                    <property 
name="use_underline">True</property>
-                                    <property 
name="mnemonic_widget">GNUNET_GTK_edit_publication_index_checkbutton</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" 
id="GNUNET_GTK_edit_publication_index_checkbutton">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="receives_default">False</property>
-                                    <property 
name="draw_indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_anonymity_hbox">
-                                <property name="visible">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_anonymity_label">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" 
translatable="yes">A_nonymity:</property>
-                                    <property 
name="use_underline">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkAlignment" 
id="GNUNET_GTK_edit_publication_anonymity_combobox_alignment">
-                                    <property name="visible">True</property>
-                                    <property name="yscale">0</property>
-                                    <child>
-                                      <object class="GtkComboBox" 
id="GNUNET_GTK_edit_publication_anonymity_combobox">
-                                        <property 
name="visible">True</property>
-                                        <property 
name="model">main_window_search_anonymity_liststore</property>
-                                        <property name="active">1</property>
-                                        <child>
-                                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_edit_publication_anonymity_combobox_renderer"/>
-                                          <attributes>
-                                            <attribute 
name="foreground">2</attribute>
-                                            <attribute 
name="text">0</attribute>
-                                          </attributes>
-                                        </child>
-                                        <child>
-                                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_edit_publication_anonymity_combobox_renerer_level"/>
-                                          <attributes>
-                                            <attribute 
name="text">1</attribute>
-                                          </attributes>
-                                        </child>
-                                      </object>
-                                    </child>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_priority_hbox">
-                                <property name="visible">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_priority_label">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" 
translatable="yes">_Priority:</property>
-                                    <property 
name="use_underline">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_GTK_edit_publication_priority_spin_button">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">&#x25CF;</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">priority_adjustment</property>
-                                    <property name="numeric">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" id="hbox4">
-                                <property name="visible">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_expiration_label">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">1</property>
-                                    <property name="label" 
translatable="yes">_Expriation year:</property>
-                                    <property 
name="use_underline">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="padding">5</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_GTK_edit_publication_expiration_year_spin_button">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="max_length">4</property>
-                                    <property 
name="invisible_char">&#x2022;</property>
-                                    <property 
name="invisible_char_set">True</property>
-                                    <property 
name="primary_icon_sensitive">True</property>
-                                    <property 
name="secondary_icon_sensitive">True</property>
-                                    <property 
name="adjustment">expiration_year_adjustment</property>
-                                    <property name="climb_rate">1</property>
-                                    <property name="numeric">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">4</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkHBox" id="hbox9">
-                                <property name="visible">True</property>
-                                <child>
-                                  <object class="GtkLabel" 
id="GNUNET_GTK_edit_publication_replication_label">
-                                    <property name="visible">True</property>
-                                    <property name="label" 
translatable="yes">_Replication:</property>
-                                    <property 
name="use_underline">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" 
id="GNUNET_GTK_edit_publication_replication_spin_button">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property 
name="invisible_char">&#x25CF;</property>
-                                    <property 
name="adjustment">replication_adjustment</property>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="position">5</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label2">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Publication 
options:</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 type="label_item">
+                  <placeholder/>
                 </child>
               </object>
               <packing>
-                <property name="resize">True</property>
-                <property name="shrink">False</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="padding">5</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <object class="GtkHBox" 
id="GNUNET_GTK_edit_publication_buttons_hbox">
+          <object class="GtkHBox" id="hbox1">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_edit_publication_cancel_button">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_execute_button">
+                <property name="label">_Execute</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
+                <property name="sensitive">False</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" 
handler="GNUNET_GTK_edit_publication_cancel_button_clicked_cb"/>
+                <property name="image">execute_stock_image</property>
+                <property name="use_underline">True</property>
+                <signal name="clicked" 
handler="GNUNET_GTK_open_url_dialog_execute_button_clicked_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
                 <property name="padding">4</property>
                 <property name="pack_type">end</property>
-                <property name="position">1</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_edit_publication_confirm_button">
-                <property name="label">gtk-ok</property>
+              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="sensitive">False</property>
                 <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_stock">True</property>
-                <signal name="clicked" 
handler="GNUNET_GTK_edit_publication_confirm_button_clicked_cb"/>
+                <signal name="clicked" 
handler="GNUNET_GTK_open_url_dialog_cancel_button_clicked_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
                 <property name="padding">4</property>
                 <property name="pack_type">end</property>
-                <property name="position">0</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="padding">1</property>
+            <property name="padding">4</property>
             <property name="pack_type">end</property>
             <property name="position">1</property>
           </packing>
         </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkWindow" id="GNUNET_GTK_main_window">
-    <property name="title" translatable="yes">gnunet-fs-gtk</property>
-    <property name="window_position">center</property>
-    <property name="default_width">700</property>
-    <property name="default_height">500</property>
-    <property name="icon_name">gnunet-gtk</property>
-    <signal name="realize" handler="GNUNET_GTK_main_window_realize_cb"/>
-    <signal name="delete_event" handler="GNUNET_GTK_quit_cb" after="yes"/>
-    <child>
-      <object class="GtkVBox" id="GNUNET_GTK_main_window_vbox">
-        <property name="visible">True</property>
         <child>
-          <object class="GtkMenuBar" id="GNUNET_GTK_main_menu">
+          <object class="GtkHBox" id="hbox8">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkMenuItem" 
id="GNUNET_GTK_main_menu_file_sharing">
+              <object class="GtkAlignment" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_alignment">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">_File 
sharing</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" 
id="GNUNET_GTK_main_menu_file_sharing_box">
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_create_pseudonym">
-                        <property name="label" translatable="yes">_Create 
pseudonym</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Create a pseudonym for publishing content.  Note that you 
can also publish content anonymously (without using a pseudonym).</property>
-                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Create pseudonym</property>
-                        <property name="use_underline">True</property>
-                        <property name="image">new_stock_imag</property>
-                        <property name="use_stock">False</property>
-                        <accelerator key="n" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
-                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_create_pseudonym_activate_cb"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_advertise_pseudonym">
-                        <property name="label" translatable="yes">_Advertise 
Pseudonym</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="image">index_stock_image</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_advertise_pseudonym_activate_cb"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_publish">
-                        <property name="label" 
translatable="yes">_Publish</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Publish files or directories on GNUnet</property>
-                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Publish</property>
-                        <property name="use_underline">True</property>
-                        <property name="image">up_stock_image</property>
-                        <property name="use_stock">False</property>
-                        <accelerator key="a" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
-                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_publish_activate_cb"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkSeparatorMenuItem" 
id="GNUNET_GTK_main_menu_file_sep1"/>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_download_uri">
-                        <property name="label" 
translatable="yes">_Download</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Download a file or directory with a known URI.</property>
-                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Download</property>
-                        <property name="use_underline">True</property>
-                        <property name="image">down_stock_image</property>
-                        <property name="use_stock">False</property>
-                        <accelerator key="d" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
-                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_download_uri_activate_cb"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_open_gnunet_directory">
-                        <property name="label" translatable="yes">_Open GNUnet 
directory</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" translatable="yes">Use 
this option to browse a GNUnet directory file that has been previously 
downloaded.</property>
-                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Open directory</property>
-                        <property name="use_underline">True</property>
-                        <property name="image">open_stock_image</property>
-                        <property name="use_stock">False</property>
-                        <accelerator key="F3" signal="activate"/>
-                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_open_gnunet_directory_activate_cb"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkSeparatorMenuItem" 
id="GNUNET_GTK_main_menu_file_sep2">
-                        <property name="visible">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_quit">
-                        <property name="label">gtk-quit</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" translatable="yes">Exit 
gnunet-fs-gtk.  Active file-sharing operations will resume upon 
restart.</property>
-                        <property 
name="accel_path">&lt;gnunet-fs-gtk&gt;/Quit</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <accelerator key="q" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
-                        <signal name="activate" handler="GNUNET_GTK_quit_cb"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="GNUNET_GTK_main_menu_edit">
-                <property name="label" translatable="yes">_Edit</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="GNUNET_GTK_main_menu_edit_box">
+                <property name="can_focus">False</property>
+                <property name="yscale">0</property>
+                <child>
+                  <object class="GtkComboBox" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property 
name="model">main_window_search_anonymity_liststore</property>
+                    <property name="active">1</property>
                     <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_edit_preferences">
-                        <property name="label">gtk-preferences</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" translatable="yes">Edit 
the system configuration.</property>
-                        <property 
name="accel_path">&lt;gnunet-fs-gtk&gt;/Edit/Preferences</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                      </object>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_renderer"/>
+                      <attributes>
+                        <attribute name="foreground">2</attribute>
+                        <attribute name="text">0</attribute>
+                      </attributes>
                     </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="GNUNET_GTK_main_menu_view">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_View</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="GNUNET_GTK_main_menu_view_box">
-                    <property name="visible">True</property>
                     <child>
-                      <object class="GtkCheckMenuItem" 
id="GNUNET_GTK_main_menu_view_metadata">
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" translatable="yes">Show 
meta data in main window</property>
-                        <property name="label" 
translatable="yes">Metadata</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <signal name="toggled" 
handler="GNUNET_GTK_main_menu_view_metadata_toggled_cb"/>
-                      </object>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_renerer_level"/>
+                      <attributes>
+                        <attribute name="text">1</attribute>
+                      </attributes>
                     </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" 
id="GNUNET_GTK_main_menu_view_preview">
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" translatable="yes">Show 
preview (when available)</property>
-                        <property name="label" 
translatable="yes">Preview</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <signal name="toggled" 
handler="GNUNET_GTK_main_menu_view_preview_toggled_cb"/>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" 
id="GNUNET_GTK_main_menu_search_preview">
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" translatable="yes">Show 
search box in main window</property>
-                        <property name="label" 
translatable="yes">Search</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <signal name="toggled" 
handler="GNUNET_GTK_main_menu_view_search_toggled_cb"/>
-                      </object>
-                    </child>
                   </object>
                 </child>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
-              <object class="GtkMenuItem" id="GNUNET_GTK_main_menu_help">
+              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_anonymity_label">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">_Help</property>
+                <property name="can_focus">False</property>
+                <property name="label" 
translatable="yes">_Anonymity:</property>
                 <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="GNUNET_GTK_main_menu_help_abou">
-                    <property name="visible">True</property>
-                    <child>
-                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_help_about">
-                        <property name="label">gtk-about</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip_text" 
translatable="yes">Display information about this version of 
gnunet-fs-gtk</property>
-                        <property 
name="accel_path">&lt;gnunet-fs-gtk&gt;/Help/About</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_help_about_activate_cb"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
+                <property 
name="mnemonic_widget">GNUNET_GTK_open_url_dialog_anonymity_combobox</property>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">4</property>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="position">1</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
           </packing>
         </child>
-        <child>
-          <object class="GtkHBox" id="main_window_search_hbox">
+      </object>
+    </child>
+  </object>
+  <object class="GtkListStore" id="GNUNET_GTK_peer_info_list_store">
+    <columns>
+      <!-- column-name peer_identity -->
+      <column type="gchararray"/>
+      <!-- column-name number_of_known_addresses -->
+      <column type="guint"/>
+      <!-- column-name country_name -->
+      <column type="gchararray"/>
+      <!-- column-name country_flag -->
+      <column type="GdkPixbuf"/>
+      <!-- column-name bandwidth -->
+      <column type="guint64"/>
+    </columns>
+  </object>
+  <object class="GtkTreeStore" id="GNUNET_GTK_pseudonym_tree_store">
+    <columns>
+      <!-- column-name local_name -->
+      <column type="gchararray"/>
+      <!-- column-name namespace_handle -->
+      <column type="gpointer"/>
+      <!-- column-name last_id -->
+      <column type="gchararray"/>
+      <!-- column-name last_uri -->
+      <column type="gchararray"/>
+      <!-- column-name last_meta -->
+      <column type="gpointer"/>
+      <!-- column-name next_id -->
+      <column type="gchararray"/>
+      <!-- column-name last_description_from_meta -->
+      <column type="gchararray"/>
+      <!-- column-name next_id_editable -->
+      <column type="gboolean"/>
+      <!-- column-name current_id_editable -->
+      <column type="gboolean"/>
+    </columns>
+  </object>
+  <object class="GtkFileChooserDialog" 
id="GNUNET_GTK_publish_directory_dialog">
+    <property name="can_focus">False</property>
+    <property name="can_default">True</property>
+    <property name="events">GDK_FOCUS_CHANGE_MASK | 
GDK_STRUCTURE_MASK</property>
+    <property name="border_width">5</property>
+    <property name="modal">True</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="transient_for">GNUNET_GTK_main_window</property>
+    <property name="action">select-folder</property>
+    <property name="create_folders">False</property>
+    <property name="select_multiple">True</property>
+    <signal name="response" 
handler="GNUNET_GTK_publish_directory_dialog_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <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="dialog-action_area6">
             <property name="visible">True</property>
-            <property name="border_width">3</property>
-            <property name="spacing">4</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
             <child>
-              <object class="GtkLabel" id="main_window_search_namespace_label">
+              <object class="GtkButton" 
id="GNUNET_GTK_publish_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Namespace:</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>
@@ -1197,10 +314,14 @@
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" 
id="main_window_search_selected_namespace_label">
+              <object class="GtkButton" 
id="GNUNET_GTK_publish_directory_dialog_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="label">&lt;none&gt;</property>
-                <property name="single_line_mode">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -1208,326 +329,550 @@
                 <property name="position">1</property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkAlignment" 
id="main_window_search_namespace_combobox_alignment">
+              <object class="GtkHBox" id="hbox6">
                 <property name="visible">True</property>
-                <property name="xscale">0</property>
-                <property name="yscale">0</property>
+                <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkToggleButton" 
id="main_window_search_namespace_dropdown_button">
-                    <property name="width_request">21</property>
-                    <property name="height_request">21</property>
+                  <object class="GtkCheckButton" 
id="GNUNET_GTK_publish_directory_dialog_do_index_checkbutton">
+                    <property name="label" translatable="yes">Index 
files</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="events">GDK_ENTER_NOTIFY_MASK | 
GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
-                    <property name="image_position">right</property>
-                    <signal name="leave_notify_event" 
handler="namespace_selector_window_leave_notify_event_cb"/>
-                    <signal name="toggled" 
handler="main_window_search_namespace_dropdown_button_toggled_cb"/>
-                    <signal name="enter_notify_event" 
handler="main_window_search_namespace_dropdown_button_enter_notify_event_cb"/>
-                    <child>
-                      <object class="GtkArrow" id="arrow1">
-                        <property name="visible">True</property>
-                        <property name="arrow_type">down</property>
-                      </object>
-                    </child>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">20</property>
+                    <property name="position">0</property>
+                  </packing>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_directory_dialog_priority_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Priority:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">13</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_directory_dialog_priority_spin_button">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">•</property>
+                    <property name="invisible_char_set">True</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property 
name="secondary_icon_activatable">False</property>
+                    <property name="primary_icon_sensitive">True</property>
+                    <property name="secondary_icon_sensitive">True</property>
+                    <property name="adjustment">priority_adjustment</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">20</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <placeholder/>
-            </child>
-            <child>
-              <object class="GtkAlignment" 
id="main_window_search_button_alignment">
+              <object class="GtkHBox" id="hbox7">
                 <property name="visible">True</property>
-                <property name="yscale">0</property>
+                <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkButton" id="main_window_search_button">
-                    <property name="label" translatable="yes">Find:</property>
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_directory_dialog_expiration_label">
                     <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Expiration 
year:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">20</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_directory_dialog_expiration_year_spin_button">
+                    <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="image">find_stock_image</property>
-                    <signal name="clicked" 
handler="main_window_search_button_clicked_cb"/>
+                    <property name="invisible_char">•</property>
+                    <property name="invisible_char_set">True</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property 
name="secondary_icon_activatable">False</property>
+                    <property name="primary_icon_sensitive">True</property>
+                    <property name="secondary_icon_sensitive">True</property>
+                    <property 
name="adjustment">expiration_year_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="GNUNET_GTK_publish_directory_dialog_anonymity_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Anonymity:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox_alignment">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkComboBox" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property 
name="model">main_window_search_anonymity_liststore</property>
+                        <property name="active">1</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox_renderer"/>
+                          <attributes>
+                            <attribute name="foreground">2</attribute>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox_renerer_level"/>
+                          <attributes>
+                            <attribute name="text">1</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">4</property>
+                <property name="position">1</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="main_window_search_entry">
+              <object class="GtkHBox" id="hbox10">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
-                <property name="invisible_char_set">True</property>
-                <property name="primary_icon_sensitive">True</property>
-                <property name="secondary_icon_sensitive">True</property>
-                <signal name="key_press_event" 
handler="main_window_search_entry_key_press_event_cb"/>
-              </object>
-              <packing>
-                <property name="position">5</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="main_window_search_anonymity_label">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Anonymity:</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">6</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkAlignment" 
id="main_window_search_anonymity_combobox_alignment">
-                <property name="visible">True</property>
-                <property name="yscale">0</property>
+                <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkComboBox" 
id="main_window_search_anonymity_combobox">
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_directory_dialog_replication_label">
                     <property name="visible">True</property>
-                    <property 
name="model">main_window_search_anonymity_liststore</property>
-                    <property name="active">1</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_anonymity_combobox_renderer"/>
-                      <attributes>
-                        <attribute name="foreground">2</attribute>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_anonymity_combobox_renerer_level"/>
-                      <attributes>
-                        <attribute name="text">1</attribute>
-                      </attributes>
-                    </child>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">_Replication:</property>
+                    <property name="use_underline">True</property>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">20</property>
+                    <property name="position">0</property>
+                  </packing>
                 </child>
+                <child>
+                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_directory_dialog_replication_spin_button">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">●</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property 
name="secondary_icon_activatable">False</property>
+                    <property name="primary_icon_sensitive">True</property>
+                    <property name="secondary_icon_sensitive">True</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">1</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">7</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
               </packing>
             </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget 
response="-6">GNUNET_GTK_publish_dialog_cancel_button</action-widget>
+      <action-widget 
response="-5">GNUNET_GTK_publish_directory_dialog_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkFileChooserDialog" id="GNUNET_GTK_publish_file_dialog">
+    <property name="can_focus">False</property>
+    <property name="can_default">True</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Publish file...</property>
+    <property name="modal">True</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">normal</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="transient_for">GNUNET_GTK_main_window</property>
+    <property name="create_folders">False</property>
+    <property name="select_multiple">True</property>
+    <signal name="delete-event" handler="gtk_widget_hide_on_delete" 
swapped="no"/>
+    <signal name="response" 
handler="GNUNET_GTK_publish_file_dialog_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox5">
+        <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="dialog-action_area5">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
             <child>
-              <object class="GtkLabel" id="main_window_search_mime_label">
+              <object class="GtkButton" 
id="GNUNET_GTK_publish_file_dialog_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Type:</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">8</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkAlignment" 
id="main_window_search_mime_combobox_alignment">
+              <object class="GtkButton" 
id="GNUNET_GTK_publish_file_dialog_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="yscale">0</property>
-                <child>
-                  <object class="GtkComboBox" 
id="main_window_search_mime_combobox">
-                    <property name="visible">True</property>
-                    <property 
name="model">main_window_search_mime_liststore</property>
-                    <property name="active">0</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_description"/>
-                      <attributes>
-                        <attribute name="text">1</attribute>
-                      </attributes>
-                    </child>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_type">
-                        <property name="visible">False</property>
-                      </object>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_extension"/>
-                      <attributes>
-                        <attribute name="text">2</attribute>
-                      </attributes>
-                    </child>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_lossyness">
-                        <property name="visible">False</property>
-                      </object>
-                      <attributes>
-                        <attribute name="text">3</attribute>
-                      </attributes>
-                    </child>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_freedom">
-                        <property name="visible">False</property>
-                      </object>
-                      <attributes>
-                        <attribute name="text">4</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
+                <property name="can_focus">True</property>
+                <property name="can_default">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">9</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <object class="GtkHPaned" id="main_window_hpaned">
+          <object class="GtkVBox" id="vbox1">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkNotebook" id="GNUNET_GTK_main_window_notebook">
+              <object class="GtkHBox" id="hbox2">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="scrollable">True</property>
-                <property name="tab_border">0</property>
-                <property name="tab_hborder">0</property>
-                <property name="tab_vborder">0</property>
-                <signal name="switch_page" 
handler="GNUNET_GTK_main_window_notebook_switch_page_cb" after="yes"/>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkCheckButton" 
id="GNUNET_GTK_publish_file_dialog_do_index_checkbutton">
+                    <property name="label" translatable="yes">Index 
file</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">20</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_priority_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Priority:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">13</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_file_dialog_priority_spin_button">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">•</property>
+                    <property name="invisible_char_set">True</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property 
name="secondary_icon_activatable">False</property>
+                    <property name="primary_icon_sensitive">True</property>
+                    <property name="secondary_icon_sensitive">True</property>
+                    <property name="adjustment">priority_adjustment</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">20</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </object>
               <packing>
-                <property name="resize">True</property>
-                <property name="shrink">False</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkVBox" id="GNUNET_GTK_main_window_extras_vbox">
+              <object class="GtkHBox" id="hbox5">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkImage" 
id="GNUNET_GTK_main_window_preview_image">
-                    <property name="width_request">128</property>
-                    <property name="height_request">128</property>
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_expiration_label">
                     <property name="visible">True</property>
-                    <property name="has_tooltip">True</property>
-                    <property name="tooltip_text" translatable="yes">Thumbnail 
associated with the currently selected content</property>
-                    <property name="pixel_size">256</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Expiration 
year:</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
+                    <property name="padding">20</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkScrolledWindow" 
id="GNUNET_GTK_main_window_metadata_scroll">
+                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_file_dialog_expiration_year_spin_button">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="hadjustment">adjustment1</property>
-                    <property name="vadjustment">adjustment2</property>
-                    <property name="hscrollbar_policy">automatic</property>
-                    <property name="vscrollbar_policy">automatic</property>
-                    <property name="shadow_type">in</property>
+                    <property name="invisible_char">•</property>
+                    <property name="invisible_char_set">True</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property 
name="secondary_icon_activatable">False</property>
+                    <property name="primary_icon_sensitive">True</property>
+                    <property name="secondary_icon_sensitive">True</property>
+                    <property 
name="adjustment">expiration_year_adjustment</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_anonymity_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">Anonymity:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">5</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox_alignment">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="yscale">0</property>
                     <child>
-                      <object class="GtkTreeView" 
id="GNUNET_GTK_main_window_metadata_treeview">
+                      <object class="GtkComboBox" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property 
name="model">GNUNET_GTK_meta_data_list_store</property>
-                        <property name="hadjustment">adjustment1</property>
-                        <property name="vadjustment">adjustment2</property>
-                        <property name="search_column">0</property>
-                        <property name="rubber_banding">True</property>
-                        <property name="enable_grid_lines">both</property>
-                        <signal name="button_press_event" 
handler="GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb"/>
-                        <signal name="popup_menu" 
handler="GNUNET_GTK_main_window_metadata_treeview_popup_menu_cb"/>
+                        <property name="can_focus">False</property>
+                        <property 
name="model">main_window_search_anonymity_liststore</property>
+                        <property name="active">1</property>
                         <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_main_window_metadata_type_column">
-                            <property name="sizing">autosize</property>
-                            <property name="title">Type</property>
-                            <property name="clickable">True</property>
-                            <property name="reorderable">True</property>
-                            <property name="sort_indicator">True</property>
-                            <child>
-                              <object class="GtkCellRendererText" 
id="GNUNET_GTK_main_window_metadata_type_renderer"/>
-                              <attributes>
-                                <attribute name="text">2</attribute>
-                              </attributes>
-                            </child>
-                          </object>
+                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox_renderer"/>
+                          <attributes>
+                            <attribute name="foreground">2</attribute>
+                            <attribute name="text">0</attribute>
+                          </attributes>
                         </child>
                         <child>
-                          <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_main_window_metadata_value_column">
-                            <property name="sizing">autosize</property>
-                            <property name="title">Value</property>
-                            <property name="expand">True</property>
-                            <property name="clickable">True</property>
-                            <property name="reorderable">True</property>
-                            <property name="sort_indicator">True</property>
-                            <child>
-                              <object class="GtkCellRendererText" 
id="GNUNET_GTK_main_window_metadata_value_renderer">
-                                <property name="wrap_mode">word</property>
-                              </object>
-                              <attributes>
-                                <attribute name="text">3</attribute>
-                              </attributes>
-                            </child>
-                          </object>
+                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox_renerer_level"/>
+                          <attributes>
+                            <attribute name="text">1</attribute>
+                          </attributes>
                         </child>
                       </object>
                     </child>
                   </object>
                   <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox11">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_replication_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" 
translatable="yes">_Replication:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">20</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_file_dialog_replication_spin_button">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">●</property>
+                    <property name="primary_icon_activatable">False</property>
+                    <property 
name="secondary_icon_activatable">False</property>
+                    <property name="primary_icon_sensitive">True</property>
+                    <property name="secondary_icon_sensitive">True</property>
+                    <property 
name="adjustment">replication_adjustment</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="padding">1</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
               <packing>
-                <property name="resize">True</property>
-                <property name="shrink">False</property>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkStatusbar" id="GNUNET_GTK_status_bar">
-            <property name="visible">True</property>
-            <property name="spacing">2</property>
-          </object>
-          <packing>
             <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
           </packing>
         </child>
       </object>
     </child>
+    <action-widgets>
+      <action-widget 
response="-6">GNUNET_GTK_publish_file_dialog_cancel_button</action-widget>
+      <action-widget 
response="-5">GNUNET_GTK_publish_file_dialog_ok_button</action-widget>
+    </action-widgets>
   </object>
+  <object class="GtkListStore" 
id="GNUNET_GTK_publish_file_dialog_expiration_list_store">
+    <columns>
+      <!-- column-name human_readable_time -->
+      <column type="gchararray"/>
+      <!-- column-name time_in_ms -->
+      <column type="guint64"/>
+    </columns>
+  </object>
+  <object class="GtkListStore" id="GNUNET_GTK_select_pseudonym_liststore">
+    <columns>
+      <!-- column-name namespace_name -->
+      <column type="gchararray"/>
+      <!-- column-name namespace_handle -->
+      <column type="gpointer"/>
+    </columns>
+  </object>
   <object class="GtkWindow" id="GNUNET_GTK_master_publish_dialog">
     <property name="height_request">500</property>
+    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Publish content on 
GNUnet</property>
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="deletable">False</property>
     <property name="transient_for">GNUNET_GTK_main_window</property>
-    <signal name="realize" 
handler="GNUNET_GTK_master_publish_dialog_realize_cb"/>
-    <signal name="delete_event" 
handler="GNUNET_GTK_master_publish_dialog_delete_event_cb"/>
+    <signal name="realize" 
handler="GNUNET_GTK_master_publish_dialog_realize_cb" swapped="no"/>
+    <signal name="delete-event" 
handler="GNUNET_GTK_master_publish_dialog_delete_event_cb" swapped="no"/>
     <child>
       <object class="GtkVBox" id="GNUNET_GTK_master_publish_dialog_vbox">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
         <property name="border_width">4</property>
         <property name="spacing">7</property>
         <child>
@@ -1581,36 +926,42 @@
             </child>
           </object>
           <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
           <object class="GtkHBox" 
id="GNUNET_GTK_master_dialog_modification_button_hbox">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
               <object class="GtkTable" 
id="GNUNET_GTK_master_publish_dialog_action_table">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="n_rows">2</property>
                 <property name="n_columns">3</property>
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_add_button">
                     <property name="label" translatable="yes">Add 
_File</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_underline">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_add_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_add_button_clicked_cb" swapped="no"/>
                   </object>
                 </child>
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_new_button">
                     <property name="label" translatable="yes">_Create empty 
directory</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="image">new_stock_image</property>
                     <property name="use_underline">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_new_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_new_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -1620,11 +971,12 @@
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_open_button">
                     <property name="label" translatable="yes">Add 
_Directory</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_underline">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_open_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_open_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="top_attach">1</property>
@@ -1634,12 +986,13 @@
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_edit_button">
                     <property name="label">gtk-edit</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="use_stock">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_edit_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_edit_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -1651,12 +1004,13 @@
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_delete_button">
                     <property name="label">gtk-delete</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="use_stock">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb" 
swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
@@ -1668,6 +1022,7 @@
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="padding">25</property>
                 <property name="position">0</property>
               </packing>
@@ -1675,18 +1030,20 @@
             <child>
               <object class="GtkTable" 
id="GNUNET_GTK_master_publish_dialog_arrow_table">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
                 <property name="n_rows">2</property>
                 <property name="n_columns">3</property>
                 <property name="homogeneous">True</property>
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_up_button">
                     <property name="label">gtk-go-up</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="use_stock">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_up_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_up_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -1696,13 +1053,14 @@
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_left_button">
                     <property name="label" translatable="yes">_Left</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="image">left_stock_image</property>
                     <property name="use_underline">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_left_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_left_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="top_attach">1</property>
@@ -1712,12 +1070,13 @@
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_down_button">
                     <property name="label">gtk-go-down</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="use_stock">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_down_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_down_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -1729,13 +1088,14 @@
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_right_button">
                     <property name="label" translatable="yes">_Right</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="image">right_stock_image</property>
                     <property name="use_underline">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_right_button_clicked_cb"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_right_button_clicked_cb" 
swapped="no"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
@@ -1753,6 +1113,7 @@
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="padding">25</property>
                 <property name="position">1</property>
               </packing>
@@ -1760,6 +1121,7 @@
           </object>
           <packing>
             <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">1</property>
           </packing>
         </child>
@@ -1844,43 +1206,48 @@
             </child>
           </object>
           <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
             <property name="position">2</property>
           </packing>
         </child>
         <child>
           <object class="GtkHBox" 
id="GNUNET_GTK_master_publish_dialog_master_buttons_hbox">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="spacing">2</property>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_cancel_button">
-                <property name="label" translatable="yes">_Cancel</property>
+              <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_execute_button">
+                <property name="label" translatable="yes">_Execute</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_underline">True</property>
-                <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_cancel_button_clicked_cb"/>
+                <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_execute_button_clicked_cb" 
swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
                 <property name="pack_type">end</property>
-                <property name="position">1</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_execute_button">
-                <property name="label" translatable="yes">_Execute</property>
+              <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_cancel_button">
+                <property name="label" translatable="yes">_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_underline">True</property>
-                <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_execute_button_clicked_cb"/>
+                <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_cancel_button_clicked_cb" 
swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
                 <property name="pack_type">end</property>
-                <property name="position">0</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
@@ -1894,403 +1261,533 @@
     </child>
   </object>
   <object class="GtkTextBuffer" 
id="GNUNET_GTK_open_url_dialog_url_textview_buffer">
-    <signal name="changed" 
handler="GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb"/>
+    <signal name="changed" 
handler="GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb" 
swapped="no"/>
   </object>
-  <object class="GtkWindow" id="GNUNET_GTK_open_url_window">
-    <property name="title" translatable="yes">Enter the URI to be 
downloaded</property>
+  <object class="GtkDialog" id="GNUNET_GTK_select_pseudonym_dialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Select pseudonym...</property>
     <property name="modal">True</property>
-    <property name="default_width">640</property>
-    <property name="default_height">240</property>
+    <property name="default_width">400</property>
+    <property name="default_height">300</property>
     <property name="destroy_with_parent">True</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <property name="deletable">False</property>
-    <property name="transient_for">GNUNET_GTK_main_window</property>
-    <signal name="delete_event" 
handler="GNUNET_GTK_open_url_window_delete_event_cb"/>
-    <child>
-      <object class="GtkVBox" id="GNUNET_GTK_open_url_dialog_main_vbox">
+    <property name="type_hint">normal</property>
+    <signal name="realize" 
handler="GNUNET_GTK_select_pseudonym_dialog_realize_cb" swapped="no"/>
+    <signal name="delete-event" 
handler="GNUNET_GTK_select_pseudonym_dialog_delete_event_cb" swapped="no"/>
+    <signal name="response" 
handler="GNUNET_GTK_select_pseudonym_dialog_response_cb" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox3">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
         <property name="spacing">2</property>
-        <child>
-          <object class="GtkHBox" id="GNUNET_GTK_open_url_dialog_query_hbox">
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area3">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
             <child>
-              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_url_label">
+              <object class="GtkButton" 
id="GNUNET_GTK_select_pseudonym_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">_URI:</property>
-                <property name="use_underline">True</property>
-                <property 
name="mnemonic_widget">GNUNET_GTK_open_url_dialog_url_textview</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="padding">4</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkFrame" id="frame1">
+              <object class="GtkButton" 
id="GNUNET_GTK_select_pseudonym_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">in</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment1">
-                    <property name="visible">True</property>
-                    <child>
-                      <object class="GtkTextView" 
id="GNUNET_GTK_open_url_dialog_url_textview">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="events">GDK_KEY_PRESS_MASK | 
GDK_STRUCTURE_MASK</property>
-                        <property name="wrap_mode">char</property>
-                        <property name="indent">20</property>
-                        <property 
name="buffer">GNUNET_GTK_open_url_dialog_url_textview_buffer</property>
-                        <property name="accepts_tab">False</property>
-                        <signal name="key_press_event" 
handler="GNUNET_GTK_open_url_dialog_url_textview_key_press_event_cb"/>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label_item">
-                  <placeholder/>
-                </child>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
               </object>
               <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="padding">5</property>
+            <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="GtkHBox" id="hbox8">
+          <object class="GtkScrolledWindow" 
id="GNUNET_GTK_select_pseudonym_scrolledwindow">
             <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hadjustment">adjustment3</property>
+            <property name="vadjustment">adjustment4</property>
+            <property name="hscrollbar_policy">automatic</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <property name="shadow_type">in</property>
             <child>
-              <object class="GtkLabel" 
id="GNUNET_GTK_open_url_dialog_anonymity_label">
+              <object class="GtkTreeView" 
id="GNUNET_GTK_select_pseudonym_tree_view">
                 <property name="visible">True</property>
-                <property name="label" 
translatable="yes">_Anonymity:</property>
-                <property name="use_underline">True</property>
-                <property 
name="mnemonic_widget">GNUNET_GTK_open_url_dialog_anonymity_combobox</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">4</property>
-                <property name="pack_type">end</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkAlignment" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_alignment">
-                <property name="visible">True</property>
-                <property name="yscale">0</property>
+                <property name="can_focus">True</property>
+                <property 
name="model">GNUNET_GTK_select_pseudonym_liststore</property>
+                <property name="hadjustment">adjustment3</property>
+                <property name="vadjustment">adjustment4</property>
+                <property name="search_column">0</property>
                 <child>
-                  <object class="GtkComboBox" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox">
-                    <property name="visible">True</property>
-                    <property 
name="model">main_window_search_anonymity_liststore</property>
-                    <property name="active">1</property>
+                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_select_pseudonym_tree_view_column">
+                    <property name="title">Name</property>
+                    <property name="expand">True</property>
+                    <property name="clickable">True</property>
+                    <property name="reorderable">True</property>
+                    <property name="sort_indicator">True</property>
+                    <property name="sort_column_id">0</property>
                     <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_renderer"/>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_select_pseudonym_name_renderer"/>
                       <attributes>
-                        <attribute name="foreground">2</attribute>
                         <attribute name="text">0</attribute>
                       </attributes>
                     </child>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_open_url_dialog_anonymity_combobox_renerer_level"/>
-                      <attributes>
-                        <attribute name="text">1</attribute>
-                      </attributes>
-                    </child>
                   </object>
                 </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="pack_type">end</property>
-                <property name="position">0</property>
-              </packing>
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
           </packing>
         </child>
         <child>
-          <object class="GtkHBox" id="hbox1">
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget 
response="-6">GNUNET_GTK_select_pseudonym_cancel_button</action-widget>
+      <action-widget 
response="-5">GNUNET_GTK_select_pseudonym_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkAdjustment" id="adjustment3">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkImage" id="add_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-add</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment5">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment6">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment7">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment8">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkImage" id="del_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-delete</property>
+  </object>
+  <object class="GtkImage" id="down_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-down</property>
+  </object>
+  <object class="GtkImage" id="execute_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-execute</property>
+  </object>
+  <object class="GtkImage" id="find_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-find</property>
+  </object>
+  <object class="GtkImage" id="index_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-index</property>
+  </object>
+  <object class="GtkImage" id="left_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-back</property>
+  </object>
+  <object class="GtkListStore" id="main_window_search_anonymity_liststore">
+    <columns>
+      <!-- column-name Name -->
+      <column type="gchararray"/>
+      <!-- column-name Level -->
+      <column type="guint"/>
+      <!-- column-name Color -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">None</col>
+        <col id="1">0</col>
+        <col id="2" translatable="yes">#AAAA00000000</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Normal</col>
+        <col id="1">1</col>
+        <col id="2" translatable="yes">#000000000000</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Paranoid</col>
+        <col id="1">10</col>
+        <col id="2" translatable="yes">#0000AAAA0000</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="main_window_search_mime_liststore">
+    <columns>
+      <!-- column-name MIME -->
+      <column type="gchararray"/>
+      <!-- column-name Type -->
+      <column type="gchararray"/>
+      <!-- column-name Extension -->
+      <column type="gchararray"/>
+      <!-- column-name Lossyness -->
+      <column type="gchararray"/>
+      <!-- column-name Freedom -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0"> </col>
+        <col id="1" translatable="yes">Any</col>
+        <col id="2" translatable="yes"> </col>
+        <col id="3" translatable="yes"> </col>
+        <col id="4" translatable="yes"> </col>
+      </row>
+      <row>
+        <col id="0">plain/text</col>
+        <col id="1" translatable="yes">Text</col>
+        <col id="2">txt</col>
+        <col id="3" translatable="yes">N/A</col>
+        <col id="4" translatable="yes">N/A</col>
+      </row>
+      <row>
+        <col id="0">application/zip</col>
+        <col id="1" translatable="yes">Zip</col>
+        <col id="2">zip</col>
+        <col id="3" translatable="yes">lossless</col>
+        <col id="4" translatable="yes">free</col>
+      </row>
+      <row>
+        <col id="0">audio/mpeg</col>
+        <col id="1" translatable="yes">MPEG audio</col>
+        <col id="2">mp3, mp2, mpeg</col>
+        <col id="3" translatable="yes">lossy</col>
+        <col id="4" translatable="yes">non-free</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkWindow" id="GNUNET_GTK_main_window">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">gnunet-fs-gtk</property>
+    <property name="window_position">center</property>
+    <property name="default_width">700</property>
+    <property name="default_height">500</property>
+    <property name="icon_name">gnunet-gtk</property>
+    <signal name="realize" handler="GNUNET_GTK_main_window_realize_cb" 
swapped="no"/>
+    <signal name="delete-event" handler="GNUNET_GTK_quit_cb" after="yes" 
swapped="no"/>
+    <child>
+      <object class="GtkVBox" id="GNUNET_GTK_main_window_vbox">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkStatusbar" id="GNUNET_GTK_status_bar">
             <property name="visible">True</property>
-            <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" 
handler="GNUNET_GTK_open_url_dialog_cancel_button_clicked_cb"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">4</property>
-                <property name="pack_type">end</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_open_url_dialog_execute_button">
-                <property name="label">_Execute</property>
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="image">execute_stock_image</property>
-                <property name="use_underline">True</property>
-                <signal name="clicked" 
handler="GNUNET_GTK_open_url_dialog_execute_button_clicked_cb"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="padding">4</property>
-                <property name="pack_type">end</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
+            <property name="can_focus">False</property>
+            <property name="spacing">2</property>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="padding">4</property>
+            <property name="fill">True</property>
             <property name="pack_type">end</property>
-            <property name="position">1</property>
+            <property name="position">0</property>
           </packing>
         </child>
-      </object>
-    </child>
-  </object>
-  <object class="GtkFileChooserDialog" 
id="GNUNET_GTK_publish_directory_dialog">
-    <property name="can_default">True</property>
-    <property name="events">GDK_FOCUS_CHANGE_MASK | 
GDK_STRUCTURE_MASK</property>
-    <property name="border_width">5</property>
-    <property name="modal">True</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <property name="transient_for">GNUNET_GTK_main_window</property>
-    <property name="create_folders">False</property>
-    <property name="action">select-folder</property>
-    <property name="select_multiple">True</property>
-    <signal name="response" 
handler="GNUNET_GTK_publish_directory_dialog_response_cb"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox1">
-        <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
         <child>
-          <object class="GtkVBox" id="vbox3">
+          <object class="GtkMenuBar" id="GNUNET_GTK_main_menu">
             <property name="visible">True</property>
-            <property name="orientation">vertical</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkHBox" id="hbox6">
+              <object class="GtkMenuItem" 
id="GNUNET_GTK_main_menu_file_sharing">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <child>
-                  <object class="GtkCheckButton" 
id="GNUNET_GTK_publish_directory_dialog_do_index_checkbutton">
-                    <property name="label" translatable="yes">Index 
files</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="active">True</property>
-                    <property name="draw_indicator">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_File 
sharing</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" 
id="GNUNET_GTK_main_menu_file_sharing_box">
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_create_pseudonym">
+                        <property name="label" translatable="yes">_Create 
pseudonym</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Create a pseudonym for publishing content.  Note that you 
can also publish content anonymously (without using a pseudonym).</property>
+                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Create pseudonym</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">new_stock_imag</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="n" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_create_pseudonym_activate_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_advertise_pseudonym">
+                        <property name="label" translatable="yes">_Advertise 
Pseudonym</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">index_stock_image</property>
+                        <property name="use_stock">False</property>
+                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_advertise_pseudonym_activate_cb" 
swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_publish">
+                        <property name="label" 
translatable="yes">_Publish</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Publish files or directories on GNUnet</property>
+                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Publish</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">up_stock_image</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="a" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_publish_activate_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" 
id="GNUNET_GTK_main_menu_file_sep1">
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_download_uri">
+                        <property name="label" 
translatable="yes">_Download</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Download a file or directory with a known URI.</property>
+                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Download</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">down_stock_image</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="d" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_download_uri_activate_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_open_gnunet_directory">
+                        <property name="label" translatable="yes">_Open GNUnet 
directory</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Use 
this option to browse a GNUnet directory file that has been previously 
downloaded.</property>
+                        <property name="accel_path">&lt;gnunet-fs-gtk&gt;/File 
sharing/Open directory</property>
+                        <property name="use_underline">True</property>
+                        <property name="image">open_stock_image</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="F3" signal="activate"/>
+                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_file_open_gnunet_directory_activate_cb" 
swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" 
id="GNUNET_GTK_main_menu_file_sep2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_file_quit">
+                        <property name="label">gtk-quit</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Exit 
gnunet-fs-gtk.  Active file-sharing operations will resume upon 
restart.</property>
+                        <property 
name="accel_path">&lt;gnunet-fs-gtk&gt;/Quit</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="q" signal="activate" 
modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="GNUNET_GTK_quit_cb" 
swapped="no"/>
+                      </object>
+                    </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_directory_dialog_priority_label">
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="GNUNET_GTK_main_menu_edit">
+                <property name="use_action_appearance">False</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Edit</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="GNUNET_GTK_main_menu_edit_box">
                     <property name="visible">True</property>
-                    <property name="label" 
translatable="yes">Priority:</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_edit_preferences">
+                        <property name="label">gtk-preferences</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Edit 
the system configuration.</property>
+                        <property 
name="accel_path">&lt;gnunet-fs-gtk&gt;/Edit/Preferences</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </object>
+                    </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">13</property>
-                    <property name="position">2</property>
-                  </packing>
                 </child>
-                <child>
-                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_directory_dialog_priority_spin_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
-                    <property name="invisible_char_set">True</property>
-                    <property name="primary_icon_sensitive">True</property>
-                    <property name="secondary_icon_sensitive">True</property>
-                    <property name="adjustment">priority_adjustment</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">3</property>
-                  </packing>
-                </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
             </child>
             <child>
-              <object class="GtkHBox" id="hbox7">
+              <object class="GtkMenuItem" id="GNUNET_GTK_main_menu_view">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_directory_dialog_expiration_label">
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_View</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="GNUNET_GTK_main_menu_view_box">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">Expiration 
year:</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_directory_dialog_expiration_year_spin_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
-                    <property name="invisible_char_set">True</property>
-                    <property name="primary_icon_sensitive">True</property>
-                    <property name="secondary_icon_sensitive">True</property>
-                    <property 
name="adjustment">expiration_year_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="GNUNET_GTK_publish_directory_dialog_anonymity_label">
-                    <property name="visible">True</property>
-                    <property name="label" 
translatable="yes">Anonymity:</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">5</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkAlignment" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox_alignment">
-                    <property name="visible">True</property>
-                    <property name="yscale">0</property>
+                    <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkComboBox" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox">
+                      <object class="GtkCheckMenuItem" 
id="GNUNET_GTK_main_menu_view_metadata">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
-                        <property 
name="model">main_window_search_anonymity_liststore</property>
-                        <property name="active">1</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox_renderer"/>
-                          <attributes>
-                            <attribute name="foreground">2</attribute>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_directory_dialog_anonymity_combobox_renerer_level"/>
-                          <attributes>
-                            <attribute name="text">1</attribute>
-                          </attributes>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Show 
meta data in main window</property>
+                        <property name="label" 
translatable="yes">Metadata</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <signal name="toggled" 
handler="GNUNET_GTK_main_menu_view_metadata_toggled_cb" swapped="no"/>
                       </object>
                     </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" 
id="GNUNET_GTK_main_menu_view_preview">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Show 
preview (when available)</property>
+                        <property name="label" 
translatable="yes">Preview</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <signal name="toggled" 
handler="GNUNET_GTK_main_menu_view_preview_toggled_cb" swapped="no"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" 
id="GNUNET_GTK_main_menu_search_preview">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Show 
search box in main window</property>
+                        <property name="label" 
translatable="yes">Search</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <signal name="toggled" 
handler="GNUNET_GTK_main_menu_view_search_toggled_cb" swapped="no"/>
+                      </object>
+                    </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">3</property>
-                  </packing>
                 </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
             </child>
             <child>
-              <object class="GtkHBox" id="hbox10">
+              <object class="GtkMenuItem" id="GNUNET_GTK_main_menu_help">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_directory_dialog_replication_label">
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="GNUNET_GTK_main_menu_help_abou">
                     <property name="visible">True</property>
-                    <property name="label" 
translatable="yes">_Replication:</property>
-                    <property name="use_underline">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImageMenuItem" 
id="GNUNET_GTK_main_menu_help_about">
+                        <property name="label">gtk-about</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" 
translatable="yes">Display information about this version of 
gnunet-fs-gtk</property>
+                        <property 
name="accel_path">&lt;gnunet-fs-gtk&gt;/Help/About</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" 
handler="GNUNET_GTK_main_menu_help_about_activate_cb" swapped="no"/>
+                      </object>
+                    </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
-                <child>
-                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_directory_dialog_replication_spin_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">1</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">2</property>
-              </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area6">
+        <child>
+          <object class="GtkHBox" id="main_window_search_hbox">
             <property name="visible">True</property>
-            <property name="layout_style">end</property>
+            <property name="can_focus">False</property>
+            <property name="border_width">3</property>
+            <property name="spacing">4</property>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_publish_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkLabel" id="main_window_search_namespace_label">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Namespace:</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -2299,13 +1796,11 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_publish_directory_dialog_ok_button">
-                <property name="label">gtk-ok</property>
+              <object class="GtkLabel" 
id="main_window_search_selected_namespace_label">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can_focus">False</property>
+                <property name="label">&lt;none&gt;</property>
+                <property name="single_line_mode">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -2313,459 +1808,352 @@
                 <property name="position">1</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget 
response="-6">GNUNET_GTK_publish_dialog_cancel_button</action-widget>
-      <action-widget 
response="-5">GNUNET_GTK_publish_directory_dialog_ok_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkFileChooserDialog" id="GNUNET_GTK_publish_file_dialog">
-    <property name="can_default">True</property>
-    <property name="border_width">5</property>
-    <property name="title" translatable="yes">Publish file...</property>
-    <property name="modal">True</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">normal</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="skip_pager_hint">True</property>
-    <property name="transient_for">GNUNET_GTK_main_window</property>
-    <property name="create_folders">False</property>
-    <property name="select_multiple">True</property>
-    <signal name="response" 
handler="GNUNET_GTK_publish_file_dialog_response_cb"/>
-    <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox5">
-        <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
-        <child>
-          <object class="GtkVBox" id="vbox1">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
             <child>
-              <object class="GtkHBox" id="hbox2">
+              <object class="GtkAlignment" 
id="main_window_search_namespace_combobox_alignment">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xscale">0</property>
+                <property name="yscale">0</property>
                 <child>
-                  <object class="GtkCheckButton" 
id="GNUNET_GTK_publish_file_dialog_do_index_checkbutton">
-                    <property name="label" translatable="yes">Index 
file</property>
+                  <object class="GtkToggleButton" 
id="main_window_search_namespace_dropdown_button">
+                    <property name="use_action_appearance">False</property>
+                    <property name="width_request">21</property>
+                    <property name="height_request">21</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="active">True</property>
-                    <property name="draw_indicator">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="events">GDK_ENTER_NOTIFY_MASK | 
GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
+                    <property name="image_position">right</property>
+                    <signal name="toggled" 
handler="main_window_search_namespace_dropdown_button_toggled_cb" swapped="no"/>
+                    <signal name="leave-notify-event" 
handler="namespace_selector_window_leave_notify_event_cb" swapped="no"/>
+                    <signal name="enter-notify-event" 
handler="main_window_search_namespace_dropdown_button_enter_notify_event_cb" 
swapped="no"/>
+                    <child>
+                      <object class="GtkArrow" id="arrow1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="arrow_type">down</property>
+                      </object>
+                    </child>
                   </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">0</property>
-                  </packing>
                 </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_priority_label">
-                    <property name="visible">True</property>
-                    <property name="label" 
translatable="yes">Priority:</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">13</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_file_dialog_priority_spin_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
-                    <property name="invisible_char_set">True</property>
-                    <property name="primary_icon_sensitive">True</property>
-                    <property name="secondary_icon_sensitive">True</property>
-                    <property name="adjustment">priority_adjustment</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">3</property>
-                  </packing>
-                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="position">2</property>
               </packing>
             </child>
             <child>
-              <object class="GtkHBox" id="hbox5">
+              <placeholder/>
+            </child>
+            <child>
+              <object class="GtkAlignment" 
id="main_window_search_button_alignment">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="yscale">0</property>
                 <child>
-                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_expiration_label">
+                  <object class="GtkButton" id="main_window_search_button">
+                    <property name="label" translatable="yes">Find:</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">Expiration 
year:</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_file_dialog_expiration_year_spin_button">
-                    <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x2022;</property>
-                    <property name="invisible_char_set">True</property>
-                    <property name="primary_icon_sensitive">True</property>
-                    <property name="secondary_icon_sensitive">True</property>
-                    <property 
name="adjustment">expiration_year_adjustment</property>
-                    <property name="numeric">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="image">find_stock_image</property>
+                    <signal name="clicked" 
handler="main_window_search_button_clicked_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="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_anonymity_label">
-                    <property name="visible">True</property>
-                    <property name="label" 
translatable="yes">Anonymity:</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">5</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkAlignment" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox_alignment">
-                    <property name="visible">True</property>
-                    <property name="yscale">0</property>
-                    <child>
-                      <object class="GtkComboBox" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox">
-                        <property name="visible">True</property>
-                        <property 
name="model">main_window_search_anonymity_liststore</property>
-                        <property name="active">1</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox_renderer"/>
-                          <attributes>
-                            <attribute name="foreground">2</attribute>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_publish_file_dialog_anonymity_combobox_renerer_level"/>
-                          <attributes>
-                            <attribute name="text">1</attribute>
-                          </attributes>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">3</property>
-                  </packing>
-                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="position">1</property>
+                <property name="fill">False</property>
+                <property name="position">4</property>
               </packing>
             </child>
             <child>
-              <object class="GtkHBox" id="hbox11">
+              <object class="GtkEntry" id="main_window_search_entry">
                 <property name="visible">True</property>
-                <child>
-                  <object class="GtkLabel" 
id="GNUNET_GTK_publish_file_dialog_replication_label">
-                    <property name="visible">True</property>
-                    <property name="label" 
translatable="yes">_Replication:</property>
-                    <property name="use_underline">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">20</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkSpinButton" 
id="GNUNET_GTK_publish_file_dialog_replication_spin_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property 
name="adjustment">replication_adjustment</property>
-                    <property name="numeric">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="padding">1</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="invisible_char">●</property>
+                <property name="invisible_char_set">True</property>
+                <property name="primary_icon_activatable">False</property>
+                <property name="secondary_icon_activatable">False</property>
+                <property name="primary_icon_sensitive">True</property>
+                <property name="secondary_icon_sensitive">True</property>
+                <signal name="key-press-event" 
handler="main_window_search_entry_key_press_event_cb" swapped="no"/>
               </object>
               <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">5</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="main_window_search_anonymity_label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Anonymity:</property>
+              </object>
+              <packing>
                 <property name="expand">False</property>
-                <property name="position">2</property>
+                <property name="fill">False</property>
+                <property name="position">6</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area5">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_publish_file_dialog_cancel_button">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkAlignment" 
id="main_window_search_anonymity_combobox_alignment">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can_focus">False</property>
+                <property name="yscale">0</property>
+                <child>
+                  <object class="GtkComboBox" 
id="main_window_search_anonymity_combobox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property 
name="model">main_window_search_anonymity_liststore</property>
+                    <property name="active">1</property>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="main_window_search_anonymity_combobox_renderer"/>
+                      <attributes>
+                        <attribute name="foreground">2</attribute>
+                        <attribute name="text">0</attribute>
+                      </attributes>
+                    </child>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="main_window_search_anonymity_combobox_renerer_level"/>
+                      <attributes>
+                        <attribute name="text">1</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="position">7</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_publish_file_dialog_ok_button">
-                <property name="label">gtk-ok</property>
+              <object class="GtkLabel" id="main_window_search_mime_label">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Type:</property>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="position">8</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget 
response="-6">GNUNET_GTK_publish_file_dialog_cancel_button</action-widget>
-      <action-widget 
response="-5">GNUNET_GTK_publish_file_dialog_ok_button</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkDialog" id="GNUNET_GTK_select_pseudonym_dialog">
-    <property name="border_width">5</property>
-    <property name="title" translatable="yes">Select pseudonym...</property>
-    <property name="modal">True</property>
-    <property name="default_width">400</property>
-    <property name="default_height">300</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">normal</property>
-    <signal name="realize" 
handler="GNUNET_GTK_select_pseudonym_dialog_realize_cb"/>
-    <signal name="response" 
handler="GNUNET_GTK_select_pseudonym_dialog_response_cb"/>
-    <signal name="delete_event" 
handler="GNUNET_GTK_select_pseudonym_dialog_delete_event_cb"/>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox3">
-        <property name="visible">True</property>
-        <property name="spacing">2</property>
-        <child>
-          <object class="GtkScrolledWindow" 
id="GNUNET_GTK_select_pseudonym_scrolledwindow">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hadjustment">adjustment3</property>
-            <property name="vadjustment">adjustment4</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <property name="shadow_type">in</property>
             <child>
-              <object class="GtkTreeView" 
id="GNUNET_GTK_select_pseudonym_tree_view">
+              <object class="GtkAlignment" 
id="main_window_search_mime_combobox_alignment">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property 
name="model">GNUNET_GTK_select_pseudonym_liststore</property>
-                <property name="hadjustment">adjustment3</property>
-                <property name="vadjustment">adjustment4</property>
-                <property name="search_column">0</property>
+                <property name="can_focus">False</property>
+                <property name="yscale">0</property>
                 <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_select_pseudonym_tree_view_column">
-                    <property name="title">Name</property>
-                    <property name="expand">True</property>
-                    <property name="clickable">True</property>
-                    <property name="reorderable">True</property>
-                    <property name="sort_indicator">True</property>
-                    <property name="sort_column_id">0</property>
+                  <object class="GtkComboBox" 
id="main_window_search_mime_combobox">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property 
name="model">main_window_search_mime_liststore</property>
+                    <property name="active">0</property>
                     <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_select_pseudonym_name_renderer"/>
+                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_description"/>
                       <attributes>
+                        <attribute name="text">1</attribute>
+                      </attributes>
+                    </child>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_type">
+                        <property name="visible">False</property>
+                      </object>
+                      <attributes>
                         <attribute name="text">0</attribute>
                       </attributes>
                     </child>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_extension"/>
+                      <attributes>
+                        <attribute name="text">2</attribute>
+                      </attributes>
+                    </child>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_lossyness">
+                        <property name="visible">False</property>
+                      </object>
+                      <attributes>
+                        <attribute name="text">3</attribute>
+                      </attributes>
+                    </child>
+                    <child>
+                      <object class="GtkCellRendererText" 
id="main_window_search_mime_renderer_freedom">
+                        <property name="visible">False</property>
+                      </object>
+                      <attributes>
+                        <attribute name="text">4</attribute>
+                      </attributes>
+                    </child>
                   </object>
                 </child>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">9</property>
+              </packing>
             </child>
           </object>
           <packing>
-            <property name="position">1</property>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
           </packing>
         </child>
         <child>
-          <placeholder/>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area3">
+          <object class="GtkHPaned" id="main_window_hpaned">
             <property name="visible">True</property>
-            <property name="layout_style">end</property>
+            <property name="can_focus">True</property>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_select_pseudonym_cancel_button">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkNotebook" id="GNUNET_GTK_main_window_notebook">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="scrollable">True</property>
+                <property name="tab_border">0</property>
+                <property name="tab_hborder">0</property>
+                <property name="tab_vborder">0</property>
+                <signal name="switch-page" 
handler="GNUNET_GTK_main_window_notebook_switch_page_cb" after="yes" 
swapped="no"/>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
+                <property name="resize">True</property>
+                <property name="shrink">False</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_select_pseudonym_ok_button">
-                <property name="label">gtk-ok</property>
+              <object class="GtkVBox" id="GNUNET_GTK_main_window_extras_vbox">
                 <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkImage" 
id="GNUNET_GTK_main_window_preview_image">
+                    <property name="width_request">128</property>
+                    <property name="height_request">128</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_text" translatable="yes">Thumbnail 
associated with the currently selected content</property>
+                    <property name="pixel_size">256</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" 
id="GNUNET_GTK_main_window_metadata_scroll">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hadjustment">adjustment1</property>
+                    <property name="vadjustment">adjustment2</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" 
id="GNUNET_GTK_main_window_metadata_treeview">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property 
name="model">GNUNET_GTK_meta_data_list_store</property>
+                        <property name="hadjustment">adjustment1</property>
+                        <property name="vadjustment">adjustment2</property>
+                        <property name="search_column">0</property>
+                        <property name="rubber_banding">True</property>
+                        <property name="enable_grid_lines">both</property>
+                        <signal name="button-press-event" 
handler="GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb" 
swapped="no"/>
+                        <signal name="popup-menu" 
handler="GNUNET_GTK_main_window_metadata_treeview_popup_menu_cb" swapped="no"/>
+                        <child>
+                          <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_main_window_metadata_type_column">
+                            <property name="sizing">autosize</property>
+                            <property name="title">Type</property>
+                            <property name="clickable">True</property>
+                            <property name="reorderable">True</property>
+                            <property name="sort_indicator">True</property>
+                            <child>
+                              <object class="GtkCellRendererText" 
id="GNUNET_GTK_main_window_metadata_type_renderer"/>
+                              <attributes>
+                                <attribute name="text">2</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_main_window_metadata_value_column">
+                            <property name="sizing">autosize</property>
+                            <property name="title">Value</property>
+                            <property name="expand">True</property>
+                            <property name="clickable">True</property>
+                            <property name="reorderable">True</property>
+                            <property name="sort_indicator">True</property>
+                            <child>
+                              <object class="GtkCellRendererText" 
id="GNUNET_GTK_main_window_metadata_value_renderer">
+                                <property name="wrap_mode">word</property>
+                              </object>
+                              <attributes>
+                                <attribute name="text">3</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="resize">True</property>
+                <property name="shrink">False</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
           </packing>
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget 
response="-6">GNUNET_GTK_select_pseudonym_cancel_button</action-widget>
-      <action-widget 
response="-5">GNUNET_GTK_select_pseudonym_ok_button</action-widget>
-    </action-widgets>
   </object>
-  <object class="GtkImage" id="add_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-add</property>
+  <object class="GtkTreeStore" id="main_window_search_namespace_treestore">
+    <columns>
+      <!-- column-name Name -->
+      <column type="gchararray"/>
+      <!-- column-name Key -->
+      <column type="gpointer"/>
+      <!-- column-name Root -->
+      <column type="gchararray"/>
+      <!-- column-name Tooltip -->
+      <column type="gchararray"/>
+    </columns>
   </object>
-  <object class="GtkAdjustment" id="adjustment1">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment2">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment3">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment4">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment5">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment6">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment7">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment8">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkImage" id="down_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-down</property>
-  </object>
-  <object class="GtkImage" id="execute_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-execute</property>
-  </object>
-  <object class="GtkImage" id="find_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-find</property>
-  </object>
-  <object class="GtkImage" id="index_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-index</property>
-  </object>
-  <object class="GtkImage" id="left_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-back</property>
-  </object>
   <object class="GtkMenu" id="metadata_popup_menu">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <child>
       <object class="GtkMenuItem" id="Copy selection">
+        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
         <property name="label" translatable="yes">Copy selection</property>
         <property name="use_underline">True</property>
-        <signal name="activate" handler="metadata_copy_selection_activated"/>
+        <signal name="activate" handler="metadata_copy_selection_activated" 
swapped="no"/>
       </object>
     </child>
   </object>
   <object class="GtkWindow" id="namespace_selector_window">
+    <property name="can_focus">False</property>
     <property name="events">GDK_LEAVE_NOTIFY_MASK | 
GDK_STRUCTURE_MASK</property>
     <property name="resizable">False</property>
     <property name="destroy_with_parent">True</property>
@@ -2777,8 +2165,8 @@
     <property name="deletable">False</property>
     <property name="transient_for">GNUNET_GTK_main_window</property>
     <property name="mnemonics_visible">False</property>
-    <signal name="leave_notify_event" 
handler="namespace_selector_window_leave_notify_event_cb"/>
-    <signal name="enter_notify_event" 
handler="main_window_search_namespace_dropdown_button_enter_notify_event_cb"/>
+    <signal name="leave-notify-event" 
handler="namespace_selector_window_leave_notify_event_cb" swapped="no"/>
+    <signal name="enter-notify-event" 
handler="main_window_search_namespace_dropdown_button_enter_notify_event_cb" 
swapped="no"/>
     <child>
       <object class="GtkTreeView" id="namespace_selector_treeview">
         <property name="visible">True</property>
@@ -2790,8 +2178,8 @@
         <property name="hover_selection">True</property>
         <property name="hover_expand">True</property>
         <property name="tooltip_column">3</property>
-        <signal name="button_press_event" 
handler="namespace_selector_treeview_button_press_event_cb"/>
-        <signal name="button_release_event" 
handler="namespace_selector_treeview_button_release_event_cb"/>
+        <signal name="button-press-event" 
handler="namespace_selector_treeview_button_press_event_cb" swapped="no"/>
+        <signal name="button-release-event" 
handler="namespace_selector_treeview_button_release_event_cb" swapped="no"/>
         <child>
           <object class="GtkTreeViewColumn" id="name_column">
             <property name="sizing">autosize</property>
@@ -2821,52 +2209,19 @@
   </object>
   <object class="GtkImage" id="new_stock_imag">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-new</property>
   </object>
   <object class="GtkImage" id="new_stock_image">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-new</property>
   </object>
   <object class="GtkImage" id="open_stock_image">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="stock">gtk-open</property>
   </object>
-  <object class="GtkAdjustment" id="priority_adjustment">
-    <property name="value">1000</property>
-    <property name="upper">10000000</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkImage" id="right_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-forward</property>
-  </object>
-  <object class="GtkImage" id="up_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-up</property>
-  </object>
-  <object class="GtkImage" id="del_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-delete</property>
-  </object>
-  <object class="GtkSizeGroup" 
id="edit_publication_options_input_widgets_sizegroup">
-    <widgets>
-      <widget name="GNUNET_GTK_edit_publication_anonymity_combobox_alignment"/>
-      <widget name="GNUNET_GTK_edit_publication_priority_spin_button"/>
-      <widget name="GNUNET_GTK_edit_publication_root_entry"/>
-      <widget name="GNUNET_GTK_edit_publication_expiration_year_spin_button"/>
-      <widget name="GNUNET_GTK_edit_publication_index_checkbutton"/>
-    </widgets>
-  </object>
-  <object class="GtkSizeGroup" id="edit_publication_options_labels_sizegroup">
-    <widgets>
-      <widget name="GNUNET_GTK_edit_publication_anonymity_label"/>
-      <widget name="GNUNET_GTK_edit_publication_priority_label"/>
-      <widget name="GNUNET_GTK_edit_publication_root_label"/>
-      <widget name="GNUNET_GTK_edit_publication_expiration_label"/>
-      <widget name="GNUNET_GTK_edit_publication_index_label"/>
-    </widgets>
-  </object>
   <object class="GtkSizeGroup" id="enties_and_comboboxes_sizegroup">
     <property name="mode">vertical</property>
     <widgets>
@@ -2880,6 +2235,27 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkAdjustment" id="priority_adjustment">
+    <property name="upper">10000000</property>
+    <property name="value">1000</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="replication_adjustment">
+    <property name="upper">999999</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkImage" id="right_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-forward</property>
+  </object>
+  <object class="GtkImage" id="up_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-up</property>
+  </object>
   <object class="GtkSizeGroup" id="sizegroup4">
     <widgets>
       <widget name="GNUNET_GTK_master_publish_dialog_cancel_button"/>
@@ -2892,9 +2268,4 @@
       <widget name="GNUNET_GTK_edit_publication_cancel_button"/>
     </widgets>
   </object>
-  <object class="GtkAdjustment" id="replication_adjustment">
-    <property name="upper">999999</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
 </interface>

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.c       2012-01-04 
01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.c       2012-01-04 
06:51:07 UTC (rev 18964)
@@ -27,26 +27,76 @@
 #include "gnunet-fs-gtk.h"
 #include <gnunet/gnunet_util_lib.h>
 
+#include "metatypes.c"
 
-#define PUBSTATE "edit-publication-state"
+struct EditPublicationDialogContext
+{
+  GtkBuilder *builder;
 
-#include "metatypes.c"
+  GtkListStore *metatypes_liststore;
 
+  GtkListStore *meta_liststore;
+  GtkTreeView *meta_treeview;
+  GtkTreeSelection *meta_selection;
+  GtkButton *meta_add_button;
+  GtkWidget *meta_del_button;
 
+  GtkCellRendererCombo *meta_combo;
+
+  GtkListStore *pubtypes_liststore;
+  GtkComboBox *pubtypes_combo;
+
+  GtkListStore *keywords_liststore;
+  GtkTreeView *keywords_treeview;
+  GtkTreeSelection *keywords_selection;
+  GtkWidget *keyword_add_button;
+  GtkWidget *keyword_del_button;
+
+  GtkEntry *keyword_entry;
+
+  GObject *pubwindow;
+
+  GtkWidget *ok;
+  GtkButton *cancel;
+
+  GtkImage *image;
+
+  GtkToggleButton *index_checkbutton;
+  GtkLabel *index_label;
+  GtkEntry *root_entry;
+  GtkLabel *root_label;
+
+  GtkSpinButton *priority_spin;
+  GtkSpinButton *year_spin;
+  GtkSpinButton *replication_spin;
+
+  GtkComboBox *anonymity_combo;
+  GtkListStore *anonymity_liststore;
+
+  int do_index;
+  char *short_fn;
+  struct GNUNET_FS_BlockOptions bo;
+  struct GNUNET_FS_FileInformation *fip;
+  gint preview_changed;
+  gboolean allow_no_keywords;
+  gboolean is_directory;
+  GNUNET_FS_GTK_EditPublishDialogCallback cb;
+  gchar *root;
+  gpointer cls;
+
+  struct GNUNET_CONTAINER_MetaData *md;
+
+  GtkTreeIter *meta_combo_selected_iter;
+};
+
 static void
-change_metatypes (GtkBuilder * builder, gint code)
+change_metatypes (struct EditPublicationDialogContext *ctx, gint code)
 {
-  GtkListStore *metatypes_list;
   gint pub_type = 0, i;
   gint pubtype_count = 0;
   gint max_type;
   GtkTreeIter iter;
 
-  metatypes_list =
-      GTK_LIST_STORE (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_publication_metadata_types_liststore"));
-
   for (pub_type = 0; types[pub_type] != NULL; pub_type++)
     pubtype_count += 1;
 
@@ -55,12 +105,12 @@
   else
     pub_type = 0;
 
-  gtk_list_store_clear (metatypes_list);
+  gtk_list_store_clear (ctx->metatypes_liststore);
   max_type = EXTRACTOR_metatype_get_max ();
   for (i = 0; types[pub_type][i] != EXTRACTOR_METATYPE_RESERVED; i++)
   {
     if (types[pub_type][i] < max_type && types[pub_type][i] > 0)
-      gtk_list_store_insert_with_values (metatypes_list, &iter, G_MAXINT, 0,
+      gtk_list_store_insert_with_values (ctx->metatypes_liststore, &iter, 
G_MAXINT, 0,
                                          types[pub_type][i], 1,
                                          EXTRACTOR_METAFORMAT_UTF8, 2,
                                          EXTRACTOR_metatype_to_string (types
@@ -74,133 +124,45 @@
 
 void
 GNUNET_GTK_edit_publication_type_combo_changed_cb (GtkComboBox * widget,
-                                                   gpointer user_data)
+                                                   struct 
EditPublicationDialogContext *ctx)
 {
   GtkTreeIter iter;
-  GtkBuilder *builder;
-  GtkListStore *pubtypes_list;
   gint code;
 
   if (!gtk_combo_box_get_active_iter (widget, &iter))
     return;
-  builder = GTK_BUILDER (user_data);
 
-  pubtypes_list =
-      GTK_LIST_STORE (gtk_builder_get_object
-                      (builder, "GNUNET_GTK_publication_types_liststore"));
+  gtk_tree_model_get (GTK_TREE_MODEL (ctx->pubtypes_liststore), &iter, 0, 
&code, -1);
 
-  gtk_tree_model_get (GTK_TREE_MODEL (pubtypes_list), &iter, 0, &code, -1);
-
-  change_metatypes (builder, code);
+  change_metatypes (ctx, code);
 }
 
-struct EditPublicationState
-{
-  int do_index;
-  char *short_fn;
-  struct GNUNET_FS_BlockOptions bo;
-  struct GNUNET_FS_FileInformation *fip;
-  gint preview_changed;
-  gboolean allow_no_keywords;
-  gboolean is_directory;
-  GNUNET_FS_GTK_EditPublishDialogCallback cb;
-  gchar *root;
-  gpointer cls;
-};
 
-
 static void
-metadata_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data)
+metadata_selection_changed_cb (GtkTreeSelection *ts, struct 
EditPublicationDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
-  GtkWidget *button;
-  GtkBuilder *builder;
-
-  builder = GTK_BUILDER (user_data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_edit_publication_metadata_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_edit_publication_delete_button"));
-  gtk_widget_set_sensitive (button,
-                            gtk_tree_selection_get_selected (sel, NULL, NULL));
+  gtk_widget_set_sensitive (ctx->meta_del_button,
+                            gtk_tree_selection_get_selected (ts, NULL, NULL));
 }
 
 
 static void
-keywords_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data)
+keywords_selection_changed_cb (GtkTreeSelection *ts, struct 
EditPublicationDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
-  GtkWidget *button;
-  GtkBuilder *builder;
-
-  builder = GTK_BUILDER (user_data);
-
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_edit_publication_keyword_list_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder,
-                   "GNUNET_GTK_edit_publication_keyword_list_del_button"));
-
-  gtk_widget_set_sensitive (button,
-                            gtk_tree_selection_get_selected (sel, NULL, NULL));
+  gtk_widget_set_sensitive (ctx->keyword_del_button,
+                            gtk_tree_selection_get_selected (ts, NULL, NULL));
 }
 
 
 void
-GNUNET_GTK_edit_publication_window_realize_cb (GtkWidget * widget,
-                                               gpointer user_data)
-{
-  GtkBuilder *builder;
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
-
-  builder = GTK_BUILDER (user_data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_edit_publication_metadata_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  g_signal_connect (G_OBJECT (sel), "changed",
-                    G_CALLBACK (metadata_selection_changed_cb), builder);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_edit_publication_keyword_list_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  g_signal_connect (G_OBJECT (sel), "changed",
-                    G_CALLBACK (keywords_selection_changed_cb), builder);
-}
-
-
-void
 GNUNET_GTK_edit_publication_add_button_clicked_cb (GtkButton * button,
-                                                   gpointer user_data)
+                                                   struct 
EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GtkTreeView *meta_tree;
-  GtkListStore *meta_list;
   GtkTreeIter iter;
 
-  builder = GTK_BUILDER (user_data);
-  meta_tree =
-      GTK_TREE_VIEW (gtk_builder_get_object
-                     (builder,
-                      "GNUNET_GTK_edit_publication_metadata_tree_view"));
-  meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree));
-
-  gtk_list_store_insert (meta_list, &iter, 0);
+  gtk_list_store_insert (ctx->meta_liststore, &iter, 0);
   /* type == 0 means "not set" */
-  gtk_list_store_set (meta_list, &iter, 0, 0, 1, EXTRACTOR_METAFORMAT_UTF8, 2,
+  gtk_list_store_set (ctx->meta_liststore, &iter, 0, 0, 1, 
EXTRACTOR_METAFORMAT_UTF8, 2,
                       _("Select a type"), 3, _("Specify a value"), 4, NULL, 
-1);
 }
 
@@ -210,20 +172,11 @@
                                                               widget,
                                                               GdkEventKey *
                                                               event,
-                                                              gpointer
-                                                              user_data)
+                                                              struct 
EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GtkButton *add_button;
-
-  builder = GTK_BUILDER (user_data);
-
   if (event->keyval == GDK_KEY_Return)
   {
-    add_button =
-        GTK_BUTTON (gtk_builder_get_object
-                    (builder, "GNUNET_GTK_edit_publication_add_button"));
-    GNUNET_GTK_edit_publication_add_button_clicked_cb (add_button, user_data);
+    GNUNET_GTK_edit_publication_add_button_clicked_cb (GTK_BUTTON 
(ctx->keyword_add_button), ctx);
     return TRUE;
   }
   return FALSE;
@@ -232,43 +185,26 @@
 
 void GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb
     (GtkCellRendererText * renderer, gchar * path, gchar * new_text,
-     gpointer user_data)
+     struct EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GtkTreeView *meta_tree;
-  GtkListStore *meta_list;
-  GtkCellRendererCombo *combo;
   GtkTreeModel *combo_model;
   GtkTreeIter iter;
   gint type_id;
   gchar *description = NULL;
-  GtkTreeIter *pass_data = NULL;
 
-  builder = GTK_BUILDER (user_data);
-  meta_tree =
-      GTK_TREE_VIEW (gtk_builder_get_object
-                     (builder,
-                      "GNUNET_GTK_edit_publication_metadata_tree_view"));
-  meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree));
   if (!gtk_tree_model_get_iter_from_string
-      (GTK_TREE_MODEL (meta_list), &iter, path))
+      (GTK_TREE_MODEL (ctx->meta_liststore), &iter, path))
     return;
 
-  combo =
-      GTK_CELL_RENDERER_COMBO (gtk_builder_get_object
-                               (builder,
-                                
"GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer"));
-
-  pass_data = g_object_get_data (G_OBJECT (combo), "selected-type");
-  if (!pass_data)
+  if (!ctx->meta_combo_selected_iter)
     return;
-  g_object_get (combo, "model", &combo_model, NULL);
-  gtk_tree_model_get (combo_model, pass_data, 0, &type_id, 2, &description, 
-1);
+  g_object_get (ctx->meta_combo, "model", &combo_model, NULL);
+  gtk_tree_model_get (combo_model, ctx->meta_combo_selected_iter, 0, &type_id, 
2, &description, -1);
   g_object_unref (combo_model);
-  g_free (pass_data);
-  g_object_set_data (G_OBJECT (combo), "selected-type", NULL);
+  g_free (ctx->meta_combo_selected_iter);
+  ctx->meta_combo_selected_iter = NULL;
 
-  gtk_list_store_set (meta_list, &iter, 0, type_id, 1,
+  gtk_list_store_set (ctx->meta_liststore, &iter, 0, type_id, 1,
                       EXTRACTOR_METAFORMAT_UTF8, 2, new_text, 4, description,
                       -1);
   g_free (description);
@@ -277,26 +213,19 @@
 
 void GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_changed_cb
     (GtkCellRendererCombo * combo, gchar * path_string, GtkTreeIter * new_iter,
-     gpointer user_data)
+     struct EditPublicationDialogContext *ctx)
 {
-  GtkTreeIter *pass_data;
-
-  pass_data = g_object_get_data (G_OBJECT (combo), "selected-type");
-  if (pass_data)
-    g_free (pass_data);
-  pass_data = g_new0 (GtkTreeIter, 1);
-  *pass_data = *new_iter;
-  g_object_set_data (G_OBJECT (combo), "selected-type", pass_data);
+  if (ctx->meta_combo_selected_iter)
+    g_free (ctx->meta_combo_selected_iter);
+  ctx->meta_combo_selected_iter = g_new0 (GtkTreeIter, 1);
+  *ctx->meta_combo_selected_iter = *new_iter;
 }
 
 
 void GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb
     (GtkCellRendererText * renderer, gchar * path, gchar * new_text,
-     gpointer user_data)
+     struct EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GtkTreeView *meta_tree;
-  GtkListStore *meta_list;
   GtkTreeIter iter;
   gint metatype;
   char *avalue;
@@ -304,31 +233,13 @@
   size_t slen;
   char *pos;
 
-  GObject *pubwindow;
-  struct EditPublicationState *state = NULL;
-
-  builder = GTK_BUILDER (user_data);
-  meta_tree =
-      GTK_TREE_VIEW (gtk_builder_get_object
-                     (builder,
-                      "GNUNET_GTK_edit_publication_metadata_tree_view"));
-  meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree));
   if (!gtk_tree_model_get_iter_from_string
-      (GTK_TREE_MODEL (meta_list), &iter, path))
+      (GTK_TREE_MODEL (ctx->meta_liststore), &iter, path))
     return;
 
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
-    return;
-  }
-
-  gtk_tree_model_get (GTK_TREE_MODEL (meta_list), &iter, 0, &metatype, -1);
+  gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, 0, 
&metatype, -1);
   if (metatype == EXTRACTOR_METATYPE_FILENAME &&
-      new_text[strlen (new_text) - 1] != '/' && state->is_directory)
+      new_text[strlen (new_text) - 1] != '/' && ctx->is_directory)
   {
     GNUNET_asprintf (&avalue, "%s/", new_text);
     /* if user typed '\' instead of '/', change it! */
@@ -356,65 +267,43 @@
     avalue = NULL;
   }
 
-  gtk_list_store_set (meta_list, &iter, 3, ivalue, -1);
+  gtk_list_store_set (ctx->meta_liststore, &iter, 3, ivalue, -1);
   GNUNET_free_non_null (avalue);
 }
 
 
 void
 GNUNET_GTK_edit_publication_delete_button_clicked_cb (GtkButton * button,
-                                                      gpointer user_data)
+                                                      struct 
EditPublicationDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
-  GtkTreeModel *tm;
   GtkTreeIter iter;
-  GtkBuilder *builder = GTK_BUILDER (user_data);
 
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_edit_publication_metadata_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+  if (TRUE != gtk_tree_selection_get_selected (ctx->meta_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  if (gtk_list_store_remove (GTK_LIST_STORE (tm), &iter))
-    gtk_tree_selection_select_iter (sel, &iter);
+  if (gtk_list_store_remove (ctx->meta_liststore, &iter))
+    gtk_tree_selection_select_iter (ctx->meta_selection, &iter);
 }
 
 
 void
 GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb (GtkButton *
                                                                 button,
-                                                                gpointer
-                                                                user_data)
+                                                                struct 
EditPublicationDialogContext *ctx)
 {
   const char *keyword;
-  GtkEntry *entry;
-  GtkListStore *ls;
   GtkTreeIter iter;
-  GtkBuilder *builder;
-  GtkWidget *ok;
 
-  builder = GTK_BUILDER (user_data);
-
-  ls = GTK_LIST_STORE (gtk_builder_get_object
-                       (builder, "GNUNET_GTK_publication_keywords_liststore"));
-  entry =
-      GTK_ENTRY (gtk_builder_get_object
-                 (builder, "GNUNET_GTK_edit_publication_keyword_entry"));
-  keyword = gtk_entry_get_text (entry);
+  keyword = gtk_entry_get_text (ctx->keyword_entry);
   if (strlen (keyword) > 0)
   {
-    gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, 1, 
TRUE,
+    gtk_list_store_insert_with_values (ctx->keywords_liststore, &iter, 
G_MAXINT, 0, keyword, 1, TRUE,
                                        -1);
-    ok = GTK_WIDGET (gtk_builder_get_object
-                     (builder, "GNUNET_GTK_edit_publication_confirm_button"));
-    gtk_widget_set_sensitive (ok, TRUE);
+    gtk_widget_set_sensitive (ctx->ok, TRUE);
   }
-  gtk_entry_set_text (entry, "");
+  gtk_entry_set_text (ctx->keyword_entry, "");
 }
 
 
@@ -441,112 +330,47 @@
 
 void
 GNUNET_GTK_edit_publication_keyword_entry_changed_cb (GtkEditable * editable,
-                                                      gpointer user_data)
+                                                      struct 
EditPublicationDialogContext *ctx)
 {
   const char *keyword;
-  GtkEntry *entry;
-  GtkWidget *button;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (user_data);
-
-  button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder,
-                   "GNUNET_GTK_edit_publication_keyword_list_add_button"));
-  entry =
-      GTK_ENTRY (gtk_builder_get_object
-                 (builder, "GNUNET_GTK_edit_publication_keyword_entry"));
-  keyword = gtk_entry_get_text (entry);
-  gtk_widget_set_sensitive (button, (strlen (keyword) > 0) ? TRUE : FALSE);
+  keyword = gtk_entry_get_text (ctx->keyword_entry);
+  gtk_widget_set_sensitive (ctx->keyword_add_button, (strlen (keyword) > 0) ? 
TRUE : FALSE);
 }
 
 
 void
 GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb (GtkButton *
                                                                 button,
-                                                                gpointer
-                                                                user_data)
+                                                                struct 
EditPublicationDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
-  GtkTreeModel *tm;
   GtkTreeIter iter;
-  GtkBuilder *builder;
-  GtkWidget *ok;
-  GObject *pubwindow;
-  struct EditPublicationState *state = NULL;
 
-  builder = GTK_BUILDER (user_data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_edit_publication_keyword_list_tree_view"));
-
-  sel = gtk_tree_view_get_selection (tv);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+  if (TRUE != gtk_tree_selection_get_selected (ctx->keywords_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  if (gtk_list_store_remove (GTK_LIST_STORE (tm), &iter))
-    gtk_tree_selection_select_iter (sel, &iter);
+  if (gtk_list_store_remove (GTK_LIST_STORE (ctx->keywords_liststore), &iter))
+    gtk_tree_selection_select_iter (ctx->keywords_selection, &iter);
 
-  ok = GTK_WIDGET (gtk_builder_get_object
-                   (builder, "GNUNET_GTK_edit_publication_confirm_button"));
-
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
-    return;
-  }
-
-  if (!state->allow_no_keywords && !gtk_tree_model_has_items (tm))
-    gtk_widget_set_sensitive (ok, FALSE);
+  if (!ctx->allow_no_keywords && !gtk_tree_model_has_items (GTK_TREE_MODEL 
(ctx->keywords_liststore)))
+    gtk_widget_set_sensitive (ctx->ok, FALSE);
 }
 
 
-void 
GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button_file_set_cb 
(GtkFileChooserButton * widget, gpointer user_data)
+void 
GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button_file_set_cb (
+    GtkFileChooserButton * widget, struct EditPublicationDialogContext *ctx)
 {
   gchar *fn;
-  GtkImage *image;
-  GObject *pubwindow;
-  GtkBuilder *builder = GTK_BUILDER (user_data);
-  struct EditPublicationState *state = NULL;
 
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
-    return;
-  }
-
   fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget));
-  image =
-      GTK_IMAGE (gtk_builder_get_object
-                 (builder,
-                  "GNUNET_GTK_edit_publication_metadata_preview_image"));
-  gtk_image_set_from_file (image, fn);
+  gtk_image_set_from_file (ctx->image, fn);
   g_free (fn);
-  state->preview_changed = GNUNET_YES;
+  ctx->preview_changed = GNUNET_YES;
 }
 
 
-struct FileInformationUpdateContext
-{
-  GtkBuilder *builder;
-  char *short_fn;
-  gchar *root;
-  struct GNUNET_CONTAINER_MetaData *md;
-  gboolean allow_no_keywords;
-};
-
-
 /**
  * Copy binary meta data from to the new container and also
  * preserve all entries that were not changed.
@@ -571,58 +395,41 @@
                      const char *data_mime_type, const char *data,
                      size_t data_len)
 {
-  struct FileInformationUpdateContext *context = cls;
-  GtkBuilder *builder = context->builder;
-  struct GNUNET_CONTAINER_MetaData *md = context->md;
-  GtkTreeModel *tm;
+  struct EditPublicationDialogContext *ctx = cls;
   GtkTreeIter iter;
   gchar *value;
   guint ntype;
   guint nformat;
   int keep;
 
-  GObject *pubwindow;
-  struct EditPublicationState *state = NULL;
-
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
-    return 0;
-  }
   /* FIXME: make sure this is all correct UTF-8-wise */
   keep = GNUNET_NO;
   switch (format)
   {
   case EXTRACTOR_METAFORMAT_UTF8:
   case EXTRACTOR_METAFORMAT_C_STRING:
-    tm = GTK_TREE_MODEL (gtk_builder_get_object
-                         (builder,
-                          "GNUNET_GTK_publication_metadata_liststore"));
-    if (TRUE == gtk_tree_model_get_iter_first (tm, &iter))
+    if (TRUE == gtk_tree_model_get_iter_first (GTK_TREE_MODEL 
(ctx->meta_liststore), &iter))
     {
       do
       {
-        gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1);
+        gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, 0, 
&ntype, 1, &nformat, 3, &value, -1);
         if ((ntype == type) && (nformat == format) &&
             (0 == strcmp (value, data)))
         {
-          gtk_list_store_remove (GTK_LIST_STORE (tm), &iter);
+          gtk_list_store_remove (ctx->meta_liststore, &iter);
           keep = GNUNET_YES;
           g_free (value);
           break;
         }
         g_free (value);
       }
-      while (TRUE == gtk_tree_model_iter_next (tm, &iter));
+      while (TRUE == gtk_tree_model_iter_next (GTK_TREE_MODEL 
(ctx->meta_liststore), &iter));
     }
     break;
   case EXTRACTOR_METAFORMAT_UNKNOWN:
     break;
   case EXTRACTOR_METAFORMAT_BINARY:
-    if (state->preview_changed == GNUNET_NO)
+    if (ctx->preview_changed == GNUNET_NO)
       keep = GNUNET_YES;
     break;
   default:
@@ -631,7 +438,7 @@
   }
   if (GNUNET_YES == keep)
     GNUNET_break (GNUNET_OK ==
-                  GNUNET_CONTAINER_meta_data_insert (md, plugin_name, type,
+                  GNUNET_CONTAINER_meta_data_insert (ctx->md, plugin_name, 
type,
                                                      format, data_mime_type,
                                                      data, data_len));
   return 0;
@@ -659,68 +466,32 @@
                          struct GNUNET_FS_BlockOptions *bo, int *do_index,
                          void **client_info)
 {
-  struct FileInformationUpdateContext *context = cls;
-  char **short_fn = &context->short_fn;
-  GtkBuilder *builder = context->builder;
-  struct GNUNET_CONTAINER_MetaData *nm;
-  GtkTreeModel *tm;
+  struct EditPublicationDialogContext *ctx = cls;
   GtkTreeIter iter;
   struct GNUNET_FS_Uri *nxt;
   struct GNUNET_FS_Uri *mrg;
   gchar *value;
   guint ntype;
   guint nformat;
-  GtkSpinButton *sb;
   gchar *fn;
   char *data;
   gsize data_size;
   const char *mime;
   GFile *f;
   GFileInfo *finfo;
-  GObject *pubwindow;
-  struct EditPublicationState *state = NULL;
 
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
+  if (!GNUNET_GTK_get_selected_anonymity_combo_level
+      (ctx->anonymity_combo, &ctx->bo.anonymity_level))
     return GNUNET_SYSERR;
-  }
+  ctx->bo.content_priority = gtk_spin_button_get_value (ctx->priority_spin);
+  ctx->bo.replication_level = gtk_spin_button_get_value 
(ctx->replication_spin);
+  *do_index = gtk_toggle_button_get_active (ctx->index_checkbutton);
+  ctx->bo.expiration_time = GNUNET_FS_GTK_get_expiration_time (ctx->year_spin);
 
-  if (!GNUNET_GTK_get_selected_anonymity_level
-      (builder, "GNUNET_GTK_edit_publication_anonymity_combobox",
-       &bo->anonymity_level))
-    return GNUNET_SYSERR;
-  bo->content_priority =
-      gtk_spin_button_get_value (GTK_SPIN_BUTTON
-                                 (gtk_builder_get_object
-                                  (builder,
-                                   
"GNUNET_GTK_edit_publication_priority_spin_button")));
-  bo->replication_level =
-      gtk_spin_button_get_value (GTK_SPIN_BUTTON
-                                 (gtk_builder_get_object
-                                  (builder,
-                                   
"GNUNET_GTK_edit_publication_replication_spin_button")));
-  *do_index =
-      gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                    (gtk_builder_get_object
-                                     (builder,
-                                      
"GNUNET_GTK_edit_publication_index_checkbutton")));
-  sb = GTK_SPIN_BUTTON (gtk_builder_get_object
-                        (builder,
-                         
"GNUNET_GTK_edit_publication_expiration_year_spin_button"));
-  bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb);
-
-  if (!context->allow_no_keywords)
+  if (!ctx->allow_no_keywords)
   {
-    g_free (context->root);
-    context->root =
-        g_strdup (gtk_entry_get_text
-                  (GTK_ENTRY
-                   (gtk_builder_get_object
-                    (builder, "GNUNET_GTK_edit_publication_root_entry"))));
+    g_free (ctx->root);
+    ctx->root = g_strdup (gtk_entry_get_text (ctx->root_entry));
   }
   /* update URI */
   if (NULL != (*uri))
@@ -729,13 +500,11 @@
   nxt = NULL;
   mrg = NULL;
 
-  tm = GTK_TREE_MODEL (gtk_builder_get_object
-                       (builder, "GNUNET_GTK_publication_keywords_liststore"));
-  if (TRUE == gtk_tree_model_get_iter_first (tm, &iter))
+  if (TRUE == gtk_tree_model_get_iter_first (GTK_TREE_MODEL 
(ctx->keywords_liststore), &iter))
   {
     do
     {
-      gtk_tree_model_get (tm, &iter, 0, &value, -1);
+      gtk_tree_model_get (GTK_TREE_MODEL (ctx->keywords_liststore), &iter, 0, 
&value, -1);
       nxt = GNUNET_FS_uri_ksk_create_from_args (1, (const char **) &value);
       mrg = GNUNET_FS_uri_ksk_merge (nxt, *uri);
       GNUNET_FS_uri_destroy (nxt);
@@ -744,36 +513,33 @@
       *uri = mrg;
       g_free (value);
     }
-    while (TRUE == gtk_tree_model_iter_next (tm, &iter));
+    while (TRUE == gtk_tree_model_iter_next (GTK_TREE_MODEL 
(ctx->keywords_liststore), &iter));
   }
 
   /* update meta */
-  nm = GNUNET_CONTAINER_meta_data_create ();
-  context->md = nm;
-  GNUNET_CONTAINER_meta_data_iterate (meta, &preserve_meta_items, context);
+  ctx->md = GNUNET_CONTAINER_meta_data_create ();
+  GNUNET_CONTAINER_meta_data_iterate (meta, &preserve_meta_items, ctx);
 
   GNUNET_CONTAINER_meta_data_clear (meta);
-  tm = GTK_TREE_MODEL (gtk_builder_get_object
-                       (builder, "GNUNET_GTK_publication_metadata_liststore"));
-  if (TRUE == gtk_tree_model_get_iter_first (tm, &iter))
+  if (TRUE == gtk_tree_model_get_iter_first (GTK_TREE_MODEL 
(ctx->meta_liststore), &iter))
   {
     do
     {
-      gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1);
+      gtk_tree_model_get (GTK_TREE_MODEL (ctx->meta_liststore), &iter, 0, 
&ntype, 1, &nformat, 3, &value, -1);
       if (ntype > 0)
-        GNUNET_CONTAINER_meta_data_insert (nm, "<user>", ntype, nformat,
+        GNUNET_CONTAINER_meta_data_insert (ctx->md, "<user>", ntype, nformat,
                                            "text/plain", value,
                                            strlen (value) + 1);
       g_free (value);
     }
-    while (TRUE == gtk_tree_model_iter_next (tm, &iter));
+    while (TRUE == gtk_tree_model_iter_next (GTK_TREE_MODEL 
(ctx->meta_liststore), &iter));
   }
-  GNUNET_CONTAINER_meta_data_merge (meta, nm);
-  if (state->preview_changed == GNUNET_YES)
+  GNUNET_CONTAINER_meta_data_merge (meta, ctx->md);
+  if (ctx->preview_changed == GNUNET_YES)
   {
     fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER
                                         (gtk_builder_get_object
-                                         (builder,
+                                         (ctx->builder,
                                           
"GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button")));
     f = g_file_new_for_path (fn);
     finfo =
@@ -798,11 +564,11 @@
     g_object_unref (f);
     g_free (fn);
   }
-  GNUNET_CONTAINER_meta_data_destroy (nm);
+  GNUNET_CONTAINER_meta_data_destroy (ctx->md);
 
   /* update short_fn */
-  GNUNET_free_non_null (*short_fn);
-  *short_fn =
+  GNUNET_free_non_null (ctx->short_fn);
+  ctx->short_fn =
       GNUNET_CONTAINER_meta_data_get_first_by_types (meta,
                                                      
EXTRACTOR_METATYPE_FILENAME,
                                                      -1);
@@ -813,110 +579,42 @@
 
 void
 GNUNET_GTK_edit_publication_cancel_button_clicked_cb (GtkButton * button,
-                                                      gpointer user_data)
+                                                      struct 
EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GObject *pubwindow;
-  struct EditPublicationState *state = NULL;
-
-  builder = GTK_BUILDER (user_data);
-
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
-    return;
-  }
-
-  state->cb (state->cls, state->do_index, state->short_fn,
-             &state->bo, NULL,
-             GTK_RESPONSE_CANCEL);
-  g_free (state);
-  g_object_set_data (pubwindow, PUBSTATE, NULL);
-  gtk_widget_hide (GTK_WIDGET (pubwindow));
+  ctx->cb (ctx->cls, ctx->do_index, ctx->short_fn,
+      &ctx->bo, NULL, GTK_RESPONSE_CANCEL);
+  gtk_widget_destroy (GTK_WIDGET (ctx->pubwindow));
 }
 
 
 void
 GNUNET_GTK_edit_publication_confirm_button_clicked_cb (GtkButton * button,
-                                                       gpointer user_data)
+                                                       struct 
EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GObject *pubwindow;
-  struct EditPublicationState *state;
-  struct FileInformationUpdateContext ctx;
   gint year;
-  builder = GTK_BUILDER (user_data);
 
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  state = g_object_get_data (pubwindow, PUBSTATE);
-  if (!state)
-  {
-    GNUNET_break (0);
-    return;
-  }
+  GNUNET_FS_file_information_inspect (ctx->fip, &file_information_update, ctx);
+  if (!GNUNET_GTK_get_selected_anonymity_combo_level (ctx->anonymity_combo,
+      &ctx->bo.anonymity_level))
+    ctx->bo.content_priority = gtk_spin_button_get_value (ctx->priority_spin);
+  ctx->bo.replication_level = gtk_spin_button_get_value 
(ctx->replication_spin);
 
-  ctx.builder = builder;
-  ctx.short_fn = state->short_fn;
-  ctx.root = NULL;
-  ctx.md = NULL;
-  ctx.allow_no_keywords = state->allow_no_keywords;
-
-  GNUNET_FS_file_information_inspect (state->fip, &file_information_update,
-                                      &ctx);
-  state->short_fn = ctx.short_fn;
-  if (!GNUNET_GTK_get_selected_anonymity_level
-      (builder, "GNUNET_GTK_edit_publication_anonymity_combobox",
-       &state->bo.anonymity_level))
-    state->bo.content_priority =
-        gtk_spin_button_get_value (GTK_SPIN_BUTTON
-                                   (gtk_builder_get_object
-                                    (builder,
-                                     
"GNUNET_GTK_edit_publication_priority_spin_button")));
-  state->bo.replication_level =
-    gtk_spin_button_get_value (GTK_SPIN_BUTTON
-                              (gtk_builder_get_object
-                               (builder,
-                                
"GNUNET_GTK_edit_publication_replication_spin_button")));
-
-  state->do_index =
-      gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                    (gtk_builder_get_object
-                                     (builder,
-                                      
"GNUNET_GTK_edit_publication_index_checkbutton")));
-  year = gtk_spin_button_get_value (GTK_SPIN_BUTTON
-                                   (gtk_builder_get_object
-                                    (builder,
-                                     
"GNUNET_GTK_edit_publication_expiration_year_spin_button")));
-  state->bo.expiration_time = GNUNET_FS_year_to_time (year);
-  state->cb (state->cls, state->do_index, state->short_fn,
-             &state->bo, ctx.root,
-             GTK_RESPONSE_OK);
-  GNUNET_free_non_null (state->short_fn);
-  GNUNET_free (state);
-  g_object_set_data (pubwindow, PUBSTATE, NULL);
-  gtk_widget_hide (GTK_WIDGET (pubwindow));
+  ctx->do_index = gtk_toggle_button_get_active (ctx->index_checkbutton);
+  year = gtk_spin_button_get_value (ctx->year_spin);
+  ctx->bo.expiration_time = GNUNET_FS_year_to_time (year);
+  ctx->cb (ctx->cls, ctx->do_index, ctx->short_fn,
+      &ctx->bo, ctx->root, GTK_RESPONSE_OK);
+  GNUNET_free_non_null (ctx->short_fn);
+  gtk_widget_destroy (GTK_WIDGET (ctx->pubwindow));
 }
 
 
 gboolean
 GNUNET_GTK_edit_publication_window_delete_event_cb (GtkWidget * widget,
                                                     GdkEvent * event,
-                                                    gpointer user_data)
+                                                    struct 
EditPublicationDialogContext *ctx)
 {
-  GtkBuilder *builder;
-  GtkButton *button;
-
-  builder = GTK_BUILDER (user_data);
-
-  button =
-      GTK_BUTTON (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_edit_publication_cancel_button"));
-
-  GNUNET_GTK_edit_publication_cancel_button_clicked_cb (button, user_data);
+  GNUNET_GTK_edit_publication_cancel_button_clicked_cb (ctx->cancel, ctx);
   return TRUE;
 }
 
@@ -962,162 +660,202 @@
                           struct GNUNET_FS_BlockOptions *bo, int *do_index,
                           void **client_info)
 {
-  GtkBuilder *builder = GTK_BUILDER (cls);
-  GtkImage *img;
+  struct EditPublicationDialogContext *ctx = cls;
   GdkPixbuf *pixbuf;
   int year;
-  GtkListStore *ls;
 
-  ls = GTK_LIST_STORE (gtk_builder_get_object
-                       (builder, "GNUNET_GTK_publication_keywords_liststore"));
-
   if (NULL != *uri)
-    GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, ls);
+    GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, 
ctx->keywords_liststore);
   if (NULL != meta)
   {
-    ls = GTK_LIST_STORE (gtk_builder_get_object
-                         (builder,
-                          "GNUNET_GTK_publication_metadata_liststore"));
     GNUNET_CONTAINER_meta_data_iterate (meta,
                                         
&GNUNET_FS_GTK_add_meta_data_to_list_store,
-                                        ls);
+                                        ctx->meta_liststore);
     pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta);
     if (pixbuf != NULL)
     {
-      img =
-          GTK_IMAGE (gtk_builder_get_object
-                     (builder,
-                      "GNUNET_GTK_edit_publication_metadata_preview_image"));
-      gtk_image_set_from_pixbuf (img, pixbuf);
+      gtk_image_set_from_pixbuf (ctx->image, pixbuf);
     }
   }
-  year = (int) GNUNET_FS_time_to_year (bo->expiration_time);
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON
-                             (gtk_builder_get_object
-                              (builder,
-                               
"GNUNET_GTK_edit_publication_expiration_year_spin_button")),
-                             year);
-  GNUNET_GTK_select_anonymity_level (builder,
-                                     
"GNUNET_GTK_edit_publication_anonymity_combobox",
-                                     bo->anonymity_level);
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON
-                             (gtk_builder_get_object
-                              (builder,
-                               
"GNUNET_GTK_edit_publication_priority_spin_button")),
-                             bo->content_priority);
-  gtk_spin_button_set_value (GTK_SPIN_BUTTON
-                             (gtk_builder_get_object
-                              (builder,
-                               
"GNUNET_GTK_edit_publication_replication_spin_button")),
-                             bo->replication_level);
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (gtk_builder_get_object
-                                 (builder,
-                                  
"GNUNET_GTK_edit_publication_index_checkbutton")),
-                                *do_index);
+  year = (int) GNUNET_FS_time_to_year (ctx->bo.expiration_time);
+  gtk_spin_button_set_value (ctx->year_spin, year);
+  GNUNET_GTK_select_anonymity_combo_level (ctx->anonymity_combo,
+      ctx->bo.anonymity_level);
+  gtk_spin_button_set_value (ctx->priority_spin, ctx->bo.content_priority);
+  gtk_spin_button_set_value (ctx->replication_spin, ctx->bo.replication_level);
+  gtk_toggle_button_set_active (ctx->index_checkbutton, *do_index);
   return GNUNET_SYSERR;         /* only visit top-level item */
 }
 
 
+void
+GNUNET_GTK_edit_publication_window_realize_cb (GtkWidget *widget, struct 
EditPublicationDialogContext *ctx)
+{
+  ctx->keywords_selection = gtk_tree_view_get_selection 
(ctx->keywords_treeview);
+  ctx->meta_selection = gtk_tree_view_get_selection (ctx->meta_treeview);
+
+  g_signal_connect (G_OBJECT (ctx->keywords_selection), "changed",
+                    G_CALLBACK (keywords_selection_changed_cb), ctx);
+
+  g_signal_connect (G_OBJECT (ctx->meta_selection), "changed",
+                    G_CALLBACK (metadata_selection_changed_cb), ctx);
+}
+
 /**
  * Open the dialog to edit file information data.
  * short_fn MUST be UTF-8-encoded
  */
 void
-GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder * builder, GtkWindow * parent,
+GNUNET_FS_GTK_edit_publish_dialog (GtkWindow * parent,
                                    int do_index, const char *short_fn,
-                                  const struct GNUNET_FS_BlockOptions *bo,
+                                  const struct GNUNET_FS_BlockOptions bo,
                                    struct GNUNET_FS_FileInformation *fip,
                                    gboolean allow_no_keywords,
+                                   GtkListStore *anon_liststore,
                                    GNUNET_FS_GTK_EditPublishDialogCallback cb,
                                    gpointer cls)
 {
-  GtkWidget *dialog;
-  GObject *pubwindow;
-  GtkEntry *entry;
-  GtkWidget *ok;
-  struct EditPublicationState *state;
-  GtkListStore *pubtypes_list;
-  GtkComboBox *pubtypes_combo;
   GtkTreeIter iter;
   gint code;
 
-  GNUNET_FS_GTK_setup_expiration_year_adjustment (builder);
+  struct EditPublicationDialogContext *ctx;
+
+  ctx = GNUNET_malloc (sizeof (struct EditPublicationDialogContext));
+  ctx->builder = GNUNET_GTK_get_new_builder 
("gnunet_fs_gtk_edit_publication.glade", ctx);
+
+  if (ctx->builder == NULL)
+  {
+    GNUNET_free (ctx);
+    return;
+  }
+
+  ctx->pubtypes_liststore =
+      GTK_LIST_STORE (gtk_builder_get_object
+                      (ctx->builder, 
"GNUNET_GTK_publication_types_liststore"));
+  ctx->metatypes_liststore =
+      GTK_LIST_STORE (gtk_builder_get_object
+                      (ctx->builder,
+                       "GNUNET_GTK_publication_metadata_types_liststore"));
+  ctx->meta_treeview = GTK_TREE_VIEW (gtk_builder_get_object
+                      (ctx->builder,
+                       "GNUNET_GTK_edit_publication_metadata_tree_view"));
+  ctx->meta_del_button =
+      GTK_WIDGET (gtk_builder_get_object
+                  (ctx->builder, "GNUNET_GTK_edit_publication_delete_button"));
+  ctx->keywords_treeview = GTK_TREE_VIEW (gtk_builder_get_object
+                      (ctx->builder,
+                       "GNUNET_GTK_edit_publication_keyword_list_tree_view"));
+  ctx->keyword_del_button =
+      GTK_WIDGET (gtk_builder_get_object
+                  (ctx->builder,
+                   "GNUNET_GTK_edit_publication_keyword_list_del_button"));
+  ctx->meta_add_button =
+        GTK_BUTTON (gtk_builder_get_object
+                    (ctx->builder, "GNUNET_GTK_edit_publication_add_button"));
+  ctx->meta_combo =
+      GTK_CELL_RENDERER_COMBO (gtk_builder_get_object
+                               (ctx->builder,
+                                
"GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer"));
+  ctx->pubwindow =
+      gtk_builder_get_object (ctx->builder, 
"GNUNET_GTK_edit_publication_window");
+  ctx->keywords_liststore = GTK_LIST_STORE (gtk_builder_get_object
+                       (ctx->builder, 
"GNUNET_GTK_publication_keywords_liststore"));
+  ctx->keyword_entry =
+      GTK_ENTRY (gtk_builder_get_object
+                 (ctx->builder, "GNUNET_GTK_edit_publication_keyword_entry"));
+  ctx->ok = GTK_WIDGET (gtk_builder_get_object
+                     (ctx->builder, 
"GNUNET_GTK_edit_publication_confirm_button"));
+  ctx->keyword_add_button =
+      GTK_WIDGET (gtk_builder_get_object
+                  (ctx->builder,
+                   "GNUNET_GTK_edit_publication_keyword_list_add_button"));
+  ctx->image =
+      GTK_IMAGE (gtk_builder_get_object
+                 (ctx->builder,
+                  "GNUNET_GTK_edit_publication_metadata_preview_image"));
+  ctx->meta_liststore = GTK_LIST_STORE (gtk_builder_get_object
+                         (ctx->builder,
+                          "GNUNET_GTK_publication_metadata_liststore"));
+  ctx->cancel =
+      GTK_BUTTON (gtk_builder_get_object
+                  (ctx->builder, "GNUNET_GTK_edit_publication_cancel_button"));
+
+  ctx->index_label = GTK_LABEL (gtk_builder_get_object
+                    (ctx->builder, "GNUNET_GTK_edit_publication_index_label"));
+  ctx->root_entry = GTK_ENTRY (gtk_builder_get_object
+                    (ctx->builder, "GNUNET_GTK_edit_publication_root_entry"));
+  ctx->root_label = GTK_LABEL (gtk_builder_get_object
+                    (ctx->builder, "GNUNET_GTK_edit_publication_root_label"));
+
+  ctx->pubtypes_combo =
+      GTK_COMBO_BOX (gtk_builder_get_object
+                     (ctx->builder, "GNUNET_GTK_edit_publication_type_combo"));
+
+  ctx->year_spin = GTK_SPIN_BUTTON
+                             (gtk_builder_get_object
+                              (ctx->builder,
+                               
"GNUNET_GTK_edit_publication_expiration_year_spin_button"));
+  ctx->priority_spin = GTK_SPIN_BUTTON
+                             (gtk_builder_get_object
+                              (ctx->builder,
+                               
"GNUNET_GTK_edit_publication_priority_spin_button"));
+  ctx->replication_spin = GTK_SPIN_BUTTON
+                             (gtk_builder_get_object
+                              (ctx->builder,
+                               
"GNUNET_GTK_edit_publication_replication_spin_button"));
+  ctx->index_checkbutton = GTK_TOGGLE_BUTTON
+                                (gtk_builder_get_object
+                                 (ctx->builder,
+                                  
"GNUNET_GTK_edit_publication_index_checkbutton"));
+  ctx->anonymity_combo = GTK_COMBO_BOX (gtk_builder_get_object (ctx->builder,
+      "GNUNET_GTK_edit_publication_anonymity_combobox"));
+  gtk_combo_box_set_model (ctx->anonymity_combo, GTK_TREE_MODEL 
(anon_liststore));
+  ctx->anonymity_liststore = anon_liststore;
+
+  GNUNET_FS_GTK_setup_expiration_year_adjustment (ctx->builder);
   /* indexing does not apply to directories */
-  gtk_widget_set_visible (GTK_WIDGET
-                   (gtk_builder_get_object
-                    (builder,
-                     "GNUNET_GTK_edit_publication_index_checkbutton")),
+  gtk_widget_set_visible (GTK_WIDGET (ctx->index_checkbutton),
       !GNUNET_FS_file_information_is_directory (fip));
-  gtk_widget_set_visible (GTK_WIDGET
-                   (gtk_builder_get_object
-                    (builder, "GNUNET_GTK_edit_publication_index_label")),
+  gtk_widget_set_visible (GTK_WIDGET (ctx->index_label),
       !GNUNET_FS_file_information_is_directory (fip));
-  gtk_widget_set_visible (GTK_WIDGET
-                   (gtk_builder_get_object
-                    (builder, "GNUNET_GTK_edit_publication_root_entry")),
+  gtk_widget_set_visible (GTK_WIDGET (ctx->root_entry),
       !allow_no_keywords);
-  gtk_widget_set_visible (GTK_WIDGET
-                   (gtk_builder_get_object
-                    (builder, "GNUNET_GTK_edit_publication_root_label")),
+  gtk_widget_set_visible (GTK_WIDGET (ctx->root_label),
       !allow_no_keywords);
 
-  gtk_list_store_clear (GTK_LIST_STORE
-                        (gtk_builder_get_object
-                         (builder,
-                          "GNUNET_GTK_publication_keywords_liststore")));
-  gtk_list_store_clear (GTK_LIST_STORE
-                        (gtk_builder_get_object
-                         (builder,
-                          "GNUNET_GTK_publication_metadata_liststore")));
+  gtk_list_store_clear (ctx->keywords_liststore);
+  gtk_list_store_clear (ctx->meta_liststore);
 
-  GNUNET_FS_file_information_inspect (fip, &file_information_extract, builder);
-  dialog =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_edit_publication_window"));
   if (NULL != short_fn)
-    gtk_window_set_title (GTK_WINDOW (dialog), short_fn);
-  else
-    gtk_window_set_title (GTK_WINDOW (dialog), _("<unnamed>"));
-  pubtypes_list =
-      GTK_LIST_STORE (gtk_builder_get_object
-                      (builder, "GNUNET_GTK_publication_types_liststore"));
-  pubtypes_combo =
-      GTK_COMBO_BOX (gtk_builder_get_object
-                     (builder, "GNUNET_GTK_edit_publication_type_combo"));
+    gtk_window_set_title (GTK_WINDOW (ctx->pubwindow), short_fn);
+  else                                                       
+    gtk_window_set_title (GTK_WINDOW (ctx->pubwindow), _("<unnamed>"));
 
-  if (gtk_combo_box_get_active_iter (pubtypes_combo, &iter))
+  if (gtk_combo_box_get_active_iter (ctx->pubtypes_combo, &iter))
   {
-    gtk_tree_model_get (GTK_TREE_MODEL (pubtypes_list), &iter, 0, &code, -1);
-    change_metatypes (builder, 0);
+    gtk_tree_model_get (GTK_TREE_MODEL (ctx->pubtypes_liststore), &iter, 0, 
&code, -1);
+    change_metatypes (ctx, 0);
   }
   else
-    gtk_combo_box_set_active (pubtypes_combo, 0);
+    gtk_combo_box_set_active (ctx->pubtypes_combo, 0);
 
-  state = GNUNET_malloc (sizeof (struct EditPublicationState));
-  state->do_index = do_index;
+  ctx->do_index = do_index;
   if (NULL != short_fn)
-    state->short_fn = GNUNET_strdup (short_fn);
-  state->bo = *bo;
-  state->fip = fip;
-  state->preview_changed = GNUNET_NO;
-  state->allow_no_keywords = allow_no_keywords;
-  state->is_directory = GNUNET_FS_file_information_is_directory (fip);
-  state->cb = cb;
-  state->cls = cls;
+    ctx->short_fn = GNUNET_strdup (short_fn);
+  ctx->bo = bo;
+  ctx->fip = fip;
+  ctx->preview_changed = GNUNET_NO;
+  ctx->allow_no_keywords = allow_no_keywords;
+  ctx->is_directory = GNUNET_FS_file_information_is_directory (fip);
+  ctx->cb = cb;
+  ctx->cls = cls;
 
-  entry =
-      GTK_ENTRY (gtk_builder_get_object
-                 (builder, "GNUNET_GTK_edit_publication_keyword_entry"));
-  gtk_entry_set_text (entry, "");
-  pubwindow =
-      gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
-  g_object_set_data (pubwindow, PUBSTATE, state);
-  ok = GTK_WIDGET (gtk_builder_get_object
-                   (builder, "GNUNET_GTK_edit_publication_confirm_button"));
-  gtk_widget_set_sensitive (ok, allow_no_keywords ? TRUE : FALSE);
-  gtk_window_set_transient_for (GTK_WINDOW (pubwindow), parent);
-  gtk_window_present (GTK_WINDOW (dialog));
+  GNUNET_FS_file_information_inspect (fip, &file_information_extract, ctx);
+
+  gtk_entry_set_text (ctx->keyword_entry, "");
+  gtk_widget_set_sensitive (ctx->ok, allow_no_keywords ? TRUE : FALSE);
+  gtk_window_set_transient_for (GTK_WINDOW (ctx->pubwindow), parent);
+  gtk_window_present (GTK_WINDOW (ctx->pubwindow));
 }
 
 

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.h
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.h       2012-01-04 
01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-edit_publish_dialog.h       2012-01-04 
06:51:07 UTC (rev 18964)
@@ -53,11 +53,11 @@
  * Open the dialog to edit file information data.
  */
 void
-GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder * builder, GtkWindow * parent,
+GNUNET_FS_GTK_edit_publish_dialog (GtkWindow * parent,
                                    int do_index, const char *short_fn,
-                                  const struct GNUNET_FS_BlockOptions *bo,
+                                  const struct GNUNET_FS_BlockOptions bo,
                                    struct GNUNET_FS_FileInformation *fip,
-                                   gboolean allow_no_keywords,
+                                   gboolean allow_no_keywords, GtkListStore 
*anon_liststore,
                                    GNUNET_FS_GTK_EditPublishDialogCallback cb,
                                    gpointer cls);
 

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c 2012-01-04 
01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c 2012-01-04 
06:51:07 UTC (rev 18964)
@@ -150,6 +150,7 @@
   struct GNUNET_FS_Namespace *ns;
   struct GNUNET_FS_Namespace *nso;
   GtkWindow *transient;
+  GtkListStore *anon_liststore;
   struct NamespaceAdvertisementContext *nds;
   struct GNUNET_CONTAINER_MetaData *meta;
 
@@ -157,6 +158,8 @@
   ad = GTK_WIDGET (gtk_builder_get_object
                    (builder, "GNUNET_GTK_select_pseudonym_dialog"));
 
+  anon_liststore = GTK_LIST_STORE (gtk_builder_get_object (builder, 
"main_window_search_anonymity_liststore"));
+
   if (response_id != -5)
   {
     gtk_widget_hide (ad);
@@ -202,8 +205,8 @@
       GNUNET_FS_file_information_create_empty_directory (NULL, NULL, NULL, 
meta,
                                                          &nds->bo);
   GNUNET_CONTAINER_meta_data_destroy (meta);
-  GNUNET_FS_GTK_edit_publish_dialog (builder, transient, nds->do_index,
-                                     nds->short_fn, &nds->bo, nds->fip, FALSE,
+  GNUNET_FS_GTK_edit_publish_dialog (transient, nds->do_index,
+                                     nds->short_fn, nds->bo, nds->fip, FALSE, 
anon_liststore,
                                      &adv_pseudonym_edit_publish_dialog_cb,
                                      nds);
 }

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_publish.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_publish.c  2012-01-04 
01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_publish.c  2012-01-04 
06:51:07 UTC (rev 18964)
@@ -1281,12 +1281,16 @@
   guint64 abs_etime;
   guint replication_level;
   struct GNUNET_FS_BlockOptions bo;
+  GtkListStore *anon_liststore;
 
   builder = GTK_BUILDER (data);
   tv = GTK_TREE_VIEW (gtk_builder_get_object
                       (builder,
                        
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
 
+  anon_liststore = GTK_LIST_STORE (gtk_builder_get_object (builder, 
"main_window_search_anonymity_liststore"));
+
+
   cbargs = GNUNET_malloc (sizeof (struct EditPublishContext));
   cbargs->tm = gtk_tree_view_get_model (tv);
   master_pubdialog =
@@ -1309,9 +1313,9 @@
   bo.content_priority = priority;
   bo.expiration_time.abs_value = (uint64_t) abs_etime;
   bo.replication_level = replication_level;
-  /* FIXME: shouldn't this use a fresh builder? */
-  GNUNET_FS_GTK_edit_publish_dialog (builder, master_pubdialog, do_index,
-                                     short_fn, &bo, fip, TRUE,
+
+  GNUNET_FS_GTK_edit_publish_dialog (master_pubdialog, do_index,
+                                     short_fn, bo, fip, TRUE, anon_liststore,
                                      &master_publish_edit_publish_dialog_cb,
                                      cbargs);
 }

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk.c   2012-01-04 01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk.c   2012-01-04 06:51:07 UTC (rev 18964)
@@ -279,6 +279,26 @@
 }
 
 gboolean
+GNUNET_GTK_get_selected_anonymity_combo_level (GtkComboBox *combo, guint 
*p_level)
+{
+  GtkTreeIter iter;
+  GtkTreeModel *model;
+  guint level;
+
+  if (!gtk_combo_box_get_active_iter (combo, &iter))
+    return FALSE;
+
+  model = gtk_combo_box_get_model (combo);
+  if (!model)
+    return FALSE;
+
+  gtk_tree_model_get (model, &iter, 1, &level, -1);
+  if (p_level)
+    *p_level = level;
+  return TRUE;
+}
+
+gboolean
 GNUNET_GTK_select_anonymity_level (GtkBuilder * builder, gchar * combo_name,
                                    guint sel_level)
 {
@@ -310,6 +330,31 @@
 }
 
 gboolean
+GNUNET_GTK_select_anonymity_combo_level (GtkComboBox *combo, guint sel_level)
+{
+  GtkTreeIter iter;
+  GtkTreeModel *model;
+  guint level;
+  gboolean go_on;
+
+  model = gtk_combo_box_get_model (combo);
+  if (!model)
+    return FALSE;
+
+  for (go_on = gtk_tree_model_get_iter_first (model, &iter); go_on;
+       go_on = gtk_tree_model_iter_next (model, &iter))
+  {
+    gtk_tree_model_get (model, &iter, 1, &level, -1);
+    if (level == sel_level)
+    {
+      gtk_combo_box_set_active_iter (combo, &iter);
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+gboolean
 get_selected_namespace_treepath_iter_model_widget (GtkBuilder * builder,
                                                    GtkTreePath ** p_treepath,
                                                    GtkTreeIter * p_iter,

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk.h
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk.h   2012-01-04 01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk.h   2012-01-04 06:51:07 UTC (rev 18964)
@@ -77,11 +77,21 @@
 
 
 /**
+ * Get the selected anonymity level.
+ *
+ * @param combo combo box widget to get anonymity from
+ * @param p_level pointer to a guint to receive the level value
+ * @return TRUE on success, FALSE on error
+ */
+gboolean
+GNUNET_GTK_get_selected_anonymity_combo_level (GtkComboBox *combo, guint 
*p_level);
+
+/**
  * Set the selected anonymity level.
  * For dialogue initialization.
  *
  * @param builder builder object for the window
- * @param combo_name name of the combobox widget to get anonymity from
+ * @param combo_name name of the combobox widget to set anonymity in
  * @param sel_level the level value to select
  * @return TRUE on success, FALSE on error (no item with such level)
  */
@@ -89,5 +99,17 @@
 GNUNET_GTK_select_anonymity_level (GtkBuilder * builder, gchar * combo_name,
                                    guint sel_level);
 
+
+/**
+ * Set the selected anonymity level.
+ * For dialogue initialization.
+ *
+ * @param combo the combobox widget to set anonymity in
+ * @param sel_level the level value to select
+ * @return TRUE on success, FALSE on error (no item with such level)
+ */
+gboolean
+GNUNET_GTK_select_anonymity_combo_level (GtkComboBox *combo, guint sel_level);
+
 #endif
 /* end of gnunet-fs-gtk.h */

Modified: gnunet-gtk/src/lib/about.c
===================================================================
--- gnunet-gtk/src/lib/about.c  2012-01-04 01:11:41 UTC (rev 18963)
+++ gnunet-gtk/src/lib/about.c  2012-01-04 06:51:07 UTC (rev 18964)
@@ -141,7 +141,6 @@
   ctx->ad = GTK_WIDGET (gtk_builder_get_object (ctx->builder, "about_window"));
   ctx->license_contents =
       GTK_TEXT_BUFFER (gtk_builder_get_object (ctx->builder, 
"license_contents"));
-  g_object_set_data (G_OBJECT (ctx->ad), "gnunet-gtk-builder", ctx->builder);
   gtk_widget_show (ctx->ad);
 }
 




reply via email to

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