diff options
author | infirit <[email protected]> | 2014-07-26 12:02:15 +0200 |
---|---|---|
committer | infirit <[email protected]> | 2014-07-26 12:48:15 +0200 |
commit | c35741c224cdbb67e05229aaafaa96373e4e7947 (patch) | |
tree | e06e65e25fae86f513c84b4e71928f59135053e0 | |
parent | d056914e3d49734d740c227eda08a9a3711c9ae3 (diff) | |
download | eom-c35741c224cdbb67e05229aaafaa96373e4e7947.tar.bz2 eom-c35741c224cdbb67e05229aaafaa96373e4e7947.tar.xz |
Add Copy Image and Copy Path to clipboard functionality
Based on eog commit 0b209b1ff16e863e60a1d86413aa57c5fbde76b0
From Adrian Hands <[email protected]>
-rw-r--r-- | data/eom-ui.xml | 9 | ||||
-rw-r--r-- | src/eom-window.c | 63 |
2 files changed, 72 insertions, 0 deletions
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 @@ <menu action="Edit"> <menuitem action="EditUndo"/> <separator/> + <menuitem action="EditCopyImage"/> + <menuitem action="EditCopyPath"/> + <separator/> <menuitem action="EditFlipHorizontal"/> <menuitem action="EditFlipVertical"/> <separator/> @@ -113,6 +116,9 @@ <separator/> <menuitem action="ImagePrint"/> <separator/> + <menuitem action="EditCopyImage"/> + <menuitem action="EditCopyPath"> + <separator/> <menuitem action="EditMoveToTrash"/> <separator/> <menuitem action="ImageProperties"/> @@ -129,6 +135,9 @@ <separator/> <menuitem action="ImagePrint"/> <separator/> + <menuitem action="EditCopyImage"/> + <menuitem action="EditCopyPath"> + <separator/> <menuitem action="EditMoveToTrash"/> <separator/> <menuitem action="ImageProperties"/> 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 @@ -3512,6 +3512,63 @@ move_to_trash_real (EomImage *image, GError **error) } 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) { GList *images; @@ -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"), "<control>plus", N_("Enlarge the image"), G_CALLBACK (eom_window_cmd_zoom_in) }, |