diff options
Diffstat (limited to 'src/eom-window.c')
-rw-r--r-- | src/eom-window.c | 54 |
1 files changed, 54 insertions, 0 deletions
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 @@ -2954,6 +2954,54 @@ eom_window_cmd_save_as (GtkAction *action, gpointer user_data) } 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) { EomWindow *window = EOM_WINDOW (user_data); @@ -3651,6 +3699,9 @@ static const GtkActionEntry action_entries_image[] = { { "ImageSaveAs", "document-save-as", N_("Save _As…"), "<control><shift>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…"), "<control>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); |