From c35741c224cdbb67e05229aaafaa96373e4e7947 Mon Sep 17 00:00:00 2001 From: infirit Date: Sat, 26 Jul 2014 12:02:15 +0200 Subject: Add Copy Image and Copy Path to clipboard functionality Based on eog commit 0b209b1ff16e863e60a1d86413aa57c5fbde76b0 From Adrian Hands --- data/eom-ui.xml | 9 ++++++++ src/eom-window.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/data/eom-ui.xml b/data/eom-ui.xml index 7673cd6..59056e6 100644 --- a/data/eom-ui.xml +++ b/data/eom-ui.xml @@ -22,6 +22,9 @@ + + + @@ -113,6 +116,9 @@ + + + @@ -129,6 +135,9 @@ + + + diff --git a/src/eom-window.c b/src/eom-window.c index 43c1312..5b4f59d 100644 --- a/src/eom-window.c +++ b/src/eom-window.c @@ -3511,6 +3511,63 @@ move_to_trash_real (EomImage *image, GError **error) return result; } +static void +eom_window_cmd_copy_path (GtkAction *action, gpointer user_data) +{ + EomWindow *window; + EomWindowPrivate *priv; + EomImage *image; + GFile *file; + char *filename = NULL; + GtkClipboard *clipboard; + + g_return_if_fail (EOM_IS_WINDOW (user_data)); + + window = EOM_WINDOW (user_data); + priv = window->priv; + + image = eom_thumb_view_get_first_selected_image (EOM_THUMB_VIEW (priv->thumbview)); + + g_return_if_fail (EOM_IS_IMAGE (image)); + + file = eom_image_get_file (image); + + filename = g_file_get_path (file); + + clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_text (clipboard, filename, -1); + + g_object_unref (file); + g_free (filename); + +} + +static void +eom_window_cmd_copy_image (GtkAction *action, gpointer user_data) +{ + GtkClipboard *clipboard; + GdkPixbuf *pix; + EomWindow *window; + EomWindowPrivate *priv; + EomImage *image; + + g_return_if_fail (EOM_IS_WINDOW (user_data)); + + window = EOM_WINDOW (user_data); + priv = window->priv; + + image = eom_thumb_view_get_first_selected_image (EOM_THUMB_VIEW (priv->thumbview)); + + g_return_if_fail (EOM_IS_IMAGE (image)); + + pix = eom_image_get_pixbuf (image); + + clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_image (clipboard, pix); + + g_object_unref (pix); +} + static void eom_window_cmd_move_to_trash (GtkAction *action, gpointer user_data) { @@ -3894,6 +3951,12 @@ static const GtkActionEntry action_entries_image[] = { { "EditMoveToTrash", "user-trash", N_("Move to _Trash"), NULL, N_("Move the selected image to the trash folder"), G_CALLBACK (eom_window_cmd_move_to_trash) }, + { "EditCopyPath", NULL, N_("Copy _Path"), NULL, + N_("Copy the image file path to the clipboard"), + G_CALLBACK (eom_window_cmd_copy_path) }, + { "EditCopyImage", NULL, N_("Copy _Image"), NULL, + N_("Copy the image to the clipboard"), + G_CALLBACK (eom_window_cmd_copy_image) }, { "ViewZoomIn", GTK_STOCK_ZOOM_IN, N_("_Zoom In"), "plus", N_("Enlarge the image"), G_CALLBACK (eom_window_cmd_zoom_in) }, -- cgit v1.2.1