aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-12-26 20:04:58 +0000
committerChristian Grothoff <christian@grothoff.org>2011-12-26 20:04:58 +0000
commit10e931a7968629875e2d7521ae9aa60a4e6b0ba3 (patch)
tree3a200305eebde747d4b33264510d85d19589ace4
parent90513c8a7f4cd29e8db2e51191fff23caf6b6aed (diff)
downloadgnunet-gtk-10e931a7968629875e2d7521ae9aa60a4e6b0ba3.tar.gz
gnunet-gtk-10e931a7968629875e2d7521ae9aa60a4e6b0ba3.zip
-indentation
-rw-r--r--src/fs/gnunet-fs-gtk-common.c16
-rw-r--r--src/fs/gnunet-fs-gtk-common.h2
-rw-r--r--src/fs/gnunet-fs-gtk-download.c16
-rw-r--r--src/fs/gnunet-fs-gtk-edit_publish_dialog.c367
-rw-r--r--src/fs/gnunet-fs-gtk-edit_publish_dialog.h30
-rw-r--r--src/fs/gnunet-fs-gtk-event_handler.c196
-rw-r--r--src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c65
-rw-r--r--src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c5
-rw-r--r--src/fs/gnunet-fs-gtk-main_window_file_download.c81
-rw-r--r--src/fs/gnunet-fs-gtk-main_window_file_publish.c268
-rw-r--r--src/fs/gnunet-fs-gtk-main_window_open_directory.c12
-rw-r--r--src/fs/gnunet-fs-gtk.c234
-rw-r--r--src/fs/gnunet-fs-gtk.h8
-rw-r--r--src/fs/metatypes.c2146
-rw-r--r--src/include/gnunet_gtk.h20
-rw-r--r--src/lib/about.c30
-rw-r--r--src/lib/eventloop.c17
-rw-r--r--src/lib/nls.c51
-rw-r--r--src/peerinfo/gnunet-peerinfo-gtk.c56
-rw-r--r--src/setup/gnunet-setup-options.c6
-rw-r--r--src/setup/gnunet-setup-transport.c6
-rw-r--r--src/setup/gnunet-setup.c2
-rw-r--r--src/statistics/functions.c321
-rw-r--r--src/statistics/functions.h7
-rw-r--r--src/statistics/gnunet-statistics-gtk-about.c2
-rw-r--r--src/statistics/gnunet-statistics-gtk.c112
-rw-r--r--src/statistics/gtk_statistics.c271
-rw-r--r--src/statistics/gtk_statistics.h31
-rw-r--r--src/statistics/gtk_statistics_demo.c70
-rw-r--r--src/statistics/statistics.c325
30 files changed, 2322 insertions, 2451 deletions
diff --git a/src/fs/gnunet-fs-gtk-common.c b/src/fs/gnunet-fs-gtk-common.c
index bd33d17a..4d416849 100644
--- a/src/fs/gnunet-fs-gtk-common.c
+++ b/src/fs/gnunet-fs-gtk-common.c
@@ -39,7 +39,8 @@
39 * freeable with GNUNET_free* (). 39 * freeable with GNUNET_free* ().
40 */ 40 */
41char * 41char *
42GNUNET_FS_GTK_dubious_meta_to_utf8 (enum EXTRACTOR_MetaFormat format, const char *data, size_t data_len) 42GNUNET_FS_GTK_dubious_meta_to_utf8 (enum EXTRACTOR_MetaFormat format,
43 const char *data, size_t data_len)
43{ 44{
44 gchar *result = NULL; 45 gchar *result = NULL;
45 46
@@ -51,18 +52,19 @@ GNUNET_FS_GTK_dubious_meta_to_utf8 (enum EXTRACTOR_MetaFormat format, const char
51 else 52 else
52 { 53 {
53 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 54 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
54 "Failed to validate supposedly utf-8 string `%s' of length %u, assuming it to be a C string\n", 55 "Failed to validate supposedly utf-8 string `%s' of length %u, assuming it to be a C string\n",
55 data, data_len); 56 data, data_len);
56 format = EXTRACTOR_METAFORMAT_C_STRING; 57 format = EXTRACTOR_METAFORMAT_C_STRING;
57 } 58 }
58 } 59 }
59 if (format == EXTRACTOR_METAFORMAT_C_STRING) 60 if (format == EXTRACTOR_METAFORMAT_C_STRING)
60 { 61 {
61 if (data_len > 0) 62 if (data_len > 0)
62 { /* There are no guarantees that data is NULL-terminated, AFAIU, 63 { /* There are no guarantees that data is NULL-terminated, AFAIU,
63 * so let's play it safe, shall we? 64 * so let's play it safe, shall we?
64 */ 65 */
65 char *data_copy = GNUNET_malloc (data_len + 1); 66 char *data_copy = GNUNET_malloc (data_len + 1);
67
66 memcpy (data_copy, data, data_len); 68 memcpy (data_copy, data, data_len);
67 data_copy[data_len] = '\0'; 69 data_copy[data_len] = '\0';
68 result = GNUNET_GTK_from_loc_to_utf8 (data_copy); 70 result = GNUNET_GTK_from_loc_to_utf8 (data_copy);
@@ -100,7 +102,7 @@ GNUNET_FS_GTK_add_meta_data_to_list_store (void *cls, const char *plugin_name,
100 102
101 data_to_insert = GNUNET_FS_GTK_dubious_meta_to_utf8 (format, data, data_len); 103 data_to_insert = GNUNET_FS_GTK_dubious_meta_to_utf8 (format, data, data_len);
102 104
103 if (NULL != data_to_insert) 105 if (NULL != data_to_insert)
104 { 106 {
105 gtk_list_store_insert_with_values (ls, NULL, G_MAXINT, 0, type, 1, format, 107 gtk_list_store_insert_with_values (ls, NULL, G_MAXINT, 0, type, 1, format,
106 2, EXTRACTOR_metatype_to_string (type), 108 2, EXTRACTOR_metatype_to_string (type),
diff --git a/src/fs/gnunet-fs-gtk-common.h b/src/fs/gnunet-fs-gtk-common.h
index d0d7b4f9..f7ad5ab2 100644
--- a/src/fs/gnunet-fs-gtk-common.h
+++ b/src/fs/gnunet-fs-gtk-common.h
@@ -116,7 +116,7 @@ GNUNET_FS_GTK_add_meta_data_to_list_store (void *cls, const char *plugin_name,
116 */ 116 */
117char * 117char *
118GNUNET_FS_GTK_dubious_meta_to_utf8 (enum EXTRACTOR_MetaFormat format, 118GNUNET_FS_GTK_dubious_meta_to_utf8 (enum EXTRACTOR_MetaFormat format,
119 const char *data, size_t data_len); 119 const char *data, size_t data_len);
120 120
121 121
122#endif 122#endif
diff --git a/src/fs/gnunet-fs-gtk-download.c b/src/fs/gnunet-fs-gtk-download.c
index 09ae7e1f..ee6b1927 100644
--- a/src/fs/gnunet-fs-gtk-download.c
+++ b/src/fs/gnunet-fs-gtk-download.c
@@ -37,8 +37,8 @@ struct dialog_context
37 37
38 38
39gboolean 39gboolean
40GNUNET_GTK_save_as_dialog_delete_event_cb (GtkWidget *widget, GdkEvent *event, 40GNUNET_GTK_save_as_dialog_delete_event_cb (GtkWidget * widget, GdkEvent * event,
41 gpointer user_data) 41 gpointer user_data)
42{ 42{
43 GtkBuilder *builder; 43 GtkBuilder *builder;
44 struct dialog_context *dlc; 44 struct dialog_context *dlc;
@@ -73,7 +73,8 @@ GNUNET_GTK_save_as_dialog_delete_event_cb (GtkWidget *widget, GdkEvent *event,
73 return FALSE; 73 return FALSE;
74 } 74 }
75 GNUNET_free_non_null (dc->filename); 75 GNUNET_free_non_null (dc->filename);
76 dc->filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (dlc->dialog)); 76 dc->filename =
77 GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (dlc->dialog));
77 dc->is_recursive = 78 dc->is_recursive =
78 (TRUE == 79 (TRUE ==
79 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cb))) ? GNUNET_YES : 80 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cb))) ? GNUNET_YES :
@@ -122,17 +123,19 @@ GNUNET_GTK_save_as_dialog_delete_event_cb (GtkWidget *widget, GdkEvent *event,
122} 123}
123 124
124void 125void
125GNUNET_GTK_save_as_dialog_response_cb (GtkDialog *dialog, 126GNUNET_GTK_save_as_dialog_response_cb (GtkDialog * dialog, gint response_id,
126 gint response_id, gpointer user_data) 127 gpointer user_data)
127{ 128{
128 struct dialog_context *dlc; 129 struct dialog_context *dlc;
130
129 dlc = g_object_get_data (G_OBJECT (dialog), "dialog-context"); 131 dlc = g_object_get_data (G_OBJECT (dialog), "dialog-context");
130 if (dlc != NULL) 132 if (dlc != NULL)
131 dlc->response = response_id; 133 dlc->response = response_id;
132 /* dialogs don't get delete-event the way normal windows do, 134 /* dialogs don't get delete-event the way normal windows do,
133 * call the handler manually 135 * call the handler manually
134 */ 136 */
135 GNUNET_GTK_save_as_dialog_delete_event_cb (GTK_WIDGET (dialog), NULL, user_data); 137 GNUNET_GTK_save_as_dialog_delete_event_cb (GTK_WIDGET (dialog), NULL,
138 user_data);
136 gtk_widget_destroy (GTK_WIDGET (dialog)); 139 gtk_widget_destroy (GTK_WIDGET (dialog));
137} 140}
138 141
@@ -183,6 +186,7 @@ GNUNET_FS_GTK_open_download_as_dialog (struct DownloadContext *dc)
183 } 186 }
184 } 187 }
185 dlc = g_new0 (struct dialog_context, 1); 188 dlc = g_new0 (struct dialog_context, 1);
189
186 dlc->builder = builder; 190 dlc->builder = builder;
187 dlc->dialog = ad; 191 dlc->dialog = ad;
188 dlc->response = 0; 192 dlc->response = 0;
diff --git a/src/fs/gnunet-fs-gtk-edit_publish_dialog.c b/src/fs/gnunet-fs-gtk-edit_publish_dialog.c
index 356385c7..e50ff82e 100644
--- a/src/fs/gnunet-fs-gtk-edit_publish_dialog.c
+++ b/src/fs/gnunet-fs-gtk-edit_publish_dialog.c
@@ -32,15 +32,19 @@
32 32
33#include "metatypes.c" 33#include "metatypes.c"
34 34
35void change_metatypes (GtkBuilder *builder, gint code) 35void
36change_metatypes (GtkBuilder * builder, gint code)
36{ 37{
37 GtkListStore *metatypes_list; 38 GtkListStore *metatypes_list;
38 gint pub_type = 0, i; 39 gint pub_type = 0, i;
39 gint pubtype_count = 0; 40 gint pubtype_count = 0;
40 gint max_type; 41 gint max_type;
41 GtkTreeIter iter; 42 GtkTreeIter iter;
42 metatypes_list = GTK_LIST_STORE (gtk_builder_get_object (builder, 43
43 "GNUNET_GTK_publication_metadata_types_liststore")); 44 metatypes_list =
45 GTK_LIST_STORE (gtk_builder_get_object
46 (builder,
47 "GNUNET_GTK_publication_metadata_types_liststore"));
44 48
45 for (pub_type = 0; types[pub_type] != NULL; pub_type++) 49 for (pub_type = 0; types[pub_type] != NULL; pub_type++)
46 pubtype_count += 1; 50 pubtype_count += 1;
@@ -55,17 +59,20 @@ void change_metatypes (GtkBuilder *builder, gint code)
55 for (i = 0; types[pub_type][i] != EXTRACTOR_METATYPE_RESERVED; i++) 59 for (i = 0; types[pub_type][i] != EXTRACTOR_METATYPE_RESERVED; i++)
56 { 60 {
57 if (types[pub_type][i] < max_type && types[pub_type][i] > 0) 61 if (types[pub_type][i] < max_type && types[pub_type][i] > 0)
58 gtk_list_store_insert_with_values (metatypes_list, &iter, G_MAXINT, 62 gtk_list_store_insert_with_values (metatypes_list, &iter, G_MAXINT, 0,
59 0, types[pub_type][i], 63 types[pub_type][i], 1,
60 1, EXTRACTOR_METAFORMAT_UTF8, 64 EXTRACTOR_METAFORMAT_UTF8, 2,
61 2, EXTRACTOR_metatype_to_string (types[pub_type][i]), 65 EXTRACTOR_metatype_to_string (types
62 3, EXTRACTOR_metatype_to_description (types[pub_type][i]), -1); 66 [pub_type]
67 [i]), 3,
68 EXTRACTOR_metatype_to_description
69 (types[pub_type][i]), -1);
63 } 70 }
64} 71}
65 72
66void 73void
67GNUNET_GTK_edit_publication_type_combo_changed_cb (GtkComboBox *widget, 74GNUNET_GTK_edit_publication_type_combo_changed_cb (GtkComboBox * widget,
68 gpointer user_data) 75 gpointer user_data)
69{ 76{
70 GtkTreeIter iter; 77 GtkTreeIter iter;
71 GtkBuilder *builder; 78 GtkBuilder *builder;
@@ -76,8 +83,9 @@ GNUNET_GTK_edit_publication_type_combo_changed_cb (GtkComboBox *widget,
76 return; 83 return;
77 builder = GTK_BUILDER (user_data); 84 builder = GTK_BUILDER (user_data);
78 85
79 pubtypes_list = GTK_LIST_STORE (gtk_builder_get_object (builder, 86 pubtypes_list =
80 "GNUNET_GTK_publication_types_liststore")); 87 GTK_LIST_STORE (gtk_builder_get_object
88 (builder, "GNUNET_GTK_publication_types_liststore"));
81 89
82 gtk_tree_model_get (GTK_TREE_MODEL (pubtypes_list), &iter, 0, &code, -1); 90 gtk_tree_model_get (GTK_TREE_MODEL (pubtypes_list), &iter, 0, &code, -1);
83 91
@@ -116,8 +124,7 @@ metadata_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data)
116 sel = gtk_tree_view_get_selection (tv); 124 sel = gtk_tree_view_get_selection (tv);
117 button = 125 button =
118 GTK_WIDGET (gtk_builder_get_object 126 GTK_WIDGET (gtk_builder_get_object
119 (builder, 127 (builder, "GNUNET_GTK_edit_publication_delete_button"));
120 "GNUNET_GTK_edit_publication_delete_button"));
121 gtk_widget_set_sensitive (button, 128 gtk_widget_set_sensitive (button,
122 gtk_tree_selection_get_selected (sel, NULL, NULL)); 129 gtk_tree_selection_get_selected (sel, NULL, NULL));
123} 130}
@@ -149,8 +156,8 @@ keywords_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data)
149 156
150 157
151void 158void
152GNUNET_GTK_edit_publication_window_realize_cb (GtkWidget *widget, 159GNUNET_GTK_edit_publication_window_realize_cb (GtkWidget * widget,
153 gpointer user_data) 160 gpointer user_data)
154{ 161{
155 GtkBuilder *builder; 162 GtkBuilder *builder;
156 GtkTreeView *tv; 163 GtkTreeView *tv;
@@ -158,14 +165,16 @@ GNUNET_GTK_edit_publication_window_realize_cb (GtkWidget *widget,
158 165
159 builder = GTK_BUILDER (user_data); 166 builder = GTK_BUILDER (user_data);
160 167
161 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, 168 tv = GTK_TREE_VIEW (gtk_builder_get_object
162 "GNUNET_GTK_edit_publication_metadata_tree_view")); 169 (builder,
170 "GNUNET_GTK_edit_publication_metadata_tree_view"));
163 sel = gtk_tree_view_get_selection (tv); 171 sel = gtk_tree_view_get_selection (tv);
164 g_signal_connect (G_OBJECT (sel), "changed", 172 g_signal_connect (G_OBJECT (sel), "changed",
165 G_CALLBACK (metadata_selection_changed_cb), builder); 173 G_CALLBACK (metadata_selection_changed_cb), builder);
166 174
167 tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, 175 tv = GTK_TREE_VIEW (gtk_builder_get_object
168 "GNUNET_GTK_edit_publication_keyword_list_tree_view")); 176 (builder,
177 "GNUNET_GTK_edit_publication_keyword_list_tree_view"));
169 sel = gtk_tree_view_get_selection (tv); 178 sel = gtk_tree_view_get_selection (tv);
170 g_signal_connect (G_OBJECT (sel), "changed", 179 g_signal_connect (G_OBJECT (sel), "changed",
171 G_CALLBACK (keywords_selection_changed_cb), builder); 180 G_CALLBACK (keywords_selection_changed_cb), builder);
@@ -173,8 +182,8 @@ GNUNET_GTK_edit_publication_window_realize_cb (GtkWidget *widget,
173 182
174 183
175void 184void
176GNUNET_GTK_edit_publication_add_button_clicked_cb (GtkButton *button, 185GNUNET_GTK_edit_publication_add_button_clicked_cb (GtkButton * button,
177 gpointer user_data) 186 gpointer user_data)
178{ 187{
179 GtkBuilder *builder; 188 GtkBuilder *builder;
180 GtkTreeView *meta_tree; 189 GtkTreeView *meta_tree;
@@ -182,29 +191,37 @@ GNUNET_GTK_edit_publication_add_button_clicked_cb (GtkButton *button,
182 GtkTreeIter iter; 191 GtkTreeIter iter;
183 192
184 builder = GTK_BUILDER (user_data); 193 builder = GTK_BUILDER (user_data);
185 meta_tree = GTK_TREE_VIEW (gtk_builder_get_object (builder, 194 meta_tree =
186 "GNUNET_GTK_edit_publication_metadata_tree_view")); 195 GTK_TREE_VIEW (gtk_builder_get_object
196 (builder,
197 "GNUNET_GTK_edit_publication_metadata_tree_view"));
187 meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree)); 198 meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree));
188 199
189 gtk_list_store_insert (meta_list, &iter, 0); 200 gtk_list_store_insert (meta_list, &iter, 0);
190 /* type == 0 means "not set" */ 201 /* type == 0 means "not set" */
191 gtk_list_store_set (meta_list, &iter, 0, 0, 1, EXTRACTOR_METAFORMAT_UTF8, 202 gtk_list_store_set (meta_list, &iter, 0, 0, 1, EXTRACTOR_METAFORMAT_UTF8, 2,
192 2, _("Select a type"), 3, _("Specify a value"), 4, NULL, -1); 203 _("Select a type"), 3, _("Specify a value"), 4, NULL, -1);
193} 204}
194 205
195 206
196gboolean 207gboolean
197GNUNET_GTK_edit_publication_keyword_entry_key_press_event_cb (GtkWidget *widget, 208GNUNET_GTK_edit_publication_keyword_entry_key_press_event_cb (GtkWidget *
198 GdkEventKey *event, gpointer user_data) 209 widget,
210 GdkEventKey *
211 event,
212 gpointer
213 user_data)
199{ 214{
200 GtkBuilder *builder; 215 GtkBuilder *builder;
201 GtkButton *add_button; 216 GtkButton *add_button;
217
202 builder = GTK_BUILDER (user_data); 218 builder = GTK_BUILDER (user_data);
203 219
204 if (event->keyval == GDK_KEY_Return) 220 if (event->keyval == GDK_KEY_Return)
205 { 221 {
206 add_button = GTK_BUTTON (gtk_builder_get_object (builder, 222 add_button =
207 "GNUNET_GTK_edit_publication_add_button")); 223 GTK_BUTTON (gtk_builder_get_object
224 (builder, "GNUNET_GTK_edit_publication_add_button"));
208 GNUNET_GTK_edit_publication_add_button_clicked_cb (add_button, user_data); 225 GNUNET_GTK_edit_publication_add_button_clicked_cb (add_button, user_data);
209 return TRUE; 226 return TRUE;
210 } 227 }
@@ -212,10 +229,9 @@ GNUNET_GTK_edit_publication_keyword_entry_key_press_event_cb (GtkWidget *widget,
212} 229}
213 230
214 231
215void 232void GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb
216GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb (GtkCellRendererText *renderer, 233 (GtkCellRendererText * renderer, gchar * path, gchar * new_text,
217 gchar *path, gchar *new_text, 234 gpointer user_data)
218 gpointer user_data)
219{ 235{
220 GtkBuilder *builder; 236 GtkBuilder *builder;
221 GtkTreeView *meta_tree; 237 GtkTreeView *meta_tree;
@@ -228,14 +244,19 @@ GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb (GtkCellR
228 GtkTreeIter *pass_data = NULL; 244 GtkTreeIter *pass_data = NULL;
229 245
230 builder = GTK_BUILDER (user_data); 246 builder = GTK_BUILDER (user_data);
231 meta_tree = GTK_TREE_VIEW (gtk_builder_get_object (builder, 247 meta_tree =
232 "GNUNET_GTK_edit_publication_metadata_tree_view")); 248 GTK_TREE_VIEW (gtk_builder_get_object
249 (builder,
250 "GNUNET_GTK_edit_publication_metadata_tree_view"));
233 meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree)); 251 meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree));
234 if (!gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (meta_list), &iter, path)) 252 if (!gtk_tree_model_get_iter_from_string
253 (GTK_TREE_MODEL (meta_list), &iter, path))
235 return; 254 return;
236 255
237 combo = GTK_CELL_RENDERER_COMBO (gtk_builder_get_object (builder, 256 combo =
238 "GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer")); 257 GTK_CELL_RENDERER_COMBO (gtk_builder_get_object
258 (builder,
259 "GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer"));
239 260
240 pass_data = g_object_get_data (G_OBJECT (combo), "selected-type"); 261 pass_data = g_object_get_data (G_OBJECT (combo), "selected-type");
241 if (!pass_data) 262 if (!pass_data)
@@ -247,15 +268,15 @@ GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_edited_cb (GtkCellR
247 g_object_set_data (G_OBJECT (combo), "selected-type", NULL); 268 g_object_set_data (G_OBJECT (combo), "selected-type", NULL);
248 269
249 gtk_list_store_set (meta_list, &iter, 0, type_id, 1, 270 gtk_list_store_set (meta_list, &iter, 0, type_id, 1,
250 EXTRACTOR_METAFORMAT_UTF8, 2, new_text, 4, description, -1); 271 EXTRACTOR_METAFORMAT_UTF8, 2, new_text, 4, description,
272 -1);
251 g_free (description); 273 g_free (description);
252} 274}
253 275
254 276
255void 277void GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_changed_cb
256GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_changed_cb ( 278 (GtkCellRendererCombo * combo, gchar * path_string, GtkTreeIter * new_iter,
257 GtkCellRendererCombo *combo, gchar *path_string, GtkTreeIter *new_iter, 279 gpointer user_data)
258 gpointer user_data)
259{ 280{
260 GtkTreeIter *pass_data; 281 GtkTreeIter *pass_data;
261 282
@@ -268,10 +289,9 @@ GNUNET_GTK_edit_publication_metadata_tree_view_type_renderer_changed_cb (
268} 289}
269 290
270 291
271void 292void GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb
272GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb ( 293 (GtkCellRendererText * renderer, gchar * path, gchar * new_text,
273 GtkCellRendererText *renderer, gchar *path, gchar *new_text, 294 gpointer user_data)
274 gpointer user_data)
275{ 295{
276 GtkBuilder *builder; 296 GtkBuilder *builder;
277 GtkTreeView *meta_tree; 297 GtkTreeView *meta_tree;
@@ -287,14 +307,17 @@ GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb (
287 struct EditPublicationState *state = NULL; 307 struct EditPublicationState *state = NULL;
288 308
289 builder = GTK_BUILDER (user_data); 309 builder = GTK_BUILDER (user_data);
290 meta_tree = GTK_TREE_VIEW (gtk_builder_get_object (builder, 310 meta_tree =
291 "GNUNET_GTK_edit_publication_metadata_tree_view")); 311 GTK_TREE_VIEW (gtk_builder_get_object
312 (builder,
313 "GNUNET_GTK_edit_publication_metadata_tree_view"));
292 meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree)); 314 meta_list = GTK_LIST_STORE (gtk_tree_view_get_model (meta_tree));
293 if (!gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (meta_list), &iter, path)) 315 if (!gtk_tree_model_get_iter_from_string
316 (GTK_TREE_MODEL (meta_list), &iter, path))
294 return; 317 return;
295 318
296 pubwindow = gtk_builder_get_object (builder, 319 pubwindow =
297 "GNUNET_GTK_edit_publication_window"); 320 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
298 state = g_object_get_data (pubwindow, PUBSTATE); 321 state = g_object_get_data (pubwindow, PUBSTATE);
299 if (!state) 322 if (!state)
300 { 323 {
@@ -303,9 +326,8 @@ GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb (
303 } 326 }
304 327
305 gtk_tree_model_get (GTK_TREE_MODEL (meta_list), &iter, 0, &metatype, -1); 328 gtk_tree_model_get (GTK_TREE_MODEL (meta_list), &iter, 0, &metatype, -1);
306 if (metatype == EXTRACTOR_METATYPE_FILENAME 329 if (metatype == EXTRACTOR_METATYPE_FILENAME &&
307 && new_text[strlen (new_text) - 1] != '/' 330 new_text[strlen (new_text) - 1] != '/' && state->is_directory)
308 && state->is_directory)
309 { 331 {
310 GNUNET_asprintf (&avalue, "%s/", new_text); 332 GNUNET_asprintf (&avalue, "%s/", new_text);
311 /* if user typed '\' instead of '/', change it! */ 333 /* if user typed '\' instead of '/', change it! */
@@ -318,7 +340,7 @@ GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb (
318 } 340 }
319 while (NULL != (pos = strstr (avalue, "\\"))) 341 while (NULL != (pos = strstr (avalue, "\\")))
320 *pos = '/'; 342 *pos = '/';
321 // remove '../' everywhere 343 // remove '../' everywhere
322 while (NULL != (pos = strstr (avalue, "../"))) 344 while (NULL != (pos = strstr (avalue, "../")))
323 { 345 {
324 pos[0] = '_'; 346 pos[0] = '_';
@@ -339,8 +361,8 @@ GNUNET_GTK_edit_publication_metadata_tree_view_value_renderer_edited_cb (
339 361
340 362
341void 363void
342GNUNET_GTK_edit_publication_delete_button_clicked_cb (GtkButton *button, 364GNUNET_GTK_edit_publication_delete_button_clicked_cb (GtkButton * button,
343 gpointer user_data) 365 gpointer user_data)
344{ 366{
345 GtkTreeView *tv; 367 GtkTreeView *tv;
346 GtkTreeSelection *sel; 368 GtkTreeSelection *sel;
@@ -363,8 +385,10 @@ GNUNET_GTK_edit_publication_delete_button_clicked_cb (GtkButton *button,
363 385
364 386
365void 387void
366GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb ( 388GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb (GtkButton *
367 GtkButton *button, gpointer user_data) 389 button,
390 gpointer
391 user_data)
368{ 392{
369 const char *keyword; 393 const char *keyword;
370 GtkEntry *entry; 394 GtkEntry *entry;
@@ -383,9 +407,10 @@ GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb (
383 keyword = gtk_entry_get_text (entry); 407 keyword = gtk_entry_get_text (entry);
384 if (strlen (keyword) > 0) 408 if (strlen (keyword) > 0)
385 { 409 {
386 gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, 1, TRUE, -1); 410 gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, 1, TRUE,
387 ok = GTK_WIDGET (gtk_builder_get_object (builder, 411 -1);
388 "GNUNET_GTK_edit_publication_confirm_button")); 412 ok = GTK_WIDGET (gtk_builder_get_object
413 (builder, "GNUNET_GTK_edit_publication_confirm_button"));
389 gtk_widget_set_sensitive (ok, TRUE); 414 gtk_widget_set_sensitive (ok, TRUE);
390 } 415 }
391 gtk_entry_set_text (entry, ""); 416 gtk_entry_set_text (entry, "");
@@ -393,27 +418,29 @@ GNUNET_GTK_edit_publication_keyword_list_add_button_clicked_cb (
393 418
394 419
395static gboolean 420static gboolean
396gtk_tree_model_has_items_cb (GtkTreeModel *model, GtkTreePath *path, 421gtk_tree_model_has_items_cb (GtkTreeModel * model, GtkTreePath * path,
397 GtkTreeIter *iter, gpointer data) 422 GtkTreeIter * iter, gpointer data)
398{ 423{
399 gboolean *val = (gboolean *) data; 424 gboolean *val = (gboolean *) data;
425
400 *val = TRUE; 426 *val = TRUE;
401 return TRUE; 427 return TRUE;
402} 428}
403 429
404 430
405static gboolean 431static gboolean
406gtk_tree_model_has_items (GtkTreeModel *model) 432gtk_tree_model_has_items (GtkTreeModel * model)
407{ 433{
408 gboolean b = FALSE; 434 gboolean b = FALSE;
435
409 gtk_tree_model_foreach (model, &gtk_tree_model_has_items_cb, &b); 436 gtk_tree_model_foreach (model, &gtk_tree_model_has_items_cb, &b);
410 return b; 437 return b;
411} 438}
412 439
413 440
414void 441void
415GNUNET_GTK_edit_publication_keyword_entry_changed_cb (GtkEditable *editable, 442GNUNET_GTK_edit_publication_keyword_entry_changed_cb (GtkEditable * editable,
416 gpointer user_data) 443 gpointer user_data)
417{ 444{
418 const char *keyword; 445 const char *keyword;
419 GtkEntry *entry; 446 GtkEntry *entry;
@@ -435,8 +462,10 @@ GNUNET_GTK_edit_publication_keyword_entry_changed_cb (GtkEditable *editable,
435 462
436 463
437void 464void
438GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb ( 465GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb (GtkButton *
439 GtkButton *button, gpointer user_data) 466 button,
467 gpointer
468 user_data)
440{ 469{
441 GtkTreeView *tv; 470 GtkTreeView *tv;
442 GtkTreeSelection *sel; 471 GtkTreeSelection *sel;
@@ -446,6 +475,7 @@ GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb (
446 GtkWidget *ok; 475 GtkWidget *ok;
447 GObject *pubwindow; 476 GObject *pubwindow;
448 struct EditPublicationState *state = NULL; 477 struct EditPublicationState *state = NULL;
478
449 builder = GTK_BUILDER (user_data); 479 builder = GTK_BUILDER (user_data);
450 480
451 tv = GTK_TREE_VIEW (gtk_builder_get_object 481 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -461,11 +491,11 @@ GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb (
461 if (gtk_list_store_remove (GTK_LIST_STORE (tm), &iter)) 491 if (gtk_list_store_remove (GTK_LIST_STORE (tm), &iter))
462 gtk_tree_selection_select_iter (sel, &iter); 492 gtk_tree_selection_select_iter (sel, &iter);
463 493
464 ok = GTK_WIDGET (gtk_builder_get_object (builder, 494 ok = GTK_WIDGET (gtk_builder_get_object
465 "GNUNET_GTK_edit_publication_confirm_button")); 495 (builder, "GNUNET_GTK_edit_publication_confirm_button"));
466 496
467 pubwindow = gtk_builder_get_object (builder, 497 pubwindow =
468 "GNUNET_GTK_edit_publication_window"); 498 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
469 state = g_object_get_data (pubwindow, PUBSTATE); 499 state = g_object_get_data (pubwindow, PUBSTATE);
470 if (!state) 500 if (!state)
471 { 501 {
@@ -478,9 +508,7 @@ GNUNET_GTK_edit_publication_keyword_list_del_button_clicked_cb (
478} 508}
479 509
480 510
481void 511void GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button_file_set_cb (GtkFileChooserButton * widget, gpointer user_data)
482GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button_file_set_cb (
483 GtkFileChooserButton *widget, gpointer user_data)
484{ 512{
485 gchar *fn; 513 gchar *fn;
486 GtkImage *image; 514 GtkImage *image;
@@ -488,8 +516,8 @@ GNUNET_GTK_edit_publication_metadata_preview_file_chooser_button_file_set_cb (
488 GtkBuilder *builder = GTK_BUILDER (user_data); 516 GtkBuilder *builder = GTK_BUILDER (user_data);
489 struct EditPublicationState *state = NULL; 517 struct EditPublicationState *state = NULL;
490 518
491 pubwindow = gtk_builder_get_object (builder, 519 pubwindow =
492 "GNUNET_GTK_edit_publication_window"); 520 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
493 state = g_object_get_data (pubwindow, PUBSTATE); 521 state = g_object_get_data (pubwindow, PUBSTATE);
494 if (!state) 522 if (!state)
495 { 523 {
@@ -555,8 +583,8 @@ preserve_meta_items (void *cls, const char *plugin_name,
555 GObject *pubwindow; 583 GObject *pubwindow;
556 struct EditPublicationState *state = NULL; 584 struct EditPublicationState *state = NULL;
557 585
558 pubwindow = gtk_builder_get_object (builder, 586 pubwindow =
559 "GNUNET_GTK_edit_publication_window"); 587 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
560 state = g_object_get_data (pubwindow, PUBSTATE); 588 state = g_object_get_data (pubwindow, PUBSTATE);
561 if (!state) 589 if (!state)
562 { 590 {
@@ -570,7 +598,8 @@ preserve_meta_items (void *cls, const char *plugin_name,
570 case EXTRACTOR_METAFORMAT_UTF8: 598 case EXTRACTOR_METAFORMAT_UTF8:
571 case EXTRACTOR_METAFORMAT_C_STRING: 599 case EXTRACTOR_METAFORMAT_C_STRING:
572 tm = GTK_TREE_MODEL (gtk_builder_get_object 600 tm = GTK_TREE_MODEL (gtk_builder_get_object
573 (builder, "GNUNET_GTK_publication_metadata_liststore")); 601 (builder,
602 "GNUNET_GTK_publication_metadata_liststore"));
574 if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) 603 if (TRUE == gtk_tree_model_get_iter_first (tm, &iter))
575 { 604 {
576 do 605 do
@@ -650,8 +679,8 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi,
650 GObject *pubwindow; 679 GObject *pubwindow;
651 struct EditPublicationState *state = NULL; 680 struct EditPublicationState *state = NULL;
652 681
653 pubwindow = gtk_builder_get_object (builder, 682 pubwindow =
654 "GNUNET_GTK_edit_publication_window"); 683 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
655 state = g_object_get_data (pubwindow, PUBSTATE); 684 state = g_object_get_data (pubwindow, PUBSTATE);
656 if (!state) 685 if (!state)
657 { 686 {
@@ -659,8 +688,9 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi,
659 return GNUNET_SYSERR; 688 return GNUNET_SYSERR;
660 } 689 }
661 690
662 if (!GNUNET_GTK_get_selected_anonymity_level (builder, 691 if (!GNUNET_GTK_get_selected_anonymity_level
663 "GNUNET_GTK_edit_publication_anonymity_combobox", &bo->anonymity_level)) 692 (builder, "GNUNET_GTK_edit_publication_anonymity_combobox",
693 &bo->anonymity_level))
664 return GNUNET_SYSERR; 694 return GNUNET_SYSERR;
665 bo->content_priority = 695 bo->content_priority =
666 gtk_spin_button_get_value (GTK_SPIN_BUTTON 696 gtk_spin_button_get_value (GTK_SPIN_BUTTON
@@ -677,14 +707,14 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi,
677 "GNUNET_GTK_edit_publication_expiration_year_spin_button")); 707 "GNUNET_GTK_edit_publication_expiration_year_spin_button"));
678 bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); 708 bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb);
679 709
680 if (! context->allow_no_keywords) 710 if (!context->allow_no_keywords)
681 { 711 {
682 g_free (context->root); 712 g_free (context->root);
683 context->root = 713 context->root =
684 g_strdup (gtk_entry_get_text (GTK_ENTRY 714 g_strdup (gtk_entry_get_text
685 (gtk_builder_get_object 715 (GTK_ENTRY
686 (builder, 716 (gtk_builder_get_object
687 "GNUNET_GTK_edit_publication_root_entry")))); 717 (builder, "GNUNET_GTK_edit_publication_root_entry"))));
688 } 718 }
689 /* update URI */ 719 /* update URI */
690 if (NULL != (*uri)) 720 if (NULL != (*uri))
@@ -726,7 +756,8 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi,
726 gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1); 756 gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1);
727 if (ntype > 0) 757 if (ntype > 0)
728 GNUNET_CONTAINER_meta_data_insert (nm, "<user>", ntype, nformat, 758 GNUNET_CONTAINER_meta_data_insert (nm, "<user>", ntype, nformat,
729 "text/plain", value, strlen (value) + 1); 759 "text/plain", value,
760 strlen (value) + 1);
730 g_free (value); 761 g_free (value);
731 } 762 }
732 while (TRUE == gtk_tree_model_iter_next (tm, &iter)); 763 while (TRUE == gtk_tree_model_iter_next (tm, &iter));
@@ -775,8 +806,8 @@ file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi,
775 806
776 807
777void 808void
778GNUNET_GTK_edit_publication_cancel_button_clicked_cb ( 809GNUNET_GTK_edit_publication_cancel_button_clicked_cb (GtkButton * button,
779 GtkButton *button, gpointer user_data) 810 gpointer user_data)
780{ 811{
781 GtkBuilder *builder; 812 GtkBuilder *builder;
782 GObject *pubwindow; 813 GObject *pubwindow;
@@ -784,8 +815,8 @@ GNUNET_GTK_edit_publication_cancel_button_clicked_cb (
784 815
785 builder = GTK_BUILDER (user_data); 816 builder = GTK_BUILDER (user_data);
786 817
787 pubwindow = gtk_builder_get_object (builder, 818 pubwindow =
788 "GNUNET_GTK_edit_publication_window"); 819 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
789 state = g_object_get_data (pubwindow, PUBSTATE); 820 state = g_object_get_data (pubwindow, PUBSTATE);
790 if (!state) 821 if (!state)
791 { 822 {
@@ -794,7 +825,8 @@ GNUNET_GTK_edit_publication_cancel_button_clicked_cb (
794 } 825 }
795 826
796 state->cb (state->cls, state->do_index, state->short_fn, 827 state->cb (state->cls, state->do_index, state->short_fn,
797 state->anonymity_level, state->priority, NULL, GTK_RESPONSE_CANCEL); 828 state->anonymity_level, state->priority, NULL,
829 GTK_RESPONSE_CANCEL);
798 g_free (state); 830 g_free (state);
799 g_object_set_data (pubwindow, PUBSTATE, NULL); 831 g_object_set_data (pubwindow, PUBSTATE, NULL);
800 gtk_widget_hide (GTK_WIDGET (pubwindow)); 832 gtk_widget_hide (GTK_WIDGET (pubwindow));
@@ -802,7 +834,8 @@ GNUNET_GTK_edit_publication_cancel_button_clicked_cb (
802 834
803 835
804void 836void
805GNUNET_GTK_edit_publication_confirm_button_clicked_cb (GtkButton *button, gpointer user_data) 837GNUNET_GTK_edit_publication_confirm_button_clicked_cb (GtkButton * button,
838 gpointer user_data)
806{ 839{
807 GtkBuilder *builder; 840 GtkBuilder *builder;
808 GObject *pubwindow; 841 GObject *pubwindow;
@@ -811,8 +844,8 @@ GNUNET_GTK_edit_publication_confirm_button_clicked_cb (GtkButton *button, gpoint
811 844
812 builder = GTK_BUILDER (user_data); 845 builder = GTK_BUILDER (user_data);
813 846
814 pubwindow = gtk_builder_get_object (builder, 847 pubwindow =
815 "GNUNET_GTK_edit_publication_window"); 848 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
816 state = g_object_get_data (pubwindow, PUBSTATE); 849 state = g_object_get_data (pubwindow, PUBSTATE);
817 if (!state) 850 if (!state)
818 { 851 {
@@ -826,29 +859,27 @@ GNUNET_GTK_edit_publication_confirm_button_clicked_cb (GtkButton *button, gpoint
826 ctx.md = NULL; 859 ctx.md = NULL;
827 ctx.allow_no_keywords = state->allow_no_keywords; 860 ctx.allow_no_keywords = state->allow_no_keywords;
828 861
829 GNUNET_FS_file_information_inspect (state->fip, &file_information_update, &ctx); 862 GNUNET_FS_file_information_inspect (state->fip, &file_information_update,
863 &ctx);
830 state->short_fn = ctx.short_fn; 864 state->short_fn = ctx.short_fn;
831 if (!GNUNET_GTK_get_selected_anonymity_level (builder, 865 if (!GNUNET_GTK_get_selected_anonymity_level
832 "GNUNET_GTK_edit_publication_anonymity_combobox", 866 (builder, "GNUNET_GTK_edit_publication_anonymity_combobox",
833 &state->anonymity_level)) 867 &state->anonymity_level))
834 state->priority = 868 state->priority =
835 gtk_spin_button_get_value (GTK_SPIN_BUTTON 869 gtk_spin_button_get_value (GTK_SPIN_BUTTON
836 (gtk_builder_get_object 870 (gtk_builder_get_object
837 (builder, 871 (builder,
838 "GNUNET_GTK_edit_publication_priority_spin_button"))); 872 "GNUNET_GTK_edit_publication_priority_spin_button")));
839 state->do_index = 873 state->do_index =
840 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 874 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
841 (gtk_builder_get_object 875 (gtk_builder_get_object
842 (builder, 876 (builder,
843 "GNUNET_GTK_edit_publication_index_checkbutton"))); 877 "GNUNET_GTK_edit_publication_index_checkbutton")));
844 878
845 879
846 state->cb (state->cls, 880 state->cb (state->cls, state->do_index, state->short_fn,
847 state->do_index, 881 state->anonymity_level, state->priority, ctx.root,
848 state->short_fn, 882 GTK_RESPONSE_OK);
849 state->anonymity_level,
850 state->priority, ctx.root,
851 GTK_RESPONSE_OK);
852 GNUNET_free_non_null (state->short_fn); 883 GNUNET_free_non_null (state->short_fn);
853 GNUNET_free (state); 884 GNUNET_free (state);
854 g_object_set_data (pubwindow, PUBSTATE, NULL); 885 g_object_set_data (pubwindow, PUBSTATE, NULL);
@@ -856,15 +887,18 @@ GNUNET_GTK_edit_publication_confirm_button_clicked_cb (GtkButton *button, gpoint
856} 887}
857 888
858gboolean 889gboolean
859GNUNET_GTK_edit_publication_window_delete_event_cb (GtkWidget *widget, 890GNUNET_GTK_edit_publication_window_delete_event_cb (GtkWidget * widget,
860 GdkEvent *event, gpointer user_data) 891 GdkEvent * event,
892 gpointer user_data)
861{ 893{
862 GtkBuilder *builder; 894 GtkBuilder *builder;
863 GtkButton *button; 895 GtkButton *button;
896
864 builder = GTK_BUILDER (user_data); 897 builder = GTK_BUILDER (user_data);
865 898
866 button = GTK_BUTTON (gtk_builder_get_object (builder, 899 button =
867 "GNUNET_GTK_edit_publication_cancel_button")); 900 GTK_BUTTON (gtk_builder_get_object
901 (builder, "GNUNET_GTK_edit_publication_cancel_button"));
868 902
869 GNUNET_GTK_edit_publication_cancel_button_clicked_cb (button, user_data); 903 GNUNET_GTK_edit_publication_cancel_button_clicked_cb (button, user_data);
870 return TRUE; 904 return TRUE;
@@ -885,7 +919,8 @@ add_keyword (void *cls, const char *keyword, int is_mandatory)
885 GtkTreeIter iter; 919 GtkTreeIter iter;
886 920
887 ls = GTK_LIST_STORE (cls); 921 ls = GTK_LIST_STORE (cls);
888 gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, 1, FALSE, -1); 922 gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, 1, FALSE,
923 -1);
889 return GNUNET_OK; 924 return GNUNET_OK;
890} 925}
891 926
@@ -924,9 +959,12 @@ file_information_extract (void *cls, struct GNUNET_FS_FileInformation *fi,
924 GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, ls); 959 GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, ls);
925 if (NULL != meta) 960 if (NULL != meta)
926 { 961 {
927 ls = GTK_LIST_STORE (gtk_builder_get_object (builder, 962 ls = GTK_LIST_STORE (gtk_builder_get_object
928 "GNUNET_GTK_publication_metadata_liststore")); 963 (builder,
929 GNUNET_CONTAINER_meta_data_iterate (meta, &GNUNET_FS_GTK_add_meta_data_to_list_store, ls); 964 "GNUNET_GTK_publication_metadata_liststore"));
965 GNUNET_CONTAINER_meta_data_iterate (meta,
966 &GNUNET_FS_GTK_add_meta_data_to_list_store,
967 ls);
930 pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta); 968 pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta);
931 if (pixbuf != NULL) 969 if (pixbuf != NULL)
932 { 970 {
@@ -944,7 +982,8 @@ file_information_extract (void *cls, struct GNUNET_FS_FileInformation *fi,
944 "GNUNET_GTK_edit_publication_expiration_year_spin_button")), 982 "GNUNET_GTK_edit_publication_expiration_year_spin_button")),
945 year); 983 year);
946 GNUNET_GTK_select_anonymity_level (builder, 984 GNUNET_GTK_select_anonymity_level (builder,
947 "GNUNET_GTK_edit_publication_anonymity_combobox", bo->anonymity_level); 985 "GNUNET_GTK_edit_publication_anonymity_combobox",
986 bo->anonymity_level);
948 gtk_spin_button_set_value (GTK_SPIN_BUTTON 987 gtk_spin_button_set_value (GTK_SPIN_BUTTON
949 (gtk_builder_get_object 988 (gtk_builder_get_object
950 (builder, 989 (builder,
@@ -964,15 +1003,13 @@ file_information_extract (void *cls, struct GNUNET_FS_FileInformation *fi,
964 * short_fn MUST be UTF-8-encoded 1003 * short_fn MUST be UTF-8-encoded
965 */ 1004 */
966void 1005void
967GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder *builder, 1006GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder * builder, GtkWindow * parent,
968 GtkWindow *parent, 1007 int do_index, const char *short_fn,
969 int do_index, 1008 uint32_t anonymity_level, uint32_t priority,
970 const char *short_fn, 1009 struct GNUNET_FS_FileInformation *fip,
971 uint32_t anonymity_level, 1010 gboolean allow_no_keywords,
972 uint32_t priority, 1011 GNUNET_FS_GTK_EditPublishDialogCallback cb,
973 struct GNUNET_FS_FileInformation *fip, 1012 gpointer cls)
974 gboolean allow_no_keywords,
975 GNUNET_FS_GTK_EditPublishDialogCallback cb, gpointer cls)
976{ 1013{
977 GtkWidget *dialog; 1014 GtkWidget *dialog;
978 GObject *pubwindow; 1015 GObject *pubwindow;
@@ -994,32 +1031,40 @@ GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder *builder,
994 "GNUNET_GTK_edit_publication_index_checkbutton"))); 1031 "GNUNET_GTK_edit_publication_index_checkbutton")));
995 gtk_widget_hide (GTK_WIDGET 1032 gtk_widget_hide (GTK_WIDGET
996 (gtk_builder_get_object 1033 (gtk_builder_get_object
997 (builder, 1034 (builder, "GNUNET_GTK_edit_publication_index_label")));
998 "GNUNET_GTK_edit_publication_index_label")));
999 } 1035 }
1000 if (allow_no_keywords) 1036 if (allow_no_keywords)
1001 { 1037 {
1002 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, 1038 gtk_widget_hide (GTK_WIDGET
1003 "GNUNET_GTK_edit_publication_root_entry"))); 1039 (gtk_builder_get_object
1004 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, 1040 (builder, "GNUNET_GTK_edit_publication_root_entry")));
1005 "GNUNET_GTK_edit_publication_root_label"))); 1041 gtk_widget_hide (GTK_WIDGET
1042 (gtk_builder_get_object
1043 (builder, "GNUNET_GTK_edit_publication_root_label")));
1006 } 1044 }
1007 gtk_list_store_clear (GTK_LIST_STORE (gtk_builder_get_object ( 1045 gtk_list_store_clear (GTK_LIST_STORE
1008 builder, "GNUNET_GTK_publication_keywords_liststore"))); 1046 (gtk_builder_get_object
1009 gtk_list_store_clear (GTK_LIST_STORE (gtk_builder_get_object ( 1047 (builder,
1010 builder, "GNUNET_GTK_publication_metadata_liststore"))); 1048 "GNUNET_GTK_publication_keywords_liststore")));
1049 gtk_list_store_clear (GTK_LIST_STORE
1050 (gtk_builder_get_object
1051 (builder,
1052 "GNUNET_GTK_publication_metadata_liststore")));
1011 1053
1012 GNUNET_FS_file_information_inspect (fip, &file_information_extract, builder); 1054 GNUNET_FS_file_information_inspect (fip, &file_information_extract, builder);
1013 dialog = GTK_WIDGET (gtk_builder_get_object (builder, 1055 dialog =
1014 "GNUNET_GTK_edit_publication_window")); 1056 GTK_WIDGET (gtk_builder_get_object
1057 (builder, "GNUNET_GTK_edit_publication_window"));
1015 if (NULL != short_fn) 1058 if (NULL != short_fn)
1016 gtk_window_set_title (GTK_WINDOW (dialog), short_fn); 1059 gtk_window_set_title (GTK_WINDOW (dialog), short_fn);
1017 else 1060 else
1018 gtk_window_set_title (GTK_WINDOW (dialog), _("<unnamed>")); 1061 gtk_window_set_title (GTK_WINDOW (dialog), _("<unnamed>"));
1019 pubtypes_list = GTK_LIST_STORE (gtk_builder_get_object (builder, 1062 pubtypes_list =
1020 "GNUNET_GTK_publication_types_liststore")); 1063 GTK_LIST_STORE (gtk_builder_get_object
1021 pubtypes_combo = GTK_COMBO_BOX (gtk_builder_get_object (builder, 1064 (builder, "GNUNET_GTK_publication_types_liststore"));
1022 "GNUNET_GTK_edit_publication_type_combo")); 1065 pubtypes_combo =
1066 GTK_COMBO_BOX (gtk_builder_get_object
1067 (builder, "GNUNET_GTK_edit_publication_type_combo"));
1023 1068
1024 if (gtk_combo_box_get_active_iter (pubtypes_combo, &iter)) 1069 if (gtk_combo_box_get_active_iter (pubtypes_combo, &iter))
1025 { 1070 {
@@ -1046,11 +1091,11 @@ GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder *builder,
1046 GTK_ENTRY (gtk_builder_get_object 1091 GTK_ENTRY (gtk_builder_get_object
1047 (builder, "GNUNET_GTK_edit_publication_keyword_entry")); 1092 (builder, "GNUNET_GTK_edit_publication_keyword_entry"));
1048 gtk_entry_set_text (entry, ""); 1093 gtk_entry_set_text (entry, "");
1049 pubwindow = gtk_builder_get_object (builder, 1094 pubwindow =
1050 "GNUNET_GTK_edit_publication_window"); 1095 gtk_builder_get_object (builder, "GNUNET_GTK_edit_publication_window");
1051 g_object_set_data (pubwindow, PUBSTATE, state); 1096 g_object_set_data (pubwindow, PUBSTATE, state);
1052 ok = GTK_WIDGET (gtk_builder_get_object (builder, 1097 ok = GTK_WIDGET (gtk_builder_get_object
1053 "GNUNET_GTK_edit_publication_confirm_button")); 1098 (builder, "GNUNET_GTK_edit_publication_confirm_button"));
1054 gtk_widget_set_sensitive (ok, allow_no_keywords ? TRUE : FALSE); 1099 gtk_widget_set_sensitive (ok, allow_no_keywords ? TRUE : FALSE);
1055 gtk_window_set_transient_for (GTK_WINDOW (pubwindow), parent); 1100 gtk_window_set_transient_for (GTK_WINDOW (pubwindow), parent);
1056 gtk_window_present (GTK_WINDOW (dialog)); 1101 gtk_window_present (GTK_WINDOW (dialog));
diff --git a/src/fs/gnunet-fs-gtk-edit_publish_dialog.h b/src/fs/gnunet-fs-gtk-edit_publish_dialog.h
index 4d24cd64..d1ef015e 100644
--- a/src/fs/gnunet-fs-gtk-edit_publish_dialog.h
+++ b/src/fs/gnunet-fs-gtk-edit_publish_dialog.h
@@ -41,28 +41,26 @@
41 * @param root namespace root, NULL for file publishing 41 * @param root namespace root, NULL for file publishing
42 * @param ret GTK_RESPONSE_OK if the dialog was closed with "OK" 42 * @param ret GTK_RESPONSE_OK if the dialog was closed with "OK"
43 */ 43 */
44typedef void 44typedef void (*GNUNET_FS_GTK_EditPublishDialogCallback) (gpointer cls,
45(*GNUNET_FS_GTK_EditPublishDialogCallback) (gpointer cls, int do_index, 45 int do_index,
46 const char *short_fn, 46 const char *short_fn,
47 guint anonymity_level, 47 guint anonymity_level,
48 guint priority, 48 guint priority,
49 const char *root, 49 const char *root,
50 int ret); 50 int ret);
51 51
52 52
53/** 53/**
54 * Open the dialog to edit file information data. 54 * Open the dialog to edit file information data.
55 */ 55 */
56void 56void
57GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder *builder, 57GNUNET_FS_GTK_edit_publish_dialog (GtkBuilder * builder, GtkWindow * parent,
58 GtkWindow *parent, 58 int do_index, const char *short_fn,
59 int do_index, 59 uint32_t anonymity_level, uint32_t priority,
60 const char *short_fn, 60 struct GNUNET_FS_FileInformation *fip,
61 uint32_t anonymity_level, 61 gboolean allow_no_keywords,
62 uint32_t priority, 62 GNUNET_FS_GTK_EditPublishDialogCallback cb,
63 struct GNUNET_FS_FileInformation *fip, 63 gpointer cls);
64 gboolean allow_no_keywords,
65 GNUNET_FS_GTK_EditPublishDialogCallback cb, gpointer cls);
66 64
67#endif 65#endif
68/* end of gnunet-fs-gtk-edit_publish_dialog.h */ 66/* end of gnunet-fs-gtk-edit_publish_dialog.h */
diff --git a/src/fs/gnunet-fs-gtk-event_handler.c b/src/fs/gnunet-fs-gtk-event_handler.c
index 631c3426..ac734af5 100644
--- a/src/fs/gnunet-fs-gtk-event_handler.c
+++ b/src/fs/gnunet-fs-gtk-event_handler.c
@@ -161,24 +161,23 @@ stop_download (struct DownloadEntry *de, int is_suspend)
161 GtkTreePath *path; 161 GtkTreePath *path;
162 GtkTreeModel *tm; 162 GtkTreeModel *tm;
163 struct SearchResult *search_result; 163 struct SearchResult *search_result;
164 164
165 path = gtk_tree_row_reference_get_path (de->rr); 165 path = gtk_tree_row_reference_get_path (de->rr);
166 tm = gtk_tree_row_reference_get_model (de->rr); 166 tm = gtk_tree_row_reference_get_model (de->rr);
167 if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) 167 if (TRUE != gtk_tree_model_get_iter (tm, &iter, path))
168 GNUNET_break (0); 168 GNUNET_break (0);
169 else 169 else
170 { 170 {
171 gtk_tree_model_get (tm, &iter, 171 gtk_tree_model_get (tm, &iter, 9, &search_result, -1);
172 9, &search_result, -1); 172 /*Always fails on downloads started by Download URI */
173 /*Always fails on downloads started by Download URI*/ 173 /*GNUNET_assert (search_result->download == de); */
174 /*GNUNET_assert (search_result->download == de);*/ 174 search_result->download = NULL;
175 search_result->download = NULL; 175 if (NULL == search_result->result)
176 if (NULL == search_result->result) 176 (void) gtk_tree_store_remove (GTK_TREE_STORE (tm), &iter);
177 (void) gtk_tree_store_remove (GTK_TREE_STORE (tm), &iter); 177 else
178 else 178 change_download_colour (de, "white");
179 change_download_colour (de, "white"); 179 }
180 } 180 gtk_tree_path_free (path);
181 gtk_tree_path_free (path);
182 gtk_tree_row_reference_free (de->rr); 181 gtk_tree_row_reference_free (de->rr);
183 GNUNET_FS_uri_destroy (de->uri); 182 GNUNET_FS_uri_destroy (de->uri);
184 GNUNET_CONTAINER_meta_data_destroy (de->meta); 183 GNUNET_CONTAINER_meta_data_destroy (de->meta);
@@ -332,7 +331,7 @@ mark_download_completed (struct DownloadEntry *de, uint64_t size,
332 const char *filename) 331 const char *filename)
333{ 332{
334 struct AddDirectoryEntryContext ade; 333 struct AddDirectoryEntryContext ade;
335 334
336 de->is_done = GNUNET_YES; 335 de->is_done = GNUNET_YES;
337 (void) mark_download_progress (de, size, size, NULL, 0, 0, 0); 336 (void) mark_download_progress (de, size, size, NULL, 0, 0, 0);
338 if ((GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) && 337 if ((GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) &&
@@ -481,7 +480,7 @@ download_lost_parent (struct DownloadEntry *de, uint64_t size,
481 GtkTreeModel *tm_old; 480 GtkTreeModel *tm_old;
482 GtkTreeIter iter_old; 481 GtkTreeIter iter_old;
483 GtkTreeIter child; 482 GtkTreeIter child;
484 GtkTreeModel * model; 483 GtkTreeModel *model;
485 484
486 rr_old = de->rr; 485 rr_old = de->rr;
487 tab = GNUNET_GTK_add_to_uri_tab (&iter, &de->sr, de->meta, de->uri); 486 tab = GNUNET_GTK_add_to_uri_tab (&iter, &de->sr, de->meta, de->uri);
@@ -498,19 +497,19 @@ download_lost_parent (struct DownloadEntry *de, uint64_t size,
498 if (NULL == path) 497 if (NULL == path)
499 { 498 {
500 GNUNET_break (0); 499 GNUNET_break (0);
501 return NULL; 500 return NULL;
502 } 501 }
503 if (TRUE != gtk_tree_model_get_iter (tm_old, &iter_old, path)) 502 if (TRUE != gtk_tree_model_get_iter (tm_old, &iter_old, path))
504 { 503 {
505 GNUNET_break (0); 504 GNUNET_break (0);
506 gtk_tree_path_free (path); 505 gtk_tree_path_free (path);
507 return NULL; 506 return NULL;
508 } 507 }
509 gtk_tree_path_free (path); 508 gtk_tree_path_free (path);
510 move_children (tm_old, &iter_old, model, &iter); 509 move_children (tm_old, &iter_old, model, &iter);
511 while (TRUE == gtk_tree_model_iter_children (model, &child, &iter)) 510 while (TRUE == gtk_tree_model_iter_children (model, &child, &iter))
512 delete_stale_subtree (model, &child); 511 delete_stale_subtree (model, &child);
513 if (size > completed) 512 if (size > completed)
514 { 513 {
515 if (is_active) 514 if (is_active)
516 change_download_colour (de, "yellow"); 515 change_download_colour (de, "yellow");
@@ -540,8 +539,7 @@ download_lost_parent (struct DownloadEntry *de, uint64_t size,
540static struct DownloadEntry * 539static struct DownloadEntry *
541setup_download (struct DownloadEntry *de, struct DownloadEntry *pde, 540setup_download (struct DownloadEntry *de, struct DownloadEntry *pde,
542 struct SearchResult *sr, struct GNUNET_FS_DownloadContext *dc, 541 struct SearchResult *sr, struct GNUNET_FS_DownloadContext *dc,
543 const struct GNUNET_FS_Uri *uri, 542 const struct GNUNET_FS_Uri *uri, const char *filename,
544 const char *filename,
545 const struct GNUNET_CONTAINER_MetaData *meta, uint64_t size, 543 const struct GNUNET_CONTAINER_MetaData *meta, uint64_t size,
546 uint64_t completed) 544 uint64_t completed)
547{ 545{
@@ -556,12 +554,12 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde,
556 de->uri = GNUNET_FS_uri_dup (uri); 554 de->uri = GNUNET_FS_uri_dup (uri);
557 } 555 }
558 de->dc = dc; 556 de->dc = dc;
559 de->sr = sr; 557 de->sr = sr;
560 if (NULL != sr) 558 if (NULL != sr)
561 { 559 {
562 GNUNET_assert (sr->download == NULL); 560 GNUNET_assert (sr->download == NULL);
563 sr->download = de; 561 sr->download = de;
564 } 562 }
565 de->pde = pde; 563 de->pde = pde;
566 if ((meta != NULL) && (de->meta == NULL)) 564 if ((meta != NULL) && (de->meta == NULL))
567 de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta); 565 de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta);
@@ -593,7 +591,7 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde,
593 (guint) ((size > 591 (guint) ((size >
594 0) ? (100 * completed / 592 0) ? (100 * completed /
595 size) : 100) /* progress */ , 593 size) : 100) /* progress */ ,
596 6, filename_utf8 /* filename/description */ , 594 6, filename_utf8 /* filename/description */ ,
597 8, "blue" /* status colour: pending */ , 595 8, "blue" /* status colour: pending */ ,
598 -1); 596 -1);
599 GNUNET_free_non_null (filename_utf8); 597 GNUNET_free_non_null (filename_utf8);
@@ -626,8 +624,7 @@ start_download (GtkTreeView * tree_view, GtkTreePath * path,
626 return; 624 return;
627 } 625 }
628 gtk_tree_model_get (tm, &iter, 0, &meta, 1, &uri, 9, &sr, 10, &mime, -1); 626 gtk_tree_model_get (tm, &iter, 0, &meta, 1, &uri, 9, &sr, 10, &mime, -1);
629 if (! (GNUNET_FS_uri_test_chk (uri) || 627 if (!(GNUNET_FS_uri_test_chk (uri) || GNUNET_FS_uri_test_loc (uri)))
630 GNUNET_FS_uri_test_loc (uri)) )
631 { 628 {
632 /* can only download chk/loc URIs, ignore */ 629 /* can only download chk/loc URIs, ignore */
633 g_free (mime); 630 g_free (mime);
@@ -787,9 +784,9 @@ search_list_on_menu (GtkWidget * widget, GdkEvent * event, gpointer user_data)
787 tm = gtk_tree_view_get_model (tv); 784 tm = gtk_tree_view_get_model (tv);
788 if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) 785 if (TRUE != gtk_tree_model_get_iter (tm, &iter, path))
789 { 786 {
790 /* model empty? */ 787 /* model empty? */
791 current_context_search_tab = NULL; 788 current_context_search_tab = NULL;
792 return FALSE; 789 return FALSE;
793 } 790 }
794 gtk_tree_model_get (tm, &iter, 9, &sr, -1); 791 gtk_tree_model_get (tm, &iter, 9, &sr, -1);
795 current_context_row_reference = gtk_tree_row_reference_new (tm, path); 792 current_context_row_reference = gtk_tree_row_reference_new (tm, path);
@@ -989,7 +986,7 @@ handle_publish_stop (struct PublishEntry *ent)
989 } 986 }
990 if (NULL != ent->pc) 987 if (NULL != ent->pc)
991 { 988 {
992 /* get piter from parent */ 989 /* get piter from parent */
993 path = gtk_tree_row_reference_get_path (ent->rr); 990 path = gtk_tree_row_reference_get_path (ent->rr);
994 tm = gtk_tree_row_reference_get_model (ent->rr); 991 tm = gtk_tree_row_reference_get_model (ent->rr);
995 if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) 992 if (TRUE != gtk_tree_model_get_iter (tm, &iter, path))
@@ -1046,8 +1043,8 @@ clear_downloads (GtkButton * button, gpointer user_data)
1046 do 1043 do
1047 { 1044 {
1048 gtk_tree_model_get (tm, &iter, 9, &sr, -1); 1045 gtk_tree_model_get (tm, &iter, 9, &sr, -1);
1049 if ((sr->download != NULL) && (sr->download->is_done == GNUNET_YES)) 1046 if ((sr->download != NULL) && (sr->download->is_done == GNUNET_YES))
1050 GNUNET_FS_download_stop (sr->download->dc, GNUNET_YES); 1047 GNUNET_FS_download_stop (sr->download->dc, GNUNET_YES);
1051 } 1048 }
1052 while (TRUE == gtk_tree_model_iter_next (tm, &iter)); 1049 while (TRUE == gtk_tree_model_iter_next (tm, &iter));
1053} 1050}
@@ -1281,8 +1278,8 @@ GNUNET_GTK_add_search_result (struct SearchTab *tab, GtkTreeIter * iter,
1281 } 1278 }
1282 desc = 1279 desc =
1283 GNUNET_CONTAINER_meta_data_get_first_by_types (meta, 1280 GNUNET_CONTAINER_meta_data_get_first_by_types (meta,
1284 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, 1281 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME,
1285 EXTRACTOR_METATYPE_PACKAGE_NAME, 1282 EXTRACTOR_METATYPE_PACKAGE_NAME,
1286 EXTRACTOR_METATYPE_TITLE, 1283 EXTRACTOR_METATYPE_TITLE,
1287 EXTRACTOR_METATYPE_BOOK_TITLE, 1284 EXTRACTOR_METATYPE_BOOK_TITLE,
1288 EXTRACTOR_METATYPE_FILENAME, 1285 EXTRACTOR_METATYPE_FILENAME,
@@ -1298,7 +1295,10 @@ GNUNET_GTK_add_search_result (struct SearchTab *tab, GtkTreeIter * iter,
1298 else 1295 else
1299 { 1296 {
1300 char *utf8_desc = NULL; 1297 char *utf8_desc = NULL;
1301 utf8_desc = GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, desc, strlen (desc) + 1); 1298
1299 utf8_desc =
1300 GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, desc,
1301 strlen (desc) + 1);
1302 GNUNET_free (desc); 1302 GNUNET_free (desc);
1303 if (utf8_desc != NULL) 1303 if (utf8_desc != NULL)
1304 desc = utf8_desc; 1304 desc = utf8_desc;
@@ -1485,7 +1485,10 @@ update_search_result (struct SearchResult *sr,
1485 else 1485 else
1486 { 1486 {
1487 char *utf8_desc = NULL; 1487 char *utf8_desc = NULL;
1488 utf8_desc = GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, desc, strlen (desc) + 1); 1488
1489 utf8_desc =
1490 GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, desc,
1491 strlen (desc) + 1);
1489 GNUNET_free (desc); 1492 GNUNET_free (desc);
1490 if (utf8_desc != NULL) 1493 if (utf8_desc != NULL)
1491 desc = utf8_desc; 1494 desc = utf8_desc;
@@ -1590,7 +1593,7 @@ stop_publishing (GtkButton * button, gpointer user_data)
1590 GtkNotebook *notebook; 1593 GtkNotebook *notebook;
1591 int index; 1594 int index;
1592 int i; 1595 int i;
1593 1596
1594 GNUNET_assert (tab == publish_tab); 1597 GNUNET_assert (tab == publish_tab);
1595 tm = GTK_TREE_MODEL (publish_tab->ts); 1598 tm = GTK_TREE_MODEL (publish_tab->ts);
1596 if (TRUE == gtk_tree_model_iter_children (tm, &iter, NULL)) 1599 if (TRUE == gtk_tree_model_iter_children (tm, &iter, NULL))
@@ -1599,16 +1602,16 @@ stop_publishing (GtkButton * button, gpointer user_data)
1599 { 1602 {
1600 gtk_tree_model_get (tm, &iter, 4, &ent, -1); 1603 gtk_tree_model_get (tm, &iter, 4, &ent, -1);
1601 if (NULL != (pc = ent->pc)) 1604 if (NULL != (pc = ent->pc))
1602 { 1605 {
1603 ent->pc = NULL; 1606 ent->pc = NULL;
1604 GNUNET_FS_publish_stop (pc); 1607 GNUNET_FS_publish_stop (pc);
1605 } 1608 }
1606 } 1609 }
1607 while (TRUE == gtk_tree_model_iter_next (tm, &iter)); 1610 while (TRUE == gtk_tree_model_iter_next (tm, &iter));
1608 } 1611 }
1609 notebook = 1612 notebook =
1610 GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object 1613 GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object
1611 ("GNUNET_GTK_main_window_notebook")); 1614 ("GNUNET_GTK_main_window_notebook"));
1612 index = -1; 1615 index = -1;
1613 for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--) 1616 for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--)
1614 if (publish_tab->frame == gtk_notebook_get_nth_page (notebook, i)) 1617 if (publish_tab->frame == gtk_notebook_get_nth_page (notebook, i))
@@ -1643,40 +1646,40 @@ setup_publish (struct GNUNET_FS_PublishContext *pc, const char *fn,
1643 /* create new tab */ 1646 /* create new tab */
1644 publish_tab = GNUNET_malloc (sizeof (struct PublishTab)); 1647 publish_tab = GNUNET_malloc (sizeof (struct PublishTab));
1645 publish_tab->builder = 1648 publish_tab->builder =
1646 GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_tab.glade"); 1649 GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_tab.glade");
1647 df = GTK_WINDOW (gtk_builder_get_object 1650 df = GTK_WINDOW (gtk_builder_get_object
1648 (publish_tab->builder, "_publish_frame_window")); 1651 (publish_tab->builder, "_publish_frame_window"));
1649 publish_tab->frame = gtk_bin_get_child (GTK_BIN (df)); 1652 publish_tab->frame = gtk_bin_get_child (GTK_BIN (df));
1650 g_object_ref (publish_tab->frame); 1653 g_object_ref (publish_tab->frame);
1651 gtk_container_remove (GTK_CONTAINER (df), publish_tab->frame); 1654 gtk_container_remove (GTK_CONTAINER (df), publish_tab->frame);
1652 gtk_widget_destroy (GTK_WIDGET (df)); 1655 gtk_widget_destroy (GTK_WIDGET (df));
1653 1656
1654 /* load tab_label */ 1657 /* load tab_label */
1655 df = GTK_WINDOW (gtk_builder_get_object 1658 df = GTK_WINDOW (gtk_builder_get_object
1656 (publish_tab->builder, "_publish_label_window")); 1659 (publish_tab->builder, "_publish_label_window"));
1657 tab_label = gtk_bin_get_child (GTK_BIN (df)); 1660 tab_label = gtk_bin_get_child (GTK_BIN (df));
1658 g_object_ref (tab_label); 1661 g_object_ref (tab_label);
1659 gtk_container_remove (GTK_CONTAINER (df), tab_label); 1662 gtk_container_remove (GTK_CONTAINER (df), tab_label);
1660 gtk_widget_destroy (GTK_WIDGET (df)); 1663 gtk_widget_destroy (GTK_WIDGET (df));
1661 1664
1662 /* get refs to widgets */ 1665 /* get refs to widgets */
1663 close_button = 1666 close_button =
1664 GTK_WIDGET (gtk_builder_get_object 1667 GTK_WIDGET (gtk_builder_get_object
1665 (publish_tab->builder, "_publish_label_close_button")); 1668 (publish_tab->builder, "_publish_label_close_button"));
1666 g_signal_connect (G_OBJECT (close_button), "clicked", 1669 g_signal_connect (G_OBJECT (close_button), "clicked",
1667 G_CALLBACK (stop_publishing), publish_tab); 1670 G_CALLBACK (stop_publishing), publish_tab);
1668 /* FIXME: we don't actually need the closure anymore, 1671 /* FIXME: we don't actually need the closure anymore,
1669 so we could have glade connect the above signal... */ 1672 * so we could have glade connect the above signal... */
1670 /* make visible */ 1673 /* make visible */
1671 notebook = 1674 notebook =
1672 GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object 1675 GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object
1673 ("GNUNET_GTK_main_window_notebook")); 1676 ("GNUNET_GTK_main_window_notebook"));
1674 gtk_notebook_insert_page (notebook, publish_tab->frame, tab_label, 0); 1677 gtk_notebook_insert_page (notebook, publish_tab->frame, tab_label, 0);
1675 gtk_widget_show (GTK_WIDGET (notebook)); 1678 gtk_widget_show (GTK_WIDGET (notebook));
1676 gtk_notebook_set_current_page (notebook, 0); 1679 gtk_notebook_set_current_page (notebook, 0);
1677 publish_tab->ts = 1680 publish_tab->ts =
1678 GTK_TREE_STORE (gtk_builder_get_object 1681 GTK_TREE_STORE (gtk_builder_get_object
1679 (publish_tab->builder, "_publish_frame_tree_store")); 1682 (publish_tab->builder, "_publish_frame_tree_store"));
1680 pitrptr = NULL; 1683 pitrptr = NULL;
1681 } 1684 }
1682 else 1685 else
@@ -1690,7 +1693,8 @@ setup_publish (struct GNUNET_FS_PublishContext *pc, const char *fn,
1690 /* create new iter from parent */ 1693 /* create new iter from parent */
1691 path = gtk_tree_row_reference_get_path (parent->rr); 1694 path = gtk_tree_row_reference_get_path (parent->rr);
1692 if (TRUE != 1695 if (TRUE !=
1693 gtk_tree_model_get_iter (GTK_TREE_MODEL (publish_tab->ts), &piter, path)) 1696 gtk_tree_model_get_iter (GTK_TREE_MODEL (publish_tab->ts), &piter,
1697 path))
1694 { 1698 {
1695 GNUNET_break (0); 1699 GNUNET_break (0);
1696 return NULL; 1700 return NULL;
@@ -1703,11 +1707,9 @@ setup_publish (struct GNUNET_FS_PublishContext *pc, const char *fn,
1703 ent->tab = publish_tab; 1707 ent->tab = publish_tab;
1704 fn_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) fn); 1708 fn_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) fn);
1705 gtk_tree_store_insert_with_values (publish_tab->ts, &iter, pitrptr, G_MAXINT, 1709 gtk_tree_store_insert_with_values (publish_tab->ts, &iter, pitrptr, G_MAXINT,
1706 0, fn_utf8, 1710 0, fn_utf8, 1, size_fancy, 2, "white", 3,
1707 1, size_fancy, 2, "white", 3,
1708 (guint) 0 /* progress */ , 1711 (guint) 0 /* progress */ ,
1709 4, ent, 1712 4, ent, -1);
1710 -1);
1711 GNUNET_free_non_null (fn_utf8); 1713 GNUNET_free_non_null (fn_utf8);
1712 path = gtk_tree_model_get_path (GTK_TREE_MODEL (publish_tab->ts), &iter); 1714 path = gtk_tree_model_get_path (GTK_TREE_MODEL (publish_tab->ts), &iter);
1713 GNUNET_assert (NULL != path); 1715 GNUNET_assert (NULL != path);
@@ -1786,7 +1788,7 @@ GNUNET_GTK_fs_event_handler (void *cls,
1786 return setup_download (info->value.download.cctx, info->value.download.pctx, 1788 return setup_download (info->value.download.cctx, info->value.download.pctx,
1787 info->value.download.sctx, info->value.download.dc, 1789 info->value.download.sctx, info->value.download.dc,
1788 info->value.download.uri, 1790 info->value.download.uri,
1789 info->value.download.filename, 1791 info->value.download.filename,
1790 info->value.download.specifics.start.meta, 1792 info->value.download.specifics.start.meta,
1791 info->value.download.size, 1793 info->value.download.size,
1792 info->value.download.completed); 1794 info->value.download.completed);
@@ -1794,8 +1796,7 @@ GNUNET_GTK_fs_event_handler (void *cls,
1794 ret = 1796 ret =
1795 setup_download (info->value.download.cctx, info->value.download.pctx, 1797 setup_download (info->value.download.cctx, info->value.download.pctx,
1796 info->value.download.sctx, info->value.download.dc, 1798 info->value.download.sctx, info->value.download.dc,
1797 info->value.download.uri, 1799 info->value.download.uri, info->value.download.filename,
1798 info->value.download.filename,
1799 info->value.download.specifics.resume.meta, 1800 info->value.download.specifics.resume.meta,
1800 info->value.download.size, 1801 info->value.download.size,
1801 info->value.download.completed); 1802 info->value.download.completed);
@@ -1980,8 +1981,8 @@ GNUNET_GTK_main_window_notebook_switch_page_cb (GtkWidget * dummy,
1980} 1981}
1981 1982
1982static void 1983static void
1983copy_metadata_to_clipboard (GtkTreeModel *model, GtkTreePath *path, 1984copy_metadata_to_clipboard (GtkTreeModel * model, GtkTreePath * path,
1984 GtkTreeIter *iter, gpointer user_data) 1985 GtkTreeIter * iter, gpointer user_data)
1985{ 1986{
1986 gchar *type, *value; 1987 gchar *type, *value;
1987 GList **l = (GList **) user_data; 1988 GList **l = (GList **) user_data;
@@ -1993,7 +1994,7 @@ copy_metadata_to_clipboard (GtkTreeModel *model, GtkTreePath *path,
1993} 1994}
1994 1995
1995void 1996void
1996metadata_copy_selection_activated (GtkMenuItem *menuitem, gpointer user_data) 1997metadata_copy_selection_activated (GtkMenuItem * menuitem, gpointer user_data)
1997{ 1998{
1998 GtkBuilder *builder; 1999 GtkBuilder *builder;
1999 GtkTreeView *tree; 2000 GtkTreeView *tree;
@@ -2003,11 +2004,12 @@ metadata_copy_selection_activated (GtkMenuItem *menuitem, gpointer user_data)
2003 gchar *s, *p; 2004 gchar *s, *p;
2004 2005
2005 builder = GTK_BUILDER (user_data); 2006 builder = GTK_BUILDER (user_data);
2006 tree = GTK_TREE_VIEW (gtk_builder_get_object (builder, 2007 tree =
2007 "GNUNET_GTK_main_window_metadata_treeview")); 2008 GTK_TREE_VIEW (gtk_builder_get_object
2009 (builder, "GNUNET_GTK_main_window_metadata_treeview"));
2008 2010
2009 gtk_tree_selection_selected_foreach (gtk_tree_view_get_selection (tree), 2011 gtk_tree_selection_selected_foreach (gtk_tree_view_get_selection (tree),
2010 copy_metadata_to_clipboard, &pairs); 2012 copy_metadata_to_clipboard, &pairs);
2011 2013
2012 total_len = 0; 2014 total_len = 0;
2013 pairs = g_list_reverse (pairs); 2015 pairs = g_list_reverse (pairs);
@@ -2018,12 +2020,13 @@ metadata_copy_selection_activated (GtkMenuItem *menuitem, gpointer user_data)
2018 if (!value) 2020 if (!value)
2019 break; 2021 break;
2020 next = value->next; 2022 next = value->next;
2021 total_len += strlen ((gchar *) type->data) 2023 total_len +=
2022 + strlen ((gchar *) value->data) + 2 /* ": " */ + (next ? 1 : 0) /* "\n" */; 2024 strlen ((gchar *) type->data) + strlen ((gchar *) value->data) +
2025 2 /* ": " */ + (next ? 1 : 0) /* "\n" */ ;
2023 } 2026 }
2024 if (total_len > 0) 2027 if (total_len > 0)
2025 { 2028 {
2026 total_len += 1; /* "\0" */ 2029 total_len += 1; /* "\0" */
2027 s = g_new0 (gchar, total_len); 2030 s = g_new0 (gchar, total_len);
2028 p = s; 2031 p = s;
2029 for (l = pairs; l; l = next) 2032 for (l = pairs; l; l = next)
@@ -2057,8 +2060,8 @@ metadata_copy_selection_activated (GtkMenuItem *menuitem, gpointer user_data)
2057} 2060}
2058 2061
2059void 2062void
2060metadata_menu_popup_position (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, 2063metadata_menu_popup_position (GtkMenu * menu, gint * x, gint * y,
2061 gpointer user_data) 2064 gboolean * push_in, gpointer user_data)
2062{ 2065{
2063 GtkBuilder *builder; 2066 GtkBuilder *builder;
2064 GtkTreeView *tree; 2067 GtkTreeView *tree;
@@ -2071,8 +2074,9 @@ metadata_menu_popup_position (GtkMenu *menu, gint *x, gint *y, gboolean *push_in
2071 2074
2072 builder = GTK_BUILDER (user_data); 2075 builder = GTK_BUILDER (user_data);
2073 2076
2074 tree = GTK_TREE_VIEW (gtk_builder_get_object (builder, 2077 tree =
2075 "GNUNET_GTK_main_window_metadata_treeview")); 2078 GTK_TREE_VIEW (gtk_builder_get_object
2079 (builder, "GNUNET_GTK_main_window_metadata_treeview"));
2076 2080
2077 gtk_widget_get_allocation (GTK_WIDGET (tree), &tree_allocation); 2081 gtk_widget_get_allocation (GTK_WIDGET (tree), &tree_allocation);
2078 2082
@@ -2092,6 +2096,7 @@ metadata_menu_popup_position (GtkMenu *menu, gint *x, gint *y, gboolean *push_in
2092 if (rows->data) 2096 if (rows->data)
2093 { 2097 {
2094 GdkRectangle r; 2098 GdkRectangle r;
2099
2095 p = (GtkTreePath *) rows->data; 2100 p = (GtkTreePath *) rows->data;
2096 gtk_tree_view_get_cell_area (tree, p, NULL, &r); 2101 gtk_tree_view_get_cell_area (tree, p, NULL, &r);
2097 popup_x += r.x; 2102 popup_x += r.x;
@@ -2106,8 +2111,8 @@ metadata_menu_popup_position (GtkMenu *menu, gint *x, gint *y, gboolean *push_in
2106} 2111}
2107 2112
2108static void 2113static void
2109do_metadata_popup_menu (GtkWidget *widget, GdkEventButton *event, 2114do_metadata_popup_menu (GtkWidget * widget, GdkEventButton * event,
2110 gpointer user_data) 2115 gpointer user_data)
2111{ 2116{
2112 GtkMenu *menu; 2117 GtkMenu *menu;
2113 GtkBuilder *builder; 2118 GtkBuilder *builder;
@@ -2119,25 +2124,28 @@ do_metadata_popup_menu (GtkWidget *widget, GdkEventButton *event,
2119 menu = GTK_MENU (gtk_builder_get_object (builder, "metadata_popup_menu")); 2124 menu = GTK_MENU (gtk_builder_get_object (builder, "metadata_popup_menu"));
2120 2125
2121 if (event) 2126 if (event)
2122 { 2127 {
2123 button = event->button; 2128 button = event->button;
2124 event_time = event->time; 2129 event_time = event->time;
2125 } 2130 }
2126 else 2131 else
2127 { 2132 {
2128 button = 0; 2133 button = 0;
2129 event_time = gtk_get_current_event_time (); 2134 event_time = gtk_get_current_event_time ();
2130 } 2135 }
2131 2136
2132 gtk_menu_popup (menu, NULL, NULL, mpf, user_data, 2137 gtk_menu_popup (menu, NULL, NULL, mpf, user_data, button, event_time);
2133 button, event_time);
2134} 2138}
2135 2139
2136gboolean 2140gboolean
2137GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb (GtkWidget *widget, 2141GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb (GtkWidget *
2138 GdkEventButton *event, gpointer user_data) 2142 widget,
2143 GdkEventButton *
2144 event,
2145 gpointer
2146 user_data)
2139{ 2147{
2140 /* Ignore double-clicks and triple-clicks */ 2148 /* Ignore double-clicks and triple-clicks */
2141 if (event->button == 3 && event->type == GDK_BUTTON_PRESS) 2149 if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
2142 { 2150 {
2143 do_metadata_popup_menu (widget, event, user_data); 2151 do_metadata_popup_menu (widget, event, user_data);
@@ -2148,8 +2156,8 @@ GNUNET_GTK_main_window_metadata_treeview_button_press_event_cb (GtkWidget *widge
2148} 2156}
2149 2157
2150gboolean 2158gboolean
2151GNUNET_GTK_main_window_metadata_treeview_popup_menu_cb (GtkWidget *widget, 2159GNUNET_GTK_main_window_metadata_treeview_popup_menu_cb (GtkWidget * widget,
2152 gpointer user_data) 2160 gpointer user_data)
2153{ 2161{
2154 do_metadata_popup_menu (widget, NULL, user_data); 2162 do_metadata_popup_menu (widget, NULL, user_data);
2155 return TRUE; 2163 return TRUE;
diff --git a/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c b/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c
index 11f983a8..d429694d 100644
--- a/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c
+++ b/src/fs/gnunet-fs-gtk-main_window_adv_pseudonym.c
@@ -27,8 +27,9 @@
27#include "gnunet-fs-gtk-edit_publish_dialog.h" 27#include "gnunet-fs-gtk-edit_publish_dialog.h"
28 28
29gboolean 29gboolean
30GNUNET_GTK_select_pseudonym_dialog_delete_event_cb (GtkWidget *widget, 30GNUNET_GTK_select_pseudonym_dialog_delete_event_cb (GtkWidget * widget,
31 GdkEvent *event, gpointer user_Data) 31 GdkEvent * event,
32 gpointer user_Data)
32{ 33{
33 gtk_widget_hide (widget); 34 gtk_widget_hide (widget);
34 return TRUE; 35 return TRUE;
@@ -49,6 +50,7 @@ add_to_list (void *cls, const char *name, const GNUNET_HashCode * id)
49 GtkListStore *ls = cls; 50 GtkListStore *ls = cls;
50 GtkTreeIter iter; 51 GtkTreeIter iter;
51 char *name_utf8; 52 char *name_utf8;
53
52 name_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) name); 54 name_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) name);
53 55
54 gtk_list_store_insert_with_values (ls, &iter, -1, 0, name_utf8, 1, 56 gtk_list_store_insert_with_values (ls, &iter, -1, 0, name_utf8, 1,
@@ -65,6 +67,7 @@ selection_changed_cb (GtkTreeSelection * ts, gpointer user_data)
65 GtkTreeIter iter; 67 GtkTreeIter iter;
66 GtkWidget *ok_button; 68 GtkWidget *ok_button;
67 GtkBuilder *builder; 69 GtkBuilder *builder;
70
68 builder = GTK_BUILDER (user_data); 71 builder = GTK_BUILDER (user_data);
69 72
70 ok_button = 73 ok_button =
@@ -105,26 +108,24 @@ struct NamespaceAdvertisementContext
105 */ 108 */
106static int 109static int
107advertise_namespace (void *cls, struct GNUNET_FS_FileInformation *fi, 110advertise_namespace (void *cls, struct GNUNET_FS_FileInformation *fi,
108 uint64_t length, struct GNUNET_CONTAINER_MetaData *meta, 111 uint64_t length, struct GNUNET_CONTAINER_MetaData *meta,
109 struct GNUNET_FS_Uri **uri, struct GNUNET_FS_BlockOptions *bo, 112 struct GNUNET_FS_Uri **uri,
110 int *do_index, void **client_info) 113 struct GNUNET_FS_BlockOptions *bo, int *do_index,
114 void **client_info)
111{ 115{
112 struct NamespaceAdvertisementContext *nds = cls; 116 struct NamespaceAdvertisementContext *nds = cls;
113 117
114 GNUNET_FS_namespace_advertise (GNUNET_FS_GTK_get_fs_handle (), *uri, 118 GNUNET_FS_namespace_advertise (GNUNET_FS_GTK_get_fs_handle (), *uri, nds->ns,
115 nds->ns, meta, bo, nds->root, NULL, NULL); 119 meta, bo, nds->root, NULL, NULL);
116 return GNUNET_SYSERR; 120 return GNUNET_SYSERR;
117} 121}
118 122
119 123
120static void 124static void
121adv_pseudonym_edit_publish_dialog_cb (gpointer cls, 125adv_pseudonym_edit_publish_dialog_cb (gpointer cls, int do_index,
122 int do_index, 126 const char *short_fn,
123 const char *short_fn, 127 guint anonymity_level, guint priority,
124 guint anonymity_level, 128 const char *root, gint ret)
125 guint priority,
126 const char *root,
127 gint ret)
128{ 129{
129 struct NamespaceAdvertisementContext *nds = cls; 130 struct NamespaceAdvertisementContext *nds = cls;
130 131
@@ -135,8 +136,7 @@ adv_pseudonym_edit_publish_dialog_cb (gpointer cls,
135 nds->anonymity_level = anonymity_level; 136 nds->anonymity_level = anonymity_level;
136 nds->priority = priority; 137 nds->priority = priority;
137 nds->root = root; 138 nds->root = root;
138 GNUNET_FS_file_information_inspect (nds->fip, 139 GNUNET_FS_file_information_inspect (nds->fip, &advertise_namespace, nds);
139 &advertise_namespace, nds);
140 } 140 }
141 GNUNET_FS_namespace_delete (nds->ns, GNUNET_NO); 141 GNUNET_FS_namespace_delete (nds->ns, GNUNET_NO);
142 GNUNET_FS_file_information_destroy (nds->fip, NULL, NULL); 142 GNUNET_FS_file_information_destroy (nds->fip, NULL, NULL);
@@ -144,8 +144,9 @@ adv_pseudonym_edit_publish_dialog_cb (gpointer cls,
144} 144}
145 145
146void 146void
147GNUNET_GTK_select_pseudonym_dialog_response_cb (GtkDialog *dialog, 147GNUNET_GTK_select_pseudonym_dialog_response_cb (GtkDialog * dialog,
148 gint response_id, gpointer user_data) 148 gint response_id,
149 gpointer user_data)
149{ 150{
150 GtkBuilder *builder; 151 GtkBuilder *builder;
151 GtkWidget *ad; 152 GtkWidget *ad;
@@ -170,8 +171,7 @@ GNUNET_GTK_select_pseudonym_dialog_response_cb (GtkDialog *dialog,
170 return; 171 return;
171 } 172 }
172 tv = GTK_TREE_VIEW (gtk_builder_get_object 173 tv = GTK_TREE_VIEW (gtk_builder_get_object
173 (builder, 174 (builder, "GNUNET_GTK_select_pseudonym_tree_view"));
174 "GNUNET_GTK_select_pseudonym_tree_view"));
175 sel = gtk_tree_view_get_selection (tv); 175 sel = gtk_tree_view_get_selection (tv);
176 176
177 GNUNET_assert (TRUE == gtk_tree_selection_get_selected (sel, &tm, &iter)); 177 GNUNET_assert (TRUE == gtk_tree_selection_get_selected (sel, &tm, &iter));
@@ -202,23 +202,24 @@ GNUNET_GTK_select_pseudonym_dialog_response_cb (GtkDialog *dialog,
202 /* This is a bogus fileinfo. It's needed because edit_publish_dialog 202 /* This is a bogus fileinfo. It's needed because edit_publish_dialog
203 * was written to work with fileinfo, and return a fileinfo. 203 * was written to work with fileinfo, and return a fileinfo.
204 */ 204 */
205 memset (&bo, 0, sizeof (bo)); 205 memset (&bo, 0, sizeof (bo));
206 bo.expiration_time = GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); 206 bo.expiration_time =
207 GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2);
207 bo.anonymity_level = 1; 208 bo.anonymity_level = 1;
208 nds->fip = GNUNET_FS_file_information_create_empty_directory (NULL, NULL, 209 nds->fip =
209 NULL, meta, &bo); 210 GNUNET_FS_file_information_create_empty_directory (NULL, NULL, NULL, meta,
211 &bo);
210 GNUNET_CONTAINER_meta_data_destroy (meta); 212 GNUNET_CONTAINER_meta_data_destroy (meta);
211 GNUNET_FS_GTK_edit_publish_dialog (builder, transient, 213 GNUNET_FS_GTK_edit_publish_dialog (builder, transient, nds->do_index,
212 nds->do_index, 214 nds->short_fn, nds->anonymity_level,
213 nds->short_fn, 215 nds->priority, nds->fip, FALSE,
214 nds->anonymity_level, 216 &adv_pseudonym_edit_publish_dialog_cb,
215 nds->priority, 217 nds);
216 nds->fip, FALSE, &adv_pseudonym_edit_publish_dialog_cb, nds);
217} 218}
218 219
219void 220void
220GNUNET_GTK_select_pseudonym_dialog_realize_cb (GtkWidget *widget, 221GNUNET_GTK_select_pseudonym_dialog_realize_cb (GtkWidget * widget,
221 gpointer user_data) 222 gpointer user_data)
222{ 223{
223 GtkTreeView *tv; 224 GtkTreeView *tv;
224 GtkTreeSelection *sel; 225 GtkTreeSelection *sel;
diff --git a/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c b/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c
index c912aab6..dfa62bb1 100644
--- a/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c
+++ b/src/fs/gnunet-fs-gtk-main_window_create_pseudonym.c
@@ -27,8 +27,9 @@
27#include "gnunet-fs-gtk.h" 27#include "gnunet-fs-gtk.h"
28 28
29void 29void
30GNUNET_GTK_create_namespace_dialog_response_cb (GtkDialog *dialog, 30GNUNET_GTK_create_namespace_dialog_response_cb (GtkDialog * dialog,
31 gint response_id, gpointer user_data) 31 gint response_id,
32 gpointer user_data)
32{ 33{
33 const char *name; 34 const char *name;
34 gchar *name_loc; 35 gchar *name_loc;
diff --git a/src/fs/gnunet-fs-gtk-main_window_file_download.c b/src/fs/gnunet-fs-gtk-main_window_file_download.c
index cc3b7f8f..667bf086 100644
--- a/src/fs/gnunet-fs-gtk-main_window_file_download.c
+++ b/src/fs/gnunet-fs-gtk-main_window_file_download.c
@@ -41,11 +41,15 @@ GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy,
41 41
42 builder = GTK_BUILDER (user_data); 42 builder = GTK_BUILDER (user_data);
43 43
44 dialog = GTK_WIDGET (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_window")); 44 dialog =
45 45 GTK_WIDGET (gtk_builder_get_object
46 tb = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_dialog_url_textview_buffer")); 46 (builder, "GNUNET_GTK_open_url_window"));
47 gtk_text_buffer_get_iter_at_offset (tb, &ti_start, 0); 47
48 gtk_text_buffer_get_iter_at_offset (tb, &ti_end, -1); 48 tb = GTK_TEXT_BUFFER (gtk_builder_get_object
49 (builder,
50 "GNUNET_GTK_open_url_dialog_url_textview_buffer"));
51 gtk_text_buffer_get_iter_at_offset (tb, &ti_start, 0);
52 gtk_text_buffer_get_iter_at_offset (tb, &ti_end, -1);
49 gtk_text_buffer_delete (tb, &ti_start, &ti_end); 53 gtk_text_buffer_delete (tb, &ti_start, &ti_end);
50 54
51 /* TODO: queue the clipboard, maybe there's valid URI in there? 55 /* TODO: queue the clipboard, maybe there's valid URI in there?
@@ -55,8 +59,8 @@ GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy,
55} 59}
56 60
57void 61void
58GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GtkButton *button, 62GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GtkButton * button,
59 gpointer user_data) 63 gpointer user_data)
60{ 64{
61 GtkBuilder *builder; 65 GtkBuilder *builder;
62 GtkWidget *dialog; 66 GtkWidget *dialog;
@@ -69,18 +73,22 @@ GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GtkButton *button,
69 73
70 builder = GTK_BUILDER (user_data); 74 builder = GTK_BUILDER (user_data);
71 75
72 dialog = GTK_WIDGET (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_window")); 76 dialog =
77 GTK_WIDGET (gtk_builder_get_object
78 (builder, "GNUNET_GTK_open_url_window"));
73 79
74 gtk_widget_hide (dialog); 80 gtk_widget_hide (dialog);
75 81
76 tb = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_dialog_url_textview_buffer")); 82 tb = GTK_TEXT_BUFFER (gtk_builder_get_object
77 gtk_text_buffer_get_iter_at_offset (tb, &ti_start, 0); 83 (builder,
78 gtk_text_buffer_get_iter_at_offset (tb, &ti_end, -1); 84 "GNUNET_GTK_open_url_dialog_url_textview_buffer"));
85 gtk_text_buffer_get_iter_at_offset (tb, &ti_start, 0);
86 gtk_text_buffer_get_iter_at_offset (tb, &ti_end, -1);
79 87
80 uris = gtk_text_buffer_get_text (tb, &ti_start, &ti_end, FALSE); 88 uris = gtk_text_buffer_get_text (tb, &ti_start, &ti_end, FALSE);
81 89
82 if (!GNUNET_GTK_get_selected_anonymity_level (builder, 90 if (!GNUNET_GTK_get_selected_anonymity_level
83 "main_window_search_anonymity_combobox", &anonymity_level)) 91 (builder, "main_window_search_anonymity_combobox", &anonymity_level))
84 return; 92 return;
85 93
86 uri = GNUNET_FS_uri_parse (uris, &perr); 94 uri = GNUNET_FS_uri_parse (uris, &perr);
@@ -105,6 +113,7 @@ GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GtkButton *button,
105 if (GNUNET_FS_uri_test_chk (uri) || GNUNET_FS_uri_test_loc (uri)) 113 if (GNUNET_FS_uri_test_chk (uri) || GNUNET_FS_uri_test_loc (uri))
106 { 114 {
107 struct DownloadContext *dc; 115 struct DownloadContext *dc;
116
108 dc = GNUNET_malloc (sizeof (struct DownloadContext)); 117 dc = GNUNET_malloc (sizeof (struct DownloadContext));
109 dc->uri = uri; 118 dc->uri = uri;
110 dc->anonymity = anonymity_level; 119 dc->anonymity = anonymity_level;
@@ -116,24 +125,31 @@ GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GtkButton *button,
116} 125}
117 126
118void 127void
119GNUNET_GTK_open_url_dialog_cancel_button_clicked_cb (GtkButton *button, 128GNUNET_GTK_open_url_dialog_cancel_button_clicked_cb (GtkButton * button,
120 gpointer user_data) 129 gpointer user_data)
121{ 130{
122 GtkBuilder *builder; 131 GtkBuilder *builder;
132
123 builder = GTK_BUILDER (user_data); 133 builder = GTK_BUILDER (user_data);
124 134
125 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_window"))); 135 gtk_widget_hide (GTK_WIDGET
136 (gtk_builder_get_object
137 (builder, "GNUNET_GTK_open_url_window")));
126 return; 138 return;
127} 139}
128 140
129gboolean 141gboolean
130GNUNET_GTK_open_url_window_delete_event_cb (GtkWidget *widget, 142GNUNET_GTK_open_url_window_delete_event_cb (GtkWidget * widget,
131 GdkEvent *event, gpointer user_data) 143 GdkEvent * event,
144 gpointer user_data)
132{ 145{
133 GtkBuilder *builder; 146 GtkBuilder *builder;
147
134 builder = GTK_BUILDER (user_data); 148 builder = GTK_BUILDER (user_data);
135 149
136 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_window"))); 150 gtk_widget_hide (GTK_WIDGET
151 (gtk_builder_get_object
152 (builder, "GNUNET_GTK_open_url_window")));
137 return TRUE; 153 return TRUE;
138} 154}
139 155
@@ -142,27 +158,32 @@ GNUNET_GTK_open_url_window_delete_event_cb (GtkWidget *widget,
142#endif 158#endif
143 159
144gboolean 160gboolean
145GNUNET_GTK_open_url_dialog_url_textview_key_press_event_cb (GtkWidget *widget, 161GNUNET_GTK_open_url_dialog_url_textview_key_press_event_cb (GtkWidget * widget,
146 GdkEventKey *event, gpointer user_data) 162 GdkEventKey * event,
163 gpointer user_data)
147{ 164{
148 GtkBuilder *builder; 165 GtkBuilder *builder;
166
149 builder = GTK_BUILDER (user_data); 167 builder = GTK_BUILDER (user_data);
150 168
151 if (event->keyval == GDK_KEY_Return) 169 if (event->keyval == GDK_KEY_Return)
152 { 170 {
153 GtkWidget *execute = GTK_WIDGET (gtk_builder_get_object (builder, 171 GtkWidget *execute = GTK_WIDGET (gtk_builder_get_object (builder,
154 "GNUNET_GTK_open_url_dialog_execute_button")); 172 "GNUNET_GTK_open_url_dialog_execute_button"));
173
155 if (gtk_widget_get_sensitive (execute)) 174 if (gtk_widget_get_sensitive (execute))
156 GNUNET_GTK_open_url_dialog_execute_button_clicked_cb ( 175 GNUNET_GTK_open_url_dialog_execute_button_clicked_cb (GTK_BUTTON
157 GTK_BUTTON (execute), user_data); 176 (execute),
177 user_data);
158 return TRUE; 178 return TRUE;
159 } 179 }
160 return FALSE; 180 return FALSE;
161} 181}
162 182
163void 183void
164GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb ( 184GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb (GtkTextBuffer *
165 GtkTextBuffer *textbuffer, gpointer user_data) 185 textbuffer,
186 gpointer user_data)
166{ 187{
167 struct GNUNET_FS_Uri *uri; 188 struct GNUNET_FS_Uri *uri;
168 GtkTextBuffer *tb; 189 GtkTextBuffer *tb;
@@ -174,9 +195,11 @@ GNUNET_GTK_open_url_dialog_url_textview_buffer_changed_cb (
174 builder = GTK_BUILDER (user_data); 195 builder = GTK_BUILDER (user_data);
175 196
176 perr = NULL; 197 perr = NULL;
177 tb = GTK_TEXT_BUFFER (gtk_builder_get_object (builder, "GNUNET_GTK_open_url_dialog_url_textview_buffer")); 198 tb = GTK_TEXT_BUFFER (gtk_builder_get_object
178 gtk_text_buffer_get_iter_at_offset (tb, &ti_start, 0); 199 (builder,
179 gtk_text_buffer_get_iter_at_offset (tb, &ti_end, -1); 200 "GNUNET_GTK_open_url_dialog_url_textview_buffer"));
201 gtk_text_buffer_get_iter_at_offset (tb, &ti_start, 0);
202 gtk_text_buffer_get_iter_at_offset (tb, &ti_end, -1);
180 203
181 uris = gtk_text_buffer_get_text (tb, &ti_start, &ti_end, FALSE); 204 uris = gtk_text_buffer_get_text (tb, &ti_start, &ti_end, FALSE);
182 if (uris != NULL) 205 if (uris != NULL)
diff --git a/src/fs/gnunet-fs-gtk-main_window_file_publish.c b/src/fs/gnunet-fs-gtk-main_window_file_publish.c
index 443558a7..d214d5f4 100644
--- a/src/fs/gnunet-fs-gtk-main_window_file_publish.c
+++ b/src/fs/gnunet-fs-gtk-main_window_file_publish.c
@@ -79,7 +79,7 @@ update_selectivity (gpointer data)
79 int ns_ok; 79 int ns_ok;
80 gchar *namespace_id; 80 gchar *namespace_id;
81 GtkBuilder *builder; 81 GtkBuilder *builder;
82 82
83 builder = GTK_BUILDER (data); 83 builder = GTK_BUILDER (data);
84 84
85 tv = GTK_TREE_VIEW (gtk_builder_get_object 85 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -97,32 +97,25 @@ update_selectivity (gpointer data)
97 } 97 }
98 up_button = 98 up_button =
99 GTK_WIDGET (gtk_builder_get_object 99 GTK_WIDGET (gtk_builder_get_object
100 (builder, 100 (builder, "GNUNET_GTK_master_publish_dialog_up_button"));
101 "GNUNET_GTK_master_publish_dialog_up_button"));
102 down_button = 101 down_button =
103 GTK_WIDGET (gtk_builder_get_object 102 GTK_WIDGET (gtk_builder_get_object
104 (builder, 103 (builder, "GNUNET_GTK_master_publish_dialog_down_button"));
105 "GNUNET_GTK_master_publish_dialog_down_button"));
106 left_button = 104 left_button =
107 GTK_WIDGET (gtk_builder_get_object 105 GTK_WIDGET (gtk_builder_get_object
108 (builder, 106 (builder, "GNUNET_GTK_master_publish_dialog_left_button"));
109 "GNUNET_GTK_master_publish_dialog_left_button"));
110 right_button = 107 right_button =
111 GTK_WIDGET (gtk_builder_get_object 108 GTK_WIDGET (gtk_builder_get_object
112 (builder, 109 (builder, "GNUNET_GTK_master_publish_dialog_right_button"));
113 "GNUNET_GTK_master_publish_dialog_right_button"));
114 delete_button = 110 delete_button =
115 GTK_WIDGET (gtk_builder_get_object 111 GTK_WIDGET (gtk_builder_get_object
116 (builder, 112 (builder, "GNUNET_GTK_master_publish_dialog_delete_button"));
117 "GNUNET_GTK_master_publish_dialog_delete_button"));
118 edit_button = 113 edit_button =
119 GTK_WIDGET (gtk_builder_get_object 114 GTK_WIDGET (gtk_builder_get_object
120 (builder, 115 (builder, "GNUNET_GTK_master_publish_dialog_edit_button"));
121 "GNUNET_GTK_master_publish_dialog_edit_button"));
122 execute_button = 116 execute_button =
123 GTK_WIDGET (gtk_builder_get_object 117 GTK_WIDGET (gtk_builder_get_object
124 (builder, 118 (builder, "GNUNET_GTK_master_publish_dialog_execute_button"));
125 "GNUNET_GTK_master_publish_dialog_execute_button"));
126 tv = GTK_TREE_VIEW (gtk_builder_get_object 119 tv = GTK_TREE_VIEW (gtk_builder_get_object
127 (builder, 120 (builder,
128 "GNUNET_GTK_master_publish_dialog_file_information_tree_view")); 121 "GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
@@ -203,8 +196,9 @@ update_selectivity (gpointer data)
203 * @param iter parent entry, or NULL for top-level addition 196 * @param iter parent entry, or NULL for top-level addition
204 */ 197 */
205static void 198static void
206add_file_at_iter (gpointer data, const char *filename, const struct GNUNET_FS_BlockOptions *bo, 199add_file_at_iter (gpointer data, const char *filename,
207 int do_index, GtkTreeIter * iter) 200 const struct GNUNET_FS_BlockOptions *bo, int do_index,
201 GtkTreeIter * iter)
208{ 202{
209 struct GNUNET_FS_FileInformation *fi; 203 struct GNUNET_FS_FileInformation *fi;
210 GtkTreeRowReference *row_reference; 204 GtkTreeRowReference *row_reference;
@@ -220,7 +214,7 @@ add_file_at_iter (gpointer data, const char *filename, const struct GNUNET_FS_Bl
220 const char *ss; 214 const char *ss;
221 struct stat sbuf; 215 struct stat sbuf;
222 GtkBuilder *builder; 216 GtkBuilder *builder;
223 217
224 builder = GTK_BUILDER (data); 218 builder = GTK_BUILDER (data);
225 219
226 if (0 != STAT (filename, &sbuf)) 220 if (0 != STAT (filename, &sbuf))
@@ -287,8 +281,9 @@ add_file_at_iter (gpointer data, const char *filename, const struct GNUNET_FS_Bl
287 * @param pos iterator to set to the location of the new element 281 * @param pos iterator to set to the location of the new element
288 */ 282 */
289static void 283static void
290create_dir_at_iter (gpointer data, const char *name, const struct GNUNET_FS_BlockOptions *bo, 284create_dir_at_iter (gpointer data, const char *name,
291 GtkTreeIter * iter, GtkTreeIter * pos) 285 const struct GNUNET_FS_BlockOptions *bo, GtkTreeIter * iter,
286 GtkTreeIter * pos)
292{ 287{
293 struct GNUNET_FS_FileInformation *fi; 288 struct GNUNET_FS_FileInformation *fi;
294 GtkTreeRowReference *row_reference; 289 GtkTreeRowReference *row_reference;
@@ -296,8 +291,8 @@ create_dir_at_iter (gpointer data, const char *name, const struct GNUNET_FS_Bloc
296 struct GNUNET_CONTAINER_MetaData *meta; 291 struct GNUNET_CONTAINER_MetaData *meta;
297 GtkTreeStore *ts; 292 GtkTreeStore *ts;
298 GtkBuilder *builder; 293 GtkBuilder *builder;
299 294
300 295
301 builder = GTK_BUILDER (data); 296 builder = GTK_BUILDER (data);
302 297
303 ts = GTK_TREE_STORE (gtk_builder_get_object 298 ts = GTK_TREE_STORE (gtk_builder_get_object
@@ -785,6 +780,7 @@ scan_directory (void *cls, const char *filename)
785 { 780 {
786 char *filename_utf8; 781 char *filename_utf8;
787 const char *ss, *short_fn; 782 const char *ss, *short_fn;
783
788 GNUNET_assert (mcm == NULL); 784 GNUNET_assert (mcm == NULL);
789 /* we're top-level */ 785 /* we're top-level */
790 short_fn = filename; 786 short_fn = filename;
@@ -793,8 +789,9 @@ scan_directory (void *cls, const char *filename)
793 filename_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn); 789 filename_utf8 = GNUNET_GTK_from_loc_to_utf8 ((char *) short_fn);
794 GNUNET_CONTAINER_meta_data_insert (pd->meta, "<gnunet-gtk>", 790 GNUNET_CONTAINER_meta_data_insert (pd->meta, "<gnunet-gtk>",
795 EXTRACTOR_METATYPE_FILENAME, 791 EXTRACTOR_METATYPE_FILENAME,
796 EXTRACTOR_METAFORMAT_UTF8, "text/plain", 792 EXTRACTOR_METAFORMAT_UTF8,
797 filename_utf8, strlen (filename_utf8) + 1); 793 "text/plain", filename_utf8,
794 strlen (filename_utf8) + 1);
798 GNUNET_free_non_null (filename_utf8); 795 GNUNET_free_non_null (filename_utf8);
799 add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index, 796 add_entry_to_ts (adc->ts, &pd->iter, filename, &adc->bo, adc->do_index,
800 NULL, pd->meta); 797 NULL, pd->meta);
@@ -817,13 +814,13 @@ scan_directory (void *cls, const char *filename)
817 * @param do_index should we index? 814 * @param do_index should we index?
818 */ 815 */
819static void 816static void
820add_dir (gpointer data, const char *filename, const struct GNUNET_FS_BlockOptions *bo, 817add_dir (gpointer data, const char *filename,
821 int do_index) 818 const struct GNUNET_FS_BlockOptions *bo, int do_index)
822{ 819{
823 struct stat sbuf; 820 struct stat sbuf;
824 struct AddDirContext scan_ctx; 821 struct AddDirContext scan_ctx;
825 GtkBuilder *builder; 822 GtkBuilder *builder;
826 823
827 builder = GTK_BUILDER (data); 824 builder = GTK_BUILDER (data);
828 825
829 if (0 != STAT (filename, &sbuf)) 826 if (0 != STAT (filename, &sbuf))
@@ -870,8 +867,8 @@ remove_old_entry (GtkTreeStore * ts, GtkTreeIter * root)
870 * Move an entry in the tree. 867 * Move an entry in the tree.
871 */ 868 */
872static void 869static void
873move_entry (gpointer data, GtkTreeModel * tm, GtkTreeIter * old, GtkTreeIter * newpos, 870move_entry (gpointer data, GtkTreeModel * tm, GtkTreeIter * old,
874 int dsel) 871 GtkTreeIter * newpos, int dsel)
875{ 872{
876 struct GNUNET_FS_FileInformation *fip; 873 struct GNUNET_FS_FileInformation *fip;
877 GtkTreeView *tv; 874 GtkTreeView *tv;
@@ -887,7 +884,7 @@ move_entry (gpointer data, GtkTreeModel * tm, GtkTreeIter * old, GtkTreeIter * n
887 GtkTreeRowReference *rr; 884 GtkTreeRowReference *rr;
888 GtkTreeRowReference *rr2; 885 GtkTreeRowReference *rr2;
889 GtkBuilder *builder; 886 GtkBuilder *builder;
890 887
891 builder = GTK_BUILDER (data); 888 builder = GTK_BUILDER (data);
892 gtk_tree_model_get (tm, old, 0, &fsf, 1, &do_index, 2, &short_fn, 3, 889 gtk_tree_model_get (tm, old, 0, &fsf, 1, &do_index, 2, &short_fn, 3,
893 &anonymity_level, 4, &priority, 5, &fip, -1); 890 &anonymity_level, 4, &priority, 5, &fip, -1);
@@ -946,15 +943,14 @@ move_entry (gpointer data, GtkTreeModel * tm, GtkTreeIter * old, GtkTreeIter * n
946 * User has changed the "current" identifier for the content in 943 * User has changed the "current" identifier for the content in
947 * the GtkTreeView. Update the model. 944 * the GtkTreeView. Update the model.
948 */ 945 */
949void 946void GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer_edited_cb
950GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer_edited_cb (GtkCellRendererText * renderer, 947 (GtkCellRendererText * renderer, gchar * cpath, gchar * new_text,
951 gchar * cpath, gchar * new_text, 948 gpointer user_data)
952 gpointer user_data)
953{ 949{
954 GtkTreeIter iter; 950 GtkTreeIter iter;
955 GtkTreeStore *ts; 951 GtkTreeStore *ts;
956 GtkBuilder *builder; 952 GtkBuilder *builder;
957 953
958 builder = GTK_BUILDER (user_data); 954 builder = GTK_BUILDER (user_data);
959 ts = GTK_TREE_STORE (gtk_builder_get_object 955 ts = GTK_TREE_STORE (gtk_builder_get_object
960 (builder, "GNUNET_GTK_pseudonym_tree_store")); 956 (builder, "GNUNET_GTK_pseudonym_tree_store"));
@@ -974,15 +970,14 @@ GNUNET_GTK_master_publish_dialog_pseudonym_updates_renderer_edited_cb (GtkCellRe
974 * User has changed the "current" identifier for the content in 970 * User has changed the "current" identifier for the content in
975 * the GtkTreeView. Update the model. 971 * the GtkTreeView. Update the model.
976 */ 972 */
977void 973void GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer_edited_cb
978GNUNET_GTK_master_publish_dialog_pseudonym_identifier_renderer_edited_cb (GtkCellRendererText * renderer, 974 (GtkCellRendererText * renderer, gchar * cpath, gchar * new_text,
979 gchar * cpath, gchar * new_text, 975 gpointer user_data)
980 gpointer user_data)
981{ 976{
982 GtkTreeIter iter; 977 GtkTreeIter iter;
983 GtkTreeStore *ts; 978 GtkTreeStore *ts;
984 GtkBuilder *builder; 979 GtkBuilder *builder;
985 980
986 builder = GTK_BUILDER (user_data); 981 builder = GTK_BUILDER (user_data);
987 ts = GTK_TREE_STORE (gtk_builder_get_object 982 ts = GTK_TREE_STORE (gtk_builder_get_object
988 (builder, "GNUNET_GTK_pseudonym_tree_store")); 983 (builder, "GNUNET_GTK_pseudonym_tree_store"));
@@ -1011,7 +1006,7 @@ GNUNET_GTK_master_publish_dialog_right_button_clicked_cb (GtkWidget * dummy,
1011 GtkTreeIter prev; 1006 GtkTreeIter prev;
1012 GtkTreeIter pos; 1007 GtkTreeIter pos;
1013 GtkBuilder *builder; 1008 GtkBuilder *builder;
1014 1009
1015 builder = GTK_BUILDER (data); 1010 builder = GTK_BUILDER (data);
1016 1011
1017 tv = GTK_TREE_VIEW (gtk_builder_get_object 1012 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -1061,7 +1056,7 @@ GNUNET_GTK_master_publish_dialog_left_button_clicked_cb (GtkWidget * dummy,
1061 GtkTreeIter parent; 1056 GtkTreeIter parent;
1062 GtkTreeIter pos; 1057 GtkTreeIter pos;
1063 GtkBuilder *builder; 1058 GtkBuilder *builder;
1064 1059
1065 builder = GTK_BUILDER (data); 1060 builder = GTK_BUILDER (data);
1066 1061
1067 tv = GTK_TREE_VIEW (gtk_builder_get_object 1062 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -1103,7 +1098,7 @@ GNUNET_GTK_master_publish_dialog_up_button_clicked_cb (GtkWidget * dummy,
1103 GtkTreeIter *pprev; 1098 GtkTreeIter *pprev;
1104 GtkTreeIter pos; 1099 GtkTreeIter pos;
1105 GtkBuilder *builder; 1100 GtkBuilder *builder;
1106 1101
1107 builder = GTK_BUILDER (data); 1102 builder = GTK_BUILDER (data);
1108 1103
1109 tv = GTK_TREE_VIEW (gtk_builder_get_object 1104 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -1158,7 +1153,7 @@ GNUNET_GTK_master_publish_dialog_down_button_clicked_cb (GtkWidget * dummy,
1158 GtkTreeIter next; 1153 GtkTreeIter next;
1159 GtkTreeIter pos; 1154 GtkTreeIter pos;
1160 GtkBuilder *builder; 1155 GtkBuilder *builder;
1161 1156
1162 builder = GTK_BUILDER (data); 1157 builder = GTK_BUILDER (data);
1163 1158
1164 tv = GTK_TREE_VIEW (gtk_builder_get_object 1159 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -1197,7 +1192,7 @@ GNUNET_GTK_master_publish_dialog_new_button_clicked_cb (GtkWidget * dummy,
1197 GtkTreeIter pos; 1192 GtkTreeIter pos;
1198 struct GNUNET_FS_BlockOptions bo; 1193 struct GNUNET_FS_BlockOptions bo;
1199 GtkBuilder *builder; 1194 GtkBuilder *builder;
1200 1195
1201 builder = GTK_BUILDER (data); 1196 builder = GTK_BUILDER (data);
1202 1197
1203 tv = GTK_TREE_VIEW (gtk_builder_get_object 1198 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -1230,15 +1225,16 @@ GNUNET_GTK_master_publish_dialog_add_button_clicked_cb (GtkWidget * dummy,
1230 GtkWidget *ad; 1225 GtkWidget *ad;
1231 GtkBuilder *builder; 1226 GtkBuilder *builder;
1232 GtkWindow *master_pubdialog; 1227 GtkWindow *master_pubdialog;
1233 1228
1234 builder = GTK_BUILDER (data); 1229 builder = GTK_BUILDER (data);
1235 1230
1236 ad = GTK_WIDGET (gtk_builder_get_object 1231 ad = GTK_WIDGET (gtk_builder_get_object
1237 (builder, "GNUNET_GTK_publish_file_dialog")); 1232 (builder, "GNUNET_GTK_publish_file_dialog"));
1238 GNUNET_FS_GTK_setup_expiration_year_adjustment (builder); 1233 GNUNET_FS_GTK_setup_expiration_year_adjustment (builder);
1239 1234
1240 master_pubdialog = GTK_WINDOW (gtk_builder_get_object (builder, 1235 master_pubdialog =
1241 "GNUNET_GTK_master_publish_dialog")); 1236 GTK_WINDOW (gtk_builder_get_object
1237 (builder, "GNUNET_GTK_master_publish_dialog"));
1242 gtk_window_set_transient_for (GTK_WINDOW (ad), master_pubdialog); 1238 gtk_window_set_transient_for (GTK_WINDOW (ad), master_pubdialog);
1243 1239
1244 gtk_window_present (GTK_WINDOW (ad)); 1240 gtk_window_present (GTK_WINDOW (ad));
@@ -1264,24 +1260,19 @@ struct EditPublishContext
1264 * @param ret GTK_RESPONSE_OK if the dialog was closed with "OK" 1260 * @param ret GTK_RESPONSE_OK if the dialog was closed with "OK"
1265 */ 1261 */
1266static void 1262static void
1267master_publish_edit_publish_dialog_cb (gpointer cls, 1263master_publish_edit_publish_dialog_cb (gpointer cls, int do_index,
1268 int do_index, 1264 const char *short_fn,
1269 const char *short_fn, 1265 uint32_t anonymity_level,
1270 uint32_t anonymity_level, 1266 uint32_t priority, const char *root,
1271 uint32_t priority, 1267 gint ret)
1272 const char *root,
1273 gint ret)
1274{ 1268{
1275 struct EditPublishContext *cbargs = cls; 1269 struct EditPublishContext *cbargs = cls;
1276 1270
1277 GNUNET_assert (NULL == root); 1271 GNUNET_assert (NULL == root);
1278 if (ret == GTK_RESPONSE_OK) 1272 if (ret == GTK_RESPONSE_OK)
1279 gtk_tree_store_set (GTK_TREE_STORE (cbargs->tm), &cbargs->iter, 1273 gtk_tree_store_set (GTK_TREE_STORE (cbargs->tm), &cbargs->iter, 1, do_index,
1280 1, do_index, 1274 2, short_fn, 3, (guint) anonymity_level, 4,
1281 2, short_fn, 1275 (guint) priority, -1);
1282 3, (guint) anonymity_level,
1283 4, (guint) priority,
1284 -1);
1285 GNUNET_free (cbargs); 1276 GNUNET_free (cbargs);
1286} 1277}
1287 1278
@@ -1309,8 +1300,9 @@ GNUNET_GTK_master_publish_dialog_edit_button_clicked_cb (GtkWidget * dummy,
1309 1300
1310 cbargs = GNUNET_malloc (sizeof (struct EditPublishContext)); 1301 cbargs = GNUNET_malloc (sizeof (struct EditPublishContext));
1311 cbargs->tm = gtk_tree_view_get_model (tv); 1302 cbargs->tm = gtk_tree_view_get_model (tv);
1312 master_pubdialog = GTK_WINDOW (gtk_builder_get_object (builder, 1303 master_pubdialog =
1313 "GNUNET_GTK_master_publish_dialog")); 1304 GTK_WINDOW (gtk_builder_get_object
1305 (builder, "GNUNET_GTK_master_publish_dialog"));
1314 sel = gtk_tree_view_get_selection (tv); 1306 sel = gtk_tree_view_get_selection (tv);
1315 if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &cbargs->iter)) 1307 if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &cbargs->iter))
1316 { 1308 {
@@ -1319,21 +1311,14 @@ GNUNET_GTK_master_publish_dialog_edit_button_clicked_cb (GtkWidget * dummy,
1319 return; 1311 return;
1320 } 1312 }
1321 1313
1322 gtk_tree_model_get (tm, &cbargs->iter, 1314 gtk_tree_model_get (tm, &cbargs->iter, 1, &do_index, 2, &short_fn, 3,
1323 1, &do_index, 1315 &anonymity_level, 4, &priority, 5, &fip, -1);
1324 2, &short_fn,
1325 3, &anonymity_level,
1326 4, &priority,
1327 5, &fip,
1328 -1);
1329 /* FIXME: shouldn't this use a fresh builder? */ 1316 /* FIXME: shouldn't this use a fresh builder? */
1330 GNUNET_FS_GTK_edit_publish_dialog (builder, master_pubdialog, 1317 GNUNET_FS_GTK_edit_publish_dialog (builder, master_pubdialog, do_index,
1331 do_index, 1318 short_fn, (uint32_t) anonymity_level,
1332 short_fn, 1319 (uint32_t) priority, fip, TRUE,
1333 (uint32_t) anonymity_level, 1320 &master_publish_edit_publish_dialog_cb,
1334 (uint32_t) priority, 1321 cbargs);
1335 fip,
1336 TRUE, &master_publish_edit_publish_dialog_cb, cbargs);
1337} 1322}
1338 1323
1339 1324
@@ -1370,7 +1355,7 @@ GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb (GtkWidget * dummy,
1370 GtkTreeIter iter; 1355 GtkTreeIter iter;
1371 struct GNUNET_FS_FileInformation *fip; 1356 struct GNUNET_FS_FileInformation *fip;
1372 GtkBuilder *builder; 1357 GtkBuilder *builder;
1373 1358
1374 builder = GTK_BUILDER (data); 1359 builder = GTK_BUILDER (data);
1375 tv = GTK_TREE_VIEW (gtk_builder_get_object 1360 tv = GTK_TREE_VIEW (gtk_builder_get_object
1376 (builder, 1361 (builder,
@@ -1389,8 +1374,9 @@ GNUNET_GTK_master_publish_dialog_delete_button_clicked_cb (GtkWidget * dummy,
1389 1374
1390 1375
1391void 1376void
1392GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog *dialog, 1377GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog * dialog,
1393 gint response_id, gpointer user_data) 1378 gint response_id,
1379 gpointer user_data)
1394{ 1380{
1395 char *filename; 1381 char *filename;
1396 int do_index; 1382 int do_index;
@@ -1400,25 +1386,30 @@ GNUNET_GTK_publish_directory_dialog_response_cb (GtkDialog *dialog,
1400 GtkBuilder *builder; 1386 GtkBuilder *builder;
1401 1387
1402 builder = GTK_BUILDER (user_data); 1388 builder = GTK_BUILDER (user_data);
1403 ad = GTK_WIDGET (gtk_builder_get_object (builder, 1389 ad = GTK_WIDGET (gtk_builder_get_object
1404 "GNUNET_GTK_publish_directory_dialog")); 1390 (builder, "GNUNET_GTK_publish_directory_dialog"));
1405 if (response_id == -5) 1391 if (response_id == -5)
1406 { 1392 {
1407 filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad)); 1393 filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad));
1408 sb = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, 1394 sb = GTK_SPIN_BUTTON (gtk_builder_get_object
1409 "GNUNET_GTK_publish_directory_dialog_expiration_year_spin_button")); 1395 (builder,
1410 if (!GNUNET_GTK_get_selected_anonymity_level (builder, 1396 "GNUNET_GTK_publish_directory_dialog_expiration_year_spin_button"));
1411 "GNUNET_GTK_publish_directory_dialog_anonymity_combobox", 1397 if (!GNUNET_GTK_get_selected_anonymity_level
1412 &bo.anonymity_level)) 1398 (builder, "GNUNET_GTK_publish_directory_dialog_anonymity_combobox",
1399 &bo.anonymity_level))
1413 bo.anonymity_level = 1; 1400 bo.anonymity_level = 1;
1414 bo.content_priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON ( 1401 bo.content_priority =
1415 gtk_builder_get_object (builder, 1402 gtk_spin_button_get_value (GTK_SPIN_BUTTON
1416 "GNUNET_GTK_publish_directory_dialog_priority_spin_button"))); 1403 (gtk_builder_get_object
1417 bo.replication_level = 0; /* FIXME: replication level in GUI? */ 1404 (builder,
1405 "GNUNET_GTK_publish_directory_dialog_priority_spin_button")));
1406 bo.replication_level = 0; /* FIXME: replication level in GUI? */
1418 bo.expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); 1407 bo.expiration_time = GNUNET_FS_GTK_get_expiration_time (sb);
1419 do_index = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( 1408 do_index =
1420 gtk_builder_get_object (builder, 1409 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
1421 "GNUNET_GTK_publish_directory_dialog_do_index_checkbutton"))); 1410 (gtk_builder_get_object
1411 (builder,
1412 "GNUNET_GTK_publish_directory_dialog_do_index_checkbutton")));
1422 1413
1423 /* FIXME: open progress dialog here... */ 1414 /* FIXME: open progress dialog here... */
1424 add_dir (user_data, filename, &bo, do_index); 1415 add_dir (user_data, filename, &bo, do_index);
@@ -1436,14 +1427,15 @@ GNUNET_GTK_master_publish_dialog_open_button_clicked_cb (GtkWidget * dummy,
1436 GtkWidget *ad; 1427 GtkWidget *ad;
1437 GtkBuilder *builder; 1428 GtkBuilder *builder;
1438 GtkWindow *master_pubdialog; 1429 GtkWindow *master_pubdialog;
1439 1430
1440 builder = GTK_BUILDER (data); 1431 builder = GTK_BUILDER (data);
1441 GNUNET_FS_GTK_setup_expiration_year_adjustment (builder); 1432 GNUNET_FS_GTK_setup_expiration_year_adjustment (builder);
1442 ad = GTK_WIDGET (gtk_builder_get_object 1433 ad = GTK_WIDGET (gtk_builder_get_object
1443 (builder, "GNUNET_GTK_publish_directory_dialog")); 1434 (builder, "GNUNET_GTK_publish_directory_dialog"));
1444 1435
1445 master_pubdialog = GTK_WINDOW (gtk_builder_get_object (builder, 1436 master_pubdialog =
1446 "GNUNET_GTK_master_publish_dialog")); 1437 GTK_WINDOW (gtk_builder_get_object
1438 (builder, "GNUNET_GTK_master_publish_dialog"));
1447 gtk_window_set_transient_for (GTK_WINDOW (ad), master_pubdialog); 1439 gtk_window_set_transient_for (GTK_WINDOW (ad), master_pubdialog);
1448 1440
1449 gtk_window_present (GTK_WINDOW (ad)); 1441 gtk_window_present (GTK_WINDOW (ad));
@@ -1564,7 +1556,10 @@ add_updateable_to_ts (void *cls, const char *last_id,
1564 else 1556 else
1565 { 1557 {
1566 char *utf8_desc = NULL; 1558 char *utf8_desc = NULL;
1567 utf8_desc = GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, desc, strlen (desc) + 1); 1559
1560 utf8_desc =
1561 GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, desc,
1562 strlen (desc) + 1);
1568 GNUNET_free (desc); 1563 GNUNET_free (desc);
1569 if (utf8_desc != NULL) 1564 if (utf8_desc != NULL)
1570 desc = utf8_desc; 1565 desc = utf8_desc;
@@ -1689,13 +1684,13 @@ free_file_information_tree_store (GtkTreeModel * tm, GtkTreeIter * iter)
1689 1684
1690 1685
1691void 1686void
1692GNUNET_GTK_master_publish_dialog_realize_cb (GtkWidget *widget, 1687GNUNET_GTK_master_publish_dialog_realize_cb (GtkWidget * widget,
1693 gpointer user_data) 1688 gpointer user_data)
1694{ 1689{
1695 GtkTreeView *tv; 1690 GtkTreeView *tv;
1696 GtkTreeSelection *sel; 1691 GtkTreeSelection *sel;
1697 GtkBuilder *builder; 1692 GtkBuilder *builder;
1698 1693
1699 builder = GTK_BUILDER (user_data); 1694 builder = GTK_BUILDER (user_data);
1700 1695
1701 tv = GTK_TREE_VIEW (gtk_builder_get_object 1696 tv = GTK_TREE_VIEW (gtk_builder_get_object
@@ -1730,9 +1725,10 @@ hide_master_publish_dialog (gpointer user_data, gint ret)
1730 builder = GTK_BUILDER (user_data); 1725 builder = GTK_BUILDER (user_data);
1731 ad = GTK_WIDGET (gtk_builder_get_object 1726 ad = GTK_WIDGET (gtk_builder_get_object
1732 (builder, "GNUNET_GTK_master_publish_dialog")); 1727 (builder, "GNUNET_GTK_master_publish_dialog"));
1733 ptv = GTK_TREE_VIEW (gtk_builder_get_object 1728 ptv =
1734 (builder, 1729 GTK_TREE_VIEW (gtk_builder_get_object
1735 "GNUNET_GTK_master_publish_dialog_pseudonym_tree_view")); 1730 (builder,
1731 "GNUNET_GTK_master_publish_dialog_pseudonym_tree_view"));
1736 sel = gtk_tree_view_get_selection (ptv); 1732 sel = gtk_tree_view_get_selection (ptv);
1737 ptm = gtk_tree_view_get_model (ptv); 1733 ptm = gtk_tree_view_get_model (ptv);
1738 1734
@@ -1740,7 +1736,7 @@ hide_master_publish_dialog (gpointer user_data, gint ret)
1740 (builder, 1736 (builder,
1741 "GNUNET_GTK_master_publish_dialog_file_information_tree_view")); 1737 "GNUNET_GTK_master_publish_dialog_file_information_tree_view"));
1742 tm = gtk_tree_view_get_model (tv); 1738 tm = gtk_tree_view_get_model (tv);
1743 1739
1744 if (ret == GTK_RESPONSE_OK) 1740 if (ret == GTK_RESPONSE_OK)
1745 { 1741 {
1746 if (TRUE == gtk_tree_selection_get_selected (sel, &ptm, &iter)) 1742 if (TRUE == gtk_tree_selection_get_selected (sel, &ptm, &iter))
@@ -1787,29 +1783,30 @@ hide_master_publish_dialog (gpointer user_data, gint ret)
1787 gtk_tree_store_clear (GTK_TREE_STORE (tm)); 1783 gtk_tree_store_clear (GTK_TREE_STORE (tm));
1788 gtk_widget_hide (ad); 1784 gtk_widget_hide (ad);
1789 /* FIXME: doesn't this leak everything (builder + window)? 1785 /* FIXME: doesn't this leak everything (builder + window)?
1790 I think we need to unref the builder here! */ 1786 * I think we need to unref the builder here! */
1791} 1787}
1792 1788
1793 1789
1794void 1790void
1795GNUNET_GTK_master_publish_dialog_execute_button_clicked_cb (GtkButton *button, 1791GNUNET_GTK_master_publish_dialog_execute_button_clicked_cb (GtkButton * button,
1796 gpointer user_data) 1792 gpointer user_data)
1797{ 1793{
1798 hide_master_publish_dialog (user_data, GTK_RESPONSE_OK); 1794 hide_master_publish_dialog (user_data, GTK_RESPONSE_OK);
1799} 1795}
1800 1796
1801 1797
1802void 1798void
1803GNUNET_GTK_master_publish_dialog_cancel_button_clicked_cb (GtkButton *button, 1799GNUNET_GTK_master_publish_dialog_cancel_button_clicked_cb (GtkButton * button,
1804 gpointer user_data) 1800 gpointer user_data)
1805{ 1801{
1806 hide_master_publish_dialog (user_data, GTK_RESPONSE_CANCEL); 1802 hide_master_publish_dialog (user_data, GTK_RESPONSE_CANCEL);
1807} 1803}
1808 1804
1809 1805
1810gboolean 1806gboolean
1811GNUNET_GTK_master_publish_dialog_delete_event_cb (GtkWidget *widget, 1807GNUNET_GTK_master_publish_dialog_delete_event_cb (GtkWidget * widget,
1812 GdkEvent *event, gpointer user_data) 1808 GdkEvent * event,
1809 gpointer user_data)
1813{ 1810{
1814 hide_master_publish_dialog (user_data, GTK_RESPONSE_CANCEL); 1811 hide_master_publish_dialog (user_data, GTK_RESPONSE_CANCEL);
1815 return TRUE; 1812 return TRUE;
@@ -1817,8 +1814,9 @@ GNUNET_GTK_master_publish_dialog_delete_event_cb (GtkWidget *widget,
1817 1814
1818 1815
1819void 1816void
1820GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog *dialog, 1817GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog * dialog,
1821 gint response_id, gpointer user_data) 1818 gint response_id,
1819 gpointer user_data)
1822{ 1820{
1823 char *filename; 1821 char *filename;
1824 struct GNUNET_FS_BlockOptions bo; 1822 struct GNUNET_FS_BlockOptions bo;
@@ -1828,26 +1826,32 @@ GNUNET_GTK_publish_file_dialog_response_cb (GtkDialog *dialog,
1828 1826
1829 GtkBuilder *builder = GTK_BUILDER (user_data); 1827 GtkBuilder *builder = GTK_BUILDER (user_data);
1830 1828
1831 ad = GTK_WIDGET (gtk_builder_get_object (builder, 1829 ad = GTK_WIDGET (gtk_builder_get_object
1832 "GNUNET_GTK_publish_file_dialog")); 1830 (builder, "GNUNET_GTK_publish_file_dialog"));
1833 1831
1834 if (response_id == -5) 1832 if (response_id == -5)
1835 { 1833 {
1836 /* OK */ 1834 /* OK */
1837 sb = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, 1835 sb = GTK_SPIN_BUTTON (gtk_builder_get_object
1838 "GNUNET_GTK_publish_file_dialog_expiration_year_spin_button")); 1836 (builder,
1837 "GNUNET_GTK_publish_file_dialog_expiration_year_spin_button"));
1839 1838
1840 if (!GNUNET_GTK_get_selected_anonymity_level (builder, 1839 if (!GNUNET_GTK_get_selected_anonymity_level
1841 "GNUNET_GTK_publish_file_dialog_anonymity_combobox", &bo.anonymity_level)) 1840 (builder, "GNUNET_GTK_publish_file_dialog_anonymity_combobox",
1841 &bo.anonymity_level))
1842 bo.anonymity_level = 1; 1842 bo.anonymity_level = 1;
1843 bo.content_priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON ( 1843 bo.content_priority =
1844 gtk_builder_get_object (builder, 1844 gtk_spin_button_get_value (GTK_SPIN_BUTTON
1845 "GNUNET_GTK_publish_file_dialog_priority_spin_button"))); 1845 (gtk_builder_get_object
1846 (builder,
1847 "GNUNET_GTK_publish_file_dialog_priority_spin_button")));
1846 bo.expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); 1848 bo.expiration_time = GNUNET_FS_GTK_get_expiration_time (sb);
1847 bo.replication_level = 1; /* FIXME... */ 1849 bo.replication_level = 1; /* FIXME... */
1848 do_index = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( 1850 do_index =
1849 gtk_builder_get_object (builder, 1851 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
1850 "GNUNET_GTK_publish_file_dialog_do_index_checkbutton"))); 1852 (gtk_builder_get_object
1853 (builder,
1854 "GNUNET_GTK_publish_file_dialog_do_index_checkbutton")));
1851 1855
1852 filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad)); 1856 filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad));
1853 add_file_at_iter (user_data, filename, &bo, do_index, NULL); 1857 add_file_at_iter (user_data, filename, &bo, do_index, NULL);
@@ -1870,16 +1874,16 @@ GNUNET_GTK_main_menu_file_publish_activate_cb (GtkWidget * dummy, gpointer data)
1870 GtkWidget *ad; 1874 GtkWidget *ad;
1871 GtkTreeStore *ts; 1875 GtkTreeStore *ts;
1872 GtkBuilder *builder; 1876 GtkBuilder *builder;
1873 1877
1874 builder = GTK_BUILDER (data); 1878 builder = GTK_BUILDER (data);
1875 ad = GTK_WIDGET (gtk_builder_get_object 1879 ad = GTK_WIDGET (gtk_builder_get_object
1876 (builder, "GNUNET_GTK_master_publish_dialog")); 1880 (builder, "GNUNET_GTK_master_publish_dialog"));
1877 if (!gtk_widget_get_visible (ad)) 1881 if (!gtk_widget_get_visible (ad))
1878 { 1882 {
1879 ts = GTK_TREE_STORE (gtk_builder_get_object (builder, 1883 ts = GTK_TREE_STORE (gtk_builder_get_object
1880 "GNUNET_GTK_pseudonym_tree_store")); 1884 (builder, "GNUNET_GTK_pseudonym_tree_store"));
1881 GNUNET_FS_namespace_list (GNUNET_FS_GTK_get_fs_handle (), 1885 GNUNET_FS_namespace_list (GNUNET_FS_GTK_get_fs_handle (),
1882 &add_namespace_to_ts, ts); 1886 &add_namespace_to_ts, ts);
1883 } 1887 }
1884 gtk_window_present (GTK_WINDOW (ad)); 1888 gtk_window_present (GTK_WINDOW (ad));
1885} 1889}
diff --git a/src/fs/gnunet-fs-gtk-main_window_open_directory.c b/src/fs/gnunet-fs-gtk-main_window_open_directory.c
index e614451f..094ef67d 100644
--- a/src/fs/gnunet-fs-gtk-main_window_open_directory.c
+++ b/src/fs/gnunet-fs-gtk-main_window_open_directory.c
@@ -67,8 +67,8 @@ add_child (void *cls, const char *filename, const struct GNUNET_FS_Uri *uri,
67 dmeta = GNUNET_CONTAINER_meta_data_duplicate (meta); 67 dmeta = GNUNET_CONTAINER_meta_data_duplicate (meta);
68 GNUNET_CONTAINER_meta_data_insert (dmeta, "<user>", 68 GNUNET_CONTAINER_meta_data_insert (dmeta, "<user>",
69 EXTRACTOR_METATYPE_FILENAME, 69 EXTRACTOR_METATYPE_FILENAME,
70 EXTRACTOR_METAFORMAT_UTF8, 70 EXTRACTOR_METAFORMAT_UTF8, "text/plain",
71 "text/plain", acc->filename, 71 acc->filename,
72 strlen (acc->filename) + 1); 72 strlen (acc->filename) + 1);
73 acc->tab = GNUNET_GTK_add_to_uri_tab (&acc->iter, &acc->par, dmeta, NULL); 73 acc->tab = GNUNET_GTK_add_to_uri_tab (&acc->iter, &acc->par, dmeta, NULL);
74 tp = gtk_tree_model_get_path (GTK_TREE_MODEL (acc->tab->ts), &acc->iter); 74 tp = gtk_tree_model_get_path (GTK_TREE_MODEL (acc->tab->ts), &acc->iter);
@@ -86,8 +86,9 @@ add_child (void *cls, const char *filename, const struct GNUNET_FS_Uri *uri,
86} 86}
87 87
88void 88void
89GNUNET_GTK_open_directory_dialog_response_cb (GtkDialog *dialog, 89GNUNET_GTK_open_directory_dialog_response_cb (GtkDialog * dialog,
90 gint response_id, gpointer user_data) 90 gint response_id,
91 gpointer user_data)
91{ 92{
92 GtkBuilder *builder; 93 GtkBuilder *builder;
93 GtkWidget *ad; 94 GtkWidget *ad;
@@ -106,7 +107,8 @@ GNUNET_GTK_open_directory_dialog_response_cb (GtkDialog *dialog,
106 } 107 }
107 108
108 filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad)); 109 filename = GNUNET_GTK_filechooser_get_filename_loc (GTK_FILE_CHOOSER (ad));
109 filename_utf8 = GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad)); 110 filename_utf8 =
111 GNUNET_GTK_filechooser_get_filename_utf8 (GTK_FILE_CHOOSER (ad));
110 gtk_widget_destroy (ad); 112 gtk_widget_destroy (ad);
111 g_object_unref (G_OBJECT (builder)); 113 g_object_unref (G_OBJECT (builder));
112 acc.filename = filename_utf8; 114 acc.filename = filename_utf8;
diff --git a/src/fs/gnunet-fs-gtk.c b/src/fs/gnunet-fs-gtk.c
index 257fb311..896ae708 100644
--- a/src/fs/gnunet-fs-gtk.c
+++ b/src/fs/gnunet-fs-gtk.c
@@ -120,20 +120,26 @@ GNUNET_GTK_quit_cb (GObject * object, gpointer user_data)
120{ 120{
121 GNUNET_GTK_tray_icon_destroy (); 121 GNUNET_GTK_tray_icon_destroy ();
122 GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_IDLE, 122 GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_IDLE,
123 &shutdown_task, NULL); 123 &shutdown_task, NULL);
124} 124}
125 125
126 126
127void 127void
128main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton *togglebutton, 128main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton *
129 gpointer user_data) 129 togglebutton,
130 gpointer user_data)
130{ 131{
131 gboolean active; 132 gboolean active;
132 GtkBuilder *builder = GTK_BUILDER (user_data); 133 GtkBuilder *builder = GTK_BUILDER (user_data);
133 GtkWidget *namespace_selector_window; 134 GtkWidget *namespace_selector_window;
134 GtkWidget *namespace_selector_treeview; 135 GtkWidget *namespace_selector_treeview;
135 namespace_selector_window = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_window")); 136
136 namespace_selector_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_treeview")); 137 namespace_selector_window =
138 GTK_WIDGET (gtk_builder_get_object
139 (builder, "namespace_selector_window"));
140 namespace_selector_treeview =
141 GTK_WIDGET (gtk_builder_get_object
142 (builder, "namespace_selector_treeview"));
137 g_object_get (G_OBJECT (togglebutton), "active", &active, NULL); 143 g_object_get (G_OBJECT (togglebutton), "active", &active, NULL);
138 if (active) 144 if (active)
139 { 145 {
@@ -141,7 +147,8 @@ main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton *toggle
141 GdkWindow *main_window_gdk; 147 GdkWindow *main_window_gdk;
142 gint mwg_x, mwg_y, tgb_x, tgb_y, popup_x, popup_y; 148 gint mwg_x, mwg_y, tgb_x, tgb_y, popup_x, popup_y;
143 149
144 gtk_widget_get_allocation (GTK_WIDGET (togglebutton), &togglebutton_allocation); 150 gtk_widget_get_allocation (GTK_WIDGET (togglebutton),
151 &togglebutton_allocation);
145 152
146 main_window_gdk = gtk_widget_get_window (GTK_WIDGET (togglebutton)); 153 main_window_gdk = gtk_widget_get_window (GTK_WIDGET (togglebutton));
147 154
@@ -172,14 +179,19 @@ gboolean
172namespace_selector_window_leave_timeout_cb (gpointer user_data) 179namespace_selector_window_leave_timeout_cb (gpointer user_data)
173{ 180{
174 GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (user_data); 181 GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (user_data);
182
175 /* This will eventually hide the namespace selector */ 183 /* This will eventually hide the namespace selector */
176 gtk_toggle_button_set_active (toggle_button, FALSE); 184 gtk_toggle_button_set_active (toggle_button, FALSE);
177 return FALSE; 185 return FALSE;
178} 186}
179 187
180gboolean 188gboolean
181main_window_search_namespace_dropdown_button_enter_notify_event_cb ( 189main_window_search_namespace_dropdown_button_enter_notify_event_cb (GtkWidget *
182 GtkWidget *widget, GdkEvent *event, gpointer user_data) 190 widget,
191 GdkEvent *
192 event,
193 gpointer
194 user_data)
183{ 195{
184 if (namespace_selector_window_leave_timeout_source > 0) 196 if (namespace_selector_window_leave_timeout_source > 0)
185 g_source_remove (namespace_selector_window_leave_timeout_source); 197 g_source_remove (namespace_selector_window_leave_timeout_source);
@@ -188,8 +200,9 @@ main_window_search_namespace_dropdown_button_enter_notify_event_cb (
188 200
189 201
190gboolean 202gboolean
191namespace_selector_window_leave_notify_event_cb (GtkWidget *widget, 203namespace_selector_window_leave_notify_event_cb (GtkWidget * widget,
192 GdkEvent *event, gpointer user_data) 204 GdkEvent * event,
205 gpointer user_data)
193{ 206{
194 GtkBuilder *builder; 207 GtkBuilder *builder;
195 GtkToggleButton *toggle_button; 208 GtkToggleButton *toggle_button;
@@ -197,12 +210,17 @@ namespace_selector_window_leave_notify_event_cb (GtkWidget *widget,
197 210
198 builder = GTK_BUILDER (user_data); 211 builder = GTK_BUILDER (user_data);
199 212
200 toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "main_window_search_namespace_dropdown_button")); 213 toggle_button =
214 GTK_TOGGLE_BUTTON (gtk_builder_get_object
215 (builder,
216 "main_window_search_namespace_dropdown_button"));
201 217
202 /* Place a timeout to hide the window. It will be cancelled if the cursor 218 /* Place a timeout to hide the window. It will be cancelled if the cursor
203 * enters the namespace selector window or the toggle button within 100ms. 219 * enters the namespace selector window or the toggle button within 100ms.
204 */ 220 */
205 timeout_id = g_timeout_add (100, &namespace_selector_window_leave_timeout_cb, toggle_button); 221 timeout_id =
222 g_timeout_add (100, &namespace_selector_window_leave_timeout_cb,
223 toggle_button);
206 if (namespace_selector_window_leave_timeout_source > 0) 224 if (namespace_selector_window_leave_timeout_source > 0)
207 g_source_remove (namespace_selector_window_leave_timeout_source); 225 g_source_remove (namespace_selector_window_leave_timeout_source);
208 namespace_selector_window_leave_timeout_source = timeout_id; 226 namespace_selector_window_leave_timeout_source = timeout_id;
@@ -211,8 +229,8 @@ namespace_selector_window_leave_notify_event_cb (GtkWidget *widget,
211} 229}
212 230
213gboolean 231gboolean
214GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath, 232GNUNET_GTK_get_tree_string (GtkTreeView * treeview, GtkTreePath * treepath,
215 guint column, gchar **value) 233 guint column, gchar ** value)
216{ 234{
217 gboolean ok; 235 gboolean ok;
218 GtkTreeModel *model; 236 GtkTreeModel *model;
@@ -222,6 +240,7 @@ GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath,
222 return FALSE; 240 return FALSE;
223 241
224 GtkTreeIter iter; 242 GtkTreeIter iter;
243
225 ok = gtk_tree_model_get_iter (model, &iter, treepath); 244 ok = gtk_tree_model_get_iter (model, &iter, treepath);
226 if (!ok) 245 if (!ok)
227 return FALSE; 246 return FALSE;
@@ -234,7 +253,8 @@ GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath,
234} 253}
235 254
236gboolean 255gboolean
237GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint *p_level) 256GNUNET_GTK_get_selected_anonymity_level (GtkBuilder * builder,
257 gchar * combo_name, guint * p_level)
238{ 258{
239 GtkComboBox *combo; 259 GtkComboBox *combo;
240 GtkTreeIter iter; 260 GtkTreeIter iter;
@@ -259,7 +279,8 @@ GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, gchar *combo_name,
259} 279}
260 280
261gboolean 281gboolean
262GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint sel_level) 282GNUNET_GTK_select_anonymity_level (GtkBuilder * builder, gchar * combo_name,
283 guint sel_level)
263{ 284{
264 GtkComboBox *combo; 285 GtkComboBox *combo;
265 GtkTreeIter iter; 286 GtkTreeIter iter;
@@ -275,9 +296,8 @@ GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint
275 if (!model) 296 if (!model)
276 return FALSE; 297 return FALSE;
277 298
278 for (go_on = gtk_tree_model_get_iter_first (model, &iter); 299 for (go_on = gtk_tree_model_get_iter_first (model, &iter); go_on;
279 go_on; 300 go_on = gtk_tree_model_iter_next (model, &iter))
280 go_on = gtk_tree_model_iter_next (model, &iter))
281 { 301 {
282 gtk_tree_model_get (model, &iter, 1, &level, -1); 302 gtk_tree_model_get (model, &iter, 1, &level, -1);
283 if (level == sel_level) 303 if (level == sel_level)
@@ -290,9 +310,11 @@ GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint
290} 310}
291 311
292gboolean 312gboolean
293get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder, 313get_selected_namespace_treepath_iter_model_widget (GtkBuilder * builder,
294 GtkTreePath **p_treepath, GtkTreeIter *p_iter, GtkTreeModel **p_model, 314 GtkTreePath ** p_treepath,
295 GtkWidget **p_widget) 315 GtkTreeIter * p_iter,
316 GtkTreeModel ** p_model,
317 GtkWidget ** p_widget)
296{ 318{
297 GtkTreeSelection *selection; 319 GtkTreeSelection *selection;
298 GtkTreeModel *model; 320 GtkTreeModel *model;
@@ -300,7 +322,9 @@ get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder,
300 GtkTreePath *treepath; 322 GtkTreePath *treepath;
301 GtkWidget *widget; 323 GtkWidget *widget;
302 324
303 widget = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_treeview")); 325 widget =
326 GTK_WIDGET (gtk_builder_get_object
327 (builder, "namespace_selector_treeview"));
304 if (!widget) 328 if (!widget)
305 return FALSE; 329 return FALSE;
306 330
@@ -338,8 +362,8 @@ get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder,
338} 362}
339 363
340void 364void
341namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget, 365namespace_selector_treeview_cursor_changed_cb (GtkWidget * widget,
342 gpointer user_data) 366 gpointer user_data)
343{ 367{
344 GtkBuilder *builder; 368 GtkBuilder *builder;
345 GtkToggleButton *toggle_button; 369 GtkToggleButton *toggle_button;
@@ -352,15 +376,20 @@ namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget,
352 376
353 builder = GTK_BUILDER (user_data); 377 builder = GTK_BUILDER (user_data);
354 378
355 toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "main_window_search_namespace_dropdown_button")); 379 toggle_button =
380 GTK_TOGGLE_BUTTON (gtk_builder_get_object
381 (builder,
382 "main_window_search_namespace_dropdown_button"));
356 if (!toggle_button) 383 if (!toggle_button)
357 return; 384 return;
358 385
359 search_entry = GTK_ENTRY (gtk_builder_get_object (builder, "main_window_search_entry")); 386 search_entry =
387 GTK_ENTRY (gtk_builder_get_object (builder, "main_window_search_entry"));
360 if (!search_entry) 388 if (!search_entry)
361 return; 389 return;
362 390
363 if (!get_selected_namespace_treepath_iter_model_widget (builder, &treepath, NULL, &model, NULL)) 391 if (!get_selected_namespace_treepath_iter_model_widget
392 (builder, &treepath, NULL, &model, NULL))
364 return; 393 return;
365 ref = gtk_tree_row_reference_new (model, treepath); 394 ref = gtk_tree_row_reference_new (model, treepath);
366 old = g_object_get_data (G_OBJECT (toggle_button), "selected-row-reference"); 395 old = g_object_get_data (G_OBJECT (toggle_button), "selected-row-reference");
@@ -369,18 +398,20 @@ namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget,
369 g_object_set_data (G_OBJECT (toggle_button), "selected-row-reference", ref); 398 g_object_set_data (G_OBJECT (toggle_button), "selected-row-reference", ref);
370 399
371 400
372 sel_namespace_label = GTK_LABEL (gtk_builder_get_object (builder, "main_window_search_selected_namespace_label")); 401 sel_namespace_label =
402 GTK_LABEL (gtk_builder_get_object
403 (builder, "main_window_search_selected_namespace_label"));
373 if (!sel_namespace_label) 404 if (!sel_namespace_label)
374 return; 405 return;
375 406
376 if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 0, 407 if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 0, &value)
377 &value) && value != NULL) 408 && value != NULL)
378 { 409 {
379 gtk_label_set_text (sel_namespace_label, value); 410 gtk_label_set_text (sel_namespace_label, value);
380 g_free (value); 411 g_free (value);
381 } 412 }
382 if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 2, 413 if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 2, &value)
383 &value) && value != NULL) 414 && value != NULL)
384 { 415 {
385 gtk_entry_set_text (search_entry, value); 416 gtk_entry_set_text (search_entry, value);
386 g_free (value); 417 g_free (value);
@@ -393,7 +424,7 @@ namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget,
393} 424}
394 425
395GtkTreeRowReference * 426GtkTreeRowReference *
396get_ns_selected_row (GtkTreeView *tree) 427get_ns_selected_row (GtkTreeView * tree)
397{ 428{
398 GtkTreeSelection *sel; 429 GtkTreeSelection *sel;
399 GList *rows, *row; 430 GList *rows, *row;
@@ -414,8 +445,9 @@ get_ns_selected_row (GtkTreeView *tree)
414} 445}
415 446
416gboolean 447gboolean
417namespace_selector_treeview_button_press_event_cb (GtkWidget *widget, 448namespace_selector_treeview_button_press_event_cb (GtkWidget * widget,
418 GdkEvent *event, gpointer user_data) 449 GdkEvent * event,
450 gpointer user_data)
419{ 451{
420 GtkTreeRowReference *ref = NULL; 452 GtkTreeRowReference *ref = NULL;
421 453
@@ -423,6 +455,7 @@ namespace_selector_treeview_button_press_event_cb (GtkWidget *widget,
423 if (ref != NULL) 455 if (ref != NULL)
424 { 456 {
425 gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference"); 457 gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference");
458
426 if (old) 459 if (old)
427 gtk_tree_row_reference_free (old); 460 gtk_tree_row_reference_free (old);
428 g_object_set_data (G_OBJECT (widget), "pushed-rowreference", ref); 461 g_object_set_data (G_OBJECT (widget), "pushed-rowreference", ref);
@@ -431,8 +464,9 @@ namespace_selector_treeview_button_press_event_cb (GtkWidget *widget,
431} 464}
432 465
433gboolean 466gboolean
434namespace_selector_treeview_button_release_event_cb (GtkWidget *widget, 467namespace_selector_treeview_button_release_event_cb (GtkWidget * widget,
435 GdkEvent *event, gpointer user_data) 468 GdkEvent * event,
469 gpointer user_data)
436{ 470{
437 GtkTreeRowReference *ref = NULL; 471 GtkTreeRowReference *ref = NULL;
438 gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference"); 472 gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference");
@@ -441,6 +475,7 @@ namespace_selector_treeview_button_release_event_cb (GtkWidget *widget,
441 if (ref && old) 475 if (ref && old)
442 { 476 {
443 GtkTreePath *path_ref, *path_old; 477 GtkTreePath *path_ref, *path_old;
478
444 path_ref = gtk_tree_row_reference_get_path (ref); 479 path_ref = gtk_tree_row_reference_get_path (ref);
445 path_old = gtk_tree_row_reference_get_path (old); 480 path_old = gtk_tree_row_reference_get_path (old);
446 if (gtk_tree_path_compare (path_ref, path_old) == 0) 481 if (gtk_tree_path_compare (path_ref, path_old) == 0)
@@ -459,7 +494,7 @@ namespace_selector_treeview_button_release_event_cb (GtkWidget *widget,
459} 494}
460 495
461void 496void
462main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data) 497main_window_search_button_clicked_cb (GtkButton * button, gpointer user_data)
463{ 498{
464 GtkBuilder *builder; 499 GtkBuilder *builder;
465 GtkTreePath *namespace_treepath = NULL; 500 GtkTreePath *namespace_treepath = NULL;
@@ -481,19 +516,22 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data)
481 516
482 builder = GTK_BUILDER (user_data); 517 builder = GTK_BUILDER (user_data);
483 518
484 toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 519 toggle_button =
485 "main_window_search_namespace_dropdown_button")); 520 GTK_TOGGLE_BUTTON (gtk_builder_get_object
521 (builder,
522 "main_window_search_namespace_dropdown_button"));
486 523
487 if (!GNUNET_GTK_get_selected_anonymity_level (builder, 524 if (!GNUNET_GTK_get_selected_anonymity_level
488 "main_window_search_anonymity_combobox", &anonymity_level)) 525 (builder, "main_window_search_anonymity_combobox", &anonymity_level))
489 return; 526 return;
490 527
491 mime_combo = GTK_COMBO_BOX (GNUNET_FS_GTK_get_main_window_object 528 mime_combo =
492 ("main_window_search_mime_combobox")); 529 GTK_COMBO_BOX (GNUNET_FS_GTK_get_main_window_object
530 ("main_window_search_mime_combobox"));
493 mime_model = gtk_combo_box_get_model (mime_combo); 531 mime_model = gtk_combo_box_get_model (mime_combo);
494 mime_keyword = NULL; 532 mime_keyword = NULL;
495 if (mime_model && gtk_combo_box_get_active_iter (mime_combo, &iter)) 533 if (mime_model && gtk_combo_box_get_active_iter (mime_combo, &iter))
496 gtk_tree_model_get (mime_model, &iter, 0, &mime_keyword, -1); 534 gtk_tree_model_get (mime_model, &iter, 0, &mime_keyword, -1);
497 if (strcmp (mime_keyword, " ") == 0) 535 if (strcmp (mime_keyword, " ") == 0)
498 { 536 {
499 g_free (mime_keyword); 537 g_free (mime_keyword);
@@ -505,14 +543,17 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data)
505 { 543 {
506 namespace_model = gtk_tree_row_reference_get_model (ref); 544 namespace_model = gtk_tree_row_reference_get_model (ref);
507 namespace_treepath = gtk_tree_row_reference_get_path (ref); 545 namespace_treepath = gtk_tree_row_reference_get_path (ref);
508 if ( (NULL != namespace_treepath) && 546 if ((NULL != namespace_treepath) &&
509 (TRUE == gtk_tree_model_get_iter (namespace_model, &iter, namespace_treepath)) ) 547 (TRUE ==
548 gtk_tree_model_get_iter (namespace_model, &iter, namespace_treepath)))
510 gtk_tree_model_get (namespace_model, &iter, 1, &nsid, -1); 549 gtk_tree_model_get (namespace_model, &iter, 1, &nsid, -1);
511 } 550 }
512 query_entry = GTK_ENTRY (gtk_builder_get_object (builder, 551 query_entry =
513 "main_window_search_entry")); 552 GTK_ENTRY (gtk_builder_get_object (builder, "main_window_search_entry"));
514 entry_keywords = gtk_entry_get_text (query_entry); 553 entry_keywords = gtk_entry_get_text (query_entry);
515 keywords = g_strdup_printf ("%s %s%s", entry_keywords, mime_keyword ? "+" : "", mime_keyword ? mime_keyword : ""); 554 keywords =
555 g_strdup_printf ("%s %s%s", entry_keywords, mime_keyword ? "+" : "",
556 mime_keyword ? mime_keyword : "");
516 g_free (mime_keyword); 557 g_free (mime_keyword);
517 if (nsid != NULL) 558 if (nsid != NULL)
518 { 559 {
@@ -525,14 +566,14 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data)
525 uri = GNUNET_FS_uri_ksk_create (keywords, &emsg); 566 uri = GNUNET_FS_uri_ksk_create (keywords, &emsg);
526 if (uri == NULL) 567 if (uri == NULL)
527 { 568 {
528 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 569 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Invalid keyword string `%s': %s"),
529 _("Invalid keyword string `%s': %s"), keywords, emsg); 570 keywords, emsg);
530 GNUNET_free_non_null (emsg); 571 GNUNET_free_non_null (emsg);
531 return; 572 return;
532 } 573 }
533 } 574 }
534 GNUNET_FS_search_start (GNUNET_FS_GTK_get_fs_handle (), uri, 575 GNUNET_FS_search_start (GNUNET_FS_GTK_get_fs_handle (), uri, anonymity_level,
535 anonymity_level, GNUNET_FS_SEARCH_OPTION_NONE, NULL); 576 GNUNET_FS_SEARCH_OPTION_NONE, NULL);
536 577
537 g_free (keywords); 578 g_free (keywords);
538 GNUNET_FS_uri_destroy (uri); 579 GNUNET_FS_uri_destroy (uri);
@@ -540,16 +581,19 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data)
540 581
541 582
542gboolean 583gboolean
543main_window_search_entry_key_press_event_cb (GtkWidget *widget, 584main_window_search_entry_key_press_event_cb (GtkWidget * widget,
544 GdkEventKey *event, gpointer user_data) 585 GdkEventKey * event,
586 gpointer user_data)
545{ 587{
546 GtkBuilder *builder; 588 GtkBuilder *builder;
589
547 builder = GTK_BUILDER (user_data); 590 builder = GTK_BUILDER (user_data);
548 591
549 if (event->keyval == GDK_KEY_Return) 592 if (event->keyval == GDK_KEY_Return)
550 { 593 {
551 GtkWidget *find = GTK_WIDGET (gtk_builder_get_object (builder, 594 GtkWidget *find = GTK_WIDGET (gtk_builder_get_object (builder,
552 "main_window_search_button")); 595 "main_window_search_button"));
596
553 main_window_search_button_clicked_cb (GTK_BUTTON (find), user_data); 597 main_window_search_button_clicked_cb (GTK_BUTTON (find), user_data);
554 return TRUE; 598 return TRUE;
555 } 599 }
@@ -567,7 +611,7 @@ main_window_search_entry_key_press_event_cb (GtkWidget *widget,
567 */ 611 */
568static int 612static int
569add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym, 613add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym,
570 const struct GNUNET_CONTAINER_MetaData *md, int rating) 614 const struct GNUNET_CONTAINER_MetaData *md, int rating)
571{ 615{
572 GtkTreeStore *ts = cls; 616 GtkTreeStore *ts = cls;
573 char *root; 617 char *root;
@@ -611,7 +655,10 @@ add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym,
611 else 655 else
612 { 656 {
613 char *utf8_desc = NULL; 657 char *utf8_desc = NULL;
614 utf8_desc = GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, description, strlen (description)); 658
659 utf8_desc =
660 GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8,
661 description, strlen (description));
615 GNUNET_free (description); 662 GNUNET_free (description);
616 if (utf8_desc != NULL) 663 if (utf8_desc != NULL)
617 description = utf8_desc; 664 description = utf8_desc;
@@ -619,7 +666,7 @@ add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym,
619 description = NULL; 666 description = NULL;
620 } 667 }
621 gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, ns_name, 1, 668 gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, ns_name, 1,
622 nsid, 2, root, 3, description, -1); 669 nsid, 2, root, 3, description, -1);
623 GNUNET_free (ns_name); 670 GNUNET_free (ns_name);
624 GNUNET_free_non_null (root); 671 GNUNET_free_non_null (root);
625 GNUNET_free_non_null (description); 672 GNUNET_free_non_null (description);
@@ -627,7 +674,7 @@ add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym,
627} 674}
628 675
629void 676void
630GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data) 677GNUNET_GTK_main_window_realize_cb (GtkWidget * widget, gpointer user_data)
631{ 678{
632 GtkTreeIter iter; 679 GtkTreeIter iter;
633 GtkTreeView *namespace_tree; 680 GtkTreeView *namespace_tree;
@@ -638,15 +685,19 @@ GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data)
638 685
639 builder = GTK_BUILDER (user_data); 686 builder = GTK_BUILDER (user_data);
640 687
641 namespace_treestore = GTK_TREE_STORE (GNUNET_FS_GTK_get_main_window_object 688 namespace_treestore =
642 ("main_window_search_namespace_treestore")); 689 GTK_TREE_STORE (GNUNET_FS_GTK_get_main_window_object
643 namespace_tree = GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object 690 ("main_window_search_namespace_treestore"));
644 ("namespace_selector_treeview")); 691 namespace_tree =
645 metadata_tree = GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object 692 GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object
646 ("GNUNET_GTK_main_window_metadata_treeview")); 693 ("namespace_selector_treeview"));
694 metadata_tree =
695 GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object
696 ("GNUNET_GTK_main_window_metadata_treeview"));
647 697
648 /* Allow multiple selection in metadata view */ 698 /* Allow multiple selection in metadata view */
649 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (metadata_tree), GTK_SELECTION_MULTIPLE); 699 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (metadata_tree),
700 GTK_SELECTION_MULTIPLE);
650 701
651 /* FIXME: find a way to manage pseudonyms. 702 /* FIXME: find a way to manage pseudonyms.
652 * Right now the list will be filled with ALL and ANY pseudonyms that we 703 * Right now the list will be filled with ALL and ANY pseudonyms that we
@@ -657,33 +708,40 @@ GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data)
657 * drag them around to change the order in which they appear in the list. 708 * drag them around to change the order in which they appear in the list.
658 * All that is not possible with a simple "files in a directory" concept. 709 * All that is not possible with a simple "files in a directory" concept.
659 */ 710 */
660 gtk_tree_store_insert_with_values (namespace_treestore, &iter, NULL, 711 gtk_tree_store_insert_with_values (namespace_treestore, &iter, NULL, G_MAXINT,
661 G_MAXINT, 0, "Any", 1, NULL, 2, "", 3, 712 0, "Any", 1, NULL, 2, "", 3,
662 "Do not search in any particular namespace", -1); 713 "Do not search in any particular namespace",
714 -1);
663 /* 715 /*
664 GNUNET_PSEUDONYM_list_all (GNUNET_FS_GTK_get_configuration (), 716 * GNUNET_PSEUDONYM_list_all (GNUNET_FS_GTK_get_configuration (),
665 &add_namespace_to_ts, namespace_treestore); 717 * &add_namespace_to_ts, namespace_treestore);
666 */ 718 */
667 GNUNET_PSEUDONYM_discovery_callback_register ( 719 GNUNET_PSEUDONYM_discovery_callback_register (GNUNET_FS_GTK_get_configuration
668 GNUNET_FS_GTK_get_configuration (), 720 (), &add_namespace_to_ts,
669 &add_namespace_to_ts, namespace_treestore); 721 namespace_treestore);
670 722
671 /* FIXME: read currently selected namespace from somewhere instead of selecting 0th item */ 723 /* FIXME: read currently selected namespace from somewhere instead of selecting 0th item */
672 if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (namespace_treestore), &iter)) 724 if (gtk_tree_model_get_iter_first
725 (GTK_TREE_MODEL (namespace_treestore), &iter))
673 { 726 {
674 gchar *value; 727 gchar *value;
675 GtkLabel *sel_namespace_label; 728 GtkLabel *sel_namespace_label;
676 GtkTreePath *treepath = gtk_tree_path_new_first (); 729 GtkTreePath *treepath = gtk_tree_path_new_first ();
677 gtk_tree_selection_select_iter (gtk_tree_view_get_selection ( 730
678 namespace_tree), &iter); 731 gtk_tree_selection_select_iter (gtk_tree_view_get_selection
679 sel_namespace_label = GTK_LABEL (gtk_builder_get_object (builder, "main_window_search_selected_namespace_label")); 732 (namespace_tree), &iter);
733 sel_namespace_label =
734 GTK_LABEL (gtk_builder_get_object
735 (builder, "main_window_search_selected_namespace_label"));
680 if (GNUNET_GTK_get_tree_string (namespace_tree, treepath, 0, &value)) 736 if (GNUNET_GTK_get_tree_string (namespace_tree, treepath, 0, &value))
681 gtk_label_set_text (sel_namespace_label, value); 737 gtk_label_set_text (sel_namespace_label, value);
682 gtk_tree_path_free (treepath); 738 gtk_tree_path_free (treepath);
683 } 739 }
684 740
685 /* How the window (to trigger certain events) and immediately hide it */ 741 /* How the window (to trigger certain events) and immediately hide it */
686 namespace_selector_window = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_window")); 742 namespace_selector_window =
743 GTK_WIDGET (gtk_builder_get_object
744 (builder, "namespace_selector_window"));
687 gtk_widget_show (namespace_selector_window); 745 gtk_widget_show (namespace_selector_window);
688 gtk_widget_hide (namespace_selector_window); 746 gtk_widget_hide (namespace_selector_window);
689 747
@@ -714,10 +772,8 @@ run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
714 772
715 /* initialize file-sharing */ 773 /* initialize file-sharing */
716 plugins = EXTRACTOR_plugin_add_defaults (EXTRACTOR_OPTION_DEFAULT_POLICY); 774 plugins = EXTRACTOR_plugin_add_defaults (EXTRACTOR_OPTION_DEFAULT_POLICY);
717 fs = GNUNET_FS_start (GNUNET_GTK_main_loop_get_configuration (ml), 775 fs = GNUNET_FS_start (GNUNET_GTK_main_loop_get_configuration (ml), "gnunet-gtk", &GNUNET_GTK_fs_event_handler, NULL, GNUNET_FS_FLAGS_NONE /* | GNUNET_FS_FLAGS_PERSISTENCE |
718 "gnunet-gtk", &GNUNET_GTK_fs_event_handler, NULL, 776 * GNUNET_FS_FLAGS_DO_PROBES */ ,
719 GNUNET_FS_FLAGS_NONE /* | GNUNET_FS_FLAGS_PERSISTENCE |
720 GNUNET_FS_FLAGS_DO_PROBES*/,
721 GNUNET_FS_OPTIONS_END); 777 GNUNET_FS_OPTIONS_END);
722 if (fs != NULL) 778 if (fs != NULL)
723 { 779 {
diff --git a/src/fs/gnunet-fs-gtk.h b/src/fs/gnunet-fs-gtk.h
index 114be040..1eead2ab 100644
--- a/src/fs/gnunet-fs-gtk.h
+++ b/src/fs/gnunet-fs-gtk.h
@@ -72,8 +72,8 @@ GNUNET_FS_GTK_get_main_window_object (const char *name);
72 * @return TRUE on success, FALSE on error 72 * @return TRUE on success, FALSE on error
73 */ 73 */
74gboolean 74gboolean
75GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, 75GNUNET_GTK_get_selected_anonymity_level (GtkBuilder * builder,
76 gchar *combo_name, guint *p_level); 76 gchar * combo_name, guint * p_level);
77 77
78 78
79/** 79/**
@@ -86,8 +86,8 @@ GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder,
86 * @return TRUE on success, FALSE on error (no item with such level) 86 * @return TRUE on success, FALSE on error (no item with such level)
87 */ 87 */
88gboolean 88gboolean
89GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, 89GNUNET_GTK_select_anonymity_level (GtkBuilder * builder, gchar * combo_name,
90 gchar *combo_name, guint sel_level); 90 guint sel_level);
91 91
92#endif 92#endif
93/* end of gnunet-fs-gtk.h */ 93/* end of gnunet-fs-gtk.h */
diff --git a/src/fs/metatypes.c b/src/fs/metatypes.c
index 2acc0e57..a7fe0655 100644
--- a/src/fs/metatypes.c
+++ b/src/fs/metatypes.c
@@ -1,1187 +1,959 @@
1 1 gint types_generic[3 + 26 + 7 + 8 + 11 + 10 + 3 + 26 + 17 + 5 + 11 + 45 + 8 +
2gint types_generic[3 + 26 + 7 + 8 + 11 + 10 + 3 + 26 + 17 + 5 + 11 + 45 + 8 + 1] = 2 1] =
3{ /* Generic */ 3{ /* Generic */
4 EXTRACTOR_METATYPE_MIMETYPE, 4EXTRACTOR_METATYPE_MIMETYPE, EXTRACTOR_METATYPE_FILENAME,
5 EXTRACTOR_METATYPE_FILENAME, 5 EXTRACTOR_METATYPE_COMMENT, EXTRACTOR_METATYPE_TITLE,
6 EXTRACTOR_METATYPE_COMMENT, 6 EXTRACTOR_METATYPE_BOOK_TITLE, EXTRACTOR_METATYPE_BOOK_EDITION,
7 7 EXTRACTOR_METATYPE_BOOK_CHAPTER_NUMBER,
8 EXTRACTOR_METATYPE_TITLE, 8 EXTRACTOR_METATYPE_JOURNAL_NAME, EXTRACTOR_METATYPE_JOURNAL_VOLUME,
9 EXTRACTOR_METATYPE_BOOK_TITLE, 9 EXTRACTOR_METATYPE_JOURNAL_NUMBER, EXTRACTOR_METATYPE_PAGE_COUNT,
10 EXTRACTOR_METATYPE_BOOK_EDITION, 10 EXTRACTOR_METATYPE_PAGE_RANGE, EXTRACTOR_METATYPE_AUTHOR_NAME,
11 EXTRACTOR_METATYPE_BOOK_CHAPTER_NUMBER, 11 EXTRACTOR_METATYPE_AUTHOR_EMAIL,
12 EXTRACTOR_METATYPE_JOURNAL_NAME, 12 EXTRACTOR_METATYPE_AUTHOR_INSTITUTION, EXTRACTOR_METATYPE_PUBLISHER,
13 EXTRACTOR_METATYPE_JOURNAL_VOLUME, 13 EXTRACTOR_METATYPE_PUBLISHER_ADDRESS,
14 EXTRACTOR_METATYPE_JOURNAL_NUMBER, 14 EXTRACTOR_METATYPE_PUBLISHER_INSTITUTION,
15 EXTRACTOR_METATYPE_PAGE_COUNT, 15 EXTRACTOR_METATYPE_PUBLISHER_SERIES,
16 EXTRACTOR_METATYPE_PAGE_RANGE, 16 EXTRACTOR_METATYPE_PUBLICATION_TYPE,
17 EXTRACTOR_METATYPE_AUTHOR_NAME, 17 EXTRACTOR_METATYPE_PUBLICATION_YEAR,
18 EXTRACTOR_METATYPE_AUTHOR_EMAIL, 18 EXTRACTOR_METATYPE_PUBLICATION_MONTH,
19 EXTRACTOR_METATYPE_AUTHOR_INSTITUTION, 19 EXTRACTOR_METATYPE_PUBLICATION_DAY,
20 EXTRACTOR_METATYPE_PUBLISHER, 20 EXTRACTOR_METATYPE_PUBLICATION_DATE, EXTRACTOR_METATYPE_BIBTEX_EPRINT,
21 EXTRACTOR_METATYPE_PUBLISHER_ADDRESS, 21 EXTRACTOR_METATYPE_BIBTEX_ENTRY_TYPE, EXTRACTOR_METATYPE_LANGUAGE,
22 EXTRACTOR_METATYPE_PUBLISHER_INSTITUTION, 22 EXTRACTOR_METATYPE_CREATION_TIME, EXTRACTOR_METATYPE_URL,
23 EXTRACTOR_METATYPE_PUBLISHER_SERIES, 23 EXTRACTOR_METATYPE_URI, EXTRACTOR_METATYPE_ISRC,
24 EXTRACTOR_METATYPE_PUBLICATION_TYPE, 24 EXTRACTOR_METATYPE_HASH_MD4, EXTRACTOR_METATYPE_HASH_MD5,
25 EXTRACTOR_METATYPE_PUBLICATION_YEAR, 25 EXTRACTOR_METATYPE_HASH_SHA0, EXTRACTOR_METATYPE_HASH_SHA1,
26 EXTRACTOR_METATYPE_PUBLICATION_MONTH, 26 EXTRACTOR_METATYPE_HASH_RMD160, EXTRACTOR_METATYPE_GPS_LATITUDE_REF,
27 EXTRACTOR_METATYPE_PUBLICATION_DAY, 27 EXTRACTOR_METATYPE_GPS_LATITUDE, EXTRACTOR_METATYPE_GPS_LONGITUDE_REF,
28 EXTRACTOR_METATYPE_PUBLICATION_DATE, 28 EXTRACTOR_METATYPE_GPS_LONGITUDE, EXTRACTOR_METATYPE_LOCATION_CITY,
29 EXTRACTOR_METATYPE_BIBTEX_EPRINT, 29 EXTRACTOR_METATYPE_LOCATION_SUBLOCATION,
30 EXTRACTOR_METATYPE_BIBTEX_ENTRY_TYPE, 30 EXTRACTOR_METATYPE_LOCATION_COUNTRY,
31 EXTRACTOR_METATYPE_LANGUAGE, 31 EXTRACTOR_METATYPE_LOCATION_COUNTRY_CODE,
32 EXTRACTOR_METATYPE_CREATION_TIME, 32 EXTRACTOR_METATYPE_UNKNOWN, EXTRACTOR_METATYPE_DESCRIPTION,
33 EXTRACTOR_METATYPE_URL, 33 EXTRACTOR_METATYPE_COPYRIGHT, EXTRACTOR_METATYPE_RIGHTS,
34 34 EXTRACTOR_METATYPE_KEYWORDS, EXTRACTOR_METATYPE_ABSTRACT,
35 EXTRACTOR_METATYPE_URI, 35 EXTRACTOR_METATYPE_SUMMARY, EXTRACTOR_METATYPE_SUBJECT,
36 EXTRACTOR_METATYPE_ISRC, 36 EXTRACTOR_METATYPE_CREATOR, EXTRACTOR_METATYPE_FORMAT,
37 EXTRACTOR_METATYPE_HASH_MD4, 37 EXTRACTOR_METATYPE_FORMAT_VERSION,
38 EXTRACTOR_METATYPE_HASH_MD5, 38 EXTRACTOR_METATYPE_CREATED_BY_SOFTWARE,
39 EXTRACTOR_METATYPE_HASH_SHA0, 39 EXTRACTOR_METATYPE_UNKNOWN_DATE, EXTRACTOR_METATYPE_CREATION_DATE,
40 EXTRACTOR_METATYPE_HASH_SHA1, 40 EXTRACTOR_METATYPE_MODIFICATION_DATE, EXTRACTOR_METATYPE_LAST_PRINTED,
41 EXTRACTOR_METATYPE_HASH_RMD160, 41 EXTRACTOR_METATYPE_LAST_SAVED_BY,
42 42 EXTRACTOR_METATYPE_TOTAL_EDITING_TIME,
43 EXTRACTOR_METATYPE_GPS_LATITUDE_REF, 43 EXTRACTOR_METATYPE_EDITING_CYCLES,
44 EXTRACTOR_METATYPE_GPS_LATITUDE, 44 EXTRACTOR_METATYPE_MODIFIED_BY_SOFTWARE,
45 EXTRACTOR_METATYPE_GPS_LONGITUDE_REF, 45 EXTRACTOR_METATYPE_REVISION_HISTORY,
46 EXTRACTOR_METATYPE_GPS_LONGITUDE, 46 EXTRACTOR_METATYPE_EMBEDDED_FILE_SIZE,
47 EXTRACTOR_METATYPE_LOCATION_CITY, 47 EXTRACTOR_METATYPE_FINDER_FILE_TYPE,
48 EXTRACTOR_METATYPE_LOCATION_SUBLOCATION, 48 EXTRACTOR_METATYPE_FINDER_FILE_CREATOR,
49 EXTRACTOR_METATYPE_LOCATION_COUNTRY, 49 EXTRACTOR_METATYPE_PACKAGE_NAME, EXTRACTOR_METATYPE_PACKAGE_VERSION,
50 EXTRACTOR_METATYPE_LOCATION_COUNTRY_CODE, 50 EXTRACTOR_METATYPE_SECTION, EXTRACTOR_METATYPE_UPLOAD_PRIORITY,
51 51 EXTRACTOR_METATYPE_PACKAGE_DEPENDENCY,
52 EXTRACTOR_METATYPE_UNKNOWN, 52 EXTRACTOR_METATYPE_PACKAGE_CONFLICTS,
53 EXTRACTOR_METATYPE_DESCRIPTION, 53 EXTRACTOR_METATYPE_PACKAGE_REPLACES,
54 EXTRACTOR_METATYPE_COPYRIGHT, 54 EXTRACTOR_METATYPE_PACKAGE_PROVIDES,
55 EXTRACTOR_METATYPE_RIGHTS, 55 EXTRACTOR_METATYPE_PACKAGE_RECOMMENDS,
56 EXTRACTOR_METATYPE_KEYWORDS, 56 EXTRACTOR_METATYPE_PACKAGE_SUGGESTS,
57 EXTRACTOR_METATYPE_ABSTRACT, 57 EXTRACTOR_METATYPE_PACKAGE_MAINTAINER,
58 EXTRACTOR_METATYPE_SUMMARY, 58 EXTRACTOR_METATYPE_PACKAGE_INSTALLED_SIZE,
59 EXTRACTOR_METATYPE_SUBJECT, 59 EXTRACTOR_METATYPE_PACKAGE_SOURCE,
60 EXTRACTOR_METATYPE_CREATOR, 60 EXTRACTOR_METATYPE_PACKAGE_ESSENTIAL,
61 EXTRACTOR_METATYPE_FORMAT, 61 EXTRACTOR_METATYPE_TARGET_ARCHITECTURE,
62 EXTRACTOR_METATYPE_FORMAT_VERSION, 62 EXTRACTOR_METATYPE_PACKAGE_PRE_DEPENDENCY, EXTRACTOR_METATYPE_LICENSE,
63 63 EXTRACTOR_METATYPE_PACKAGE_DISTRIBUTION, EXTRACTOR_METATYPE_BUILDHOST,
64 EXTRACTOR_METATYPE_CREATED_BY_SOFTWARE, 64 EXTRACTOR_METATYPE_VENDOR, EXTRACTOR_METATYPE_TARGET_OS,
65 EXTRACTOR_METATYPE_UNKNOWN_DATE, 65 EXTRACTOR_METATYPE_SOFTWARE_VERSION,
66 EXTRACTOR_METATYPE_CREATION_DATE, 66 EXTRACTOR_METATYPE_TARGET_PLATFORM, EXTRACTOR_METATYPE_RESOURCE_TYPE,
67 EXTRACTOR_METATYPE_MODIFICATION_DATE, 67 EXTRACTOR_METATYPE_LIBRARY_SEARCH_PATH,
68 EXTRACTOR_METATYPE_LAST_PRINTED, 68 EXTRACTOR_METATYPE_LIBRARY_DEPENDENCY,
69 EXTRACTOR_METATYPE_LAST_SAVED_BY, 69 EXTRACTOR_METATYPE_CAMERA_MAKE, EXTRACTOR_METATYPE_CAMERA_MODEL,
70 EXTRACTOR_METATYPE_TOTAL_EDITING_TIME, 70 EXTRACTOR_METATYPE_EXPOSURE, EXTRACTOR_METATYPE_APERTURE,
71 EXTRACTOR_METATYPE_EDITING_CYCLES, 71 EXTRACTOR_METATYPE_EXPOSURE_BIAS, EXTRACTOR_METATYPE_FLASH,
72 EXTRACTOR_METATYPE_MODIFIED_BY_SOFTWARE, 72 EXTRACTOR_METATYPE_FLASH_BIAS, EXTRACTOR_METATYPE_FOCAL_LENGTH,
73 EXTRACTOR_METATYPE_REVISION_HISTORY, 73 EXTRACTOR_METATYPE_FOCAL_LENGTH_35MM, EXTRACTOR_METATYPE_ISO_SPEED,
74 74 EXTRACTOR_METATYPE_EXPOSURE_MODE, EXTRACTOR_METATYPE_METERING_MODE,
75 EXTRACTOR_METATYPE_EMBEDDED_FILE_SIZE, 75 EXTRACTOR_METATYPE_MACRO_MODE, EXTRACTOR_METATYPE_IMAGE_QUALITY,
76 EXTRACTOR_METATYPE_FINDER_FILE_TYPE, 76 EXTRACTOR_METATYPE_WHITE_BALANCE, EXTRACTOR_METATYPE_ORIENTATION,
77 EXTRACTOR_METATYPE_FINDER_FILE_CREATOR, 77 EXTRACTOR_METATYPE_MAGNIFICATION,
78 78 EXTRACTOR_METATYPE_IMAGE_DIMENSIONS,
79 EXTRACTOR_METATYPE_PACKAGE_NAME, 79 EXTRACTOR_METATYPE_PRODUCED_BY_SOFTWARE, EXTRACTOR_METATYPE_THUMBNAIL,
80 EXTRACTOR_METATYPE_PACKAGE_VERSION, 80 EXTRACTOR_METATYPE_IMAGE_RESOLUTION, EXTRACTOR_METATYPE_SOURCE,
81 EXTRACTOR_METATYPE_SECTION, 81 EXTRACTOR_METATYPE_CHARACTER_SET, EXTRACTOR_METATYPE_LINE_COUNT,
82 EXTRACTOR_METATYPE_UPLOAD_PRIORITY, 82 EXTRACTOR_METATYPE_PARAGRAPH_COUNT, EXTRACTOR_METATYPE_WORD_COUNT,
83 EXTRACTOR_METATYPE_PACKAGE_DEPENDENCY, 83 EXTRACTOR_METATYPE_CHARACTER_COUNT,
84 EXTRACTOR_METATYPE_PACKAGE_CONFLICTS, 84 EXTRACTOR_METATYPE_PAGE_ORIENTATION, EXTRACTOR_METATYPE_PAPER_SIZE,
85 EXTRACTOR_METATYPE_PACKAGE_REPLACES, 85 EXTRACTOR_METATYPE_TEMPLATE, EXTRACTOR_METATYPE_COMPANY,
86 EXTRACTOR_METATYPE_PACKAGE_PROVIDES, 86 EXTRACTOR_METATYPE_MANAGER, EXTRACTOR_METATYPE_REVISION_NUMBER,
87 EXTRACTOR_METATYPE_PACKAGE_RECOMMENDS, 87 EXTRACTOR_METATYPE_DURATION, EXTRACTOR_METATYPE_ALBUM,
88 EXTRACTOR_METATYPE_PACKAGE_SUGGESTS, 88 EXTRACTOR_METATYPE_ARTIST, EXTRACTOR_METATYPE_GENRE,
89 EXTRACTOR_METATYPE_PACKAGE_MAINTAINER, 89 EXTRACTOR_METATYPE_TRACK_NUMBER, EXTRACTOR_METATYPE_DISC_NUMBER,
90 EXTRACTOR_METATYPE_PACKAGE_INSTALLED_SIZE, 90 EXTRACTOR_METATYPE_PERFORMER, EXTRACTOR_METATYPE_CONTACT_INFORMATION,
91 EXTRACTOR_METATYPE_PACKAGE_SOURCE, 91 EXTRACTOR_METATYPE_SONG_VERSION, EXTRACTOR_METATYPE_PICTURE,
92 EXTRACTOR_METATYPE_PACKAGE_ESSENTIAL, 92 EXTRACTOR_METATYPE_COVER_PICTURE,
93 EXTRACTOR_METATYPE_TARGET_ARCHITECTURE, 93 EXTRACTOR_METATYPE_CONTRIBUTOR_PICTURE,
94 EXTRACTOR_METATYPE_PACKAGE_PRE_DEPENDENCY, 94 EXTRACTOR_METATYPE_EVENT_PICTURE, EXTRACTOR_METATYPE_LOGO,
95 EXTRACTOR_METATYPE_LICENSE, 95 EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM,
96 EXTRACTOR_METATYPE_PACKAGE_DISTRIBUTION, 96 EXTRACTOR_METATYPE_SOURCE_DEVICE, EXTRACTOR_METATYPE_DISCLAIMER,
97 EXTRACTOR_METATYPE_BUILDHOST, 97 EXTRACTOR_METATYPE_WARNING, EXTRACTOR_METATYPE_PAGE_ORDER,
98 EXTRACTOR_METATYPE_VENDOR, 98 EXTRACTOR_METATYPE_WRITER, EXTRACTOR_METATYPE_PRODUCT_VERSION,
99 EXTRACTOR_METATYPE_TARGET_OS, 99 EXTRACTOR_METATYPE_CONTRIBUTOR_NAME,
100 EXTRACTOR_METATYPE_SOFTWARE_VERSION, 100 EXTRACTOR_METATYPE_MOVIE_DIRECTOR, EXTRACTOR_METATYPE_NETWORK_NAME,
101 EXTRACTOR_METATYPE_TARGET_PLATFORM, 101 EXTRACTOR_METATYPE_SHOW_NAME, EXTRACTOR_METATYPE_CHAPTER_NAME,
102 EXTRACTOR_METATYPE_RESOURCE_TYPE, 102 EXTRACTOR_METATYPE_SONG_COUNT, EXTRACTOR_METATYPE_STARTING_SONG,
103 EXTRACTOR_METATYPE_LIBRARY_SEARCH_PATH, 103 EXTRACTOR_METATYPE_PLAY_COUNTER, EXTRACTOR_METATYPE_CONDUCTOR,
104 EXTRACTOR_METATYPE_LIBRARY_DEPENDENCY, 104 EXTRACTOR_METATYPE_INTERPRETATION, EXTRACTOR_METATYPE_COMPOSER,
105 105 EXTRACTOR_METATYPE_BEATS_PER_MINUTE, EXTRACTOR_METATYPE_ENCODED_BY,
106 EXTRACTOR_METATYPE_CAMERA_MAKE, 106 EXTRACTOR_METATYPE_ORIGINAL_TITLE, EXTRACTOR_METATYPE_ORIGINAL_ARTIST,
107 EXTRACTOR_METATYPE_CAMERA_MODEL, 107 EXTRACTOR_METATYPE_ORIGINAL_WRITER,
108 EXTRACTOR_METATYPE_EXPOSURE, 108 EXTRACTOR_METATYPE_ORIGINAL_RELEASE_YEAR,
109 EXTRACTOR_METATYPE_APERTURE, 109 EXTRACTOR_METATYPE_ORIGINAL_PERFORMER, EXTRACTOR_METATYPE_LYRICS,
110 EXTRACTOR_METATYPE_EXPOSURE_BIAS, 110 EXTRACTOR_METATYPE_POPULARITY_METER, EXTRACTOR_METATYPE_LICENSEE,
111 EXTRACTOR_METATYPE_FLASH, 111 EXTRACTOR_METATYPE_MUSICIAN_CREDITS_LIST, EXTRACTOR_METATYPE_MOOD,
112 EXTRACTOR_METATYPE_FLASH_BIAS, 112 EXTRACTOR_METATYPE_SUBTITLE, EXTRACTOR_METATYPE_GNUNET_DISPLAY_TYPE,
113 EXTRACTOR_METATYPE_FOCAL_LENGTH, 113 EXTRACTOR_METATYPE_GNUNET_FULL_DATA, EXTRACTOR_METATYPE_RATING,
114 EXTRACTOR_METATYPE_FOCAL_LENGTH_35MM, 114 EXTRACTOR_METATYPE_ORGANIZATION, EXTRACTOR_METATYPE_RIPPER,
115 EXTRACTOR_METATYPE_ISO_SPEED, 115 EXTRACTOR_METATYPE_PRODUCER, EXTRACTOR_METATYPE_GROUP,
116 EXTRACTOR_METATYPE_EXPOSURE_MODE, 116 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME,
117 EXTRACTOR_METATYPE_METERING_MODE, 117 EXTRACTOR_METATYPE_RESERVED };
118 EXTRACTOR_METATYPE_MACRO_MODE, 118gint types_text[3 + 26 + 7 /*+ 8 */ + 11 + 10 + 3 /*+ 26 + 17 + 5 */ +
119 EXTRACTOR_METATYPE_IMAGE_QUALITY, 119 11 /*+ 45 */ + 8 + 1] =
120 EXTRACTOR_METATYPE_WHITE_BALANCE, 120{ /* Text */
121 EXTRACTOR_METATYPE_ORIENTATION, 121 EXTRACTOR_METATYPE_MIMETYPE, EXTRACTOR_METATYPE_FILENAME,
122 EXTRACTOR_METATYPE_MAGNIFICATION, 122 EXTRACTOR_METATYPE_COMMENT, EXTRACTOR_METATYPE_TITLE,
123 123 EXTRACTOR_METATYPE_BOOK_TITLE, EXTRACTOR_METATYPE_BOOK_EDITION,
124 EXTRACTOR_METATYPE_IMAGE_DIMENSIONS, 124 EXTRACTOR_METATYPE_BOOK_CHAPTER_NUMBER, EXTRACTOR_METATYPE_JOURNAL_NAME,
125 EXTRACTOR_METATYPE_PRODUCED_BY_SOFTWARE, 125 EXTRACTOR_METATYPE_JOURNAL_VOLUME, EXTRACTOR_METATYPE_JOURNAL_NUMBER,
126 EXTRACTOR_METATYPE_THUMBNAIL, 126 EXTRACTOR_METATYPE_PAGE_COUNT, EXTRACTOR_METATYPE_PAGE_RANGE,
127 EXTRACTOR_METATYPE_IMAGE_RESOLUTION, 127 EXTRACTOR_METATYPE_AUTHOR_NAME, EXTRACTOR_METATYPE_AUTHOR_EMAIL,
128 EXTRACTOR_METATYPE_SOURCE, 128 EXTRACTOR_METATYPE_AUTHOR_INSTITUTION, EXTRACTOR_METATYPE_PUBLISHER,
129 129 EXTRACTOR_METATYPE_PUBLISHER_ADDRESS,
130 EXTRACTOR_METATYPE_CHARACTER_SET, 130 EXTRACTOR_METATYPE_PUBLISHER_INSTITUTION,
131 EXTRACTOR_METATYPE_LINE_COUNT, 131 EXTRACTOR_METATYPE_PUBLISHER_SERIES,
132 EXTRACTOR_METATYPE_PARAGRAPH_COUNT, 132 EXTRACTOR_METATYPE_PUBLICATION_TYPE,
133 EXTRACTOR_METATYPE_WORD_COUNT, 133 EXTRACTOR_METATYPE_PUBLICATION_YEAR,
134 EXTRACTOR_METATYPE_CHARACTER_COUNT, 134 EXTRACTOR_METATYPE_PUBLICATION_MONTH,
135 EXTRACTOR_METATYPE_PAGE_ORIENTATION, 135 EXTRACTOR_METATYPE_PUBLICATION_DAY, EXTRACTOR_METATYPE_PUBLICATION_DATE,
136 EXTRACTOR_METATYPE_PAPER_SIZE, 136 EXTRACTOR_METATYPE_BIBTEX_EPRINT, EXTRACTOR_METATYPE_BIBTEX_ENTRY_TYPE,
137 EXTRACTOR_METATYPE_TEMPLATE, 137 EXTRACTOR_METATYPE_LANGUAGE, EXTRACTOR_METATYPE_CREATION_TIME,
138 EXTRACTOR_METATYPE_COMPANY, 138 EXTRACTOR_METATYPE_URL, EXTRACTOR_METATYPE_URI,
139 EXTRACTOR_METATYPE_MANAGER, 139 EXTRACTOR_METATYPE_ISRC, EXTRACTOR_METATYPE_HASH_MD4,
140 EXTRACTOR_METATYPE_REVISION_NUMBER, 140 EXTRACTOR_METATYPE_HASH_MD5, EXTRACTOR_METATYPE_HASH_SHA0,
141 141 EXTRACTOR_METATYPE_HASH_SHA1, EXTRACTOR_METATYPE_HASH_RMD160,
142 EXTRACTOR_METATYPE_DURATION, 142/*
143 EXTRACTOR_METATYPE_ALBUM, 143 EXTRACTOR_METATYPE_GPS_LATITUDE_REF,
144 EXTRACTOR_METATYPE_ARTIST, 144 EXTRACTOR_METATYPE_GPS_LATITUDE,
145 EXTRACTOR_METATYPE_GENRE, 145 EXTRACTOR_METATYPE_GPS_LONGITUDE_REF,
146 EXTRACTOR_METATYPE_TRACK_NUMBER, 146 EXTRACTOR_METATYPE_GPS_LONGITUDE,
147 EXTRACTOR_METATYPE_DISC_NUMBER, 147 EXTRACTOR_METATYPE_LOCATION_CITY,
148 EXTRACTOR_METATYPE_PERFORMER, 148 EXTRACTOR_METATYPE_LOCATION_SUBLOCATION,
149 EXTRACTOR_METATYPE_CONTACT_INFORMATION, 149 EXTRACTOR_METATYPE_LOCATION_COUNTRY,
150 EXTRACTOR_METATYPE_SONG_VERSION, 150 EXTRACTOR_METATYPE_LOCATION_COUNTRY_CODE,
151 EXTRACTOR_METATYPE_PICTURE, 151*/
152 EXTRACTOR_METATYPE_COVER_PICTURE, 152 EXTRACTOR_METATYPE_UNKNOWN, EXTRACTOR_METATYPE_DESCRIPTION,
153 EXTRACTOR_METATYPE_CONTRIBUTOR_PICTURE, 153 EXTRACTOR_METATYPE_COPYRIGHT, EXTRACTOR_METATYPE_RIGHTS,
154 EXTRACTOR_METATYPE_EVENT_PICTURE, 154 EXTRACTOR_METATYPE_KEYWORDS, EXTRACTOR_METATYPE_ABSTRACT,
155 EXTRACTOR_METATYPE_LOGO, 155 EXTRACTOR_METATYPE_SUMMARY, EXTRACTOR_METATYPE_SUBJECT,
156 EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM, 156 EXTRACTOR_METATYPE_CREATOR, EXTRACTOR_METATYPE_FORMAT,
157 EXTRACTOR_METATYPE_SOURCE_DEVICE, 157 EXTRACTOR_METATYPE_FORMAT_VERSION,
158 EXTRACTOR_METATYPE_DISCLAIMER, 158 EXTRACTOR_METATYPE_CREATED_BY_SOFTWARE,
159 EXTRACTOR_METATYPE_WARNING, 159 EXTRACTOR_METATYPE_UNKNOWN_DATE, EXTRACTOR_METATYPE_CREATION_DATE,
160 EXTRACTOR_METATYPE_PAGE_ORDER, 160 EXTRACTOR_METATYPE_MODIFICATION_DATE, EXTRACTOR_METATYPE_LAST_PRINTED,
161 EXTRACTOR_METATYPE_WRITER, 161 EXTRACTOR_METATYPE_LAST_SAVED_BY, EXTRACTOR_METATYPE_TOTAL_EDITING_TIME,
162 EXTRACTOR_METATYPE_PRODUCT_VERSION, 162 EXTRACTOR_METATYPE_EDITING_CYCLES,
163 EXTRACTOR_METATYPE_CONTRIBUTOR_NAME, 163 EXTRACTOR_METATYPE_MODIFIED_BY_SOFTWARE,
164 EXTRACTOR_METATYPE_MOVIE_DIRECTOR, 164 EXTRACTOR_METATYPE_REVISION_HISTORY,
165 EXTRACTOR_METATYPE_NETWORK_NAME, 165 EXTRACTOR_METATYPE_EMBEDDED_FILE_SIZE,
166 EXTRACTOR_METATYPE_SHOW_NAME, 166 EXTRACTOR_METATYPE_FINDER_FILE_TYPE,
167 EXTRACTOR_METATYPE_CHAPTER_NAME, 167 EXTRACTOR_METATYPE_FINDER_FILE_CREATOR,
168 EXTRACTOR_METATYPE_SONG_COUNT, 168/*
169 EXTRACTOR_METATYPE_STARTING_SONG, 169 EXTRACTOR_METATYPE_PACKAGE_NAME,
170 EXTRACTOR_METATYPE_PLAY_COUNTER, 170 EXTRACTOR_METATYPE_PACKAGE_VERSION,
171 EXTRACTOR_METATYPE_CONDUCTOR, 171 EXTRACTOR_METATYPE_SECTION,
172 EXTRACTOR_METATYPE_INTERPRETATION, 172 EXTRACTOR_METATYPE_UPLOAD_PRIORITY,
173 EXTRACTOR_METATYPE_COMPOSER, 173 EXTRACTOR_METATYPE_PACKAGE_DEPENDENCY,
174 EXTRACTOR_METATYPE_BEATS_PER_MINUTE, 174 EXTRACTOR_METATYPE_PACKAGE_CONFLICTS,
175 EXTRACTOR_METATYPE_ENCODED_BY, 175 EXTRACTOR_METATYPE_PACKAGE_REPLACES,
176 EXTRACTOR_METATYPE_ORIGINAL_TITLE, 176 EXTRACTOR_METATYPE_PACKAGE_PROVIDES,
177 EXTRACTOR_METATYPE_ORIGINAL_ARTIST, 177 EXTRACTOR_METATYPE_PACKAGE_RECOMMENDS,
178 EXTRACTOR_METATYPE_ORIGINAL_WRITER, 178 EXTRACTOR_METATYPE_PACKAGE_SUGGESTS,
179 EXTRACTOR_METATYPE_ORIGINAL_RELEASE_YEAR, 179 EXTRACTOR_METATYPE_PACKAGE_MAINTAINER,
180 EXTRACTOR_METATYPE_ORIGINAL_PERFORMER, 180 EXTRACTOR_METATYPE_PACKAGE_INSTALLED_SIZE,
181 EXTRACTOR_METATYPE_LYRICS, 181 EXTRACTOR_METATYPE_PACKAGE_SOURCE,
182 EXTRACTOR_METATYPE_POPULARITY_METER, 182 EXTRACTOR_METATYPE_PACKAGE_ESSENTIAL,
183 EXTRACTOR_METATYPE_LICENSEE, 183 EXTRACTOR_METATYPE_TARGET_ARCHITECTURE,
184 EXTRACTOR_METATYPE_MUSICIAN_CREDITS_LIST, 184 EXTRACTOR_METATYPE_PACKAGE_PRE_DEPENDENCY,
185 EXTRACTOR_METATYPE_MOOD, 185 EXTRACTOR_METATYPE_LICENSE,
186 EXTRACTOR_METATYPE_SUBTITLE, 186 EXTRACTOR_METATYPE_PACKAGE_DISTRIBUTION,
187 187 EXTRACTOR_METATYPE_BUILDHOST,
188 EXTRACTOR_METATYPE_GNUNET_DISPLAY_TYPE, 188 EXTRACTOR_METATYPE_VENDOR,
189 EXTRACTOR_METATYPE_GNUNET_FULL_DATA, 189 EXTRACTOR_METATYPE_TARGET_OS,
190 EXTRACTOR_METATYPE_RATING, 190 EXTRACTOR_METATYPE_SOFTWARE_VERSION,
191 EXTRACTOR_METATYPE_ORGANIZATION, 191 EXTRACTOR_METATYPE_TARGET_PLATFORM,
192 EXTRACTOR_METATYPE_RIPPER, 192 EXTRACTOR_METATYPE_RESOURCE_TYPE,
193 EXTRACTOR_METATYPE_PRODUCER, 193 EXTRACTOR_METATYPE_LIBRARY_SEARCH_PATH,
194 EXTRACTOR_METATYPE_GROUP, 194 EXTRACTOR_METATYPE_LIBRARY_DEPENDENCY,
195 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, 195
196 196 EXTRACTOR_METATYPE_CAMERA_MAKE,
197 EXTRACTOR_METATYPE_RESERVED 197 EXTRACTOR_METATYPE_CAMERA_MODEL,
198}; 198 EXTRACTOR_METATYPE_EXPOSURE,
199gint types_text[3 + 26 + 7 /*+ 8*/ + 11 + 10 + 3 /*+ 26 + 17 + 5*/ + 11 /*+ 45*/ + 8 + 1] = 199 EXTRACTOR_METATYPE_APERTURE,
200{ /* Text */ 200 EXTRACTOR_METATYPE_EXPOSURE_BIAS,
201 EXTRACTOR_METATYPE_MIMETYPE, 201 EXTRACTOR_METATYPE_FLASH,
202 EXTRACTOR_METATYPE_FILENAME, 202 EXTRACTOR_METATYPE_FLASH_BIAS,
203 EXTRACTOR_METATYPE_COMMENT, 203 EXTRACTOR_METATYPE_FOCAL_LENGTH,
204 204 EXTRACTOR_METATYPE_FOCAL_LENGTH_35MM,
205 EXTRACTOR_METATYPE_TITLE, 205 EXTRACTOR_METATYPE_ISO_SPEED,
206 EXTRACTOR_METATYPE_BOOK_TITLE, 206 EXTRACTOR_METATYPE_EXPOSURE_MODE,
207 EXTRACTOR_METATYPE_BOOK_EDITION, 207 EXTRACTOR_METATYPE_METERING_MODE,
208 EXTRACTOR_METATYPE_BOOK_CHAPTER_NUMBER, 208 EXTRACTOR_METATYPE_MACRO_MODE,
209 EXTRACTOR_METATYPE_JOURNAL_NAME, 209 EXTRACTOR_METATYPE_IMAGE_QUALITY,
210 EXTRACTOR_METATYPE_JOURNAL_VOLUME, 210 EXTRACTOR_METATYPE_WHITE_BALANCE,
211 EXTRACTOR_METATYPE_JOURNAL_NUMBER, 211 EXTRACTOR_METATYPE_ORIENTATION,
212 EXTRACTOR_METATYPE_PAGE_COUNT, 212 EXTRACTOR_METATYPE_MAGNIFICATION,
213 EXTRACTOR_METATYPE_PAGE_RANGE, 213
214 EXTRACTOR_METATYPE_AUTHOR_NAME, 214 EXTRACTOR_METATYPE_IMAGE_DIMENSIONS,
215 EXTRACTOR_METATYPE_AUTHOR_EMAIL, 215 EXTRACTOR_METATYPE_PRODUCED_BY_SOFTWARE,
216 EXTRACTOR_METATYPE_AUTHOR_INSTITUTION, 216 EXTRACTOR_METATYPE_THUMBNAIL,
217 EXTRACTOR_METATYPE_PUBLISHER, 217 EXTRACTOR_METATYPE_IMAGE_RESOLUTION,
218 EXTRACTOR_METATYPE_PUBLISHER_ADDRESS, 218 EXTRACTOR_METATYPE_SOURCE,
219 EXTRACTOR_METATYPE_PUBLISHER_INSTITUTION, 219*/
220 EXTRACTOR_METATYPE_PUBLISHER_SERIES, 220 EXTRACTOR_METATYPE_CHARACTER_SET, EXTRACTOR_METATYPE_LINE_COUNT,
221 EXTRACTOR_METATYPE_PUBLICATION_TYPE, 221 EXTRACTOR_METATYPE_PARAGRAPH_COUNT, EXTRACTOR_METATYPE_WORD_COUNT,
222 EXTRACTOR_METATYPE_PUBLICATION_YEAR, 222 EXTRACTOR_METATYPE_CHARACTER_COUNT, EXTRACTOR_METATYPE_PAGE_ORIENTATION,
223 EXTRACTOR_METATYPE_PUBLICATION_MONTH, 223 EXTRACTOR_METATYPE_PAPER_SIZE, EXTRACTOR_METATYPE_TEMPLATE,
224 EXTRACTOR_METATYPE_PUBLICATION_DAY, 224 EXTRACTOR_METATYPE_COMPANY, EXTRACTOR_METATYPE_MANAGER,
225 EXTRACTOR_METATYPE_PUBLICATION_DATE, 225 EXTRACTOR_METATYPE_REVISION_NUMBER,
226 EXTRACTOR_METATYPE_BIBTEX_EPRINT, 226/*
227 EXTRACTOR_METATYPE_BIBTEX_ENTRY_TYPE, 227 EXTRACTOR_METATYPE_DURATION,
228 EXTRACTOR_METATYPE_LANGUAGE, 228 EXTRACTOR_METATYPE_ALBUM,
229 EXTRACTOR_METATYPE_CREATION_TIME, 229 EXTRACTOR_METATYPE_ARTIST,
230 EXTRACTOR_METATYPE_URL, 230 EXTRACTOR_METATYPE_GENRE,
231 231 EXTRACTOR_METATYPE_TRACK_NUMBER,
232 EXTRACTOR_METATYPE_URI, 232 EXTRACTOR_METATYPE_DISC_NUMBER,
233 EXTRACTOR_METATYPE_ISRC, 233 EXTRACTOR_METATYPE_PERFORMER,
234 EXTRACTOR_METATYPE_HASH_MD4, 234 EXTRACTOR_METATYPE_CONTACT_INFORMATION,
235 EXTRACTOR_METATYPE_HASH_MD5, 235 EXTRACTOR_METATYPE_SONG_VERSION,
236 EXTRACTOR_METATYPE_HASH_SHA0, 236 EXTRACTOR_METATYPE_PICTURE,
237 EXTRACTOR_METATYPE_HASH_SHA1, 237 EXTRACTOR_METATYPE_COVER_PICTURE,
238 EXTRACTOR_METATYPE_HASH_RMD160, 238 EXTRACTOR_METATYPE_CONTRIBUTOR_PICTURE,
239/* 239 EXTRACTOR_METATYPE_EVENT_PICTURE,
240 EXTRACTOR_METATYPE_GPS_LATITUDE_REF, 240 EXTRACTOR_METATYPE_LOGO,
241 EXTRACTOR_METATYPE_GPS_LATITUDE, 241 EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM,
242 EXTRACTOR_METATYPE_GPS_LONGITUDE_REF, 242 EXTRACTOR_METATYPE_SOURCE_DEVICE,
243 EXTRACTOR_METATYPE_GPS_LONGITUDE, 243 EXTRACTOR_METATYPE_DISCLAIMER,
244 EXTRACTOR_METATYPE_LOCATION_CITY, 244 EXTRACTOR_METATYPE_WARNING,
245 EXTRACTOR_METATYPE_LOCATION_SUBLOCATION, 245 EXTRACTOR_METATYPE_PAGE_ORDER,
246 EXTRACTOR_METATYPE_LOCATION_COUNTRY, 246 EXTRACTOR_METATYPE_WRITER,
247 EXTRACTOR_METATYPE_LOCATION_COUNTRY_CODE, 247 EXTRACTOR_METATYPE_PRODUCT_VERSION,
248*/ 248 EXTRACTOR_METATYPE_CONTRIBUTOR_NAME,
249 EXTRACTOR_METATYPE_UNKNOWN, 249 EXTRACTOR_METATYPE_MOVIE_DIRECTOR,
250 EXTRACTOR_METATYPE_DESCRIPTION, 250 EXTRACTOR_METATYPE_NETWORK_NAME,
251 EXTRACTOR_METATYPE_COPYRIGHT, 251 EXTRACTOR_METATYPE_SHOW_NAME,
252 EXTRACTOR_METATYPE_RIGHTS, 252 EXTRACTOR_METATYPE_CHAPTER_NAME,
253 EXTRACTOR_METATYPE_KEYWORDS, 253 EXTRACTOR_METATYPE_SONG_COUNT,
254 EXTRACTOR_METATYPE_ABSTRACT, 254 EXTRACTOR_METATYPE_STARTING_SONG,
255 EXTRACTOR_METATYPE_SUMMARY, 255 EXTRACTOR_METATYPE_PLAY_COUNTER,
256 EXTRACTOR_METATYPE_SUBJECT, 256 EXTRACTOR_METATYPE_CONDUCTOR,
257 EXTRACTOR_METATYPE_CREATOR, 257 EXTRACTOR_METATYPE_INTERPRETATION,
258 EXTRACTOR_METATYPE_FORMAT, 258 EXTRACTOR_METATYPE_COMPOSER,
259 EXTRACTOR_METATYPE_FORMAT_VERSION, 259 EXTRACTOR_METATYPE_BEATS_PER_MINUTE,
260 260 EXTRACTOR_METATYPE_ENCODED_BY,
261 EXTRACTOR_METATYPE_CREATED_BY_SOFTWARE, 261 EXTRACTOR_METATYPE_ORIGINAL_TITLE,
262 EXTRACTOR_METATYPE_UNKNOWN_DATE, 262 EXTRACTOR_METATYPE_ORIGINAL_ARTIST,
263 EXTRACTOR_METATYPE_CREATION_DATE, 263 EXTRACTOR_METATYPE_ORIGINAL_WRITER,
264 EXTRACTOR_METATYPE_MODIFICATION_DATE, 264 EXTRACTOR_METATYPE_ORIGINAL_RELEASE_YEAR,
265 EXTRACTOR_METATYPE_LAST_PRINTED, 265 EXTRACTOR_METATYPE_ORIGINAL_PERFORMER,
266 EXTRACTOR_METATYPE_LAST_SAVED_BY, 266 EXTRACTOR_METATYPE_LYRICS,
267 EXTRACTOR_METATYPE_TOTAL_EDITING_TIME, 267 EXTRACTOR_METATYPE_POPULARITY_METER,
268 EXTRACTOR_METATYPE_EDITING_CYCLES, 268 EXTRACTOR_METATYPE_LICENSEE,
269 EXTRACTOR_METATYPE_MODIFIED_BY_SOFTWARE, 269 EXTRACTOR_METATYPE_MUSICIAN_CREDITS_LIST,
270 EXTRACTOR_METATYPE_REVISION_HISTORY, 270 EXTRACTOR_METATYPE_MOOD,
271 271 EXTRACTOR_METATYPE_SUBTITLE,
272 EXTRACTOR_METATYPE_EMBEDDED_FILE_SIZE, 272*/
273 EXTRACTOR_METATYPE_FINDER_FILE_TYPE, 273EXTRACTOR_METATYPE_GNUNET_DISPLAY_TYPE,
274 EXTRACTOR_METATYPE_FINDER_FILE_CREATOR, 274 EXTRACTOR_METATYPE_GNUNET_FULL_DATA, EXTRACTOR_METATYPE_RATING,
275/* 275 EXTRACTOR_METATYPE_ORGANIZATION, EXTRACTOR_METATYPE_RIPPER,
276 EXTRACTOR_METATYPE_PACKAGE_NAME, 276 EXTRACTOR_METATYPE_PRODUCER, EXTRACTOR_METATYPE_GROUP,
277 EXTRACTOR_METATYPE_PACKAGE_VERSION, 277 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME,
278 EXTRACTOR_METATYPE_SECTION, 278 EXTRACTOR_METATYPE_RESERVED };
279 EXTRACTOR_METATYPE_UPLOAD_PRIORITY, 279gint types_music[3 /*+ 26 */ + 7 /*+ 8 */ + 11 + /*10 */ 9 +
280 EXTRACTOR_METATYPE_PACKAGE_DEPENDENCY, 280 3 /*+ 26 + 17 + 5 + 11 */ + 45 + 8 + 1] =
281 EXTRACTOR_METATYPE_PACKAGE_CONFLICTS, 281{ /* Music */
282 EXTRACTOR_METATYPE_PACKAGE_REPLACES, 282 EXTRACTOR_METATYPE_MIMETYPE, EXTRACTOR_METATYPE_FILENAME,
283 EXTRACTOR_METATYPE_PACKAGE_PROVIDES, 283 EXTRACTOR_METATYPE_COMMENT,
284 EXTRACTOR_METATYPE_PACKAGE_RECOMMENDS, 284/*
285 EXTRACTOR_METATYPE_PACKAGE_SUGGESTS, 285 EXTRACTOR_METATYPE_TITLE,
286 EXTRACTOR_METATYPE_PACKAGE_MAINTAINER, 286 EXTRACTOR_METATYPE_BOOK_TITLE,
287 EXTRACTOR_METATYPE_PACKAGE_INSTALLED_SIZE, 287 EXTRACTOR_METATYPE_BOOK_EDITION,
288 EXTRACTOR_METATYPE_PACKAGE_SOURCE, 288 EXTRACTOR_METATYPE_BOOK_CHAPTER_NUMBER,
289 EXTRACTOR_METATYPE_PACKAGE_ESSENTIAL, 289 EXTRACTOR_METATYPE_JOURNAL_NAME,
290 EXTRACTOR_METATYPE_TARGET_ARCHITECTURE, 290 EXTRACTOR_METATYPE_JOURNAL_VOLUME,
291 EXTRACTOR_METATYPE_PACKAGE_PRE_DEPENDENCY, 291 EXTRACTOR_METATYPE_JOURNAL_NUMBER,
292 EXTRACTOR_METATYPE_LICENSE, 292 EXTRACTOR_METATYPE_PAGE_COUNT,
293 EXTRACTOR_METATYPE_PACKAGE_DISTRIBUTION, 293 EXTRACTOR_METATYPE_PAGE_RANGE,
294 EXTRACTOR_METATYPE_BUILDHOST, 294 EXTRACTOR_METATYPE_AUTHOR_NAME,
295 EXTRACTOR_METATYPE_VENDOR, 295 EXTRACTOR_METATYPE_AUTHOR_EMAIL,
296 EXTRACTOR_METATYPE_TARGET_OS, 296 EXTRACTOR_METATYPE_AUTHOR_INSTITUTION,
297 EXTRACTOR_METATYPE_SOFTWARE_VERSION, 297 EXTRACTOR_METATYPE_PUBLISHER,
298 EXTRACTOR_METATYPE_TARGET_PLATFORM, 298 EXTRACTOR_METATYPE_PUBLISHER_ADDRESS,
299 EXTRACTOR_METATYPE_RESOURCE_TYPE, 299 EXTRACTOR_METATYPE_PUBLISHER_INSTITUTION,
300 EXTRACTOR_METATYPE_LIBRARY_SEARCH_PATH, 300 EXTRACTOR_METATYPE_PUBLISHER_SERIES,
301 EXTRACTOR_METATYPE_LIBRARY_DEPENDENCY, 301 EXTRACTOR_METATYPE_PUBLICATION_TYPE,
302 302 EXTRACTOR_METATYPE_PUBLICATION_YEAR,
303 EXTRACTOR_METATYPE_CAMERA_MAKE, 303 EXTRACTOR_METATYPE_PUBLICATION_MONTH,
304 EXTRACTOR_METATYPE_CAMERA_MODEL, 304 EXTRACTOR_METATYPE_PUBLICATION_DAY,
305 EXTRACTOR_METATYPE_EXPOSURE, 305 EXTRACTOR_METATYPE_PUBLICATION_DATE,
306 EXTRACTOR_METATYPE_APERTURE, 306 EXTRACTOR_METATYPE_BIBTEX_EPRINT,
307 EXTRACTOR_METATYPE_EXPOSURE_BIAS, 307 EXTRACTOR_METATYPE_BIBTEX_ENTRY_TYPE,
308 EXTRACTOR_METATYPE_FLASH, 308 EXTRACTOR_METATYPE_LANGUAGE,