aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-fs-gtk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/gnunet-fs-gtk.c')
-rw-r--r--src/fs/gnunet-fs-gtk.c234
1 files changed, 145 insertions, 89 deletions
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 {