[Xfce4-commits] [xfce/xfdesktop] 28/34: Port the rest to GDBus
noreply at xfce.org
noreply at xfce.org
Sun Apr 16 07:07:02 CEST 2017
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository xfce/xfdesktop.
commit 78d841b96ce49e0427ceaa486904a529858da0bd
Author: Eric Koegel <eric.koegel at gmail.com>
Date: Sun Jun 12 10:43:28 2016 +0300
Port the rest to GDBus
---
.gitignore | 3 +
src/Makefile.am | 54 +++--
src/xfdesktop-file-icon-manager.c | 85 +-------
src/xfdesktop-file-utils.c | 422 +++++++++++++++++++++++++-------------
src/xfdesktop-file-utils.h | 5 +-
5 files changed, 313 insertions(+), 256 deletions(-)
diff --git a/.gitignore b/.gitignore
index abd4a52..6458620 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,8 +61,11 @@ common/xfdesktop-marshal.c
common/xfdesktop-marshal.h
common/tumbler.c
common/tumbler.h
+src/xfdesktop-file-manager-proxy.c
src/xfdesktop-file-manager-proxy.h
+src/xfdesktop-thunar-proxy.c
src/xfdesktop-thunar-proxy.h
+src/xfdesktop-trash-proxy.c
src/xfdesktop-trash-proxy.h
src/xfdesktop-file-manager-proxy.c
src/xfdesktop-thunar-proxy.c
diff --git a/src/Makefile.am b/src/Makefile.am
index b690e17..5dd4821 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -127,13 +127,10 @@ if ENABLE_FILE_ICONS
xfdesktop_SOURCES += $(desktop_file_icon_sources)
xfdesktop_CFLAGS += \
- -DDBUS_API_SUBJECT_TO_CHANGE \
- $(THUNARX_CFLAGS) \
- $(DBUS_CFLAGS)
+ $(THUNARX_CFLAGS)
xfdesktop_LDADD += \
- $(THUNARX_LIBS) \
- $(DBUS_LIBS)
+ $(THUNARX_LIBS)
endif
endif
@@ -179,33 +176,34 @@ xfce-desktop-enum-types.c: $(enum_headers) Makefile
if ENABLE_FILE_ICONS
xfdesktop_built_sources += \
+ xfdesktop-file-manager-proxy.c \
xfdesktop-file-manager-proxy.h \
+ xfdesktop-thunar-proxy.c \
xfdesktop-thunar-proxy.h \
+ xfdesktop-trash-proxy.c \
xfdesktop-trash-proxy.h
-xfdesktop-file-manager-proxy.h: $(srcdir)/xfdesktop-file-manager-dbus.xml Makefile
- $(AM_V_GEN) ( \
- dbus-binding-tool --mode=glib-client \
- $(srcdir)/xfdesktop-file-manager-dbus.xml > xfdesktop-file-manager-proxy.h \
- && $(SED) -i -e 's/org_xfce_FileManager/xfdesktop_file_manager_proxy/g' \
- xfdesktop-file-manager-proxy.h \
- )
-
-xfdesktop-thunar-proxy.h: $(srcdir)/xfdesktop-thunar-dbus.xml Makefile
- $(AM_V_GEN) ( \
- dbus-binding-tool --mode=glib-client \
- $(srcdir)/xfdesktop-thunar-dbus.xml > xfdesktop-thunar-proxy.h \
- && $(SED) -i -e 's/org_xfce_Thunar/xfdesktop_thunar_proxy/g' \
- xfdesktop-thunar-proxy.h \
- )
-
-xfdesktop-trash-proxy.h: $(srcdir)/xfdesktop-trash-dbus.xml Makefile
- $(AM_V_GEN) ( \
- dbus-binding-tool --mode=glib-client \
- $(srcdir)/xfdesktop-trash-dbus.xml > xfdesktop-trash-proxy.h \
- && $(SED) -i -e 's/org_xfce_Trash/xfdesktop_trash_proxy/g' \
- xfdesktop-trash-proxy.h \
- )
+
+xfdesktop-file-manager-proxy.c xfdesktop-file-manager-proxy.h : $(srcdir)/xfdesktop-file-manager-dbus.xml Makefile
+ gdbus-codegen \
+ --c-namespace=Xfdesktop \
+ --interface-prefix=org.xfce. \
+ --generate-c-code=xfdesktop-file-manager-proxy \
+ $(srcdir)/xfdesktop-file-manager-dbus.xml
+
+xfdesktop-thunar-proxy.c xfdesktop-thunar-proxy.h : $(srcdir)/xfdesktop-thunar-dbus.xml Makefile
+ gdbus-codegen \
+ --c-namespace=Xfdesktop \
+ --interface-prefix=org.xfce. \
+ --generate-c-code=xfdesktop-thunar-proxy \
+ $(srcdir)/xfdesktop-thunar-dbus.xml
+
+xfdesktop-trash-proxy.c xfdesktop-trash-proxy.h : $(srcdir)/xfdesktop-trash-dbus.xml Makefile
+ gdbus-codegen \
+ --c-namespace=Xfdesktop \
+ --interface-prefix=org.xfce. \
+ --generate-c-code=xfdesktop-trash-proxy \
+ $(srcdir)/xfdesktop-trash-dbus.xml
endif
diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c
index fcdaac1..35eaad7 100644
--- a/src/xfdesktop-file-icon-manager.c
+++ b/src/xfdesktop-file-icon-manager.c
@@ -65,11 +65,9 @@
#include "xfdesktop-file-icon.h"
#include "xfdesktop-file-icon-manager.h"
#include "xfdesktop-file-utils.h"
-#include "xfdesktop-file-manager-proxy.h"
#include "xfdesktop-icon-view.h"
#include "xfdesktop-regular-file-icon.h"
#include "xfdesktop-special-file-icon.h"
-#include "xfdesktop-trash-proxy.h"
#include "xfdesktop-volume-icon.h"
#include "xfdesktop-thumbnailer.h"
@@ -234,13 +232,6 @@ G_DEFINE_TYPE_EXTENDED(XfdesktopFileIconManager,
#define XFDESKTOP_FILE_ICON_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), XFDESKTOP_TYPE_ICON_VIEW_MANAGER, XfdesktopFileIconManagerPrivate))
-typedef struct
-{
- XfdesktopFileIconManager *fmanager;
- DBusGProxy *proxy;
- DBusGProxyCall *call;
- GList *files;
-} XfdesktopTrashFilesData;
enum
{
@@ -701,79 +692,21 @@ xfdesktop_file_icon_manager_delete_files(XfdesktopFileIconManager *fmanager,
g_list_free(gfiles);
}
-static void
-xfdesktop_file_icon_manager_trash_files_cb(DBusGProxy *proxy,
- GError *error,
- gpointer user_data)
-{
- XfdesktopFileIconManager *fmanager = user_data;
-
- g_return_if_fail(fmanager);
-
- if(error) {
- GtkWidget *parent = gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
-
- xfce_message_dialog(GTK_WINDOW(parent),
- _("Trash Error"), "dialog-error",
- _("The selected files could not be trashed"),
- _("This feature requires a file manager service to "
- "be present (such as the one supplied by Thunar)."),
- XFCE_BUTTON_TYPE_MIXED, "window-close", _("_Close"), GTK_RESPONSE_ACCEPT,
- NULL);
- }
-}
-
static gboolean
xfdesktop_file_icon_manager_trash_files(XfdesktopFileIconManager *fmanager,
GList *files)
{
- DBusGProxy *trash_proxy = xfdesktop_file_utils_peek_trash_proxy();
- gboolean result = TRUE;
- gchar **uris, *display_name, *startup_id;
- GList *l;
- gint i, nfiles;
- GFile *file;
-
- g_return_val_if_fail(files, TRUE);
-
- if(!trash_proxy)
- return FALSE;
-
- nfiles = g_list_length(files);
- uris = g_new(gchar *, nfiles + 1);
-
- for(l = files, i = 0; l; l = l->next, ++i) {
- file = xfdesktop_file_icon_peek_file(XFDESKTOP_FILE_ICON(l->data));
- uris[i] = g_file_get_uri(file);
- }
- uris[nfiles] = NULL;
-
- display_name = gdk_screen_make_display_name(fmanager->priv->gscreen);
- startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
-
- if (!xfdesktop_trash_proxy_move_to_trash_async(trash_proxy, (const char **)uris,
- display_name, startup_id,
- xfdesktop_file_icon_manager_trash_files_cb,
- fmanager))
- {
- GtkWidget *parent = gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
+ GtkWidget *toplevel = gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
+ GList *gfiles = NULL, *lp;
- xfce_message_dialog(GTK_WINDOW(parent),
- _("Trash Error"), "dialog-error",
- _("The selected files could not be trashed"),
- _("This feature requires a file manager service to "
- "be present (such as the one supplied by Thunar)."),
- XFCE_BUTTON_TYPE_MIXED, "window-close", _("_Close"), GTK_RESPONSE_ACCEPT,
- NULL);
+ for(lp = g_list_last(files); lp != NULL; lp = lp->prev)
+ gfiles = g_list_prepend(gfiles, xfdesktop_file_icon_peek_file(lp->data));
- result = FALSE;
- }
-
- g_free(startup_id);
- g_strfreev(uris);
- g_free(display_name);
-
- return result;
+ xfdesktop_file_utils_trash_files(gfiles, fmanager->priv->gscreen,
+ GTK_WINDOW(toplevel));
+
+ g_list_free(gfiles);
+ return TRUE;
}
static void
diff --git a/src/xfdesktop-file-utils.c b/src/xfdesktop-file-utils.c
index 573c336..2d6f1e7 100644
--- a/src/xfdesktop-file-utils.c
+++ b/src/xfdesktop-file-utils.c
@@ -51,8 +51,6 @@
#include <exo/exo.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
#ifdef HAVE_THUNARX
#include <thunarx/thunarx.h>
#endif
@@ -66,6 +64,15 @@
static void xfdesktop_file_utils_add_emblems(GdkPixbuf *pix, GList *emblems);
+static XfdesktopTrash *xfdesktop_file_utils_peek_trash_proxy(void);
+static XfdesktopFileManager *xfdesktop_file_utils_peek_filemanager_proxy(void);
+
+#ifdef HAVE_THUNARX
+static XfdesktopThunar *xfdesktop_file_utils_peek_thunar_proxy(void);
+#else
+static gpointer xfdesktop_file_utils_peek_thunar_proxy(void);
+#endif
+
gboolean
xfdesktop_file_utils_is_desktop_file(GFileInfo *info)
{
@@ -674,30 +681,36 @@ xfdesktop_file_utils_open_folder(GFile *file,
}
static void
-xfdesktop_file_utils_async_cb(DBusGProxy *proxy, GError *error, gpointer userdata)
+xfdesktop_file_utils_async_handle_error(GError *error, gpointer userdata)
{
GtkWindow *parent = GTK_WINDOW(userdata);
if(error != NULL) {
- /* ignore dbus timeout error (bug #11283) */
- if(error->code != DBUS_GERROR_NO_REPLY) {
- xfce_message_dialog(parent,
- _("Error"), "dialog-error",
- _("The requested operation could not be completed"),
- error->message,
- XFCE_BUTTON_TYPE_MIXED, "window-close", _("_Close"), GTK_RESPONSE_ACCEPT,
- NULL);
- }
+ xfce_message_dialog(parent,
+ _("Error"), "dialog-error",
+ _("The requested operation could not be completed"),
+ error->message,
+ XFCE_BUTTON_TYPE_MIXED, "window-close", _("_Close"), GTK_RESPONSE_ACCEPT,
+ NULL);
+
g_clear_error(&error);
}
}
+static void
+rename_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_rename_file_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_rename_file(GFile *file,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(file));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -712,10 +725,12 @@ xfdesktop_file_utils_rename_file(GFile *file,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_rename_file_async(fileman_proxy,
- uri, NULL, startup_id,
- (xfdesktop_file_manager_proxy_rename_file_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_file_manager_call_rename_file(fileman_proxy,
+ uri, "", startup_id,
+ NULL,
+ rename_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -732,13 +747,21 @@ xfdesktop_file_utils_rename_file(GFile *file,
}
}
+static void
+bulk_rename_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_thunar_call_bulk_rename_finish(XFDESKTOP_THUNAR(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_bulk_rename(GFile *working_directory,
GList *files,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *thunar_proxy;
+ XfdesktopThunar *thunar_proxy;
g_return_if_fail(G_IS_FILE(working_directory));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -762,11 +785,13 @@ xfdesktop_file_utils_bulk_rename(GFile *working_directory,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_thunar_proxy_bulk_rename_async(thunar_proxy,
- directory, (const gchar **)filenames,
- FALSE, NULL, startup_id,
- (xfdesktop_thunar_proxy_bulk_rename_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_thunar_call_bulk_rename(thunar_proxy,
+ directory, (const gchar **)filenames,
+ FALSE, "", startup_id,
+ NULL,
+ bulk_rename_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -784,12 +809,20 @@ xfdesktop_file_utils_bulk_rename(GFile *working_directory,
}
}
+static void
+unlink_files_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_unlink_files_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_unlink_files(GList *files,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(files != NULL && G_IS_FILE(files->data));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -812,11 +845,13 @@ xfdesktop_file_utils_unlink_files(GList *files,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_unlink_files_async(fileman_proxy,
- NULL, (const gchar **)uris,
- NULL, startup_id,
- (xfdesktop_file_manager_proxy_unlink_files_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_file_manager_call_unlink_files(fileman_proxy,
+ "", (const gchar **)uris,
+ "", startup_id,
+ NULL,
+ unlink_files_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -833,12 +868,20 @@ xfdesktop_file_utils_unlink_files(GList *files,
}
}
+static void
+trash_files_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_trash_call_move_to_trash_finish(XFDESKTOP_TRASH(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_trash_files(GList *files,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *trash_proxy;
+ XfdesktopTrash *trash_proxy;
g_return_if_fail(files != NULL && G_IS_FILE(files->data));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -861,11 +904,13 @@ xfdesktop_file_utils_trash_files(GList *files,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_trash_proxy_move_to_trash_async(trash_proxy,
- (const gchar **)uris,
- NULL, startup_id,
- (xfdesktop_trash_proxy_move_to_trash_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_trash_call_move_to_trash(trash_proxy,
+ (const gchar **)uris,
+ "", startup_id,
+ NULL,
+ trash_files_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -882,11 +927,19 @@ xfdesktop_file_utils_trash_files(GList *files,
}
}
+static void
+empty_trash_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_trash_call_empty_trash_finish(XFDESKTOP_TRASH(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_empty_trash(GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *trash_proxy;
+ XfdesktopTrash *trash_proxy;
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -899,10 +952,12 @@ xfdesktop_file_utils_empty_trash(GdkScreen *screen,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_trash_proxy_empty_trash_async(trash_proxy,
- NULL, startup_id,
- (xfdesktop_trash_proxy_empty_trash_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_trash_call_empty_trash(trash_proxy,
+ "", startup_id,
+ NULL,
+ empty_trash_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -918,13 +973,21 @@ xfdesktop_file_utils_empty_trash(GdkScreen *screen,
}
}
+static void
+create_file_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_create_file_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_create_file(GFile *parent_folder,
const gchar *content_type,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(parent_folder));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -939,12 +1002,14 @@ xfdesktop_file_utils_create_file(GFile *parent_folder,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_create_file_async(fileman_proxy,
- parent_directory,
- content_type, NULL,
- startup_id,
- (xfdesktop_file_manager_proxy_create_file_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_file_manager_call_create_file(fileman_proxy,
+ parent_directory,
+ content_type, "",
+ startup_id,
+ NULL,
+ create_file_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -961,13 +1026,21 @@ xfdesktop_file_utils_create_file(GFile *parent_folder,
}
}
+static void
+create_file_from_template_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_create_file_from_template_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_create_file_from_template(GFile *parent_folder,
GFile *template_file,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(parent_folder));
g_return_if_fail(G_IS_FILE(template_file));
@@ -984,13 +1057,15 @@ xfdesktop_file_utils_create_file_from_template(GFile *parent_folder,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_create_file_from_template_async(fileman_proxy,
- parent_directory,
- template_uri,
- NULL,
- startup_id,
- (xfdesktop_file_manager_proxy_create_file_from_template_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_file_manager_call_create_file_from_template(fileman_proxy,
+ parent_directory,
+ template_uri,
+ "",
+ startup_id,
+ NULL,
+ create_file_from_template_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -1007,12 +1082,20 @@ xfdesktop_file_utils_create_file_from_template(GFile *parent_folder,
}
}
+static void
+show_properties_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_display_file_properties_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_show_properties_dialog(GFile *file,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(file));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -1027,10 +1110,12 @@ xfdesktop_file_utils_show_properties_dialog(GFile *file,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_display_file_properties_async(fileman_proxy,
- uri, NULL, startup_id,
- (xfdesktop_file_manager_proxy_display_file_properties_reply)xfdesktop_file_utils_async_cb,
- parent);
+
+ xfdesktop_file_manager_call_display_file_properties(fileman_proxy,
+ uri, "", startup_id,
+ NULL,
+ show_properties_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -1047,12 +1132,20 @@ xfdesktop_file_utils_show_properties_dialog(GFile *file,
}
}
+static void
+launch_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_launch_files_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_launch(GFile *file,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(file));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -1062,20 +1155,31 @@ xfdesktop_file_utils_launch(GFile *file,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- gchar *uri = g_file_get_uri(file);
- gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
+ gchar **uris;
+ GFile *parent_file = g_file_get_parent(file);
+ gchar *parent_path = g_file_get_path(parent_file);
+ gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_launch_async(fileman_proxy,
- uri, NULL, startup_id,
- (xfdesktop_file_manager_proxy_launch_reply)xfdesktop_file_utils_async_cb,
- parent);
+ uris = g_new0(gchar *, 2);
+ uris[0] = g_file_get_uri(file);
+ uris[1] = NULL;
+
+ xfdesktop_file_manager_call_launch_files(fileman_proxy, parent_path,
+ (const gchar * const*)uris,
+ "", startup_id,
+ NULL,
+ launch_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
g_free(startup_id);
- g_free(uri);
+ g_free(uris[0]);
+ g_free(uris);
+ g_free(parent_path);
+ g_object_unref(parent_file);
} else {
xfce_message_dialog(parent,
_("Launch Error"), "dialog-error",
@@ -1094,7 +1198,7 @@ xfdesktop_file_utils_execute(GFile *working_directory,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
gboolean success = TRUE;
g_return_val_if_fail(working_directory == NULL || G_IS_FILE(working_directory), FALSE);
@@ -1144,11 +1248,11 @@ xfdesktop_file_utils_execute(GFile *working_directory,
g_object_unref(info);
}
- if(!xfdesktop_file_manager_proxy_execute(fileman_proxy,
- working_dir, uri,
- (const gchar **)uris,
- NULL, startup_id,
- &error))
+ if(!xfdesktop_file_manager_call_execute_sync(fileman_proxy,
+ working_dir, uri,
+ (const gchar **)uris,
+ "", startup_id,
+ NULL, &error))
{
gchar *filename = g_file_get_uri(file);
gchar *name = g_filename_display_basename(filename);
@@ -1195,13 +1299,21 @@ xfdesktop_file_utils_execute(GFile *working_directory,
return success;
}
+static void
+display_chooser_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ if (!xfdesktop_file_manager_call_display_chooser_dialog_finish(XFDESKTOP_FILE_MANAGER(source_object), res, &error))
+ xfdesktop_file_utils_async_handle_error(error, user_data);
+}
+
void
xfdesktop_file_utils_display_chooser_dialog(GFile *file,
gboolean open,
GdkScreen *screen,
GtkWindow *parent)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(file));
g_return_if_fail(GDK_IS_SCREEN(screen) || GTK_IS_WINDOW(parent));
@@ -1216,12 +1328,13 @@ xfdesktop_file_utils_display_chooser_dialog(GFile *file,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- xfdesktop_file_manager_proxy_display_chooser_dialog_async(fileman_proxy,
- uri, open,
- NULL,
- startup_id,
- (xfdesktop_file_manager_proxy_display_chooser_dialog_reply)xfdesktop_file_utils_async_cb,
- parent);
+ xfdesktop_file_manager_call_display_chooser_dialog(fileman_proxy,
+ uri, open,
+ "",
+ startup_id,
+ NULL,
+ display_chooser_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -1244,7 +1357,7 @@ xfdesktop_file_utils_transfer_file(GdkDragAction action,
GFile *target_file,
GdkScreen *screen)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
g_return_if_fail(G_IS_FILE(source_file));
g_return_if_fail(G_IS_FILE(target_file));
@@ -1262,25 +1375,25 @@ xfdesktop_file_utils_transfer_file(GdkDragAction action,
switch(action) {
case GDK_ACTION_MOVE:
- xfdesktop_file_manager_proxy_move_into(fileman_proxy, NULL,
- (const gchar **)source_uris,
- (const gchar *)target_uris[0],
- NULL, startup_id,
- &error);
+ xfdesktop_file_manager_call_move_into_sync(fileman_proxy, "",
+ (const gchar **)source_uris,
+ (const gchar *)target_uris[0],
+ "", startup_id,
+ NULL, &error);
break;
case GDK_ACTION_COPY:
- xfdesktop_file_manager_proxy_copy_to(fileman_proxy, NULL,
- (const gchar **)source_uris,
- (const gchar **)target_uris,
- NULL, startup_id,
- &error);
+ xfdesktop_file_manager_call_copy_to_sync(fileman_proxy, "",
+ (const gchar **)source_uris,
+ (const gchar **)target_uris,
+ "", startup_id,
+ NULL, &error);
break;
case GDK_ACTION_LINK:
- xfdesktop_file_manager_proxy_link_into(fileman_proxy, NULL,
- (const gchar **)source_uris,
- (const gchar *)target_uris[0],
- NULL, startup_id,
- &error);
+ xfdesktop_file_manager_call_link_into_sync(fileman_proxy, "",
+ (const gchar **)source_uris,
+ (const gchar *)target_uris[0],
+ "", startup_id,
+ NULL, &error);
break;
default:
g_warning("Unsupported transfer action");
@@ -1317,7 +1430,7 @@ xfdesktop_file_utils_transfer_files(GdkDragAction action,
GList *target_files,
GdkScreen *screen)
{
- DBusGProxy *fileman_proxy;
+ XfdesktopFileManager *fileman_proxy;
gboolean success = TRUE;
g_return_val_if_fail(source_files != NULL && G_IS_FILE(source_files->data), FALSE);
@@ -1336,25 +1449,25 @@ xfdesktop_file_utils_transfer_files(GdkDragAction action,
switch(action) {
case GDK_ACTION_MOVE:
- xfdesktop_file_manager_proxy_move_into(fileman_proxy, NULL,
- (const gchar **)source_uris,
- (const gchar *)target_uris[0],
- NULL, startup_id,
- &error);
+ xfdesktop_file_manager_call_move_into_sync(fileman_proxy, "",
+ (const gchar **)source_uris,
+ (const gchar *)target_uris[0],
+ "", startup_id,
+ NULL, &error);
break;
case GDK_ACTION_COPY:
- xfdesktop_file_manager_proxy_copy_to(fileman_proxy, NULL,
- (const gchar **)source_uris,
- (const gchar **)target_uris,
- NULL, startup_id,
- &error);
+ xfdesktop_file_manager_call_copy_to_sync(fileman_proxy, "",
+ (const gchar **)source_uris,
+ (const gchar **)target_uris,
+ "", startup_id,
+ NULL, &error);
break;
case GDK_ACTION_LINK:
- xfdesktop_file_manager_proxy_link_into(fileman_proxy, NULL,
- (const gchar **)source_uris,
- (const gchar *)target_uris[0],
- NULL, startup_id,
- &error);
+ xfdesktop_file_manager_call_link_into_sync(fileman_proxy, "",
+ (const gchar **)source_uris,
+ (const gchar *)target_uris[0],
+ "", startup_id,
+ NULL, &error);
break;
default:
g_warning("Unsupported transfer action");
@@ -1394,11 +1507,14 @@ xfdesktop_file_utils_transfer_files(GdkDragAction action,
}
static gint dbus_ref_cnt = 0;
-static DBusGConnection *dbus_gconn = NULL;
-static DBusGProxy *dbus_trash_proxy = NULL;
-static DBusGProxy *dbus_filemanager_proxy = NULL;
-static DBusGProxy *dbus_thunar_proxy = NULL;
-
+static GDBusConnection *dbus_gconn = NULL;
+static XfdesktopTrash *dbus_trash_proxy = NULL;
+static XfdesktopFileManager *dbus_filemanager_proxy = NULL;
+#ifdef HAVE_THUNARX
+static XfdesktopThunar *dbus_thunar_proxy = NULL;
+#else
+static GDBusProxy *dbus_thunar_proxy = NULL;
+#endif
gboolean
xfdesktop_file_utils_dbus_init(void)
{
@@ -1408,31 +1524,35 @@ xfdesktop_file_utils_dbus_init(void)
return TRUE;
if(!dbus_gconn) {
- dbus_gconn = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
- if(G_LIKELY(dbus_gconn)) {
- /* dbus's default is brain-dead */
- DBusConnection *dconn = dbus_g_connection_get_connection(dbus_gconn);
- dbus_connection_set_exit_on_disconnect(dconn, FALSE);
- }
+ dbus_gconn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, NULL);
}
- if(G_LIKELY(dbus_gconn)) {
- dbus_trash_proxy = dbus_g_proxy_new_for_name(dbus_gconn,
- "org.xfce.FileManager",
- "/org/xfce/FileManager",
- "org.xfce.Trash");
- dbus_g_proxy_add_signal(dbus_trash_proxy, "TrashChanged",
- G_TYPE_BOOLEAN, G_TYPE_INVALID);
-
- dbus_filemanager_proxy = dbus_g_proxy_new_for_name(dbus_gconn,
- "org.xfce.FileManager",
- "/org/xfce/FileManager",
- "org.xfce.FileManager");
-
- dbus_thunar_proxy = dbus_g_proxy_new_for_name(dbus_gconn,
- "org.xfce.FileManager",
- "/org/xfce/FileManager",
- "org.xfce.Thunar");
+ if(dbus_gconn) {
+ dbus_trash_proxy = xfdesktop_trash_proxy_new_sync(dbus_gconn,
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.xfce.FileManager",
+ "/org/xfce/FileManager",
+ NULL,
+ NULL);
+
+ dbus_filemanager_proxy = xfdesktop_file_manager_proxy_new_sync(dbus_gconn,
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.xfce.FileManager",
+ "/org/xfce/FileManager",
+ NULL,
+ NULL);
+
+#ifdef HAVE_THUNARX
+ dbus_thunar_proxy = xfdesktop_thunar_proxy_new_sync(dbus_gconn,
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.xfce.FileManager",
+ "/org/xfce/FileManager",
+ NULL,
+ NULL);
+#else
+ dbus_thunar_proxy = NULL;
+#endif
+
} else {
ret = FALSE;
dbus_ref_cnt = 0;
@@ -1441,23 +1561,31 @@ xfdesktop_file_utils_dbus_init(void)
return ret;
}
-DBusGProxy *
+static XfdesktopTrash *
xfdesktop_file_utils_peek_trash_proxy(void)
{
return dbus_trash_proxy;
}
-DBusGProxy *
+static XfdesktopFileManager *
xfdesktop_file_utils_peek_filemanager_proxy(void)
{
return dbus_filemanager_proxy;
}
-DBusGProxy *
+#ifdef HAVE_THUNARX
+static XfdesktopThunar *
xfdesktop_file_utils_peek_thunar_proxy(void)
{
return dbus_thunar_proxy;
}
+#else
+static gpointer
+xfdesktop_file_utils_peek_thunar_proxy(void)
+{
+ return NULL;
+}
+#endif
void
xfdesktop_file_utils_dbus_cleanup(void)
@@ -1471,10 +1599,8 @@ xfdesktop_file_utils_dbus_cleanup(void)
g_object_unref(G_OBJECT(dbus_filemanager_proxy));
if(dbus_thunar_proxy)
g_object_unref(G_OBJECT(dbus_thunar_proxy));
-
- /* we aren't going to unref dbus_gconn because dbus appears to have a
- * memleak in dbus_connection_setup_with_g_main(). really; the comments
- * in dbus-gmain.c admit this. */
+ if(dbus_gconn)
+ g_object_unref(G_OBJECT(dbus_gconn));
}
diff --git a/src/xfdesktop-file-utils.h b/src/xfdesktop-file-utils.h
index a3fed69..20566d9 100644
--- a/src/xfdesktop-file-utils.h
+++ b/src/xfdesktop-file-utils.h
@@ -22,7 +22,7 @@
#ifndef __XFDESKTOP_FILE_UTILS_H__
#define __XFDESKTOP_FILE_UTILS_H__
-#include <dbus/dbus-glib.h>
+#include <gio/gio.h>
#ifdef HAVE_THUNARX
#include <thunarx/thunarx.h>
@@ -113,9 +113,6 @@ gboolean xfdesktop_file_utils_transfer_files(GdkDragAction action,
gboolean xfdesktop_file_utils_dbus_init(void);
-DBusGProxy *xfdesktop_file_utils_peek_trash_proxy(void);
-DBusGProxy *xfdesktop_file_utils_peek_filemanager_proxy(void);
-DBusGProxy *xfdesktop_file_utils_peek_thunar_proxy(void);
void xfdesktop_file_utils_dbus_cleanup(void);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list