diff options
Diffstat (limited to 'src/fs/gnunet-fs-gtk-edit_publish_dialog.c')
-rw-r--r-- | src/fs/gnunet-fs-gtk-edit_publish_dialog.c | 788 |
1 files changed, 395 insertions, 393 deletions
diff --git a/src/fs/gnunet-fs-gtk-edit_publish_dialog.c b/src/fs/gnunet-fs-gtk-edit_publish_dialog.c index 3e960cf4..e6cbd105 100644 --- a/src/fs/gnunet-fs-gtk-edit_publish_dialog.c +++ b/src/fs/gnunet-fs-gtk-edit_publish_dialog.c | |||
@@ -55,16 +55,16 @@ GNUNET_GTK_edit_file_information_keyword_list_del_button_clicked_cb () | |||
55 | GtkTreeModel *tm; | 55 | GtkTreeModel *tm; |
56 | GtkTreeIter iter; | 56 | GtkTreeIter iter; |
57 | 57 | ||
58 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 58 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
59 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | 59 | (builder, |
60 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | ||
60 | sel = gtk_tree_view_get_selection (tv); | 61 | sel = gtk_tree_view_get_selection (tv); |
61 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) | 62 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) |
62 | { | 63 | { |
63 | GNUNET_break (0); | 64 | GNUNET_break (0); |
64 | return; | 65 | return; |
65 | } | 66 | } |
66 | gtk_list_store_remove (GTK_LIST_STORE (tm), | 67 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); |
67 | &iter); | ||
68 | } | 68 | } |
69 | 69 | ||
70 | void | 70 | void |
@@ -75,10 +75,11 @@ GNUNET_GTK_edit_file_information_keyword_list_add_button_clicked_cb () | |||
75 | GtkListStore *ls; | 75 | GtkListStore *ls; |
76 | GtkTreeIter iter; | 76 | GtkTreeIter iter; |
77 | 77 | ||
78 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 78 | ls = GTK_LIST_STORE (gtk_builder_get_object |
79 | "GNUNET_GTK_keyword_list_store")); | 79 | (builder, "GNUNET_GTK_keyword_list_store")); |
80 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 80 | entry = |
81 | "GNUNET_GTK_edit_file_information_keyword_entry")); | 81 | GTK_ENTRY (gtk_builder_get_object |
82 | (builder, "GNUNET_GTK_edit_file_information_keyword_entry")); | ||
82 | keyword = gtk_entry_get_text (entry); | 83 | keyword = gtk_entry_get_text (entry); |
83 | if (strlen (keyword) > 0) | 84 | if (strlen (keyword) > 0) |
84 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1); | 85 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1); |
@@ -93,78 +94,92 @@ GNUNET_GTK_edit_file_information_keyword_entry_changed_cb () | |||
93 | GtkEntry *entry; | 94 | GtkEntry *entry; |
94 | GtkWidget *button; | 95 | GtkWidget *button; |
95 | 96 | ||
96 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 97 | button = |
97 | "GNUNET_GTK_edit_file_information_keyword_list_add_button")); | 98 | GTK_WIDGET (gtk_builder_get_object |
98 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 99 | (builder, |
99 | "GNUNET_GTK_edit_file_information_keyword_entry")); | 100 | "GNUNET_GTK_edit_file_information_keyword_list_add_button")); |
101 | entry = | ||
102 | GTK_ENTRY (gtk_builder_get_object | ||
103 | (builder, "GNUNET_GTK_edit_file_information_keyword_entry")); | ||
100 | keyword = gtk_entry_get_text (entry); | 104 | keyword = gtk_entry_get_text (entry); |
101 | gtk_widget_set_sensitive (button, | 105 | gtk_widget_set_sensitive (button, (strlen (keyword) > 0) ? TRUE : FALSE); |
102 | (strlen (keyword) > 0) ? TRUE : FALSE); | ||
103 | } | 106 | } |
104 | 107 | ||
105 | 108 | ||
106 | static void | 109 | static void |
107 | metadata_selection_changed_cb (GtkTreeSelection *ts, | 110 | metadata_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data) |
108 | gpointer user_data) | ||
109 | { | 111 | { |
110 | GtkTreeView *tv; | 112 | GtkTreeView *tv; |
111 | GtkTreeSelection *sel; | 113 | GtkTreeSelection *sel; |
112 | GtkWidget *button; | 114 | GtkWidget *button; |
113 | 115 | ||
114 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 116 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
115 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | 117 | (builder, |
118 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | ||
116 | sel = gtk_tree_view_get_selection (tv); | 119 | sel = gtk_tree_view_get_selection (tv); |
117 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 120 | button = |
118 | "GNUNET_GTK_edit_file_information_metadata_delete_button")); | 121 | GTK_WIDGET (gtk_builder_get_object |
122 | (builder, | ||
123 | "GNUNET_GTK_edit_file_information_metadata_delete_button")); | ||
119 | gtk_widget_set_sensitive (button, | 124 | gtk_widget_set_sensitive (button, |
120 | gtk_tree_selection_get_selected (sel, NULL, NULL)); | 125 | gtk_tree_selection_get_selected (sel, NULL, NULL)); |
121 | } | 126 | } |
122 | 127 | ||
123 | 128 | ||
124 | static void | 129 | static void |
125 | keyword_selection_changed_cb (GtkTreeSelection *ts, | 130 | keyword_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data) |
126 | gpointer user_data) | ||
127 | { | 131 | { |
128 | GtkTreeView *tv; | 132 | GtkTreeView *tv; |
129 | GtkTreeSelection *sel; | 133 | GtkTreeSelection *sel; |
130 | GtkWidget *button; | 134 | GtkWidget *button; |
131 | 135 | ||
132 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 136 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
133 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | 137 | (builder, |
138 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | ||
134 | sel = gtk_tree_view_get_selection (tv); | 139 | sel = gtk_tree_view_get_selection (tv); |
135 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 140 | button = |
136 | "GNUNET_GTK_edit_file_information_keyword_list_del_button")); | 141 | GTK_WIDGET (gtk_builder_get_object |
142 | (builder, | ||
143 | "GNUNET_GTK_edit_file_information_keyword_list_del_button")); | ||
137 | 144 | ||
138 | gtk_widget_set_sensitive (button, | 145 | gtk_widget_set_sensitive (button, |
139 | gtk_tree_selection_get_selected (sel, NULL, NULL)); | 146 | gtk_tree_selection_get_selected (sel, NULL, NULL)); |
140 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 147 | button = |
141 | "GNUNET_GTK_edit_file_information_keyword_list_normalize_button")); | 148 | GTK_WIDGET (gtk_builder_get_object |
149 | (builder, | ||
150 | "GNUNET_GTK_edit_file_information_keyword_list_normalize_button")); | ||
142 | gtk_widget_set_sensitive (button, | 151 | gtk_widget_set_sensitive (button, |
143 | gtk_tree_selection_get_selected (sel, NULL, NULL)); | 152 | gtk_tree_selection_get_selected (sel, NULL, NULL)); |
144 | } | 153 | } |
145 | 154 | ||
146 | 155 | ||
147 | void | 156 | void |
148 | GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb () | 157 | GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb () |
149 | { | 158 | { |
150 | GtkTreeView *tv; | 159 | GtkTreeView *tv; |
151 | GtkTreeSelection *sel; | 160 | GtkTreeSelection *sel; |
152 | const char *value; | 161 | const char *value; |
153 | GtkEntry *entry; | 162 | GtkEntry *entry; |
154 | GtkWidget *button; | 163 | GtkWidget *button; |
155 | 164 | ||
156 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 165 | entry = |
157 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | 166 | GTK_ENTRY (gtk_builder_get_object |
167 | (builder, | ||
168 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | ||
158 | value = gtk_entry_get_text (entry); | 169 | value = gtk_entry_get_text (entry); |
159 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 170 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
160 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | 171 | (builder, |
172 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | ||
161 | sel = gtk_tree_view_get_selection (tv); | 173 | sel = gtk_tree_view_get_selection (tv); |
162 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 174 | button = |
163 | "GNUNET_GTK_edit_file_information_metadata_add_button")); | 175 | GTK_WIDGET (gtk_builder_get_object |
176 | (builder, | ||
177 | "GNUNET_GTK_edit_file_information_metadata_add_button")); | ||
164 | gtk_widget_set_sensitive (button, | 178 | gtk_widget_set_sensitive (button, |
165 | (strlen (value) > 0) | 179 | (strlen (value) > |
166 | ? gtk_tree_selection_get_selected (sel, NULL, NULL) | 180 | 0) ? gtk_tree_selection_get_selected (sel, NULL, |
167 | : FALSE); | 181 | NULL) : |
182 | FALSE); | ||
168 | } | 183 | } |
169 | 184 | ||
170 | 185 | ||
@@ -175,39 +190,39 @@ GNUNET_GTK_edit_file_information_keyword_entry_activate_cb () | |||
175 | } | 190 | } |
176 | 191 | ||
177 | 192 | ||
178 | void | 193 | void GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button_file_set_cb (GtkFileChooserButton * widget, gpointer user_data) |
179 | GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button_file_set_cb (GtkFileChooserButton *widget, | ||
180 | gpointer user_data) | ||
181 | { | 194 | { |
182 | gchar *fn; | 195 | gchar *fn; |
183 | GtkImage *image; | 196 | GtkImage *image; |
184 | 197 | ||
185 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget)); | 198 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget)); |
186 | image = GTK_IMAGE (gtk_builder_get_object (builder, | 199 | image = |
187 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); | 200 | GTK_IMAGE (gtk_builder_get_object |
201 | (builder, | ||
202 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); | ||
188 | gtk_image_set_from_file (image, fn); | 203 | gtk_image_set_from_file (image, fn); |
189 | preview_changed = GNUNET_YES; | 204 | preview_changed = GNUNET_YES; |
190 | } | 205 | } |
191 | 206 | ||
192 | 207 | ||
193 | void | 208 | void |
194 | GNUNET_GTK_edit_file_information_metadata_delete_button_clicked_cb() | 209 | GNUNET_GTK_edit_file_information_metadata_delete_button_clicked_cb () |
195 | { | 210 | { |
196 | GtkTreeView *tv; | 211 | GtkTreeView *tv; |
197 | GtkTreeSelection *sel; | 212 | GtkTreeSelection *sel; |
198 | GtkTreeModel *tm; | 213 | GtkTreeModel *tm; |
199 | GtkTreeIter iter; | 214 | GtkTreeIter iter; |
200 | 215 | ||
201 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 216 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
202 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | 217 | (builder, |
218 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | ||
203 | sel = gtk_tree_view_get_selection (tv); | 219 | sel = gtk_tree_view_get_selection (tv); |
204 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) | 220 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) |
205 | { | 221 | { |
206 | GNUNET_break (0); | 222 | GNUNET_break (0); |
207 | return; | 223 | return; |
208 | } | 224 | } |
209 | gtk_list_store_remove (GTK_LIST_STORE (tm), | 225 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); |
210 | &iter); | ||
211 | } | 226 | } |
212 | 227 | ||
213 | 228 | ||
@@ -227,70 +242,63 @@ GNUNET_GTK_edit_file_information_metadata_add_button_clicked_cb () | |||
227 | size_t slen; | 242 | size_t slen; |
228 | char *pos; | 243 | char *pos; |
229 | 244 | ||
230 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 245 | entry = |
231 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | 246 | GTK_ENTRY (gtk_builder_get_object |
247 | (builder, | ||
248 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | ||
232 | value = gtk_entry_get_text (entry); | 249 | value = gtk_entry_get_text (entry); |
233 | if ((value == NULL) || (strlen (value) == 0)) | 250 | if ((value == NULL) || (strlen (value) == 0)) |
234 | { | 251 | { |
235 | GNUNET_break (0); | 252 | GNUNET_break (0); |
236 | return; | 253 | return; |
237 | } | 254 | } |
238 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 255 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
239 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | 256 | (builder, |
257 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | ||
240 | tm = gtk_tree_view_get_model (tv); | 258 | tm = gtk_tree_view_get_model (tv); |
241 | sel = gtk_tree_view_get_selection (tv); | 259 | sel = gtk_tree_view_get_selection (tv); |
242 | if (TRUE != gtk_tree_selection_get_selected (sel, | 260 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) |
243 | &tm, | 261 | { |
244 | &iter)) | 262 | GNUNET_break (0); |
263 | return; | ||
264 | } | ||
265 | gtk_tree_model_get (tm, &iter, 1, &type, -1); | ||
266 | ls = GTK_LIST_STORE (gtk_builder_get_object | ||
267 | (builder, "GNUNET_GTK_meta_data_list_store")); | ||
268 | if ((type == EXTRACTOR_METATYPE_FILENAME) && | ||
269 | (value[strlen (value) - 1] != '/') && (is_directory)) | ||
270 | { | ||
271 | GNUNET_asprintf (&avalue, "%s/", value); | ||
272 | /* if user typed '\' instead of '/', change it! */ | ||
273 | slen = strlen (avalue); | ||
274 | while ((slen > 1) && (avalue[slen - 2] == '\\')) | ||
245 | { | 275 | { |
246 | GNUNET_break (0); | 276 | avalue[slen - 2] = '/'; |
247 | return; | 277 | avalue[slen - 1] = '\0'; |
248 | } | 278 | slen--; |
249 | gtk_tree_model_get (tm, | ||
250 | &iter, | ||
251 | 1, &type, -1); | ||
252 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | ||
253 | "GNUNET_GTK_meta_data_list_store")); | ||
254 | if ( (type == EXTRACTOR_METATYPE_FILENAME) && | ||
255 | (value[strlen(value)-1] != '/') && | ||
256 | (is_directory) ) | ||
257 | { | ||
258 | GNUNET_asprintf (&avalue, | ||
259 | "%s/", | ||
260 | value); | ||
261 | /* if user typed '\' instead of '/', change it! */ | ||
262 | slen = strlen (avalue); | ||
263 | while ( (slen > 1) && | ||
264 | (avalue[slen-2] == '\\') ) | ||
265 | { | ||
266 | avalue[slen-2] = '/'; | ||
267 | avalue[slen-1] = '\0'; | ||
268 | slen--; | ||
269 | } | ||
270 | while (NULL != (pos = strstr (avalue, "\\"))) | ||
271 | *pos = '/'; | ||
272 | /* remove '../' everywhere */ | ||
273 | while (NULL != (pos = strstr (avalue, "../"))) | ||
274 | { | ||
275 | pos[0] = '_'; | ||
276 | pos[1] = '_'; | ||
277 | pos[2] = '_'; | ||
278 | } | ||
279 | ivalue = avalue; | ||
280 | } | 279 | } |
281 | else | 280 | while (NULL != (pos = strstr (avalue, "\\"))) |
281 | *pos = '/'; | ||
282 | /* remove '../' everywhere */ | ||
283 | while (NULL != (pos = strstr (avalue, "../"))) | ||
282 | { | 284 | { |
283 | ivalue = value; | 285 | pos[0] = '_'; |
284 | avalue = NULL; | 286 | pos[1] = '_'; |
287 | pos[2] = '_'; | ||
285 | } | 288 | } |
286 | 289 | ivalue = avalue; | |
287 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, | 290 | } |
288 | 0, type, | 291 | else |
289 | 1, (guint) EXTRACTOR_METAFORMAT_UTF8, | 292 | { |
290 | 2, EXTRACTOR_metatype_to_string (type), | 293 | ivalue = value; |
291 | 3, ivalue, | 294 | avalue = NULL; |
292 | -1); | 295 | } |
293 | GNUNET_free_non_null (avalue); | 296 | |
297 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, type, 1, | ||
298 | (guint) EXTRACTOR_METAFORMAT_UTF8, 2, | ||
299 | EXTRACTOR_metatype_to_string (type), 3, | ||
300 | ivalue, -1); | ||
301 | GNUNET_free_non_null (avalue); | ||
294 | gtk_entry_set_text (GTK_ENTRY (entry), ""); | 302 | gtk_entry_set_text (GTK_ENTRY (entry), ""); |
295 | } | 303 | } |
296 | 304 | ||
@@ -304,19 +312,14 @@ GNUNET_GTK_edit_file_information_metadata_add_button_clicked_cb () | |||
304 | * @return GNUNET_OK to continue to iterate | 312 | * @return GNUNET_OK to continue to iterate |
305 | */ | 313 | */ |
306 | static int | 314 | static int |
307 | add_keyword (void *cls, | 315 | add_keyword (void *cls, const char *keyword, int is_mandatory) |
308 | const char *keyword, | ||
309 | int is_mandatory) | ||
310 | { | 316 | { |
311 | GtkListStore *ls; | 317 | GtkListStore *ls; |
312 | GtkTreeIter iter; | 318 | GtkTreeIter iter; |
313 | 319 | ||
314 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 320 | ls = GTK_LIST_STORE (gtk_builder_get_object |
315 | "GNUNET_GTK_keyword_list_store")); | 321 | (builder, "GNUNET_GTK_keyword_list_store")); |
316 | gtk_list_store_insert_with_values (ls, &iter, | 322 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1); |
317 | G_MAXINT, | ||
318 | 0, keyword, | ||
319 | -1); | ||
320 | return GNUNET_OK; | 323 | return GNUNET_OK; |
321 | } | 324 | } |
322 | 325 | ||
@@ -337,40 +340,33 @@ add_keyword (void *cls, | |||
337 | * @param data actual meta-data found | 340 | * @param data actual meta-data found |
338 | * @param data_len number of bytes in data | 341 | * @param data_len number of bytes in data |
339 | * @return 0 to continue extracting | 342 | * @return 0 to continue extracting |
340 | */ | 343 | */ |
341 | static int | 344 | static int |
342 | add_meta_item (void *cls, | 345 | add_meta_item (void *cls, const char *plugin_name, enum EXTRACTOR_MetaType type, |
343 | const char *plugin_name, | 346 | enum EXTRACTOR_MetaFormat format, const char *data_mime_type, |
344 | enum EXTRACTOR_MetaType type, | 347 | const char *data, size_t data_len) |
345 | enum EXTRACTOR_MetaFormat format, | ||
346 | const char *data_mime_type, | ||
347 | const char *data, | ||
348 | size_t data_len) | ||
349 | { | 348 | { |
350 | GtkListStore *ls; | 349 | GtkListStore *ls; |
351 | GtkTreeIter iter; | 350 | GtkTreeIter iter; |
352 | 351 | ||
353 | switch (format) | 352 | switch (format) |
354 | { | 353 | { |
355 | case EXTRACTOR_METAFORMAT_UTF8: | 354 | case EXTRACTOR_METAFORMAT_UTF8: |
356 | case EXTRACTOR_METAFORMAT_C_STRING: | 355 | case EXTRACTOR_METAFORMAT_C_STRING: |
357 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 356 | ls = GTK_LIST_STORE (gtk_builder_get_object |
358 | "GNUNET_GTK_meta_data_list_store")); | 357 | (builder, "GNUNET_GTK_meta_data_list_store")); |
359 | gtk_list_store_insert_with_values (ls, &iter, | 358 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, (guint) type, 1, |
360 | G_MAXINT, | 359 | (guint) format, 2, |
361 | 0, (guint) type, | 360 | EXTRACTOR_metatype_to_string (type), 3, |
362 | 1, (guint) format, | 361 | data, -1); |
363 | 2, EXTRACTOR_metatype_to_string (type), | 362 | break; |
364 | 3, data, | 363 | case EXTRACTOR_METAFORMAT_UNKNOWN: |
365 | -1); | 364 | break; |
366 | break; | 365 | case EXTRACTOR_METAFORMAT_BINARY: |
367 | case EXTRACTOR_METAFORMAT_UNKNOWN: | 366 | break; |
368 | break; | 367 | default: |
369 | case EXTRACTOR_METAFORMAT_BINARY: | 368 | GNUNET_break (0); |
370 | break; | 369 | } |
371 | default: | ||
372 | GNUNET_break (0); | ||
373 | } | ||
374 | return 0; | 370 | return 0; |
375 | } | 371 | } |
376 | 372 | ||
@@ -388,15 +384,13 @@ add_meta_item (void *cls, | |||
388 | * @param client_info pointer to client context set upon creation (can be modified) | 384 | * @param client_info pointer to client context set upon creation (can be modified) |
389 | * @return GNUNET_SYSERR (aborts after first call) | 385 | * @return GNUNET_SYSERR (aborts after first call) |
390 | */ | 386 | */ |
391 | static int | 387 | static int |
392 | file_information_extract (void *cls, | 388 | file_information_extract (void *cls, struct GNUNET_FS_FileInformation *fi, |
393 | struct GNUNET_FS_FileInformation *fi, | 389 | uint64_t length, |
394 | uint64_t length, | 390 | struct GNUNET_CONTAINER_MetaData *meta, |
395 | struct GNUNET_CONTAINER_MetaData *meta, | 391 | struct GNUNET_FS_Uri **uri, |
396 | struct GNUNET_FS_Uri **uri, | 392 | struct GNUNET_FS_BlockOptions *bo, int *do_index, |
397 | struct GNUNET_FS_BlockOptions *bo, | 393 | void **client_info) |
398 | int *do_index, | ||
399 | void **client_info) | ||
400 | { | 394 | { |
401 | GtkImage *img; | 395 | GtkImage *img; |
402 | GdkPixbuf *pixbuf; | 396 | GdkPixbuf *pixbuf; |
@@ -407,38 +401,45 @@ file_information_extract (void *cls, | |||
407 | if (NULL != *uri) | 401 | if (NULL != *uri) |
408 | GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, NULL); | 402 | GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, NULL); |
409 | if (NULL != meta) | 403 | if (NULL != meta) |
404 | { | ||
405 | GNUNET_CONTAINER_meta_data_iterate (meta, &add_meta_item, NULL); | ||
406 | pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta); | ||
407 | if (pixbuf != NULL) | ||
410 | { | 408 | { |
411 | GNUNET_CONTAINER_meta_data_iterate (meta, | 409 | img = |
412 | &add_meta_item, | 410 | GTK_IMAGE (gtk_builder_get_object |
413 | NULL); | 411 | (builder, |
414 | pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta); | 412 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); |
415 | if (pixbuf != NULL) | 413 | gtk_image_set_from_pixbuf (img, pixbuf); |
416 | { | ||
417 | img = GTK_IMAGE (gtk_builder_get_object (builder, | ||
418 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); | ||
419 | gtk_image_set_from_pixbuf (img, | ||
420 | pixbuf); | ||
421 | } | ||
422 | } | 414 | } |
423 | tp = bo->expiration_time.abs_value / 1000; /* ms to seconds */ | 415 | } |
416 | tp = bo->expiration_time.abs_value / 1000; /* ms to seconds */ | ||
424 | t = gmtime (&tp); | 417 | t = gmtime (&tp); |
425 | if (t == NULL) | 418 | if (t == NULL) |
426 | year = 0; | 419 | year = 0; |
427 | else | 420 | else |
428 | year = t->tm_year + 1900; | 421 | year = t->tm_year + 1900; |
429 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 422 | gtk_spin_button_set_value (GTK_SPIN_BUTTON |
430 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")), | 423 | (gtk_builder_get_object |
431 | year); | 424 | (builder, |
432 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 425 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")), |
433 | "GNUNET_GTK_edit_file_information_anonymity_spin_button")), | 426 | year); |
434 | bo->anonymity_level); | 427 | gtk_spin_button_set_value (GTK_SPIN_BUTTON |
435 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 428 | (gtk_builder_get_object |
436 | "GNUNET_GTK_edit_file_information_priority_spin_button")), | 429 | (builder, |
437 | bo->content_priority); | 430 | "GNUNET_GTK_edit_file_information_anonymity_spin_button")), |
438 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 431 | bo->anonymity_level); |
439 | "GNUNET_GTK_edit_file_information_index_check_button")), | 432 | gtk_spin_button_set_value (GTK_SPIN_BUTTON |
440 | *do_index); | 433 | (gtk_builder_get_object |
441 | return GNUNET_SYSERR; /* only visit top-level item */ | 434 | (builder, |
435 | "GNUNET_GTK_edit_file_information_priority_spin_button")), | ||
436 | bo->content_priority); | ||
437 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON | ||
438 | (gtk_builder_get_object | ||
439 | (builder, | ||
440 | "GNUNET_GTK_edit_file_information_index_check_button")), | ||
441 | *do_index); | ||
442 | return GNUNET_SYSERR; /* only visit top-level item */ | ||
442 | } | 443 | } |
443 | 444 | ||
444 | 445 | ||
@@ -458,70 +459,62 @@ file_information_extract (void *cls, | |||
458 | * @param data actual meta-data found | 459 | * @param data actual meta-data found |
459 | * @param data_len number of bytes in data | 460 | * @param data_len number of bytes in data |
460 | * @return 0 to continue extracting | 461 | * @return 0 to continue extracting |
461 | */ | 462 | */ |
462 | static int | 463 | static int |
463 | preserve_meta_items (void *cls, | 464 | preserve_meta_items (void *cls, const char *plugin_name, |
464 | const char *plugin_name, | 465 | enum EXTRACTOR_MetaType type, |
465 | enum EXTRACTOR_MetaType type, | 466 | enum EXTRACTOR_MetaFormat format, |
466 | enum EXTRACTOR_MetaFormat format, | 467 | const char *data_mime_type, const char *data, |
467 | const char *data_mime_type, | 468 | size_t data_len) |
468 | const char *data, | ||
469 | size_t data_len) | ||
470 | { | 469 | { |
471 | struct GNUNET_CONTAINER_MetaData *md = cls; | 470 | struct GNUNET_CONTAINER_MetaData *md = cls; |
472 | GtkTreeModel *tm; | 471 | GtkTreeModel *tm; |
473 | GtkTreeIter iter; | 472 | GtkTreeIter iter; |
474 | gchar *value; | 473 | gchar *value; |
475 | guint ntype; | 474 | guint ntype; |
476 | guint nformat; | 475 | guint nformat; |
477 | int keep; | 476 | int keep; |
478 | 477 | ||
479 | keep = GNUNET_NO; | 478 | keep = GNUNET_NO; |
480 | switch (format) | 479 | switch (format) |
480 | { | ||
481 | case EXTRACTOR_METAFORMAT_UTF8: | ||
482 | case EXTRACTOR_METAFORMAT_C_STRING: | ||
483 | tm = GTK_TREE_MODEL (gtk_builder_get_object | ||
484 | (builder, "GNUNET_GTK_meta_data_list_store")); | ||
485 | if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) | ||
481 | { | 486 | { |
482 | case EXTRACTOR_METAFORMAT_UTF8: | 487 | do |
483 | case EXTRACTOR_METAFORMAT_C_STRING: | 488 | { |
484 | tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, | 489 | gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1); |
485 | "GNUNET_GTK_meta_data_list_store")); | 490 | if ((ntype == type) && (nformat == format) && |
486 | if (TRUE == | 491 | (0 == strcmp (value, data))) |
487 | gtk_tree_model_get_iter_first (tm, &iter)) | 492 | { |
488 | { | 493 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); |
489 | do | 494 | keep = GNUNET_YES; |
490 | { | 495 | g_free (value); |
491 | gtk_tree_model_get (tm, &iter, | 496 | break; |
492 | 0, &ntype, | 497 | } |
493 | 1, &nformat, | 498 | g_free (value); |
494 | 3, &value, | 499 | } |
495 | -1); | 500 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); |
496 | if ( (ntype == type) && | ||
497 | (nformat == format) && | ||
498 | (0 == strcmp (value, data)) ) | ||
499 | { | ||
500 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); | ||
501 | keep = GNUNET_YES; | ||
502 | g_free (value); | ||
503 | break; | ||
504 | } | ||
505 | g_free (value); | ||
506 | } | ||
507 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
508 | } | ||
509 | break; | ||
510 | case EXTRACTOR_METAFORMAT_UNKNOWN: | ||
511 | break; | ||
512 | case EXTRACTOR_METAFORMAT_BINARY: | ||
513 | if (preview_changed == GNUNET_NO) | ||
514 | keep = GNUNET_YES; | ||
515 | break; | ||
516 | default: | ||
517 | GNUNET_break (0); | ||
518 | break; | ||
519 | } | 501 | } |
502 | break; | ||
503 | case EXTRACTOR_METAFORMAT_UNKNOWN: | ||
504 | break; | ||
505 | case EXTRACTOR_METAFORMAT_BINARY: | ||
506 | if (preview_changed == GNUNET_NO) | ||
507 | keep = GNUNET_YES; | ||
508 | break; | ||
509 | default: | ||
510 | GNUNET_break (0); | ||
511 | break; | ||
512 | } | ||
520 | if (GNUNET_YES == keep) | 513 | if (GNUNET_YES == keep) |
521 | GNUNET_break (GNUNET_OK == | 514 | GNUNET_break (GNUNET_OK == |
522 | GNUNET_CONTAINER_meta_data_insert (md, | 515 | GNUNET_CONTAINER_meta_data_insert (md, plugin_name, type, |
523 | plugin_name, type, format, | 516 | format, data_mime_type, |
524 | data_mime_type, data, data_len)); | 517 | data, data_len)); |
525 | return 0; | 518 | return 0; |
526 | } | 519 | } |
527 | 520 | ||
@@ -539,15 +532,13 @@ preserve_meta_items (void *cls, | |||
539 | * @param client_info pointer to client context set upon creation (can be modified) | 532 | * @param client_info pointer to client context set upon creation (can be modified) |
540 | * @return GNUNET_SYSERR (aborts after first call) | 533 | * @return GNUNET_SYSERR (aborts after first call) |
541 | */ | 534 | */ |
542 | static int | 535 | static int |
543 | file_information_update (void *cls, | 536 | file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi, |
544 | struct GNUNET_FS_FileInformation *fi, | 537 | uint64_t length, |
545 | uint64_t length, | 538 | struct GNUNET_CONTAINER_MetaData *meta, |
546 | struct GNUNET_CONTAINER_MetaData *meta, | 539 | struct GNUNET_FS_Uri **uri, |
547 | struct GNUNET_FS_Uri **uri, | 540 | struct GNUNET_FS_BlockOptions *bo, int *do_index, |
548 | struct GNUNET_FS_BlockOptions *bo, | 541 | void **client_info) |
549 | int *do_index, | ||
550 | void **client_info) | ||
551 | { | 542 | { |
552 | char **short_fn = cls; | 543 | char **short_fn = cls; |
553 | struct GNUNET_CONTAINER_MetaData *nm; | 544 | struct GNUNET_CONTAINER_MetaData *nm; |
@@ -556,7 +547,7 @@ file_information_update (void *cls, | |||
556 | struct GNUNET_FS_Uri *nxt; | 547 | struct GNUNET_FS_Uri *nxt; |
557 | struct GNUNET_FS_Uri *mrg; | 548 | struct GNUNET_FS_Uri *mrg; |
558 | gchar *value; | 549 | gchar *value; |
559 | guint ntype; | 550 | guint ntype; |
560 | guint nformat; | 551 | guint nformat; |
561 | GtkSpinButton *sb; | 552 | GtkSpinButton *sb; |
562 | gchar *fn; | 553 | gchar *fn; |
@@ -565,15 +556,25 @@ file_information_update (void *cls, | |||
565 | const char *mime; | 556 | const char *mime; |
566 | GFile *f; | 557 | GFile *f; |
567 | GFileInfo *finfo; | 558 | GFileInfo *finfo; |
568 | 559 | ||
569 | bo->anonymity_level = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 560 | bo->anonymity_level = |
570 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); | 561 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
571 | bo->content_priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 562 | (gtk_builder_get_object |
572 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | 563 | (builder, |
573 | *do_index = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 564 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); |
574 | "GNUNET_GTK_edit_file_information_index_check_button"))); | 565 | bo->content_priority = |
575 | sb =GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 566 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
576 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")); | 567 | (gtk_builder_get_object |
568 | (builder, | ||
569 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | ||
570 | *do_index = | ||
571 | gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON | ||
572 | (gtk_builder_get_object | ||
573 | (builder, | ||
574 | "GNUNET_GTK_edit_file_information_index_check_button"))); | ||
575 | sb = GTK_SPIN_BUTTON (gtk_builder_get_object | ||
576 | (builder, | ||
577 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")); | ||
577 | bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); | 578 | bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); |
578 | /* update URI */ | 579 | /* update URI */ |
579 | if (NULL != (*uri)) | 580 | if (NULL != (*uri)) |
@@ -581,95 +582,83 @@ file_information_update (void *cls, | |||
581 | *uri = NULL; | 582 | *uri = NULL; |
582 | nxt = NULL; | 583 | nxt = NULL; |
583 | mrg = NULL; | 584 | mrg = NULL; |
584 | 585 | ||
585 | tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, | 586 | tm = GTK_TREE_MODEL (gtk_builder_get_object |
586 | "GNUNET_GTK_keyword_list_store")); | 587 | (builder, "GNUNET_GTK_keyword_list_store")); |
587 | if (TRUE == | 588 | if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) |
588 | gtk_tree_model_get_iter_first (tm, &iter)) | 589 | { |
590 | do | ||
589 | { | 591 | { |
590 | do | 592 | gtk_tree_model_get (tm, &iter, 0, &value, -1); |
591 | { | 593 | nxt = GNUNET_FS_uri_ksk_create_from_args (1, (const char **) &value); |
592 | gtk_tree_model_get (tm, &iter, | 594 | mrg = GNUNET_FS_uri_ksk_merge (nxt, *uri); |
593 | 0, &value, | 595 | GNUNET_FS_uri_destroy (nxt); |
594 | -1); | 596 | if (NULL != *uri) |
595 | nxt = GNUNET_FS_uri_ksk_create_from_args (1, (const char**) &value); | 597 | GNUNET_FS_uri_destroy (*uri); |
596 | mrg = GNUNET_FS_uri_ksk_merge (nxt, *uri); | 598 | *uri = mrg; |
597 | GNUNET_FS_uri_destroy (nxt); | 599 | g_free (value); |
598 | if (NULL != *uri) | ||
599 | GNUNET_FS_uri_destroy (*uri); | ||
600 | *uri = mrg; | ||
601 | g_free (value); | ||
602 | } | ||
603 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
604 | } | 600 | } |
601 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
602 | } | ||
605 | 603 | ||
606 | /* update meta */ | 604 | /* update meta */ |
607 | nm = GNUNET_CONTAINER_meta_data_create (); | 605 | nm = GNUNET_CONTAINER_meta_data_create (); |
608 | GNUNET_CONTAINER_meta_data_iterate (meta, | 606 | GNUNET_CONTAINER_meta_data_iterate (meta, &preserve_meta_items, nm); |
609 | &preserve_meta_items, | ||
610 | nm); | ||
611 | 607 | ||
612 | GNUNET_CONTAINER_meta_data_clear (meta); | 608 | GNUNET_CONTAINER_meta_data_clear (meta); |
613 | tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, | 609 | tm = GTK_TREE_MODEL (gtk_builder_get_object |
614 | "GNUNET_GTK_meta_data_list_store")); | 610 | (builder, "GNUNET_GTK_meta_data_list_store")); |
615 | if (TRUE == | 611 | if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) |
616 | gtk_tree_model_get_iter_first (tm, &iter)) | 612 | { |
613 | do | ||
617 | { | 614 | { |
618 | do | 615 | gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1); |
619 | { | 616 | GNUNET_CONTAINER_meta_data_insert (nm, "<user>", ntype, nformat, |
620 | gtk_tree_model_get (tm, &iter, | 617 | "text/plain", value, |
621 | 0, &ntype, | 618 | strlen (value) + 1); |
622 | 1, &nformat, | 619 | g_free (value); |
623 | 3, &value, | ||
624 | -1); | ||
625 | GNUNET_CONTAINER_meta_data_insert (nm, | ||
626 | "<user>", | ||
627 | ntype, | ||
628 | nformat, | ||
629 | "text/plain", | ||
630 | value, | ||
631 | strlen (value)+1); | ||
632 | g_free (value); | ||
633 | } | ||
634 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
635 | } | 620 | } |
621 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
622 | } | ||
636 | GNUNET_CONTAINER_meta_data_merge (meta, nm); | 623 | GNUNET_CONTAINER_meta_data_merge (meta, nm); |
637 | if (preview_changed == GNUNET_YES) | 624 | if (preview_changed == GNUNET_YES) |
625 | { | ||
626 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER | ||
627 | (gtk_builder_get_object | ||
628 | (builder, | ||
629 | "GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button"))); | ||
630 | f = g_file_new_for_path (fn); | ||
631 | finfo = | ||
632 | g_file_query_info (f, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 0, NULL, | ||
633 | NULL); | ||
634 | if (FALSE == g_file_load_contents (f, NULL, &data, &data_size, NULL, NULL)) | ||
638 | { | 635 | { |
639 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (gtk_builder_get_object (builder, | 636 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
640 | "GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button"))); | 637 | _("Could not load preview `%s' into memory\n"), fn); |
641 | f = g_file_new_for_path (fn); | ||
642 | finfo = g_file_query_info (f, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 0, NULL, NULL); | ||
643 | if (FALSE == g_file_load_contents (f, NULL, &data, &data_size, NULL, NULL)) | ||
644 | { | ||
645 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
646 | _("Could not load preview `%s' into memory\n"), | ||
647 | fn); | ||
648 | } | ||
649 | else | ||
650 | { | ||
651 | mime = g_file_info_get_attribute_string (finfo, | ||
652 | G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); | ||
653 | GNUNET_CONTAINER_meta_data_insert (meta, | ||
654 | "<user>", | ||
655 | EXTRACTOR_METATYPE_THUMBNAIL, | ||
656 | EXTRACTOR_METAFORMAT_BINARY, | ||
657 | mime, | ||
658 | data, | ||
659 | data_size); | ||
660 | } | ||
661 | g_object_unref (finfo); | ||
662 | g_object_unref (f); | ||
663 | } | 638 | } |
639 | else | ||
640 | { | ||
641 | mime = | ||
642 | g_file_info_get_attribute_string (finfo, | ||
643 | G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); | ||
644 | GNUNET_CONTAINER_meta_data_insert (meta, "<user>", | ||
645 | EXTRACTOR_METATYPE_THUMBNAIL, | ||
646 | EXTRACTOR_METAFORMAT_BINARY, mime, | ||
647 | data, data_size); | ||
648 | } | ||
649 | g_object_unref (finfo); | ||
650 | g_object_unref (f); | ||
651 | } | ||
664 | GNUNET_CONTAINER_meta_data_destroy (nm); | 652 | GNUNET_CONTAINER_meta_data_destroy (nm); |
665 | 653 | ||
666 | /* update short_fn */ | 654 | /* update short_fn */ |
667 | GNUNET_free_non_null (*short_fn); | 655 | GNUNET_free_non_null (*short_fn); |
668 | *short_fn = GNUNET_CONTAINER_meta_data_get_first_by_types (meta, | 656 | *short_fn = |
669 | EXTRACTOR_METATYPE_FILENAME, | 657 | GNUNET_CONTAINER_meta_data_get_first_by_types (meta, |
670 | -1); | 658 | EXTRACTOR_METATYPE_FILENAME, |
659 | -1); | ||
671 | /* FIXME: update expiration time? (not yet in dialog!) */ | 660 | /* FIXME: update expiration time? (not yet in dialog!) */ |
672 | return GNUNET_SYSERR; /* only visit top-level item */ | 661 | return GNUNET_SYSERR; /* only visit top-level item */ |
673 | } | 662 | } |
674 | 663 | ||
675 | 664 | ||
@@ -677,11 +666,9 @@ file_information_update (void *cls, | |||
677 | * Open the dialog to edit file information data. | 666 | * Open the dialog to edit file information data. |
678 | */ | 667 | */ |
679 | void | 668 | void |
680 | GNUNET_FS_GTK_edit_publish_dialog (int *do_index, | 669 | GNUNET_FS_GTK_edit_publish_dialog (int *do_index, char **short_fn, |
681 | char **short_fn, | 670 | guint * anonymity_level, guint * priority, |
682 | guint *anonymity_level, | 671 | struct GNUNET_FS_FileInformation *fip) |
683 | guint *priority, | ||
684 | struct GNUNET_FS_FileInformation *fip) | ||
685 | { | 672 | { |
686 | GtkWidget *ad; | 673 | GtkWidget *ad; |
687 | GtkListStore *ls; | 674 | GtkListStore *ls; |
@@ -692,77 +679,92 @@ GNUNET_FS_GTK_edit_publish_dialog (int *do_index, | |||
692 | GtkTreeSelection *sel; | 679 | GtkTreeSelection *sel; |
693 | 680 | ||
694 | GNUNET_assert (builder == NULL); | 681 | GNUNET_assert (builder == NULL); |
695 | builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_edit_dialog.glade"); | 682 | builder = |
683 | GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_edit_dialog.glade"); | ||
696 | if (builder == NULL) | 684 | if (builder == NULL) |
697 | { | 685 | { |
698 | GNUNET_break (0); | 686 | GNUNET_break (0); |
699 | return; | 687 | return; |
700 | } | 688 | } |
701 | preview_changed = GNUNET_NO; | 689 | preview_changed = GNUNET_NO; |
702 | GNUNET_FS_GTK_setup_expiration_year_adjustment (builder); | 690 | GNUNET_FS_GTK_setup_expiration_year_adjustment (builder); |
703 | if (GNUNET_FS_file_information_is_directory (fip)) | 691 | if (GNUNET_FS_file_information_is_directory (fip)) |
704 | { | 692 | { |
705 | /* indexing does not apply to directories */ | 693 | /* indexing does not apply to directories */ |
706 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, | 694 | gtk_widget_hide (GTK_WIDGET |
707 | "GNUNET_GTK_edit_file_information_index_check_button"))); | 695 | (gtk_builder_get_object |
708 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, | 696 | (builder, |
709 | "GNUNET_GTK_edit_file_information_index_label"))); | 697 | "GNUNET_GTK_edit_file_information_index_check_button"))); |
710 | 698 | gtk_widget_hide (GTK_WIDGET | |
711 | } | 699 | (gtk_builder_get_object |
712 | 700 | (builder, | |
713 | ad = GTK_WIDGET (gtk_builder_get_object (builder, | 701 | "GNUNET_GTK_edit_file_information_index_label"))); |
714 | "GNUNET_GTK_edit_file_information_dialog")); | 702 | |
715 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 703 | } |
716 | "GNUNET_GTK_metatype_list_store")); | 704 | |
705 | ad = GTK_WIDGET (gtk_builder_get_object | ||
706 | (builder, "GNUNET_GTK_edit_file_information_dialog")); | ||
707 | ls = GTK_LIST_STORE (gtk_builder_get_object | ||
708 | (builder, "GNUNET_GTK_metatype_list_store")); | ||
717 | max_type = EXTRACTOR_metatype_get_max (); | 709 | max_type = EXTRACTOR_metatype_get_max (); |
718 | type = 1; | 710 | type = 1; |
719 | while (type < max_type - 1) | 711 | while (type < max_type - 1) |
720 | { | 712 | { |
721 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, | 713 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, |
722 | 0, EXTRACTOR_metatype_to_string (type), | 714 | EXTRACTOR_metatype_to_string (type), 1, |
723 | 1, type, | 715 | type, 2, |
724 | 2, EXTRACTOR_metatype_to_description (type), | 716 | EXTRACTOR_metatype_to_description (type), |
725 | -1); | 717 | -1); |
726 | type++; | 718 | type++; |
727 | } | 719 | } |
728 | 720 | ||
729 | GNUNET_FS_file_information_inspect (fip, | 721 | GNUNET_FS_file_information_inspect (fip, &file_information_extract, NULL); |
730 | &file_information_extract, | 722 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
731 | NULL); | 723 | (builder, |
732 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 724 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); |
733 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | ||
734 | sel = gtk_tree_view_get_selection (tv); | 725 | sel = gtk_tree_view_get_selection (tv); |
735 | g_signal_connect(G_OBJECT(sel), "changed", | 726 | g_signal_connect (G_OBJECT (sel), "changed", |
736 | G_CALLBACK(GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb), NULL); | 727 | G_CALLBACK |
737 | 728 | (GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb), | |
738 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 729 | NULL); |
739 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | 730 | |
731 | tv = GTK_TREE_VIEW (gtk_builder_get_object | ||
732 | (builder, | ||
733 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | ||
740 | sel = gtk_tree_view_get_selection (tv); | 734 | sel = gtk_tree_view_get_selection (tv); |
741 | g_signal_connect(G_OBJECT(sel), "changed", | 735 | g_signal_connect (G_OBJECT (sel), "changed", |
742 | G_CALLBACK(metadata_selection_changed_cb), NULL); | 736 | G_CALLBACK (metadata_selection_changed_cb), NULL); |
743 | 737 | ||
744 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 738 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
745 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | 739 | (builder, |
740 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | ||
746 | sel = gtk_tree_view_get_selection (tv); | 741 | sel = gtk_tree_view_get_selection (tv); |
747 | g_signal_connect(G_OBJECT(sel), "changed", | 742 | g_signal_connect (G_OBJECT (sel), "changed", |
748 | G_CALLBACK(keyword_selection_changed_cb), NULL); | 743 | G_CALLBACK (keyword_selection_changed_cb), NULL); |
749 | gtk_window_set_title (GTK_WINDOW (ad), *short_fn); | 744 | gtk_window_set_title (GTK_WINDOW (ad), *short_fn); |
750 | if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad))) | 745 | if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad))) |
751 | { | 746 | { |
752 | gtk_widget_destroy (ad); | 747 | gtk_widget_destroy (ad); |
753 | g_object_unref (G_OBJECT (builder)); | 748 | g_object_unref (G_OBJECT (builder)); |
754 | builder = NULL; | 749 | builder = NULL; |
755 | return; | 750 | return; |
756 | } | 751 | } |
757 | GNUNET_FS_file_information_inspect (fip, | 752 | GNUNET_FS_file_information_inspect (fip, &file_information_update, short_fn); |
758 | &file_information_update, | 753 | *anonymity_level = |
759 | short_fn); | 754 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
760 | *anonymity_level = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 755 | (gtk_builder_get_object |
761 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); | 756 | (builder, |
762 | *priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 757 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); |
763 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | 758 | *priority = |
764 | *do_index = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 759 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
765 | "GNUNET_GTK_edit_file_information_index_check_button"))); | 760 | (gtk_builder_get_object |
761 | (builder, | ||
762 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | ||
763 | *do_index = | ||
764 | gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON | ||
765 | (gtk_builder_get_object | ||
766 | (builder, | ||
767 | "GNUNET_GTK_edit_file_information_index_check_button"))); | ||
766 | gtk_widget_destroy (ad); | 768 | gtk_widget_destroy (ad); |
767 | g_object_unref (G_OBJECT (builder)); | 769 | g_object_unref (G_OBJECT (builder)); |
768 | builder = NULL; | 770 | builder = NULL; |