gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r18991 - in gnunet-gtk: contrib src/fs
Date: Thu, 5 Jan 2012 08:49:58 +0100

Author: grothoff
Date: 2012-01-05 08:49:58 +0100 (Thu, 05 Jan 2012)
New Revision: 18991

Modified:
   gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
   gnunet-gtk/contrib/gnunet_fs_gtk_publish_dialog.glade
   gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_publish.c
Log:
-LRN: unbuildering the master publication editing dialog --- CG: yayh

Modified: gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade  2012-01-05 07:48:35 UTC 
(rev 18990)
+++ gnunet-gtk/contrib/gnunet_fs_gtk_main_window.glade  2012-01-05 07:49:58 UTC 
(rev 18991)
@@ -12,26 +12,6 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
-  <object class="GtkTreeStore" 
id="GNUNET_GTK_file_sharing_publishing_tree_store">
-    <columns>
-      <!-- column-name filesize -->
-      <column type="gchararray"/>
-      <!-- column-name do_index -->
-      <column type="gboolean"/>
-      <!-- column-name filename -->
-      <column type="gchararray"/>
-      <!-- column-name anonymity_level -->
-      <column type="guint"/>
-      <!-- column-name priority -->
-      <column type="guint"/>
-      <!-- column-name file_information_struct -->
-      <column type="gpointer"/>
-      <!-- column-name expiration_time_absolute -->
-      <column type="guint64"/>
-      <!-- column-name replication_level -->
-      <column type="guint"/>
-    </columns>
-  </object>
   <object class="GtkListStore" id="GNUNET_GTK_meta_data_list_store">
     <columns>
       <!-- column-name extractor_meta_type -->
@@ -44,6 +24,9 @@
       <column type="gchararray"/>
     </columns>
   </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" 
swapped="no"/>
+  </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>
@@ -251,28 +234,6 @@
       <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>
@@ -287,7 +248,6 @@
     <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>
@@ -571,7 +531,6 @@
     <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>
@@ -859,410 +818,6 @@
       <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" 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>
-          <object class="GtkScrolledWindow" 
id="GNUNET_GTK_master_publish_dialog_file_information_scrolled_window">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hadjustment">adjustment5</property>
-            <property name="vadjustment">adjustment6</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_master_publish_dialog_file_information_tree_view">
-                <property name="height_request">100</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property 
name="model">GNUNET_GTK_file_sharing_publishing_tree_store</property>
-                <property name="hadjustment">adjustment5</property>
-                <property name="vadjustment">adjustment6</property>
-                <property name="enable_tree_lines">True</property>
-                <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_file_information_filesize_column">
-                    <property name="sizing">autosize</property>
-                    <property name="title">Size</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_file_information_filesize_renderer"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_file_information_filename_column">
-                    <property name="resizable">True</property>
-                    <property name="sizing">autosize</property>
-                    <property name="title">Filename</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_master_publish_dialog_file_information_filename_renderer"/>
-                      <attributes>
-                        <attribute name="text">2</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </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" 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" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">3</property>
-                  </packing>
-                </child>
-                <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" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <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" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="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" 
swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="padding">25</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <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" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                  </packing>
-                </child>
-                <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" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <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" swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="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" 
swapped="no"/>
-                  </object>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="padding">25</property>
-                <property name="position">1</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="GtkScrolledWindow" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_scrolled_window">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hadjustment">adjustment7</property>
-            <property name="vadjustment">adjustment8</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <property name="shadow_type">in</property>
-            <child>
-              <object class="GtkTreeView" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_tree_view">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property 
name="model">GNUNET_GTK_pseudonym_tree_store</property>
-                <property name="hadjustment">adjustment7</property>
-                <property name="vadjustment">adjustment8</property>
-                <property name="reorderable">True</property>
-                <property name="rubber_banding">True</property>
-                <property name="enable_grid_lines">both</property>
-                <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_name_column">
-                    <property name="resizable">True</property>
-                    <property name="title">Pseudonym</property>
-                    <property name="clickable">True</property>
-                    <property name="reorderable">True</property>
-                    <property name="sort_indicator">True</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_name_renderer"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_identifier_column">
-                    <property name="resizable">True</property>
-                    <property name="sizing">autosize</property>
-                    <property name="title">Current identifier</property>
-                    <property name="clickable">True</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer"/>
-                      <attributes>
-                        <attribute name="editable">8</attribute>
-                        <attribute name="text">2</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_updates_column">
-                    <property name="resizable">True</property>
-                    <property name="sizing">autosize</property>
-                    <property name="fixed_width">5</property>
-                    <property name="title">Update identifier</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer"/>
-                      <attributes>
-                        <attribute name="editable">7</attribute>
-                        <attribute name="text">5</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_description_column">
-                    <property name="title">Description (of existing 
content)</property>
-                    <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_description_renderer">
-                        <property name="wrap_mode">word</property>
-                      </object>
-                      <attributes>
-                        <attribute name="text">6</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <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_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_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">0</property>
-              </packing>
-            </child>
-            <child>
-              <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_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">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-      </object>
-    </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" 
swapped="no"/>
-  </object>
   <object class="GtkDialog" id="GNUNET_GTK_select_pseudonym_dialog">
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
@@ -1376,16 +931,6 @@
       <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>
@@ -1403,6 +948,16 @@
     <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>
@@ -1438,6 +993,11 @@
     <property name="can_focus">False</property>
     <property name="stock">gtk-execute</property>
   </object>
+  <object class="GtkAdjustment" id="expiration_year_adjustment">
+    <property name="upper">9999</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
   <object class="GtkImage" id="find_stock_image">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -2222,19 +1782,6 @@
     <property name="can_focus">False</property>
     <property name="stock">gtk-open</property>
   </object>
-  <object class="GtkSizeGroup" id="enties_and_comboboxes_sizegroup">
-    <property name="mode">vertical</property>
-    <widgets>
-      <widget name="main_window_search_entry"/>
-      <widget name="main_window_search_anonymity_combobox"/>
-      <widget name="main_window_search_mime_combobox"/>
-    </widgets>
-  </object>
-  <object class="GtkAdjustment" id="expiration_year_adjustment">
-    <property name="upper">9999</property>
-    <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>
@@ -2256,16 +1803,19 @@
     <property name="can_focus">False</property>
     <property name="stock">gtk-go-up</property>
   </object>
+  <object class="GtkSizeGroup" id="enties_and_comboboxes_sizegroup">
+    <property name="mode">vertical</property>
+    <widgets>
+      <widget name="main_window_search_entry"/>
+      <widget name="main_window_search_anonymity_combobox"/>
+      <widget name="main_window_search_mime_combobox"/>
+    </widgets>
+  </object>
   <object class="GtkSizeGroup" id="sizegroup4">
     <widgets>
       <widget name="GNUNET_GTK_master_publish_dialog_cancel_button"/>
       <widget name="GNUNET_GTK_master_publish_dialog_execute_button"/>
     </widgets>
   </object>
-  <object class="GtkSizeGroup" id="sizegroup5">
-    <widgets>
-      <widget name="GNUNET_GTK_edit_publication_confirm_button"/>
-      <widget name="GNUNET_GTK_edit_publication_cancel_button"/>
-    </widgets>
-  </object>
+  <object class="GtkSizeGroup" id="sizegroup5"/>
 </interface>

Modified: gnunet-gtk/contrib/gnunet_fs_gtk_publish_dialog.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_fs_gtk_publish_dialog.glade       2012-01-05 
07:48:35 UTC (rev 18990)
+++ gnunet-gtk/contrib/gnunet_fs_gtk_publish_dialog.glade       2012-01-05 
07:49:58 UTC (rev 18991)
@@ -2,50 +2,6 @@
 <interface>
   <requires lib="gtk+" version="2.20"/>
   <!-- interface-naming-policy project-wide -->
-  <object class="GtkAdjustment" id="adjustment4">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustment3">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-    <property name="page_size">10</property>
-  </object>
-  <object class="GtkAdjustment" id="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="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="GtkImage" id="right_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-forward</property>
-  </object>
-  <object class="GtkImage" id="left_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-go-back</property>
-  </object>
-  <object class="GtkImage" id="add_stock_image_2">
-    <property name="visible">True</property>
-    <property name="stock">gtk-add</property>
-  </object>
-  <object class="GtkImage" id="new_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-new</property>
-  </object>
-  <object class="GtkImage" id="add_stock_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-add</property>
-  </object>
   <object class="GtkTreeStore" 
id="GNUNET_GTK_file_sharing_publishing_tree_store">
     <columns>
       <!-- column-name filesize -->
@@ -60,137 +16,132 @@
       <column type="guint"/>
       <!-- column-name file_information_struct -->
       <column type="gpointer"/>
+      <!-- column-name expiration_time_absolute -->
+      <column type="guint64"/>
+      <!-- column-name replication_level -->
+      <column type="guint"/>
     </columns>
   </object>
-  <object class="GtkDialog" id="GNUNET_GTK_master_publish_dialog">
+  <object class="GtkWindow" id="GNUNET_GTK_master_publish_dialog">
     <property name="height_request">500</property>
-    <property name="border_width">5</property>
+    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Publish content on 
GNUnet</property>
-    <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
-    <property name="type_hint">dialog</property>
-    <property name="skip_taskbar_hint">True</property>
-    <property name="has_separator">False</property>
-    <child internal-child="vbox">
+    <property name="destroy_with_parent">True</property>
+    <property name="transient_for">GNUNET_GTK_main_window</property>
+    <signal name="delete-event" 
handler="GNUNET_GTK_master_publish_dialog_delete_event_cb" swapped="no"/>
+    <signal name="realize" 
handler="GNUNET_GTK_master_publish_dialog_realize_cb" swapped="no"/>
+    <child>
       <object class="GtkVBox" id="GNUNET_GTK_master_publish_dialog_vbox">
         <property name="visible">True</property>
-        <property name="spacing">2</property>
+        <property name="can_focus">False</property>
+        <property name="border_width">4</property>
+        <property name="spacing">7</property>
         <child>
-          <object class="GtkVBox" 
id="GNUNET_GTK_master_publish_dialog_file_information_vbox">
+          <object class="GtkScrolledWindow" 
id="GNUNET_GTK_master_publish_dialog_file_information_scrolled_window">
             <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hadjustment">adjustment5</property>
+            <property name="vadjustment">adjustment6</property>
+            <property name="hscrollbar_policy">automatic</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <property name="shadow_type">in</property>
             <child>
-              <object class="GtkScrolledWindow" 
id="GNUNET_GTK_master_publish_dialog_file_information_scrolled_window">
+              <object class="GtkTreeView" 
id="GNUNET_GTK_master_publish_dialog_file_information_tree_view">
                 <property name="height_request">100</property>
                 <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="model">GNUNET_GTK_file_sharing_publishing_tree_store</property>
+                <property name="hadjustment">adjustment5</property>
+                <property name="vadjustment">adjustment6</property>
+                <property name="headers_clickable">False</property>
+                <property name="search_column">0</property>
+                <property name="enable_tree_lines">True</property>
                 <child>
-                  <object class="GtkTreeView" 
id="GNUNET_GTK_master_publish_dialog_file_information_tree_view">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property 
name="model">GNUNET_GTK_file_sharing_publishing_tree_store</property>
-                    <property name="hadjustment">adjustment1</property>
-                    <property name="vadjustment">adjustment2</property>
-                    <property name="enable_tree_lines">True</property>
+                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_file_information_filesize_column">
+                    <property name="sizing">autosize</property>
+                    <property name="title">Size</property>
                     <child>
-                      <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_file_information_filesize_column">
-                        <property name="sizing">autosize</property>
-                        <property name="title" 
translatable="yes">Size</property>
-                        <child>
-                          <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_file_information_filesize_renderer"/>
-                          <attributes>
-                            <attribute name="text">0</attribute>
-                          </attributes>
-                        </child>
-                      </object>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_file_information_filesize_renderer"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
                     </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_file_information_filename_column">
+                    <property name="sizing">autosize</property>
+                    <property name="title">Filename</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="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_file_information_filename_column">
-                        <property name="resizable">True</property>
-                        <property name="sizing">autosize</property>
-                        <property name="title" 
translatable="yes">Filename</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_master_publish_dialog_file_information_filename_renderer"/>
-                          <attributes>
-                            <attribute name="text">2</attribute>
-                          </attributes>
-                        </child>
-                      </object>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_file_information_filename_renderer"/>
+                      <attributes>
+                        <attribute name="text">2</attribute>
+                      </attributes>
                     </child>
                   </object>
                 </child>
               </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
             </child>
           </object>
           <packing>
             <property name="expand">True</property>
             <property name="fill">True</property>
-            <property name="padding">8</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">Add _File</property>
+                    <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_action_appearance">False</property>
-                    <property name="image">add_stock_image</property>
                     <property name="use_underline">True</property>
                     <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_open_button">
-                    <property name="label">Add _Directory</property>
+                  <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="use_action_appearance">False</property>
-                    <property name="image">add_stock_image_2</property>
+                    <property name="image">new_stock_image</property>
                     <property name="use_underline">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_open_button_clicked_cb" swapped="no"/>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_new_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">3</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_delete_button">
-                    <property name="label">gtk-delete</property>
+                  <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="sensitive">False</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <property name="use_action_appearance">False</property>
-                    <property name="use_stock">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb" 
swapped="no"/>
+                    <property name="use_underline">True</property>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_open_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                   </packing>
@@ -198,11 +149,11 @@
                 <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_action_appearance">False</property>
                     <property name="use_stock">True</property>
                     <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_edit_button_clicked_cb" swapped="no"/>
                   </object>
@@ -214,19 +165,21 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_new_button">
-                    <property name="label">_Create empty directory</property>
+                  <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_action_appearance">False</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" swapped="no"/>
+                    <property name="use_stock">True</property>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb" 
swapped="no"/>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
+                    <property name="left_attach">2</property>
                     <property name="right_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
                   </packing>
                 </child>
               </object>
@@ -240,17 +193,18 @@
             <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_action_appearance">False</property>
                     <property name="use_stock">True</property>
                     <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_up_button_clicked_cb" swapped="no"/>
                   </object>
@@ -260,48 +214,48 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_down_button">
-                    <property name="label">gtk-go-down</property>
+                  <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="use_action_appearance">False</property>
-                    <property name="use_stock">True</property>
-                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_down_button_clicked_cb" swapped="no"/>
+                    <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" swapped="no"/>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_left_button">
-                    <property name="label">_Left</property>
+                  <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_action_appearance">False</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" swapped="no"/>
+                    <property name="use_stock">True</property>
+                    <signal name="clicked" 
handler="GNUNET_GTK_master_publish_dialog_down_button_clicked_cb" swapped="no"/>
                   </object>
                   <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
                     <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_right_button">
-                    <property name="label">_Right</property>
+                    <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="use_action_appearance">False</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" 
swapped="no"/>
@@ -336,27 +290,29 @@
         </child>
         <child>
           <object class="GtkScrolledWindow" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_scrolled_window">
-            <property name="height_request">100</property>
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="hadjustment">adjustment3</property>
-            <property name="vadjustment">adjustment4</property>
+            <property name="hadjustment">adjustment7</property>
+            <property name="vadjustment">adjustment8</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_master_publish_dialog_pseudonym_tree_view">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property 
name="model">GNUNET_GTK_pseudonym_tree_store</property>
-                <property name="hadjustment">adjustment3</property>
-                <property name="vadjustment">adjustment4</property>
+                <property name="hadjustment">adjustment7</property>
+                <property name="vadjustment">adjustment8</property>
+                <property name="headers_clickable">False</property>
                 <property name="reorderable">True</property>
+                <property name="search_column">0</property>
                 <property name="rubber_banding">True</property>
                 <property name="enable_grid_lines">both</property>
                 <child>
                   <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_name_column">
                     <property name="resizable">True</property>
-                    <property name="title" 
translatable="yes">Pseudonym</property>
+                    <property name="title">Pseudonym</property>
                     <property name="clickable">True</property>
                     <property name="reorderable">True</property>
                     <property name="sort_indicator">True</property>
@@ -370,14 +326,11 @@
                 </child>
                 <child>
                   <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_identifier_column">
-                    <property name="resizable">True</property>
                     <property name="sizing">autosize</property>
-                    <property name="title" translatable="yes">Current 
identifier</property>
+                    <property name="title">Current identifier</property>
                     <property name="clickable">True</property>
                     <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer">
-                        <signal name="edited" 
handler="GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer_edited_cb"
 swapped="no"/>
-                      </object>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer"/>
                       <attributes>
                         <attribute name="editable">8</attribute>
                         <attribute name="text">2</attribute>
@@ -387,14 +340,11 @@
                 </child>
                 <child>
                   <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_updates_column">
-                    <property name="resizable">True</property>
                     <property name="sizing">autosize</property>
                     <property name="fixed_width">5</property>
-                    <property name="title" translatable="yes">Update 
identifier</property>
+                    <property name="title">Update identifier</property>
                     <child>
-                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer">
-                        <signal name="edited" 
handler="GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer_edited_cb" 
swapped="no"/>
-                      </object>
+                      <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer"/>
                       <attributes>
                         <attribute name="editable">7</attribute>
                         <attribute name="text">5</attribute>
@@ -404,7 +354,7 @@
                 </child>
                 <child>
                   <object class="GtkTreeViewColumn" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_description_column">
-                    <property name="title" translatable="yes">Description (of 
existing content)</property>
+                    <property name="title">Description (of existing 
content)</property>
                     <child>
                       <object class="GtkCellRendererText" 
id="GNUNET_GTK_master_publish_dialog_pseudonym_description_renderer">
                         <property name="wrap_mode">word</property>
@@ -419,60 +369,59 @@
             </child>
           </object>
           <packing>
-            <property name="expand">False</property>
+            <property name="expand">True</property>
             <property name="fill">True</property>
             <property name="position">2</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" 
id="GNUNET_GTK_master_publish_dialog_master_action_area">
+        <child>
+          <object class="GtkHBox" 
id="GNUNET_GTK_master_publish_dialog_master_buttons_hbox">
             <property name="visible">True</property>
-            <property name="layout_style">end</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">gtk-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_action_appearance">False</property>
-                <property name="use_stock">True</property>
+                <property name="use_underline">True</property>
+                <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">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" 
id="GNUNET_GTK_master_publish_dialog_execute_button">
-                <property name="label">gtk-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="sensitive">False</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <property name="use_action_appearance">False</property>
-                <property name="use_stock">True</property>
+                <property name="use_underline">True</property>
+                <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">1</property>
               </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
+            <property name="fill">False</property>
             <property name="position">3</property>
           </packing>
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget 
response="-6">GNUNET_GTK_master_publish_dialog_cancel_button</action-widget>
-      <action-widget 
response="-5">GNUNET_GTK_master_publish_dialog_execute_button</action-widget>
-    </action-widgets>
   </object>
   <object class="GtkTreeStore" id="GNUNET_GTK_pseudonym_tree_store">
     <columns>
@@ -496,4 +445,35 @@
       <column type="gboolean"/>
     </columns>
   </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="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="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="right_stock_image">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-forward</property>
+  </object>
+  <object class="GtkSizeGroup" id="sizegroup1">
+    <widgets>
+      <widget name="GNUNET_GTK_master_publish_dialog_execute_button"/>
+      <widget name="GNUNET_GTK_master_publish_dialog_cancel_button"/>
+    </widgets>
+  </object>
 </interface>

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-05 
07:48:35 UTC (rev 18990)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-main_window_file_publish.c  2012-01-05 
07:49:58 UTC (rev 18991)
@@ -30,6 +30,38 @@
 
 #define MARKER_DIR_FILE_SIZE "-"
 
+struct MainPublishingDialogContext
+{
+  GtkBuilder *builder;
+  GtkBuilder *main_window_builder;
+  GtkTreeView *pseudonym_treeview;
+  GtkTreeSelection *pseudonym_selection;
+  GtkTreeModel *pseudonym_treemodel;
+  GtkWidget *up_button;
+  GtkWidget *down_button;
+  GtkWidget *left_button;
+  GtkWidget *right_button;
+  GtkWidget *delete_button;
+  GtkWidget *edit_button;
+  GtkWidget *execute_button;
+  GtkTreeView *file_info_treeview;
+  GtkTreeSelection *file_info_selection;
+  GtkTreeModel *file_info_treemodel;
+  GtkWindow *master_pubdialog;
+
+  gulong open_directory_handler_id;
+  gulong open_file_handler_id;
+};
+
+void
+GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog * dialog,
+                                            gint response_id,
+                                            struct MainPublishingDialogContext 
*ctx);
+
+static void
+selection_changed_cb (GtkTreeSelection * ts, struct 
MainPublishingDialogContext *ctx);
+
+
 /**
  * Check if two GtkTreeIters refer to the same element.
  *
@@ -53,136 +85,129 @@
   return (0 == ret) ? GNUNET_YES : GNUNET_NO;
 }
 
+static void
+init_ctx (struct MainPublishingDialogContext *ctx)
+{
+  ctx->pseudonym_treeview = GTK_TREE_VIEW (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_pseudonym_tree_view"));
 
+  ctx->up_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_up_button"));
+  ctx->down_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_down_button"));
+  ctx->left_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_left_button"));
+  ctx->right_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_right_button"));
+  ctx->delete_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_delete_button"));
+  ctx->edit_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_edit_button"));
+  ctx->execute_button = GTK_WIDGET (gtk_builder_get_object
+      (ctx->builder, "GNUNET_GTK_master_publish_dialog_execute_button"));
+  ctx->file_info_treeview = GTK_TREE_VIEW (gtk_builder_get_object
+      (ctx->builder, 
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
+
+  ctx->master_pubdialog =
+      GTK_WINDOW (gtk_builder_get_object
+                  (ctx->builder, "GNUNET_GTK_master_publish_dialog"));
+
+  ctx->file_info_selection = gtk_tree_view_get_selection 
(ctx->file_info_treeview);
+  ctx->file_info_treemodel = gtk_tree_view_get_model (ctx->file_info_treeview);
+  ctx->pseudonym_selection = gtk_tree_view_get_selection 
(ctx->pseudonym_treeview);
+  ctx->pseudonym_treemodel = gtk_tree_view_get_model (ctx->pseudonym_treeview);
+
+  g_signal_connect (G_OBJECT (ctx->file_info_selection), "changed",
+                    G_CALLBACK (selection_changed_cb), ctx);
+  g_signal_connect (G_OBJECT (ctx->pseudonym_selection), "changed",
+                    G_CALLBACK (selection_changed_cb), ctx);
+}
+
 /**
  * Update selectivity in the master dialog.
  */
 static void
-update_selectivity (gpointer data)
+update_selectivity (struct MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeModel *ptm;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   GtkTreeIter parent;
   GtkTreeIter pred;
-  GtkWidget *up_button;
-  GtkWidget *down_button;
-  GtkWidget *left_button;
-  GtkWidget *right_button;
-  GtkWidget *delete_button;
-  GtkWidget *edit_button;
-  GtkWidget *execute_button;
   int is_dir;
   struct GNUNET_FS_FileInformation *fip;
   int ns_ok;
   gchar *namespace_id;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_pseudonym_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
   ns_ok = GNUNET_YES;
-  if (TRUE == gtk_tree_selection_get_selected (sel, &ptm, &iter))
+  if (TRUE == gtk_tree_selection_get_selected (ctx->pseudonym_selection, NULL, 
&iter))
   {
-    gtk_tree_model_get (ptm, &iter, 2, &namespace_id, -1);
+    gtk_tree_model_get (ctx->pseudonym_treemodel, &iter, 2, &namespace_id, -1);
     if (namespace_id == NULL)
       ns_ok = GNUNET_NO;
     else
       g_free (namespace_id);
   }
-  up_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog_up_button"));
-  down_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog_down_button"));
-  left_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog_left_button"));
-  right_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog_right_button"));
-  delete_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog_delete_button"));
-  edit_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog_edit_button"));
-  execute_button =
-      GTK_WIDGET (gtk_builder_get_object
-                  (builder, 
"GNUNET_GTK_master_publish_dialog_execute_button"));
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  tm = gtk_tree_view_get_model (tv);
-  if ((gtk_tree_model_get_iter_first (tm, &iter)) && (ns_ok == GNUNET_YES))
-    gtk_widget_set_sensitive (execute_button, TRUE);
+  if ((gtk_tree_model_get_iter_first (ctx->file_info_treemodel, &iter)) && 
(ns_ok == GNUNET_YES))
+    gtk_widget_set_sensitive (ctx->execute_button, TRUE);
   else
-    gtk_widget_set_sensitive (execute_button, FALSE);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+    gtk_widget_set_sensitive (ctx->execute_button, FALSE);
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&iter))
   {
-    gtk_widget_set_sensitive (up_button, FALSE);
-    gtk_widget_set_sensitive (down_button, FALSE);
-    gtk_widget_set_sensitive (left_button, FALSE);
-    gtk_widget_set_sensitive (right_button, FALSE);
-    gtk_widget_set_sensitive (delete_button, FALSE);
-    gtk_widget_set_sensitive (edit_button, FALSE);
+    gtk_widget_set_sensitive (ctx->up_button, FALSE);
+    gtk_widget_set_sensitive (ctx->down_button, FALSE);
+    gtk_widget_set_sensitive (ctx->left_button, FALSE);
+    gtk_widget_set_sensitive (ctx->right_button, FALSE);
+    gtk_widget_set_sensitive (ctx->delete_button, FALSE);
+    gtk_widget_set_sensitive (ctx->edit_button, FALSE);
     return;
   }
-  gtk_widget_set_sensitive (delete_button, TRUE);
-  gtk_widget_set_sensitive (edit_button, TRUE);
+  gtk_widget_set_sensitive (ctx->delete_button, TRUE);
+  gtk_widget_set_sensitive (ctx->edit_button, TRUE);
 
   /* now figure out which move operations are currently legal */
-  GNUNET_assert (TRUE == gtk_tree_selection_get_selected (sel, NULL, &iter));
-  if (TRUE == gtk_tree_model_iter_next (tm, &iter))
+  GNUNET_assert (TRUE == gtk_tree_selection_get_selected 
(ctx->file_info_selection, NULL, &iter));
+  if (TRUE == gtk_tree_model_iter_next (ctx->file_info_treemodel, &iter))
   {
-    gtk_widget_set_sensitive (down_button, TRUE);
+    gtk_widget_set_sensitive (ctx->down_button, TRUE);
   }
   else
   {
-    gtk_widget_set_sensitive (down_button, FALSE);
+    gtk_widget_set_sensitive (ctx->down_button, FALSE);
   }
-  GNUNET_assert (TRUE == gtk_tree_selection_get_selected (sel, NULL, &iter));
-  if (TRUE == gtk_tree_model_iter_parent (tm, &parent, &iter))
+  GNUNET_assert (TRUE == gtk_tree_selection_get_selected 
(ctx->file_info_selection, NULL, &iter));
+  if (TRUE == gtk_tree_model_iter_parent (ctx->file_info_treemodel, &parent, 
&iter))
   {
-    gtk_widget_set_sensitive (left_button, TRUE);
-    GNUNET_assert (TRUE == gtk_tree_model_iter_children (tm, &pred, &parent));
+    gtk_widget_set_sensitive (ctx->left_button, TRUE);
+    GNUNET_assert (TRUE == gtk_tree_model_iter_children 
(ctx->file_info_treemodel, &pred, &parent));
   }
   else
   {
-    gtk_widget_set_sensitive (left_button, FALSE);
-    GNUNET_assert (TRUE == gtk_tree_model_get_iter_first (tm, &pred));
+    gtk_widget_set_sensitive (ctx->left_button, FALSE);
+    GNUNET_assert (TRUE == gtk_tree_model_get_iter_first 
(ctx->file_info_treemodel, &pred));
   }
   /* iterate over 'next' of pred to find out if our
    * predecessor is a directory! */
   is_dir = GNUNET_SYSERR;
-  while (GNUNET_YES != gtk_tree_iter_equals (tm, &pred, &iter))
+  while (GNUNET_YES != gtk_tree_iter_equals (ctx->file_info_treemodel, &pred, 
&iter))
   {
-    gtk_tree_model_get (tm, &pred, 5, &fip, -1);
+    gtk_tree_model_get (ctx->file_info_treemodel, &pred, 5, &fip, -1);
     is_dir = GNUNET_FS_file_information_is_directory (fip);
-    GNUNET_assert (TRUE == gtk_tree_model_iter_next (tm, &pred));
+    GNUNET_assert (TRUE == gtk_tree_model_iter_next (ctx->file_info_treemodel, 
&pred));
   }
   if (GNUNET_YES == is_dir)
   {
-    gtk_widget_set_sensitive (right_button, TRUE);
+    gtk_widget_set_sensitive (ctx->right_button, TRUE);
   }
   else
   {
-    gtk_widget_set_sensitive (right_button, FALSE);
+    gtk_widget_set_sensitive (ctx->right_button, FALSE);
   }
   if (GNUNET_SYSERR != is_dir)
   {
-    gtk_widget_set_sensitive (up_button, TRUE);
+    gtk_widget_set_sensitive (ctx->up_button, TRUE);
   }
   else
   {
-    gtk_widget_set_sensitive (up_button, FALSE);
+    gtk_widget_set_sensitive (ctx->up_button, FALSE);
   }
 }
 
@@ -196,7 +221,7 @@
  * @param iter parent entry, or NULL for top-level addition
  */
 static void
-add_file_at_iter (gpointer data, const char *filename,
+add_file_at_iter (struct MainPublishingDialogContext *ctx, const char 
*filename,
                   const struct GNUNET_FS_BlockOptions *bo, int do_index,
                   GtkTreeIter * iter)
 {
@@ -207,15 +232,11 @@
   const char *short_fn;
   struct GNUNET_CONTAINER_MetaData *meta;
   struct GNUNET_FS_Uri *ksk_uri;
-  GtkTreeStore *ts;
   GtkTreeIter pos;
   char *file_size_fancy;
   const char *ss;
   struct stat sbuf;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-
   if (0 != STAT (filename, &sbuf))
     return;
   if (S_ISDIR (sbuf.st_mode))
@@ -230,9 +251,6 @@
       return;
     }
   }
-  ts = GTK_TREE_STORE (gtk_builder_get_object
-                       (builder,
-                        "GNUNET_GTK_file_sharing_publishing_tree_store"));
 
   meta = GNUNET_CONTAINER_meta_data_create ();
   GNUNET_FS_meta_data_extract_from_file (meta, filename,
@@ -247,9 +265,9 @@
                                      EXTRACTOR_METAFORMAT_UTF8, "text/plain",
                                      short_fn, strlen (short_fn) + 1);
   ksk_uri = GNUNET_FS_uri_ksk_create_from_meta_data (meta);
-  gtk_tree_store_insert_before (ts, &pos, iter, NULL);
-  path = gtk_tree_model_get_path (GTK_TREE_MODEL (ts), &pos);
-  row_reference = gtk_tree_row_reference_new (GTK_TREE_MODEL (ts), path);
+  gtk_tree_store_insert_before (GTK_TREE_STORE (ctx->file_info_treemodel), 
&pos, iter, NULL);
+  path = gtk_tree_model_get_path (ctx->file_info_treemodel, &pos);
+  row_reference = gtk_tree_row_reference_new (ctx->file_info_treemodel, path);
   gtk_tree_path_free (path);
   fi = GNUNET_FS_file_information_create_from_file (GNUNET_FS_GTK_get_fs_handle
                                                     (), row_reference, 
filename,
@@ -261,14 +279,14 @@
     file_size_fancy = GNUNET_strdup (MARKER_DIR_FILE_SIZE);
   else
     file_size_fancy = GNUNET_STRINGS_byte_size_fancy (file_size);
-  gtk_tree_store_set (ts, &pos, 0, file_size_fancy, 1, (gboolean) do_index, 2,
+  gtk_tree_store_set (GTK_TREE_STORE (ctx->file_info_treemodel), &pos, 0, 
file_size_fancy, 1, (gboolean) do_index, 2,
                       short_fn, 3, (guint) bo->anonymity_level, 4,
                       (guint) bo->content_priority, 5, fi,
                      6, (guint64) bo->expiration_time.abs_value,
                      7, (guint) bo->replication_level,
                      -1);
   GNUNET_free (file_size_fancy);
-  update_selectivity (data);
+  update_selectivity (ctx);
 }
 
 
@@ -281,7 +299,7 @@
  * @param pos iterator to set to the location of the new element
  */
 static void
-create_dir_at_iter (gpointer data, const char *name,
+create_dir_at_iter (struct MainPublishingDialogContext *ctx, const char *name,
                     const struct GNUNET_FS_BlockOptions *bo, GtkTreeIter * 
iter,
                     GtkTreeIter * pos)
 {
@@ -289,35 +307,27 @@
   GtkTreeRowReference *row_reference;
   GtkTreePath *path;
   struct GNUNET_CONTAINER_MetaData *meta;
-  GtkTreeStore *ts;
-  GtkBuilder *builder;
 
-
-  builder = GTK_BUILDER (data);
-
-  ts = GTK_TREE_STORE (gtk_builder_get_object
-                       (builder,
-                        "GNUNET_GTK_file_sharing_publishing_tree_store"));
   meta = GNUNET_CONTAINER_meta_data_create ();
   GNUNET_FS_meta_data_make_directory (meta);
   GNUNET_CONTAINER_meta_data_insert (meta, "<gnunet-gtk>",
                                      EXTRACTOR_METATYPE_FILENAME,
                                      EXTRACTOR_METAFORMAT_UTF8, "text/plain",
                                      name, strlen (name) + 1);
-  gtk_tree_store_insert_before (ts, pos, iter, NULL);
-  path = gtk_tree_model_get_path (GTK_TREE_MODEL (ts), pos);
-  row_reference = gtk_tree_row_reference_new (GTK_TREE_MODEL (ts), path);
+  gtk_tree_store_insert_before (GTK_TREE_STORE (ctx->file_info_treemodel), 
pos, iter, NULL);
+  path = gtk_tree_model_get_path (ctx->file_info_treemodel, pos);
+  row_reference = gtk_tree_row_reference_new (ctx->file_info_treemodel, path);
   gtk_tree_path_free (path);
   fi = GNUNET_FS_file_information_create_empty_directory
       (GNUNET_FS_GTK_get_fs_handle (), row_reference, NULL, meta, bo);
   GNUNET_CONTAINER_meta_data_destroy (meta);
-  gtk_tree_store_set (ts, pos, 0, MARKER_DIR_FILE_SIZE, 1, (gboolean) 
GNUNET_NO,
+  gtk_tree_store_set (GTK_TREE_STORE (ctx->file_info_treemodel), pos, 0, 
MARKER_DIR_FILE_SIZE, 1, (gboolean) GNUNET_NO,
                       2, name, 3, (guint) bo->anonymity_level, 4,
                       (guint) bo->content_priority, 5, fi,
                      6, (guint64) bo->expiration_time.abs_value,
                      7, (guint) bo->replication_level,
                      -1);
-  update_selectivity (data);
+  update_selectivity (ctx);
 }
 
 
@@ -379,9 +389,9 @@
   GtkTreeIter *parent;
 
   /**
-   * Tree store to manipulate.
+   * Master publication dialog context (used to access treestore)
    */
-  GtkTreeStore *ts;
+  struct MainPublishingDialogContext *ctx;
 
   /**
    * Map from the hash over the keyword to an 'struct KeywordCounter'
@@ -486,7 +496,7 @@
                                      EXTRACTOR_METAFORMAT_UTF8, "text/plain",
                                      short_fn, strlen (short_fn) + 1);
 
-  gtk_tree_store_insert_before (adc->ts, &pd->iter, adc->parent, NULL);
+  gtk_tree_store_insert_before (GTK_TREE_STORE 
(adc->ctx->file_info_treemodel), &pd->iter, adc->parent, NULL);
 
   GNUNET_CRYPTO_hash (filename, strlen (filename), &hc);
   GNUNET_CONTAINER_multihashmap_put (adc->metamap, &hc, pd,
@@ -616,7 +626,7 @@
 
   GNUNET_CRYPTO_hash (filename, strlen (filename), &hc);
   pd = GNUNET_CONTAINER_multihashmap_get (adc->metamap, &hc);
-  add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index,
+  add_entry_to_ts (GTK_TREE_STORE (adc->ctx->file_info_treemodel), &pd->iter, 
filename, &adc->bo, adc->do_index,
                    pd->ksk_uri, adc->exclude_ksk, pd->meta);
   GNUNET_CONTAINER_multihashmap_remove (adc->metamap, &hc, pd);
   GNUNET_free (pd);
@@ -726,7 +736,7 @@
     adc->keywordcounter = GNUNET_CONTAINER_multihashmap_create (1024);
     adc->dir_entry_count = 0;
     pd = GNUNET_malloc (sizeof (struct PublishData));
-    gtk_tree_store_insert_before (adc->ts, &pd->iter, parent, NULL);
+    gtk_tree_store_insert_before (GTK_TREE_STORE 
(adc->ctx->file_info_treemodel), &pd->iter, parent, NULL);
     adc->parent = &pd->iter;
     GNUNET_DISK_directory_scan (filename, &scan_directory, adc);
     pd->ksk_uri = process_keywords (adc);
@@ -771,7 +781,7 @@
     else
     {
       GNUNET_assert (kcm == NULL);
-      add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index,
+      add_entry_to_ts (GTK_TREE_STORE (adc->ctx->file_info_treemodel), 
&pd->iter, filename, &adc->bo, adc->do_index,
                        pd->ksk_uri, NULL, pd->meta);
     }
     GNUNET_FS_uri_destroy (adc->exclude_ksk);
@@ -785,6 +795,12 @@
 }
 
 
+static void
+add_dir_finish (struct AddDirContext *scan_ctx)
+{
+  GNUNET_free (scan_ctx);
+}
+
 /**
  * Add a directory to the tree model.
  *
@@ -793,15 +809,12 @@
  * @param do_index should we index?
  */
 static void
-add_dir (gpointer data, const char *filename,
+add_dir (struct MainPublishingDialogContext *ctx, const char *filename,
          const struct GNUNET_FS_BlockOptions *bo, int do_index)
 {
   struct stat sbuf;
-  struct AddDirContext scan_ctx;
-  GtkBuilder *builder;
+  struct AddDirContext *scan_ctx;
 
-  builder = GTK_BUILDER (data);
-
   if (0 != STAT (filename, &sbuf))
     return;
   if (!S_ISDIR (sbuf.st_mode))
@@ -809,14 +822,12 @@
     GNUNET_break (0);
     return;
   }
-  memset (&scan_ctx, 0, sizeof (scan_ctx));
-  scan_ctx.bo = *bo;
-  scan_ctx.do_index = do_index;
-  scan_ctx.ts =
-      GTK_TREE_STORE (gtk_builder_get_object
-                      (builder,
-                       "GNUNET_GTK_file_sharing_publishing_tree_store"));
-  scan_directory (&scan_ctx, filename);
+  scan_ctx = GNUNET_malloc (sizeof (struct AddDirContext));
+  scan_ctx->bo = *bo;
+  scan_ctx->do_index = do_index;
+  scan_ctx->ctx = ctx;
+  scan_directory (scan_ctx, filename);
+  add_dir_finish (scan_ctx);
 }
 
 
@@ -824,9 +835,9 @@
 
 
 static void
-selection_changed_cb (GtkTreeSelection * ts, gpointer user_data)
+selection_changed_cb (GtkTreeSelection * ts, struct 
MainPublishingDialogContext *ctx)
 {
-  update_selectivity (user_data);
+  update_selectivity (ctx);
 }
 
 
@@ -846,11 +857,10 @@
  * Move an entry in the tree.
  */
 static void
-move_entry (gpointer data, GtkTreeModel * tm, GtkTreeIter * old,
+move_entry (struct MainPublishingDialogContext *ctx, GtkTreeModel * tm, 
GtkTreeIter * old,
             GtkTreeIter * newpos, int dsel)
 {
   struct GNUNET_FS_FileInformation *fip;
-  GtkTreeView *tv;
   gint do_index;
   gchar *short_fn;
   guint anonymity_level;
@@ -859,14 +869,11 @@
   guint64 expiration_time_abs;
   char *fsf;
   GtkTreePath *path;
-  GtkTreeSelection *sel;
   GtkTreeIter child;
   GtkTreeIter cnewpos;
   GtkTreeRowReference *rr;
   GtkTreeRowReference *rr2;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
   gtk_tree_model_get (tm, old, 0, &fsf, 1, &do_index, 2, &short_fn, 3,
                       &anonymity_level, 4, &priority, 5, &fip, 
                      6, &expiration_time_abs, 7, &replication_level, -1);
@@ -875,14 +882,8 @@
                       5, fip, 
                      6, expiration_time_abs,
                      7, replication_level, -1);
-  sel = NULL;
-  tv = NULL;
   if (dsel == GNUNET_YES)
   {
-    tv = GTK_TREE_VIEW (gtk_builder_get_object
-                        (builder,
-                         
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
-    sel = gtk_tree_view_get_selection (tv);
     path = gtk_tree_model_get_path (tm, newpos);
     rr = gtk_tree_row_reference_new (tm, path);
     gtk_tree_path_free (path);
@@ -900,7 +901,7 @@
       gtk_tree_path_free (path);
       gtk_tree_store_insert_before (GTK_TREE_STORE (tm), &cnewpos, newpos,
                                     NULL);
-      move_entry (data, tm, &child, &cnewpos, GNUNET_NO);
+      move_entry (ctx, tm, &child, &cnewpos, GNUNET_NO);
       path = gtk_tree_row_reference_get_path (rr2);
       gtk_tree_row_reference_free (rr2);
       GNUNET_assert (TRUE == gtk_tree_model_get_iter (tm, &child, path));
@@ -914,12 +915,12 @@
   {
     path = gtk_tree_row_reference_get_path (rr);
     gtk_tree_row_reference_free (rr);
-    gtk_tree_view_expand_to_path (tv, path);
+    gtk_tree_view_expand_to_path (ctx->file_info_treeview, path);
     GNUNET_assert (TRUE == gtk_tree_model_get_iter (tm, newpos, path));
     gtk_tree_path_free (path);
-    gtk_tree_selection_select_iter (sel, newpos);
+    gtk_tree_selection_select_iter (ctx->file_info_selection, newpos);
   }
-  update_selectivity (data);
+  update_selectivity (ctx);
 }
 
 
@@ -929,24 +930,18 @@
  */
 void GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer_edited_cb
     (GtkCellRendererText * renderer, gchar * cpath, gchar * new_text,
-     gpointer user_data)
+     struct MainPublishingDialogContext *ctx)
 {
   GtkTreeIter iter;
-  GtkTreeStore *ts;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (user_data);
-  ts = GTK_TREE_STORE (gtk_builder_get_object
-                       (builder, "GNUNET_GTK_pseudonym_tree_store"));
-
   if (TRUE !=
-      gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (ts), &iter, cpath))
+      gtk_tree_model_get_iter_from_string (ctx->pseudonym_treemodel, &iter, 
cpath))
   {
     GNUNET_break (0);
     return;
   }
-  gtk_tree_store_set (ts, &iter, 5, new_text, -1);
-  update_selectivity (user_data);
+  gtk_tree_store_set (GTK_TREE_STORE (ctx->pseudonym_treemodel), &iter, 5, 
new_text, -1);
+  update_selectivity (ctx);
 }
 
 
@@ -956,150 +951,115 @@
  */
 void GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer_edited_cb
     (GtkCellRendererText * renderer, gchar * cpath, gchar * new_text,
-     gpointer user_data)
+     struct MainPublishingDialogContext *ctx)
 {
   GtkTreeIter iter;
-  GtkTreeStore *ts;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (user_data);
-  ts = GTK_TREE_STORE (gtk_builder_get_object
-                       (builder, "GNUNET_GTK_pseudonym_tree_store"));
-
   if (TRUE !=
-      gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (ts), &iter, cpath))
+      gtk_tree_model_get_iter_from_string (ctx->pseudonym_treemodel, &iter, 
cpath))
   {
     GNUNET_break (0);
     return;
   }
-  gtk_tree_store_set (ts, &iter, 2, new_text, -1);
-  update_selectivity (user_data);
+  gtk_tree_store_set (GTK_TREE_STORE (ctx->pseudonym_treemodel), &iter, 2, 
new_text, -1);
+  update_selectivity (ctx);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_right_button_clicked_cb (GtkWidget * dummy,
-                                                          gpointer data)
+                                                          struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   GtkTreeIter parent;
   GtkTreeIter pred;
   GtkTreeIter prev;
   GtkTreeIter pos;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_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->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  if (TRUE == gtk_tree_model_iter_parent (tm, &parent, &iter))
+  if (TRUE == gtk_tree_model_iter_parent (ctx->file_info_treemodel, &parent, 
&iter))
   {
-    GNUNET_assert (TRUE == gtk_tree_model_iter_children (tm, &pred, &parent));
+    GNUNET_assert (TRUE == gtk_tree_model_iter_children 
(ctx->file_info_treemodel, &pred, &parent));
   }
-  else if (TRUE != gtk_tree_model_get_iter_first (tm, &pred))
+  else if (TRUE != gtk_tree_model_get_iter_first (ctx->file_info_treemodel, 
&pred))
   {
     GNUNET_break (0);
     return;
   }
   /* iterate over 'next' of pred to find out who our predecessor is! */
   memset (&prev, 0, sizeof (GtkTreeIter));
-  while (GNUNET_YES != gtk_tree_iter_equals (tm, &pred, &iter))
+  while (GNUNET_YES != gtk_tree_iter_equals (ctx->file_info_treemodel, &pred, 
&iter))
   {
     prev = pred;
-    GNUNET_assert (TRUE == gtk_tree_model_iter_next (tm, &pred));
+    GNUNET_assert (TRUE == gtk_tree_model_iter_next (ctx->file_info_treemodel, 
&pred));
   }
-  gtk_tree_store_insert_before (GTK_TREE_STORE (tm), &pos, &prev, NULL);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+  gtk_tree_store_insert_before (GTK_TREE_STORE (ctx->file_info_treemodel), 
&pos, &prev, NULL);
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  move_entry (data, tm, &iter, &pos, GNUNET_YES);
-  remove_old_entry (GTK_TREE_STORE (tm), &iter);
+  move_entry (ctx, ctx->file_info_treemodel, &iter, &pos, GNUNET_YES);
+  remove_old_entry (GTK_TREE_STORE (ctx->file_info_treemodel), &iter);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_left_button_clicked_cb (GtkWidget * dummy,
-                                                         gpointer data)
+                                                         struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   GtkTreeIter parent;
   GtkTreeIter pos;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
 
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_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->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  if (TRUE != gtk_tree_model_iter_parent (tm, &parent, &iter))
+  if (TRUE != gtk_tree_model_iter_parent (ctx->file_info_treemodel, &parent, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  gtk_tree_store_insert_after (GTK_TREE_STORE (tm), &pos, NULL, &parent);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+  gtk_tree_store_insert_after (GTK_TREE_STORE (ctx->file_info_treemodel), 
&pos, NULL, &parent);
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  move_entry (data, tm, &iter, &pos, GNUNET_YES);
-  remove_old_entry (GTK_TREE_STORE (tm), &iter);
+  move_entry (ctx, ctx->file_info_treemodel, &iter, &pos, GNUNET_YES);
+  remove_old_entry (GTK_TREE_STORE (ctx->file_info_treemodel), &iter);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_up_button_clicked_cb (GtkWidget * dummy,
-                                                       gpointer data)
+                                                       struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   GtkTreeIter parent;
   GtkTreeIter pred;
   GtkTreeIter prev;
   GtkTreeIter *pprev;
   GtkTreeIter pos;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_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->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  if (TRUE == gtk_tree_model_iter_parent (tm, &parent, &iter))
+  if (TRUE == gtk_tree_model_iter_parent (ctx->file_info_treemodel, &parent, 
&iter))
   {
-    GNUNET_assert (TRUE == gtk_tree_model_iter_children (tm, &pred, &parent));
+    GNUNET_assert (TRUE == gtk_tree_model_iter_children 
(ctx->file_info_treemodel, &pred, &parent));
     pprev = &parent;
   }
-  else if (TRUE == gtk_tree_model_get_iter_first (tm, &pred))
+  else if (TRUE == gtk_tree_model_get_iter_first (ctx->file_info_treemodel, 
&pred))
   {
     pprev = NULL;
   }
@@ -1109,80 +1069,61 @@
     return;
   }
   /* iterate over 'next' of pred to find out who our predecessor is! */
-  while (GNUNET_YES != gtk_tree_iter_equals (tm, &pred, &iter))
+  while (GNUNET_YES != gtk_tree_iter_equals (ctx->file_info_treemodel, &pred, 
&iter))
   {
     prev = pred;
     pprev = &prev;
-    GNUNET_assert (TRUE == gtk_tree_model_iter_next (tm, &pred));
+    GNUNET_assert (TRUE == gtk_tree_model_iter_next (ctx->file_info_treemodel, 
&pred));
   }
-  gtk_tree_store_insert_before (GTK_TREE_STORE (tm), &pos, NULL, pprev);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+  gtk_tree_store_insert_before (GTK_TREE_STORE (ctx->file_info_treemodel), 
&pos, NULL, pprev);
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  move_entry (data, tm, &iter, &pos, GNUNET_YES);
-  remove_old_entry (GTK_TREE_STORE (tm), &iter);
+  move_entry (ctx, ctx->file_info_treemodel, &iter, &pos, GNUNET_YES);
+  remove_old_entry (GTK_TREE_STORE (ctx->file_info_treemodel), &iter);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_down_button_clicked_cb (GtkWidget * dummy,
-                                                         gpointer data)
+                                                         struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   GtkTreeIter next;
   GtkTreeIter pos;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_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->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &next))
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&next))
   {
     GNUNET_break (0);
     return;
   }
-  GNUNET_assert (TRUE == gtk_tree_model_iter_next (tm, &next));
-  gtk_tree_store_insert_after (GTK_TREE_STORE (tm), &pos, NULL, &next);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter))
+  GNUNET_assert (TRUE == gtk_tree_model_iter_next (ctx->file_info_treemodel, 
&next));
+  gtk_tree_store_insert_after (GTK_TREE_STORE (ctx->file_info_treemodel), 
&pos, NULL, &next);
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  move_entry (data, tm, &iter, &pos, GNUNET_YES);
-  remove_old_entry (GTK_TREE_STORE (tm), &iter);
+  move_entry (ctx, ctx->file_info_treemodel, &iter, &pos, GNUNET_YES);
+  remove_old_entry (GTK_TREE_STORE (ctx->file_info_treemodel), &iter);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_new_button_clicked_cb (GtkWidget * dummy,
-                                                        gpointer data)
+                                                        struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   GtkTreeIter pos;
   struct GNUNET_FS_BlockOptions bo;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
   /* FIXME: consider opening a dialog to get
    * anonymity, priority and expiration prior
    * to calling this function (currently we
@@ -1193,34 +1134,29 @@
   bo.expiration_time =
       GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_YEARS);
   bo.replication_level = 1;
-  if (TRUE != gtk_tree_selection_get_selected (sel, NULL, &iter))
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&iter))
   {
-    create_dir_at_iter (data, "unnamed/", &bo, NULL, &pos);
+    create_dir_at_iter (ctx, "unnamed/", &bo, NULL, &pos);
     return;
   }
-  create_dir_at_iter (data, "unnamed/", &bo, &iter, &pos);
+  create_dir_at_iter (ctx, "unnamed/", &bo, &iter, &pos);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_add_button_clicked_cb (GtkWidget * dummy,
-                                                        gpointer data)
+                                                        struct 
MainPublishingDialogContext *ctx)
 {
   GtkWidget *ad;
-  GtkBuilder *builder;
-  GtkWindow *master_pubdialog;
 
-  builder = GTK_BUILDER (data);
-
   ad = GTK_WIDGET (gtk_builder_get_object
-                   (builder, "GNUNET_GTK_publish_file_dialog"));
-  GNUNET_FS_GTK_setup_expiration_year_adjustment (builder);
+                   (ctx->main_window_builder, 
"GNUNET_GTK_publish_file_dialog"));
+  GNUNET_FS_GTK_setup_expiration_year_adjustment (ctx->main_window_builder);
 
-  master_pubdialog =
-      GTK_WINDOW (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog"));
-  gtk_window_set_transient_for (GTK_WINDOW (ad), master_pubdialog);
+  ctx->open_file_handler_id = g_signal_connect (G_OBJECT (ad), "response", 
G_CALLBACK (GNUNET_GTK_publish_file_dialog_response_cb), ctx);
 
+  gtk_window_set_transient_for (GTK_WINDOW (ad), ctx->master_pubdialog);
+
   gtk_window_present (GTK_WINDOW (ad));
 }
 
@@ -1265,14 +1201,9 @@
 
 void
 GNUNET_GTK_master_publish_dialog_edit_button_clicked_cb (GtkWidget * dummy,
-                                                         gpointer data)
+                                                         struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeSelection *sel;
   struct EditPublishContext *cbargs;
-  GtkBuilder *builder;
-  GtkWindow *master_pubdialog;
   gint do_index;
   char *short_fn;
   guint anonymity_level;
@@ -1283,28 +1214,18 @@
   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 
(ctx->main_window_builder, "main_window_search_anonymity_liststore"));
 
-  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 =
-      GTK_WINDOW (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog"));
-  sel = gtk_tree_view_get_selection (tv);
-  if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &cbargs->iter))
+  cbargs->tm = ctx->file_info_treemodel;
+  if (TRUE != gtk_tree_selection_get_selected (ctx->file_info_selection, NULL, 
&cbargs->iter))
   {
     GNUNET_break (0);
     GNUNET_free (cbargs);
     return;
   }
 
-  gtk_tree_model_get (tm, &cbargs->iter, 1, &do_index, 2, &short_fn, 3,
+  gtk_tree_model_get (ctx->file_info_treemodel, &cbargs->iter, 1, &do_index, 
2, &short_fn, 3,
                       &anonymity_level, 4, &priority, 5, &fip, 
                      6, &abs_etime,
                      7, &replication_level,
@@ -1314,7 +1235,7 @@
   bo.expiration_time.abs_value = (uint64_t) abs_etime;
   bo.replication_level = replication_level;
 
-  GNUNET_FS_GTK_edit_publish_dialog (master_pubdialog, do_index,
+  GNUNET_FS_GTK_edit_publish_dialog (ctx->master_pubdialog, do_index,
                                      short_fn, bo, fip, TRUE, anon_liststore,
                                      &master_publish_edit_publish_dialog_cb,
                                      cbargs);
@@ -1346,36 +1267,27 @@
 
 void
 GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb (GtkWidget * dummy,
-                                                           gpointer data)
+                                                           struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeModel *tm;
-  GtkTreeSelection *sel;
   GtkTreeIter iter;
   struct GNUNET_FS_FileInformation *fip;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (data);
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_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->file_info_selection, NULL, 
&iter))
   {
     GNUNET_break (0);
     return;
   }
-  gtk_tree_model_get (tm, &iter, 5, &fip, -1);
+  gtk_tree_model_get (ctx->file_info_treemodel, &iter, 5, &fip, -1);
   GNUNET_FS_file_information_destroy (fip, &free_fi_row_reference, NULL);
-  gtk_tree_store_remove (GTK_TREE_STORE (tm), &iter);
-  update_selectivity (data);
+  gtk_tree_store_remove (GTK_TREE_STORE (ctx->file_info_treemodel), &iter);
+  update_selectivity (ctx);
 }
 
 
 void
 GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog,
                                                  gint response_id,
-                                                 gpointer user_data)
+                                                 struct 
MainPublishingDialogContext *ctx)
 {
   char *filename;
   int do_index;
@@ -1384,7 +1296,11 @@
   GtkWidget *ad;
   GtkBuilder *builder;
 
-  builder = GTK_BUILDER (user_data);
+  if (g_signal_handler_is_connected (G_OBJECT (dialog), 
ctx->open_directory_handler_id))
+    g_signal_handler_disconnect (G_OBJECT (dialog), 
ctx->open_directory_handler_id);
+  ctx->open_directory_handler_id = 0;
+
+  builder = ctx->main_window_builder;
   ad = GTK_WIDGET (gtk_builder_get_object
                    (builder, "GNUNET_GTK_publish_directory_dialog"));
   if (response_id == -5)
@@ -1415,9 +1331,9 @@
                                         
"GNUNET_GTK_publish_directory_dialog_do_index_checkbutton")));
 
     /* FIXME: open progress dialog here... */
-    add_dir (user_data, filename, &bo, do_index);
+    add_dir (ctx, filename, &bo, do_index);
     g_free (filename);
-    update_selectivity (user_data);
+    update_selectivity (ctx);
   }
   gtk_widget_hide (ad);
 }
@@ -1425,22 +1341,20 @@
 
 void
 GNUNET_GTK_master_publish_dialog_open_button_clicked_cb (GtkWidget * dummy,
-                                                         gpointer data)
+                                                         struct 
MainPublishingDialogContext *ctx)
 {
   GtkWidget *ad;
   GtkBuilder *builder;
-  GtkWindow *master_pubdialog;
 
-  builder = GTK_BUILDER (data);
+  builder = ctx->main_window_builder;
   GNUNET_FS_GTK_setup_expiration_year_adjustment (builder);
   ad = GTK_WIDGET (gtk_builder_get_object
                    (builder, "GNUNET_GTK_publish_directory_dialog"));
 
-  master_pubdialog =
-      GTK_WINDOW (gtk_builder_get_object
-                  (builder, "GNUNET_GTK_master_publish_dialog"));
-  gtk_window_set_transient_for (GTK_WINDOW (ad), master_pubdialog);
+  ctx->open_directory_handler_id = g_signal_connect (G_OBJECT (ad), 
"response", G_CALLBACK (GNUNET_GTK_publish_directory_dialog_response_cb), ctx);
 
+  gtk_window_set_transient_for (GTK_WINDOW (ad), ctx->master_pubdialog);
+
   gtk_window_present (GTK_WINDOW (ad));
 }
 
@@ -1686,63 +1600,25 @@
 
 void
 GNUNET_GTK_master_publish_dialog_realize_cb (GtkWidget * widget,
-                                             gpointer user_data)
+                                             struct 
MainPublishingDialogContext *ctx)
 {
-  GtkTreeView *tv;
-  GtkTreeSelection *sel;
-  GtkBuilder *builder;
-
-  builder = GTK_BUILDER (user_data);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  g_signal_connect (G_OBJECT (sel), "changed",
-                    G_CALLBACK (selection_changed_cb), user_data);
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_pseudonym_tree_view"));
-  sel = gtk_tree_view_get_selection (tv);
-  g_signal_connect (G_OBJECT (sel), "changed",
-                    G_CALLBACK (selection_changed_cb), user_data);
 }
 
 
 static void
-hide_master_publish_dialog (gpointer user_data, gint ret)
+hide_master_publish_dialog (struct MainPublishingDialogContext *ctx, gint ret)
 {
-  GtkTreeView *tv, *ptv;
-  GtkTreeSelection *sel;
-  GtkTreeModel *tm, *ptm;
   GtkTreeIter iter;
   gpointer namespace;
   gchar *namespace_id;
   gchar *namespace_uid;
   struct GNUNET_FS_FileInformation *fi;
-  GtkWidget *ad;
-  GtkBuilder *builder;
 
-  builder = GTK_BUILDER (user_data);
-  ad = GTK_WIDGET (gtk_builder_get_object
-                   (builder, "GNUNET_GTK_master_publish_dialog"));
-  ptv =
-      GTK_TREE_VIEW (gtk_builder_get_object
-                     (builder,
-                      "GNUNET_GTK_master_publish_dialog_pseudonym_tree_view"));
-  sel = gtk_tree_view_get_selection (ptv);
-  ptm = gtk_tree_view_get_model (ptv);
-
-  tv = GTK_TREE_VIEW (gtk_builder_get_object
-                      (builder,
-                       
"GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
-  tm = gtk_tree_view_get_model (tv);
-
   if (ret == GTK_RESPONSE_OK)
   {
-    if (TRUE == gtk_tree_selection_get_selected (sel, &ptm, &iter))
+    if (TRUE == gtk_tree_selection_get_selected (ctx->file_info_selection, 
NULL, &iter))
     {
-      gtk_tree_model_get (ptm, &iter, 1, &namespace, 2, &namespace_id, 5,
+      gtk_tree_model_get (ctx->pseudonym_treemodel, &iter, 1, &namespace, 2, 
&namespace_id, 5,
                           &namespace_uid, -1);
     }
     else
@@ -1751,65 +1627,65 @@
       namespace_id = NULL;
       namespace_uid = NULL;
     }
-    if (gtk_tree_model_get_iter_first (tm, &iter))
+    if (gtk_tree_model_get_iter_first (ctx->file_info_treemodel, &iter))
       do
       {
-        fi = get_file_information (tm, &iter);
+        fi = get_file_information (ctx->file_info_treemodel, &iter);
         /* FIXME: should we convert namespace id and uid from UTF8? */
         GNUNET_FS_publish_start (GNUNET_FS_GTK_get_fs_handle (), fi, namespace,
                                  namespace_id, namespace_uid,
                                  GNUNET_FS_PUBLISH_OPTION_NONE);
       }
-      while (gtk_tree_model_iter_next (tm, &iter));
+      while (gtk_tree_model_iter_next (ctx->file_info_treemodel, &iter));
     g_free (namespace_id);
     g_free (namespace_uid);
   }
 
   /* free state from 'ptm' */
-  if (TRUE == gtk_tree_model_get_iter_first (ptm, &iter))
+  if (TRUE == gtk_tree_model_get_iter_first (ctx->pseudonym_treemodel, &iter))
     do
     {
-      free_pseudonym_tree_store (ptm, &iter);
+      free_pseudonym_tree_store (ctx->pseudonym_treemodel, &iter);
     }
-    while (TRUE == gtk_tree_model_iter_next (ptm, &iter));
-  gtk_tree_store_clear (GTK_TREE_STORE (ptm));
+    while (TRUE == gtk_tree_model_iter_next (ctx->pseudonym_treemodel, &iter));
+  gtk_tree_store_clear (GTK_TREE_STORE (ctx->pseudonym_treemodel));
 
   /* free state from 'tm' */
-  if (TRUE == gtk_tree_model_get_iter_first (tm, &iter))
+  if (TRUE == gtk_tree_model_get_iter_first (ctx->file_info_treemodel, &iter))
     do
     {
-      free_file_information_tree_store (tm, &iter);
+      free_file_information_tree_store (ctx->file_info_treemodel, &iter);
     }
-    while (TRUE == gtk_tree_model_iter_next (tm, &iter));
-  gtk_tree_store_clear (GTK_TREE_STORE (tm));
-  gtk_widget_hide (ad);
-  /* FIXME: doesn't this leak everything (builder + window)?
-   * I think we need to unref the builder here! */
+    while (TRUE == gtk_tree_model_iter_next (ctx->file_info_treemodel, &iter));
+  gtk_tree_store_clear (GTK_TREE_STORE (ctx->file_info_treemodel));
+  gtk_widget_destroy (GTK_WIDGET (ctx->master_pubdialog));
+  gtk_object_unref (GTK_OBJECT (ctx->builder));
+  GNUNET_free (ctx);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_execute_button_clicked_cb (GtkButton * button,
-                                                            gpointer user_data)
+                                                            struct 
MainPublishingDialogContext *ctx)
 {
-  hide_master_publish_dialog (user_data, GTK_RESPONSE_OK);
+  hide_master_publish_dialog (ctx, GTK_RESPONSE_OK);
 }
 
 
 void
 GNUNET_GTK_master_publish_dialog_cancel_button_clicked_cb (GtkButton * button,
-                                                           gpointer user_data)
+                                                           struct 
MainPublishingDialogContext *ctx)
 {
-  hide_master_publish_dialog (user_data, GTK_RESPONSE_CANCEL);
+  hide_master_publish_dialog (ctx, GTK_RESPONSE_CANCEL);
 }
 
 
 gboolean
 GNUNET_GTK_master_publish_dialog_delete_event_cb (GtkWidget * widget,
                                                   GdkEvent * event,
-                                                  gpointer user_data)
+                                                  struct 
MainPublishingDialogContext *ctx)
 {
-  hide_master_publish_dialog (user_data, GTK_RESPONSE_CANCEL);
+  hide_master_publish_dialog (ctx, GTK_RESPONSE_CANCEL);
   return TRUE;
 }
 
@@ -1817,7 +1693,7 @@
 void
 GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog * dialog,
                                             gint response_id,
-                                            gpointer user_data)
+                                            struct MainPublishingDialogContext 
*ctx)
 {
   char *filename;
   struct GNUNET_FS_BlockOptions bo;
@@ -1825,8 +1701,12 @@
   GtkSpinButton *sb;
   GtkWidget *ad;
 
-  GtkBuilder *builder = GTK_BUILDER (user_data);
+  GtkBuilder *builder = ctx->main_window_builder;
 
+  if (g_signal_handler_is_connected (G_OBJECT (dialog), 
ctx->open_file_handler_id))
+    g_signal_handler_disconnect (G_OBJECT (dialog), ctx->open_file_handler_id);
+  ctx->open_file_handler_id = 0;
+
   ad = GTK_WIDGET (gtk_builder_get_object
                    (builder, "GNUNET_GTK_publish_file_dialog"));
 
@@ -1859,9 +1739,9 @@
                                         
"GNUNET_GTK_publish_file_dialog_do_index_checkbutton")));
 
     filename = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER 
(ad));
-    add_file_at_iter (user_data, filename, &bo, do_index, NULL);
+    add_file_at_iter (ctx, filename, &bo, do_index, NULL);
     g_free (filename);
-    update_selectivity (user_data);
+    update_selectivity (ctx);
   }
   else
   {
@@ -1874,23 +1754,24 @@
 /**
  */
 void
-GNUNET_GTK_main_menu_file_publish_activate_cb (GtkWidget * dummy, gpointer 
data)
+GNUNET_GTK_main_menu_file_publish_activate_cb (GtkWidget * dummy, gpointer 
user_data)
 {
-  GtkWidget *ad;
-  GtkTreeStore *ts;
-  GtkBuilder *builder;
+  struct MainPublishingDialogContext *ctx;
 
-  builder = GTK_BUILDER (data);
-  ad = GTK_WIDGET (gtk_builder_get_object
-                   (builder, "GNUNET_GTK_master_publish_dialog"));
-  if (!gtk_widget_get_visible (ad))
+  ctx = GNUNET_malloc (sizeof (struct MainPublishingDialogContext));
+  ctx->builder = GNUNET_GTK_get_new_builder 
("gnunet_fs_gtk_publish_dialog.glade", ctx);
+
+  if (ctx->builder == NULL)
   {
-    ts = GTK_TREE_STORE (gtk_builder_get_object
-                         (builder, "GNUNET_GTK_pseudonym_tree_store"));
-    GNUNET_FS_namespace_list (GNUNET_FS_GTK_get_fs_handle (),
-                              &add_namespace_to_ts, ts);
+    GNUNET_free (ctx);
+    return;
   }
-  gtk_window_present (GTK_WINDOW (ad));
+
+  init_ctx (ctx);
+  ctx->main_window_builder = GTK_BUILDER (user_data);
+  GNUNET_FS_namespace_list (GNUNET_FS_GTK_get_fs_handle (),
+                            &add_namespace_to_ts, GTK_TREE_STORE 
(ctx->pseudonym_treemodel));
+  gtk_window_present (GTK_WINDOW (ctx->master_pubdialog));
 }
 
 




reply via email to

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