From 07de8758476b62430ca15f29d0d75b88afef1345 Mon Sep 17 00:00:00 2001 From: Akshay Gupta Date: Fri, 20 May 2011 12:07:19 +0200 Subject: Add an "Open containing folder" command https://bugzilla.gnome.org/show_bug.cgi?id=650402 origin commit: https://git.gnome.org/browse/eog/commit/?id=9df5fd43 --- src/eom-window.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src/eom-window.c') diff --git a/src/eom-window.c b/src/eom-window.c index a8dca71..4bff663 100644 --- a/src/eom-window.c +++ b/src/eom-window.c @@ -2953,6 +2953,54 @@ eom_window_cmd_save_as (GtkAction *action, gpointer user_data) eom_job_queue_add_job (priv->save_job); } +static void +eom_window_cmd_open_containing_folder (GtkAction *action, gpointer user_data) +{ + EomWindow *window = EOM_WINDOW (user_data); + EomWindowPrivate *priv; + + GtkWidget *eom_window_widget; + + GFile *file; + GFile *parent = NULL; + + eom_window_widget = GTK_WIDGET (window); + priv = window->priv; + + g_return_if_fail (priv->image != NULL); + + file = eom_image_get_file (priv->image); + + if (file) { + parent = g_file_get_parent (file); + g_object_unref(file); + } + + if (parent) { + char *parent_uri; + + parent_uri = g_file_get_uri (parent); + if (parent_uri) { + GdkScreen *screen; + guint32 timestamp; + GError *error; + + screen = gtk_widget_get_screen (eom_window_widget); + timestamp = gtk_get_current_event_time (); + + error = NULL; + if (!gtk_show_uri (screen, parent_uri, timestamp, &error)) { + eom_debug_message (DEBUG_WINDOW, "Could not open the containing folder"); + g_error_free (error); + } + + g_free (parent_uri); + } + + g_object_unref(parent); + } +} + static void eom_window_cmd_print (GtkAction *action, gpointer user_data) { @@ -3651,6 +3699,9 @@ static const GtkActionEntry action_entries_image[] = { { "ImageSaveAs", "document-save-as", N_("Save _As…"), "s", N_("Save the selected images with a different name"), G_CALLBACK (eom_window_cmd_save_as) }, + { "ImageOpenContainingFolder", GTK_STOCK_DIRECTORY, N_("Open Containing _Folder"), NULL, + N_("Show the folder which contains this file in the file manager"), + G_CALLBACK (eom_window_cmd_open_containing_folder) }, { "ImagePrint", "document-print", N_("_Print…"), "p", N_("Print the selected image"), G_CALLBACK (eom_window_cmd_print) }, @@ -3824,6 +3875,9 @@ set_action_properties (GtkActionGroup *window_group, action = gtk_action_group_get_action (image_group, "EditRotate270"); g_object_set (action, "short_label", _("Left"), NULL); + action = gtk_action_group_get_action (image_group, "ImageOpenContainingFolder"); + g_object_set (action, "short_label", _("Open Folder"), NULL); + action = gtk_action_group_get_action (image_group, "ViewZoomIn"); g_object_set (action, "short_label", _("In"), NULL); -- cgit v1.2.1