summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2022-12-06 19:04:52 +0900
committerMartin Schanzenbach <schanzen@gnunet.org>2022-12-06 19:04:52 +0900
commit8c33bdfad715cfa614b6ecbdf0a8b87389430cc8 (patch)
treeb4e6d0161b6c255f9dc357eb0a6f038d38d60fe3
parent1c7666a87fb2d626145ebc34ba7110afa1089b58 (diff)
Fix #7419
-rw-r--r--contrib/gnunet_fs_gtk_main_window.glade1467
-rw-r--r--src/fs/gnunet-fs-gtk.c262
-rw-r--r--src/namestore/gnunet-namestore-gtk.c1
3 files changed, 975 insertions, 755 deletions
diff --git a/contrib/gnunet_fs_gtk_main_window.glade b/contrib/gnunet_fs_gtk_main_window.glade
index 1d7e0283..aaf24431 100644
--- a/contrib/gnunet_fs_gtk_main_window.glade
+++ b/contrib/gnunet_fs_gtk_main_window.glade
@@ -110,6 +110,14 @@
<column type="gpointer"/>
</columns>
</object>
+ <object class="GtkListStore" id="id_liststore">
+ <columns>
+ <!-- column-name ego_name -->
+ <column type="gchararray"/>
+ <!-- column-name ego -->
+ <column type="gpointer"/>
+ </columns>
+ </object>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step_increment">1</property>
@@ -668,7 +676,7 @@
<property name="can_focus">False</property>
<property name="border_width">3</property>
<property name="spacing">4</property>
- <child>
+ <child>
<object class="GtkBox" id="main_window_namespace_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -723,7 +731,7 @@
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Remember the specified namespace for later.
-This operation will be executed using the anonymity level specified on the right.</property>
+ This operation will be executed using the anonymity level specified on the right.</property>
<property name="use_stock">True</property>
<property name="image_position">top</property>
<signal name="clicked" handler="GNUNET_FS_GTK_save_button_clicked_cb" swapped="no"/>
@@ -735,15 +743,15 @@ This operation will be executed using the anonymity level specified on the right
</packing>
</child>
<child>
- <object class="GtkBox" id="main_window_keywords_vbox">
+ <object class="GtkBox" id="main_window_id_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="GNUNET_FS_GTK_keyword_label">
+ <object class="GtkLabel" id="main_window_id_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Keywords:</property>
+ <property name="label" translatable="yes">Identity:</property>
</object>
<packing>
<property name="expand">False</property>
@@ -752,119 +760,50 @@ This operation will be executed using the anonymity level specified on the right
</packing>
</child>
<child>
- <object class="GtkEntry" id="main_window_search_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <signal name="key-press-event" handler="main_window_search_entry_key_press_event_cb" swapped="no"/>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="main_window_search_button_alignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="yscale">0</property>
- <child>
- <object class="GtkButton" id="main_window_search_button">
- <property name="label" translatable="yes">Search</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="tooltip_text" translatable="yes">Search using the given keywords. The search may be narrowed by the given mime type and/or restricted to a namespace.
-This operation will be executed using the anonymity level specified on the right.
-</property>
- <property name="image">find_stock_image</property>
- <property name="image_position">top</property>
- <signal name="clicked" handler="main_window_search_button_clicked_cb" swapped="no"/>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="main_window_anonymity_vbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkLabel" id="main_window_search_anonymity_label">
+ <object class="GtkComboBox" id="gnunet_fs_gtk_id_combobox">
<property name="visible">True</property>
+ <property name="sensitive">False</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Anonymity:</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="main_window_search_anonymity_combobox_alignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="yscale">0</property>
+ <property name="model">id_liststore</property>
+ <!--<property name="has_entry">True</property>-->
+ <property name="entry_text_column">0</property>
+ <signal name="changed" handler="gnunet_fs_gtk_id_combobox_changed_cb" swapped="no"/>
<child>
- <object class="GtkComboBox" id="main_window_search_anonymity_combobox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="model">anonymity_level_liststore</property>
- <property name="active">1</property>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_anonymity_combobox_renderer"/>
- <attributes>
- <attribute name="foreground">2</attribute>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_anonymity_combobox_renerer_level"/>
- <attributes>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
+ <object class="GtkCellRendererText" id="main_window_fs_id_combobox_renderer"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
</child>
+ <!--<child internal-child="entry">
+ <object class="GtkEntry" id="gnunet_fs_gtk_id_entry">
+ <property name="can_focus">True</property>
+ </object>
+ </child>-->
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="main_window_mime_vbox">
+ <object class="GtkBox" id="main_window_keywords_vbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="main_window_search_mime_label">
+ <object class="GtkLabel" id="GNUNET_FS_GTK_keyword_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Mime-type:</property>
+ <property name="label" translatable="yes">Keywords:</property>
</object>
<packing>
<property name="expand">False</property>
@@ -873,627 +812,749 @@ This operation will be executed using the anonymity level specified on the right
</packing>
</child>
<child>
- <object class="GtkAlignment" id="main_window_search_mime_combobox_alignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="yscale">0</property>
- <child>
- <object class="GtkComboBox" id="main_window_search_mime_combobox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="model">main_window_search_mime_liststore</property>
- <property name="active">0</property>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_mime_renderer_description"/>
- <attributes>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_mime_renderer_type">
- <property name="visible">False</property>
- </object>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_mime_renderer_extension"/>
- <attributes>
- <attribute name="text">2</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_mime_renderer_lossyness">
- <property name="visible">False</property>
- </object>
- <attributes>
- <attribute name="text">3</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="main_window_search_mime_renderer_freedom">
- <property name="visible">False</property>
- </object>
- <attributes>
- <attribute name="text">4</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkPaned" id="main_window_hpaned">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <object class="GtkBox" id="GNUNET_GTK_main_window_left_vbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkNotebook" id="GNUNET_GTK_main_window_notebook">
+ <object class="GtkEntry" id="main_window_search_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="scrollable">True</property>
- <property name="enable_popup">True</property>
- <signal name="switch-page" handler="GNUNET_GTK_main_window_notebook_switch_page_cb" after="yes" swapped="no"/>
- <child>
- <object class="GtkTreeView" id="GNUNET_GTK_download_frame">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="model">GNUNET_GTK_file_sharing_downloads_tree_store</property>
- <property name="headers_clickable">False</property>
- <property name="search_column">6</property>
- <property name="enable_grid_lines">horizontal</property>
- <property name="enable_tree_lines">True</property>
- <signal name="button-press-event" handler="GNUNET_GTK_download_frame_button_press_event_cb" swapped="no"/>
- <signal name="cursor-changed" handler="GNUNET_FS_GTK_download_frame_treeview_cursor_changed_cb" swapped="no"/>
- <signal name="popup-menu" handler="GNUNET_FS_GTK_search_treeview_popup_menu" swapped="no"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="GNUNET_GTK_download_treeview_selection"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_description_column">
- <property name="title">Description</property>
- <property name="expand">True</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">6</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_download_description_renderer_text"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">6</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererPixbuf" id="GNUNET_GTK_download_description_renderer_pixbuf">
- <property name="xalign">1</property>
- <property name="icon_name">gnunet-fs-gtk-ns-association</property>
- </object>
- <attributes>
- <attribute name="visible">19</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_pixbuf_column">
- <property name="title" translatable="yes">Status</property>
- <child>
- <object class="GtkCellRendererPixbuf" id="GNUNET_GTK_download_status_cellrendererpixbuf"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="pixbuf">17</attribute>
- <attribute name="stock-id">8</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_availability_column">
- <property name="title">Availability</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">5</property>
- <child>
- <object class="GtkCellRendererProgress" id="GNUNET_GTK_download_availability_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="pulse">18</attribute>
- <attribute name="value">5</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_mime_column">
- <property name="visible">False</property>
- <property name="title">Format</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">10</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_download_mime_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">10</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_completed_column">
- <property name="visible">False</property>
- <property name="title">Completed (bytes)</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">14</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_download_completed_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">14</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_size_column">
- <property name="title">Size</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">2</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_download_size_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">2</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_progress_column">
- <property name="title">Progress</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">4</property>
- <child>
- <object class="GtkCellRendererProgress" id="GNUNET_GTK_download_progress_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">4</attribute>
- <attribute name="value">4</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_applicability_column">
- <property name="visible">False</property>
- <property name="title">#</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <property name="sort_column_id">11</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_download_applicability_renderer"/>
- <attributes>
- <attribute name="cell-background">8</attribute>
- <attribute name="text">11</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkBox" id="GNUNET_GTK_download_frame_hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkImage" id="GNUNET_GTK_main_window_notebook_download_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-go-down</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">5</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="_search_result_label_clear_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="GNUNET_FS_GTK_downloads_clear_button_clicked" swapped="no"/>
- <child>
- <object class="GtkImage" id="clear_icon_stock_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="stock">gtk-clear</property>
- <property name="icon_size">2</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">5</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="GNUNET_GTK_search_frame_download_vbox">
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkBox" id="GNUNET_GTK_search_frame_download_into_hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkLabel" id="GNUNET_GTK_search_frame_download_location_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Download into:</property>
- <property name="single_line_mode">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkFileChooserButton" id="GNUNET_GTK_search_frame_download_location_chooser">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="action">select-folder</property>
- <property name="title" translatable="yes">Select a directory to download into</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="GNUNET_GTK_search_frame_download_filename_hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkLabel" id="GNUNET_GTK_search_frame_download_filename_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Download as:</property>
- <property name="single_line_mode">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="GNUNET_GTK_search_frame_download_filename_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">●</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="GNUNET_GTK_search_frame_download_filename_change_button">
- <property name="label">…</property>
- <property name="height_request">1</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="focus_on_click">False</property>
- <property name="receives_default">False</property>
- <signal name="clicked" handler="GNUNET_GTK_search_frame_download_filename_change_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">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="GNUNET_GTK_search_frame_download_misc_hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
- <child>
- <object class="GtkLabel" id="GNUNET_GTK_search_frame_download_anonymity_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Anonymity:</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkAlignment" id="main_window_download_anonymity_combobox_alignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="yscale">0</property>
- <child>
- <object class="GtkComboBox" id="main_window_download_anonymity_combobox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="model">anonymity_level_liststore</property>
- <property name="active">1</property>
- <child>
- <object class="GtkCellRendererText" id="main_window_download_anonymity_combobox_renderer"/>
- <attributes>
- <attribute name="foreground">2</attribute>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText" id="main_window_download_anonymity_combobox_renerer_level"/>
- <attributes>
- <attribute name="text">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="GNUNET_GTK_search_frame_download_recursive_checkbox">
- <property name="label" translatable="yes">Recursive</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="GNUNET_GTK_search_frame_download_download_hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkButton" id="GNUNET_GTK_search_frame_download_download_button">
- <property name="label" translatable="yes">Download!</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="GNUNET_GTK_search_frame_download_download_button_clicked_cb" swapped="no"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">3</property>
- </packing>
- </child>
+ <property name="invisible_char">●</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <signal name="key-press-event" handler="main_window_search_entry_key_press_event_cb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="resize">False</property>
- <property name="shrink">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
- <object class="GtkBox" id="GNUNET_GTK_main_window_extras_vbox">
+ <object class="GtkAlignment" id="main_window_search_button_alignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkImage" id="GNUNET_GTK_main_window_preview_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="has_tooltip">True</property>
- <property name="tooltip_text" translatable="yes">Thumbnail associated with the currently selected content</property>
- <property name="pixel_size">256</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">5</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <property name="yscale">0</property>
<child>
- <object class="GtkScrolledWindow" id="GNUNET_GTK_main_window_metadata_scroll">
+ <object class="GtkButton" id="main_window_search_button">
+ <property name="label" translatable="yes">Search</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip_text" translatable="yes">File meta data</property>
- <property name="hadjustment">adjustment1</property>
- <property name="vadjustment">adjustment2</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTreeView" id="GNUNET_GTK_main_window_metadata_treeview">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hadjustment">adjustment1</property>
- <property name="vadjustment">adjustment2</property>
- <property name="model">GNUNET_GTK_meta_data_list_store</property>
- <property name="search_column">0</property>
- <property name="rubber_banding">True</property>
- <property name="enable_grid_lines">both</property>
- <signal name="button-press-event" handler="GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb" swapped="no"/>
- <signal name="popup-menu" handler="GNUNET_GTK_main_window_metadata_treeview_popup_menu_cb" swapped="no"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection2"/>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_main_window_metadata_type_column">
- <property name="sizing">autosize</property>
- <property name="title">Type</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_main_window_metadata_type_renderer"/>
- <attributes>
- <attribute name="text">2</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="GNUNET_GTK_main_window_metadata_value_column">
- <property name="sizing">autosize</property>
- <property name="title">Value</property>
- <property name="expand">True</property>
- <property name="clickable">True</property>
- <property name="reorderable">True</property>
- <property name="sort_indicator">True</property>
- <child>
- <object class="GtkCellRendererText" id="GNUNET_GTK_main_window_metadata_value_renderer">
- <property name="wrap_mode">word</property>
- </object>
- <attributes>
- <attribute name="text">3</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkSizeGroup" id="GNUNET_FS_GTK_download_frame_vsize_group">
- <property name="mode">vertical</property>
- <property name="ignore_hidden">True</property>
- <widgets>
- <widget name="GNUNET_GTK_search_frame_download_location_label"/>
- <widget name="GNUNET_GTK_search_frame_download_filename_label"/>
- <widget name="GNUNET_GTK_search_frame_download_anonymity_label"/>
- <widget name="GNUNET_GTK_search_frame_download_location_chooser"/>
- <widget name="GNUNET_GTK_search_frame_download_filename_entry"/>
- <widget name="GNUNET_GTK_search_frame_download_filename_change_button"/>
- <widget name="main_window_download_anonymity_combobox_alignment"/>
- <widget name="GNUNET_GTK_search_frame_download_recursive_checkbox"/>
- </widgets>
- </object>
- <object class="GtkSizeGroup" id="GNUNET_GTK_download_frame_labels_size_group">
- <widgets>
- <widget name="GNUNET_GTK_search_frame_download_location_label"/>
- <widget name="GNUNET_GTK_search_frame_download_anonymity_label"/>
- <widget name="GNUNET_GTK_search_frame_download_filename_label"/>
- </widgets>
- </object>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Search using the given keywords. The search may be narrowed by the given mime type and/or restricted to a namespace.
+ This operation will be executed using the anonymity level specified on the right.
+ </property>
+ <property name="image">find_stock_image</property>
+ <property name="image_position">top</property>
+ <signal name="clicked" handler="main_window_search_button_clicked_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="main_window_anonymity_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="main_window_search_anonymity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Anonymity:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="main_window_search_anonymity_combobox_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkComboBox" id="main_window_search_anonymity_combobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">anonymity_level_liststore</property>
+ <property name="active">1</property>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_anonymity_combobox_renderer"/>
+ <attributes>
+ <attribute name="foreground">2</attribute>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_anonymity_combobox_renerer_level"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="main_window_mime_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="main_window_search_mime_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Mime-type:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="main_window_search_mime_combobox_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkComboBox" id="main_window_search_mime_combobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">main_window_search_mime_liststore</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_mime_renderer_description"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_mime_renderer_type">
+ <property name="visible">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_mime_renderer_extension"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_mime_renderer_lossyness">
+ <property name="visible">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_search_mime_renderer_freedom">
+ <property name="visible">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="main_window_hpaned">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_main_window_left_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkNotebook" id="GNUNET_GTK_main_window_notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="scrollable">True</property>
+ <property name="enable_popup">True</property>
+ <signal name="switch-page" handler="GNUNET_GTK_main_window_notebook_switch_page_cb" after="yes" swapped="no"/>
+ <child>
+ <object class="GtkTreeView" id="GNUNET_GTK_download_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="model">GNUNET_GTK_file_sharing_downloads_tree_store</property>
+ <property name="headers_clickable">False</property>
+ <property name="search_column">6</property>
+ <property name="enable_grid_lines">horizontal</property>
+ <property name="enable_tree_lines">True</property>
+ <signal name="button-press-event" handler="GNUNET_GTK_download_frame_button_press_event_cb" swapped="no"/>
+ <signal name="cursor-changed" handler="GNUNET_FS_GTK_download_frame_treeview_cursor_changed_cb" swapped="no"/>
+ <signal name="popup-menu" handler="GNUNET_FS_GTK_search_treeview_popup_menu" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="GNUNET_GTK_download_treeview_selection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_description_column">
+ <property name="title">Description</property>
+ <property name="expand">True</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">6</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_download_description_renderer_text"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">6</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="GNUNET_GTK_download_description_renderer_pixbuf">
+ <property name="xalign">1</property>
+ <property name="icon_name">gnunet-fs-gtk-ns-association</property>
+ </object>
+ <attributes>
+ <attribute name="visible">19</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_pixbuf_column">
+ <property name="title" translatable="yes">Status</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="GNUNET_GTK_download_status_cellrendererpixbuf"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="pixbuf">17</attribute>
+ <attribute name="stock-id">8</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_availability_column">
+ <property name="title">Availability</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">5</property>
+ <child>
+ <object class="GtkCellRendererProgress" id="GNUNET_GTK_download_availability_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="pulse">18</attribute>
+ <attribute name="value">5</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_mime_column">
+ <property name="visible">False</property>
+ <property name="title">Format</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">10</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_download_mime_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">10</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_completed_column">
+ <property name="visible">False</property>
+ <property name="title">Completed (bytes)</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">14</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_download_completed_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">14</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_size_column">
+ <property name="title">Size</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">2</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_download_size_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_progress_column">
+ <property name="title">Progress</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">4</property>
+ <child>
+ <object class="GtkCellRendererProgress" id="GNUNET_GTK_download_progress_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">4</attribute>
+ <attribute name="value">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_download_applicability_column">
+ <property name="visible">False</property>
+ <property name="title">#</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <property name="sort_column_id">11</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_download_applicability_renderer"/>
+ <attributes>
+ <attribute name="cell-background">8</attribute>
+ <attribute name="text">11</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkBox" id="GNUNET_GTK_download_frame_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage" id="GNUNET_GTK_main_window_notebook_download_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-go-down</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="_search_result_label_clear_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="GNUNET_FS_GTK_downloads_clear_button_clicked" swapped="no"/>
+ <child>
+ <object class="GtkImage" id="clear_icon_stock_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">2</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_search_frame_download_vbox">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_search_frame_download_into_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="GNUNET_GTK_search_frame_download_location_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Download into:</property>
+ <property name="single_line_mode">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="GNUNET_GTK_search_frame_download_location_chooser">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="action">select-folder</property>
+ <property name="title" translatable="yes">Select a directory to download into</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_search_frame_download_filename_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="GNUNET_GTK_search_frame_download_filename_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Download as:</property>
+ <property name="single_line_mode">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="GNUNET_GTK_search_frame_download_filename_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="GNUNET_GTK_search_frame_download_filename_change_button">
+ <property name="label">…</property>
+ <property name="height_request">1</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">False</property>
+ <signal name="clicked" handler="GNUNET_GTK_search_frame_download_filename_change_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">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_search_frame_download_misc_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="GNUNET_GTK_search_frame_download_anonymity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Anonymity:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="main_window_download_anonymity_combobox_alignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkComboBox" id="main_window_download_anonymity_combobox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">anonymity_level_liststore</property>
+ <property name="active">1</property>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_download_anonymity_combobox_renderer"/>
+ <attributes>
+ <attribute name="foreground">2</attribute>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="main_window_download_anonymity_combobox_renerer_level"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="GNUNET_GTK_search_frame_download_recursive_checkbox">
+ <property name="label" translatable="yes">Recursive</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_search_frame_download_download_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="GNUNET_GTK_search_frame_download_download_button">
+ <property name="label" translatable="yes">Download!</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked" handler="GNUNET_GTK_search_frame_download_download_button_clicked_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="GNUNET_GTK_main_window_extras_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkImage" id="GNUNET_GTK_main_window_preview_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="has_tooltip">True</property>
+ <property name="tooltip_text" translatable="yes">Thumbnail associated with the currently selected content</property>
+ <property name="pixel_size">256</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="GNUNET_GTK_main_window_metadata_scroll">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">File meta data</property>
+ <property name="hadjustment">adjustment1</property>
+ <property name="vadjustment">adjustment2</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="GNUNET_GTK_main_window_metadata_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hadjustment">adjustment1</property>
+ <property name="vadjustment">adjustment2</property>
+ <property name="model">GNUNET_GTK_meta_data_list_store</property>
+ <property name="search_column">0</property>
+ <property name="rubber_banding">True</property>
+ <property name="enable_grid_lines">both</property>
+ <signal name="button-press-event" handler="GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb" swapped="no"/>
+ <signal name="popup-menu" handler="GNUNET_GTK_main_window_metadata_treeview_popup_menu_cb" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection2"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_main_window_metadata_type_column">
+ <property name="sizing">autosize</property>
+ <property name="title">Type</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_main_window_metadata_type_renderer"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="GNUNET_GTK_main_window_metadata_value_column">
+ <property name="sizing">autosize</property>
+ <property name="title">Value</property>
+ <property name="expand">True</property>
+ <property name="clickable">True</property>
+ <property name="reorderable">True</property>
+ <property name="sort_indicator">True</property>
+ <child>
+ <object class="GtkCellRendererText" id="GNUNET_GTK_main_window_metadata_value_renderer">
+ <property name="wrap_mode">word</property>
+ </object>
+ <attributes>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+</object>
+<object class="GtkSizeGroup" id="GNUNET_FS_GTK_download_frame_vsize_group">
+ <property name="mode">vertical</property>
+ <property name="ignore_hidden">True</property>
+ <widgets>
+ <widget name="GNUNET_GTK_search_frame_download_location_label"/>
+ <widget name="GNUNET_GTK_search_frame_download_filename_label"/>
+ <widget name="GNUNET_GTK_search_frame_download_anonymity_label"/>
+ <widget name="GNUNET_GTK_search_frame_download_location_chooser"/>
+ <widget name="GNUNET_GTK_search_frame_download_filename_entry"/>
+ <widget name="GNUNET_GTK_search_frame_download_filename_change_button"/>
+ <widget name="main_window_download_anonymity_combobox_alignment"/>
+ <widget name="GNUNET_GTK_search_frame_download_recursive_checkbox"/>
+ </widgets>
+</object>
+<object class="GtkSizeGroup" id="GNUNET_GTK_download_frame_labels_size_group">
+ <widgets>
+ <widget name="GNUNET_GTK_search_frame_download_location_label"/>
+ <widget name="GNUNET_GTK_search_frame_download_anonymity_label"/>
+ <widget name="GNUNET_GTK_search_frame_download_filename_label"/>
+ </widgets>
+</object>
</interface>
diff --git a/src/fs/gnunet-fs-gtk.c b/src/fs/gnunet-fs-gtk.c
index a1230c03..c0e52797 100644
--- a/src/fs/gnunet-fs-gtk.c
+++ b/src/fs/gnunet-fs-gtk.c
@@ -27,6 +27,8 @@
#include "gnunet-fs-gtk_common.h"
#include "gnunet-fs-gtk_event-handler.h"
#include "gnunet-fs-gtk_open-uri.h"
+#include "gnunet/gnunet_namestore_service.h"
+#include <gmodule.h>
#if HAVE_LIBUNIQUE
#include <unique/unique.h>
@@ -73,10 +75,58 @@ static struct GNUNET_ARM_MonitorHandle *armon;
static struct GNUNET_ARM_Handle *arm;
/**
+ * Ongoing identity operation.
+ */
+static struct GNUNET_IDENTITY_Operation *iop;
+
+/**
* Context for main window.
*/
static struct GNUNET_GTK_MainWindowContext main_context;
+/**
+ * Identity combo box in the main window.
+ */
+static GtkComboBox *id_combo_box;
+
+/**
+ * Currently selected entry in #id_liststore.
+ */
+static GtkTreeIter id_iter;
+
+/**
+ * List of all known egos.
+ */
+static GtkListStore *id_liststore;
+
+/**
+ * Status label in main window.
+ */
+static GtkLabel *status_label;
+
+/**
+ * Are we shutting down?
+ */
+static int in_shutdown = 0;
+
+/**
+ * Columns in the id list store.
+ */
+enum ID_COLUMNS
+{
+
+ /**
+ * A gchararray
+ */
+ ID_LS_NAME = 0,
+
+
+ /**
+ * A `struct GNUNET_IDENTITY_Ego`
+ */
+ ID_LS_EGO = 1
+};
+
#if HAVE_LIBUNIQUE
static UniqueApp *unique_app;
@@ -101,6 +151,21 @@ GNUNET_FS_GTK_get_fs_handle ()
return fs;
}
+/**
+ * Get an object from the main window.
+ *
+ * @param name name of the object
+ * @return NULL on error, otherwise the object
+ */
+static GObject *
+get_object (const char *name)
+{
+ if (NULL == ml)
+ return NULL;
+ return GNUNET_GTK_main_loop_get_object (ml, name);
+}
+
+
/**
* Remember FS handle if we don't have one yet.
@@ -250,6 +315,11 @@ shutdown_task (void *cls)
struct PseuLookupContext *lctx;
struct SearchResult *sr;
+ in_shutdown = 1;
+ while (NULL != (sl = main_context.sl_head))
+ abort_search_lookup (sl);
+ while (NULL != (lctx = main_context.lctx_head))
+ abort_pseu_lookup (lctx);
while (NULL != (sr = pl_head))
{
GNUNET_FS_probe_stop (sr->probe);
@@ -261,36 +331,16 @@ shutdown_task (void *cls)
GNUNET_FS_stop (fs);
fs = NULL;
}
- if (NULL != armon)
+ if (NULL != iop)
{
- GNUNET_ARM_monitor_stop (armon);
- armon = NULL;
- }
- if (NULL != arm)
- {
- GNUNET_ARM_disconnect (arm);
- arm = NULL;
- }
- GNUNET_FS_GTK_close_uri_tab_ ();
- if (NULL != ml)
- {
- GNUNET_GTK_main_loop_quit (ml);
- ml = NULL;
- }
- if (NULL != main_context.id_op)
- {
- GNUNET_IDENTITY_ego_lookup_cancel (main_context.id_op);
- main_context.id_op = NULL;
+ GNUNET_IDENTITY_cancel (iop);
+ iop = NULL;
}
if (NULL != main_context.identity)
{
GNUNET_IDENTITY_disconnect (main_context.identity);
main_context.identity = NULL;
}
- while (NULL != (sl = main_context.sl_head))
- abort_search_lookup (sl);
- while (NULL != (lctx = main_context.lctx_head))
- abort_pseu_lookup (lctx);
if (NULL != main_context.zm)
{
GNUNET_NAMESTORE_zone_monitor_stop (main_context.zm);
@@ -301,6 +351,22 @@ shutdown_task (void *cls)
GNUNET_GNS_disconnect (main_context.gns);
main_context.gns = NULL;
}
+ if (NULL != armon)
+ {
+ GNUNET_ARM_monitor_stop (armon);
+ armon = NULL;
+ }
+ if (NULL != arm)
+ {
+ GNUNET_ARM_disconnect (arm);
+ arm = NULL;
+ }
+ GNUNET_FS_GTK_close_uri_tab_ ();
+ if (NULL != ml)
+ {
+ GNUNET_GTK_main_loop_quit (ml);
+ ml = NULL;
+ }
}
@@ -664,6 +730,11 @@ handle_sks_zone_identity (void *cls,
"main_window_search_namespace_label")));
gtk_widget_show (GTK_WIDGET (GNUNET_FS_GTK_get_main_window_object (
"main_window_search_namespace_combobox")));
+ if (NULL != main_context.zm)
+ {
+ GNUNET_NAMESTORE_zone_monitor_stop(main_context.zm);
+ main_context.zm = NULL;
+ }
main_context.zm =
GNUNET_NAMESTORE_zone_monitor_start (main_context.cfg,
GNUNET_IDENTITY_ego_get_private_key (
@@ -679,9 +750,57 @@ handle_sks_zone_identity (void *cls,
/**
- * We must pass a non-NULL callback to the identity service,
- * but we don't actually care about the information here
- * (we will use GNUNET_IDENTITY_get() if and when we do care).
+ * The user selected another identity in the combobox. Load it.
+ *
+ * @param widget the combo box where the selection was changed
+ * @param user_data the builder, unused
+ */
+void
+gnunet_fs_gtk_id_combobox_changed_cb (GtkComboBox *widget,
+ gpointer user_data)
+{
+ GtkTreeIter iter;
+ struct GNUNET_IDENTITY_Ego *ego;
+ char *name;
+
+ (void) user_data;
+ if (! gtk_combo_box_get_active_iter (id_combo_box, &iter))
+ {
+ return;
+ }
+ id_iter = iter;
+ /* clang-format off */
+ gtk_tree_model_get (GTK_TREE_MODEL (id_liststore),
+ &iter,
+ ID_LS_NAME, &name,
+ ID_LS_EGO, &ego,
+ -1);
+ /* clang-format on */
+ handle_sks_zone_identity (name, ego);
+}
+
+/**
+ * Method called to inform about the egos of this peer. Updates the
+ * `zone_liststore`.
+ *
+ * When used with #GNUNET_IDENTITY_connect, this function is
+ * initially called for all egos and then again whenever a
+ * ego's name changes or if it is deleted. At the end of
+ * the initial pass over all egos, the function is once called
+ * with 'NULL' for @a ego. That does NOT mean that the callback won't
+ * be invoked in the future or that there was an error.
+ *
+ * If @a ego is non-NULL and if '*ctx' is set in those callbacks, the
+ * value WILL be passed to a subsequent call to the identity callback
+ * of #GNUNET_IDENTITY_connect (if that one was not NULL).
+ *
+ * When an identity is renamed, this function is called with the
+ * (known) @a ego but the NEW @a name.
+ *
+ * When an identity is deleted, this function is called with the
+ * (known) ego and "NULL" for the @a name. In this case,
+ * the @a ego is henceforth invalid (and the @a ctx should also be
+ * cleaned up).
*
* @param cls closure
* @param ego ego handle
@@ -692,17 +811,70 @@ handle_sks_zone_identity (void *cls,
* must thus no longer be used
*/
static void
-non_null_cb (void *cls,
+identity_cb (void *cls,
struct GNUNET_IDENTITY_Ego *ego,
void **ctx,
const char *name)
{
- (void) cls;
- (void) ego;
- (void) ctx;
- (void) name;
-}
+ GtkTreeRowReference *rr;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+
+ if (in_shutdown)
+ return;
+ if ((NULL == ego) && (NULL == name) && (NULL == ctx))
+ {
+ /* end of initial iteration, trigger loading selected zone */
+ gnunet_fs_gtk_id_combobox_changed_cb (id_combo_box, ml);
+ return;
+ }
+ rr = *ctx;
+ if (NULL == rr)
+ {
+ /* clang-format off */
+ gtk_list_store_insert_with_values (id_liststore,
+ &iter, 0,
+ ID_LS_NAME, name,
+ ID_LS_EGO, ego,
+ -1);
+ /* clang-format on */
+ gtk_combo_box_set_active_iter (id_combo_box, &iter);
+ gtk_widget_set_sensitive (GTK_WIDGET (id_combo_box), TRUE);
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (id_liststore), &iter);
+ rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (id_liststore), path);
+ *ctx = rr;
+ gtk_tree_path_free (path);
+ return;
+ }
+ path = gtk_tree_row_reference_get_path (rr);
+ GNUNET_break (
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (id_liststore), &iter, path));
+ gtk_tree_path_free (path);
+ if (NULL == name)
+ {
+ GtkTreeIter act_iter;
+ /* identity was removed, remove from list */
+ gtk_list_store_remove (id_liststore, &iter);
+ if (! gtk_combo_box_get_active_iter (id_combo_box, &act_iter))
+ {
+ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (id_liststore),
+ &act_iter))
+ {
+ /* make sure combo box remains selected if possible */
+ gtk_combo_box_set_active (id_combo_box, 0);
+ }
+ else
+ {
+ /* make combo box insensitive if nothing can be selected */
+ gtk_widget_set_sensitive (GTK_WIDGET (id_combo_box), FALSE);
+ }
+ }
+ return;
+ }
+ /* identity was renamed, rename in model */
+ gtk_list_store_set (id_liststore, &iter, ID_LS_NAME, name, -1);
+}
/**
* Actual main function run right after GNUnet's scheduler
@@ -720,7 +892,6 @@ run (void *cls)
unsigned long long window_width;
unsigned long long window_height;
int maximized;
- char *default_ego_name;
ml = cls;
/* setup main context */
@@ -789,6 +960,11 @@ run (void *cls)
GTK_IMAGE (GNUNET_FS_GTK_get_main_window_object (
"GNUNET_FS_GTK_main_window_connection_indicator"));
+ status_label = GTK_LABEL (get_object (
+ "gnunet_fs_gtk_status_label"));
+ id_combo_box =
+ GTK_COMBO_BOX (get_object ("gnunet_fs_gtk_id_combobox"));
+ id_liststore = GTK_LIST_STORE (get_object ("id_liststore"));
GNUNET_GTK_set_icon_search_path ();
GNUNET_GTK_setup_nls ();
@@ -856,17 +1032,6 @@ run (void *cls)
"MAX_PARALLEL_REQUESTS",
&req_parallel))
req_parallel = DEFAULT_MAX_PARALLEL_REQUESTS;
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (main_context.cfg,
- "fs-sks",
- "DEFAULT_IDENTITY",
- &default_ego_name))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Please set DEFAULT_IDENTITY under [fs-sks]\n");
- GNUNET_GTK_main_loop_quit (cls);
- return;
- }
/* initialize file-sharing */
fs = GNUNET_FS_start (main_context.cfg,
"gnunet-fs-gtk",
@@ -890,13 +1055,8 @@ run (void *cls)
&service_status_change,
&main_context);
main_context.gns = GNUNET_GNS_connect (main_context.cfg);
- main_context.identity =
- GNUNET_IDENTITY_connect (main_context.cfg, &non_null_cb, NULL);
- main_context.id_op = GNUNET_IDENTITY_ego_lookup (main_context.cfg,
- default_ego_name,
- &handle_sks_zone_identity,
- NULL);
- GNUNET_free (default_ego_name);
+ main_context.identity = GNUNET_IDENTITY_connect (main_context.cfg,
+ &identity_cb, NULL);
#if HAVE_LIBUNIQUE
unique_app_watch_window (unique_app, GTK_WINDOW (main_context.main_window));
g_signal_connect (unique_app,
diff --git a/src/namestore/gnunet-namestore-gtk.c b/src/namestore/gnunet-namestore-gtk.c
index 2981e16f..f7df0a10 100644
--- a/src/namestore/gnunet-namestore-gtk.c
+++ b/src/namestore/gnunet-namestore-gtk.c
@@ -2580,7 +2580,6 @@ zone_iteration_proc (void *cls,
}
}
-
/**
* Method called to switch the model to a new zone.
*