Skip to content
Permalink
Browse files

Add an "Open containing folder" command

  • Loading branch information...
kitallis authored and raveit65 committed May 20, 2011
1 parent 1333035 commit 07de8758476b62430ca15f29d0d75b88afef1345
Showing with 58 additions and 0 deletions.
  1. +1 −0 data/eom-toolbar.xml
  2. +3 −0 data/eom-ui.xml
  3. +54 −0 src/eom-window.c
@@ -3,6 +3,7 @@
<available>
<toolitem name="ImageOpen"/>
<toolitem name="ImageSave"/>
<toolitem name="ImageOpenContainingFolder"/>
<toolitem name="ImagePrint"/>
<toolitem name="ImageProperties"/>
<toolitem name="ViewImageCollection"/>
@@ -12,6 +12,7 @@
<menuitem action="ImagePrint"/>
<separator/>
<menuitem action="ImageSetAsWallpaper"/>
<menuitem action="ImageOpenContainingFolder"/>
<separator/>
<menuitem action="ImageProperties"/>
<separator/>
@@ -121,6 +122,7 @@
<separator/>
<menuitem action="ImageProperties"/>
<menuitem action="ImageSetAsWallpaper"/>
<menuitem action="ImageOpenContainingFolder"/>
</popup>

<popup name="ViewPopup">
@@ -139,6 +141,7 @@
<separator/>
<menuitem action="ImageProperties"/>
<menuitem action="ImageSetAsWallpaper"/>
<menuitem action="ImageOpenContainingFolder"/>
</popup>

<popup name="ToolbarPopup" action="ToolbarPopupAction">
@@ -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…"), "<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);

0 comments on commit 07de875

Please sign in to comment.
You can’t perform that action at this time.