summaryrefslogtreecommitdiff
path: root/src/eom-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eom-window.c')
-rw-r--r--src/eom-window.c54
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);