summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Koegel <eric.koegel@gmail.com>2013-08-26 20:27:57 +0300
committerEric Koegel <eric.koegel@gmail.com>2013-08-27 03:40:45 +0300
commit7dd08719051b5adff0ac4af483d94bf153e6d921 (patch)
treee23996ae96ffec05c364a47f865ff335ce254b58
parent30ef6b2772c76899b3580e99ed754a8c5f18ca1c (diff)
downloadxfdesktop-7dd08719051b5adff0ac4af483d94bf153e6d921.tar.gz
Use async functions when working with the dbus filemanager (9105)
This fixes the context menu not getting hidden when doing a rename, additionally it removes some redundant code and hopefully makes some operations a bit faster since it doesn't wait on it to complete.
-rw-r--r--src/xfdesktop-file-utils.c186
1 files changed, 60 insertions, 126 deletions
diff --git a/src/xfdesktop-file-utils.c b/src/xfdesktop-file-utils.c
index ed721d91..28e47069 100644
--- a/src/xfdesktop-file-utils.c
+++ b/src/xfdesktop-file-utils.c
@@ -715,6 +715,21 @@ xfdesktop_file_utils_open_folder(GFile *file,
g_free(uri);
}
+static void
+xfdesktop_file_utils_async_cb(DBusGProxy *proxy, GError *error, gpointer userdata)
+{
+ GtkWindow *parent = GTK_WINDOW(userdata);
+
+ if(error != NULL) {
+ xfce_message_dialog(parent,
+ _("Error"), GTK_STOCK_DIALOG_ERROR,
+ _("The requested operation could not be completed"),
+ error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ g_error_free(error);
+ }
+}
+
void
xfdesktop_file_utils_rename_file(GFile *file,
GdkScreen *screen,
@@ -730,25 +745,16 @@ xfdesktop_file_utils_rename_file(GFile *file,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
gchar *uri = g_file_get_uri(file);
gchar *display_name = gdk_screen_make_display_name(screen);
gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_rename_file(fileman_proxy,
- uri, display_name, startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Rename Error"), GTK_STOCK_DIALOG_ERROR,
- _("The file could not be renamed"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_rename_file_async(fileman_proxy,
+ uri, display_name, startup_id,
+ (xfdesktop_file_manager_proxy_rename_file_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -780,7 +786,6 @@ xfdesktop_file_utils_unlink_files(GList *files,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
guint nfiles = g_list_length(files);
gchar **uris = g_new0(gchar *, nfiles+1);
gchar *display_name = gdk_screen_make_display_name(screen);
@@ -795,19 +800,11 @@ xfdesktop_file_utils_unlink_files(GList *files,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_unlink_files(fileman_proxy,
- NULL, (const gchar **)uris,
- display_name, startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Delete Error"), GTK_STOCK_DIALOG_ERROR,
- _("The selected files could not be deleted"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_unlink_files_async(fileman_proxy,
+ NULL, (const gchar **)uris,
+ display_name, startup_id,
+ (xfdesktop_file_manager_proxy_unlink_files_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -839,7 +836,6 @@ xfdesktop_file_utils_trash_files(GList *files,
trash_proxy = xfdesktop_file_utils_peek_trash_proxy();
if(trash_proxy) {
- GError *error = NULL;
guint nfiles = g_list_length(files);
gchar **uris = g_new0(gchar *, nfiles+1);
gchar *display_name = gdk_screen_make_display_name(screen);
@@ -854,19 +850,11 @@ xfdesktop_file_utils_trash_files(GList *files,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_trash_proxy_move_to_trash(trash_proxy,
- (const gchar **)uris,
- display_name, startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Trash Error"), GTK_STOCK_DIALOG_ERROR,
- _("The selected files could not be moved to the trash"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_trash_proxy_move_to_trash_async(trash_proxy,
+ (const gchar **)uris,
+ display_name, startup_id,
+ (xfdesktop_trash_proxy_move_to_trash_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -896,24 +884,15 @@ xfdesktop_file_utils_empty_trash(GdkScreen *screen,
trash_proxy = xfdesktop_file_utils_peek_trash_proxy();
if(trash_proxy) {
- GError *error = NULL;
gchar *display_name = gdk_screen_make_display_name(screen);
gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_trash_proxy_empty_trash(trash_proxy,
- display_name, startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Trash Error"), GTK_STOCK_DIALOG_ERROR,
- _("Could not empty the trash"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_trash_proxy_empty_trash_async(trash_proxy,
+ display_name, startup_id,
+ (xfdesktop_trash_proxy_empty_trash_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -945,27 +924,18 @@ xfdesktop_file_utils_create_file(GFile *parent_folder,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
gchar *parent_directory = g_file_get_uri(parent_folder);
gchar *display_name = gdk_screen_make_display_name(screen);
gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_create_file(fileman_proxy,
- parent_directory,
- content_type, display_name,
- startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Create File Error"), GTK_STOCK_DIALOG_ERROR,
- _("Could not create a new file"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_create_file_async(fileman_proxy,
+ parent_directory,
+ content_type, display_name,
+ startup_id,
+ (xfdesktop_file_manager_proxy_create_file_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -999,7 +969,6 @@ xfdesktop_file_utils_create_file_from_template(GFile *parent_folder,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
gchar *parent_directory = g_file_get_uri(parent_folder);
gchar *template_uri = g_file_get_uri(template_file);
gchar *display_name = gdk_screen_make_display_name(screen);
@@ -1007,21 +976,13 @@ xfdesktop_file_utils_create_file_from_template(GFile *parent_folder,
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_create_file_from_template(fileman_proxy,
- parent_directory,
- template_uri,
- display_name,
- startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Create Document Error"), GTK_STOCK_DIALOG_ERROR,
- _("Could not create a new document from the template"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_create_file_from_template_async(fileman_proxy,
+ parent_directory,
+ template_uri,
+ display_name,
+ startup_id,
+ (xfdesktop_file_manager_proxy_create_file_from_template_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -1053,25 +1014,16 @@ xfdesktop_file_utils_show_properties_dialog(GFile *file,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
gchar *uri = g_file_get_uri(file);
gchar *display_name = gdk_screen_make_display_name(screen);
gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_display_file_properties(fileman_proxy,
- uri, display_name, startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("File Properties Error"), GTK_STOCK_DIALOG_ERROR,
- _("The file properties dialog could not be opened"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_display_file_properties_async(fileman_proxy,
+ uri, display_name, startup_id,
+ (xfdesktop_file_manager_proxy_display_file_properties_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -1103,25 +1055,16 @@ xfdesktop_file_utils_launch(GFile *file,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
gchar *uri = g_file_get_uri(file);
gchar *display_name = gdk_screen_make_display_name(screen);
gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_launch(fileman_proxy,
- uri, display_name, startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Launch Error"), GTK_STOCK_DIALOG_ERROR,
- _("The file could not be opened"),
- error->message,
- GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_launch_async(fileman_proxy,
+ uri, display_name, startup_id,
+ (xfdesktop_file_manager_proxy_launch_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);
@@ -1239,27 +1182,18 @@ xfdesktop_file_utils_display_chooser_dialog(GFile *file,
fileman_proxy = xfdesktop_file_utils_peek_filemanager_proxy();
if(fileman_proxy) {
- GError *error = NULL;
gchar *uri = g_file_get_uri(file);
gchar *display_name = gdk_screen_make_display_name(screen);
gchar *startup_id = g_strdup_printf("_TIME%d", gtk_get_current_event_time());
xfdesktop_file_utils_set_window_cursor(parent, GDK_WATCH);
- if(!xfdesktop_file_manager_proxy_display_chooser_dialog(fileman_proxy,
- uri, open,
- display_name,
- startup_id,
- &error))
- {
- xfce_message_dialog(parent,
- _("Launch Error"), GTK_STOCK_DIALOG_ERROR,
- _("The application chooser could not be opened"),
- error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT,
- NULL);
-
- g_error_free(error);
- }
+ xfdesktop_file_manager_proxy_display_chooser_dialog_async(fileman_proxy,
+ uri, open,
+ display_name,
+ startup_id,
+ (xfdesktop_file_manager_proxy_display_chooser_dialog_reply)xfdesktop_file_utils_async_cb,
+ parent);
xfdesktop_file_utils_set_window_cursor(parent, GDK_LEFT_PTR);