diff options
Diffstat (limited to 'src/plugins/fs/search.c')
-rw-r--r-- | src/plugins/fs/search.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/plugins/fs/search.c b/src/plugins/fs/search.c index cc5e1473..b92b50a3 100644 --- a/src/plugins/fs/search.c +++ b/src/plugins/fs/search.c | |||
@@ -352,6 +352,63 @@ void fs_search_update (SearchList * searchContext, | |||
352 | } | 352 | } |
353 | 353 | ||
354 | 354 | ||
355 | |||
356 | |||
357 | static int | ||
358 | on_search_display_metadata_activate (void *cls, GtkWidget * searchEntry) | ||
359 | { | ||
360 | SearchList *list = cls; | ||
361 | GtkTreePath *path; | ||
362 | GtkTreeIter iter; | ||
363 | struct GNUNET_ECRS_URI *uri; | ||
364 | struct GNUNET_ECRS_MetaData * meta; | ||
365 | char *str; | ||
366 | GladeXML * xml; | ||
367 | GtkWidget * dialog; | ||
368 | |||
369 | path = NULL; | ||
370 | if (FALSE == gtk_tree_view_get_path_at_pos (list->treeview, | ||
371 | list->last_x, | ||
372 | list->last_y, | ||
373 | &path, NULL, NULL, NULL)) | ||
374 | { | ||
375 | GNUNET_GE_BREAK (NULL, 0); | ||
376 | return FALSE; | ||
377 | } | ||
378 | if (FALSE == gtk_tree_model_get_iter (GTK_TREE_MODEL (list->tree), | ||
379 | &iter, path)) | ||
380 | { | ||
381 | GNUNET_GE_BREAK (NULL, 0); | ||
382 | gtk_tree_path_free (path); | ||
383 | return FALSE; | ||
384 | } | ||
385 | gtk_tree_path_free (path); | ||
386 | uri = NULL; | ||
387 | meta = NULL; | ||
388 | gtk_tree_model_get (GTK_TREE_MODEL (list->tree), | ||
389 | &iter, | ||
390 | SEARCH_URI, &uri, | ||
391 | SEARCH_META, &meta, | ||
392 | -1); | ||
393 | str = GNUNET_ECRS_uri_to_string (uri); | ||
394 | xml = glade_xml_new(GNUNET_GTK_get_glade_filename (), | ||
395 | "metaDisplayDialog", | ||
396 | PACKAGE_NAME); | ||
397 | GNUNET_GTK_connect_glade_with_plugins (xml); | ||
398 | dialog = glade_xml_get_widget (xml, "metaDisplayDialog"); | ||
399 | gtk_window_set_title(GTK_WINDOW(dialog), str); | ||
400 | createMetaDataListTreeView(xml, | ||
401 | "metaDisplayDialogTreeView", | ||
402 | NULL, | ||
403 | meta); | ||
404 | gtk_dialog_run (GTK_DIALOG (dialog)); | ||
405 | GNUNET_free_non_null (str); | ||
406 | gtk_widget_destroy (dialog); | ||
407 | UNREF (xml); | ||
408 | return FALSE; | ||
409 | } | ||
410 | |||
411 | |||
355 | static int | 412 | static int |
356 | on_search_copy_uri_activate (void *cls, GtkWidget * searchEntry) | 413 | on_search_copy_uri_activate (void *cls, GtkWidget * searchEntry) |
357 | { | 414 | { |
@@ -510,6 +567,16 @@ search_click_handler (void *cls, GdkEvent * event) | |||
510 | list->last_x = event_button->x; | 567 | list->last_x = event_button->x; |
511 | list->last_y = event_button->y; | 568 | list->last_y = event_button->y; |
512 | menu = GTK_MENU (gtk_menu_new ()); | 569 | menu = GTK_MENU (gtk_menu_new ()); |
570 | |||
571 | entry = gtk_menu_item_new_with_label (_("_Display metadata")); | ||
572 | g_signal_connect_swapped (entry, | ||
573 | "activate", | ||
574 | G_CALLBACK (on_search_display_metadata_activate), list); | ||
575 | gtk_label_set_use_underline (GTK_LABEL | ||
576 | (gtk_bin_get_child (GTK_BIN (entry))), TRUE); | ||
577 | gtk_widget_show (entry); | ||
578 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), entry); | ||
579 | |||
513 | entry = gtk_menu_item_new_with_label (_("_Copy URI to Clipboard")); | 580 | entry = gtk_menu_item_new_with_label (_("_Copy URI to Clipboard")); |
514 | g_signal_connect_swapped (entry, | 581 | g_signal_connect_swapped (entry, |
515 | "activate", | 582 | "activate", |
@@ -518,6 +585,7 @@ search_click_handler (void *cls, GdkEvent * event) | |||
518 | (gtk_bin_get_child (GTK_BIN (entry))), TRUE); | 585 | (gtk_bin_get_child (GTK_BIN (entry))), TRUE); |
519 | gtk_widget_show (entry); | 586 | gtk_widget_show (entry); |
520 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), entry); | 587 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), entry); |
588 | |||
521 | entry = gtk_menu_item_new_with_label (_("_Save results as directory")); | 589 | entry = gtk_menu_item_new_with_label (_("_Save results as directory")); |
522 | g_signal_connect_swapped (entry, | 590 | g_signal_connect_swapped (entry, |
523 | "activate", | 591 | "activate", |
@@ -526,6 +594,8 @@ search_click_handler (void *cls, GdkEvent * event) | |||
526 | (gtk_bin_get_child (GTK_BIN (entry))), TRUE); | 594 | (gtk_bin_get_child (GTK_BIN (entry))), TRUE); |
527 | gtk_widget_show (entry); | 595 | gtk_widget_show (entry); |
528 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), entry); | 596 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), entry); |
597 | |||
598 | |||
529 | gtk_menu_popup (menu, | 599 | gtk_menu_popup (menu, |
530 | NULL, | 600 | NULL, |
531 | NULL, NULL, NULL, event_button->button, event_button->time); | 601 | NULL, NULL, NULL, event_button->button, event_button->time); |