Skip to content

Commit

Permalink
Add support for showing containing folder
Browse files Browse the repository at this point in the history
The `EXO_{CFLAGS,LIBS}` is not cleaned up on its previous usage.

exo (>= 4.16) will fallback to xdg-mime when xfce4-mime-helper is
missing so this should work everywhere I think.
  • Loading branch information
bobby285271 committed Jan 19, 2025
1 parent 59a4d16 commit 7cd0d7b
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
2 changes: 2 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ XDT_VERSION_INIT([0.13.3], [git])
dnl minimum required versions
m4_define([glib_min_version], [2.56.0])
m4_define([gtk_min_version], [3.22.0])
m4_define([exo_min_version], [4.16.0])
m4_define([libxfce4ui_min_version], [4.16.0])
m4_define([libxfce4util_min_version], [4.16.0])
m4_define([xfconf_min_version], [4.12.1])
Expand Down Expand Up @@ -59,6 +60,7 @@ XDT_CHECK_PACKAGE([GIO], [gio-2.0], [glib_min_version])
XDT_CHECK_PACKAGE([GIO_UNIX], [gio-unix-2.0], [glib_min_version])
XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [gtk_min_version])

XDT_CHECK_PACKAGE([EXO], [exo-2], [exo_min_version])
XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [libxfce4ui_min_version])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [libxfce4util_min_version])
XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [xfconf_min_version])
Expand Down
43 changes: 43 additions & 0 deletions src/main_window.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@
#include "thumbnailer.h"
#include "xfce_wallpaper_manager.h"

#include <exo/exo.h>
#include <gio/gdesktopappinfo.h>
#include <libxfce4ui/libxfce4ui.h>



Expand Down Expand Up @@ -248,6 +250,11 @@ cb_rstto_main_window_preferences (GtkWidget *widget,
static void
cb_rstto_main_window_copy_image (GtkWidget *widget,
RsttoMainWindow *window);

static void
cb_rstto_main_window_show_containing_folder (GtkWidget *widget,
RsttoMainWindow *window);

static void
cb_rstto_main_window_clear_private_data (GtkWidget *widget,
RsttoMainWindow *window);
Expand Down Expand Up @@ -370,6 +377,12 @@ static GtkActionEntry action_entries[] = {
"<control>C",
NULL,
G_CALLBACK (cb_rstto_main_window_copy_image) },
{ "show-containing-folder",
NULL,
N_ ("_Show containing folder"),
NULL,
NULL,
G_CALLBACK (cb_rstto_main_window_show_containing_folder) },
{ "open-with-menu",
NULL,
N_ ("_Open with"),
Expand Down Expand Up @@ -1719,6 +1732,7 @@ rstto_main_activate_file_menu_actions (RsttoMainWindow *window,
"/main-menu/file-menu/properties",
"/main-menu/file-menu/close",
"/main-menu/edit-menu/copy-image",
"/main-menu/edit-menu/show-containing-folder",
"/main-menu/edit-menu/delete"
};

Expand Down Expand Up @@ -1789,6 +1803,7 @@ rstto_main_activate_popup_menu_actions (RsttoMainWindow *window,
"/image-viewer-menu/close",
"/image-viewer-menu/open-with-menu",
"/image-viewer-menu/copy-image",
"/image-viewer-menu/show-containing-folder",
"/image-viewer-menu/zoom-in",
"/image-viewer-menu/zoom-out",
"/image-viewer-menu/zoom-100",
Expand Down Expand Up @@ -4327,6 +4342,34 @@ cb_rstto_main_window_copy_image (GtkWidget *widget,
}
}

static void
cb_rstto_main_window_show_containing_folder (GtkWidget *widget,
RsttoMainWindow *window)
{
RsttoFile *r_file;
GFile *file, *parent_file;
gchar *uri = NULL;
GError *error = NULL;

r_file = rstto_image_list_iter_get_file (window->priv->iter);
file = rstto_file_get_file (r_file);

parent_file = g_file_get_parent (file);
if (G_LIKELY (parent_file))
{
uri = g_file_get_uri (parent_file);
g_object_unref (parent_file);
}

if (!exo_execute_preferred_application ("FileManager", uri, NULL, NULL, &error))
{
xfce_dialog_show_error (GTK_WINDOW (window), error, _("Failed to show containing folder \"%s\"."), uri);
g_error_free (error);
}

g_free (uri);
}

static void
cb_rstto_main_window_clear_private_data (GtkWidget *widget,
RsttoMainWindow *window)
Expand Down
4 changes: 3 additions & 1 deletion src/main_window_ui.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
</menu>
<menu action="edit-menu">
<menuitem action="copy-image"/>
<menuitem action="show-containing-folder"/>
<separator/>
<menu action="open-with-menu">
<placeholder name="open-with-apps" />
Expand Down Expand Up @@ -116,7 +117,8 @@
<menuitem action="properties"/>
<menuitem action="print"/>
<menuitem action="close"/>
<menuitem action="copy-image"/>
<menuitem action="copy-image"/>
<menuitem action="show-containing-folder"/>
<separator/>
<menu action="open-with-menu">
<placeholder name="open-with-apps" />
Expand Down

0 comments on commit 7cd0d7b

Please sign in to comment.