[nautilus] file-operations: first pass at passing on success information
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] file-operations: first pass at passing on success information
- Date: Sat, 21 Jan 2012 03:18:49 +0000 (UTC)
commit 44b695b9af6a26fbf2979a19fd638cc3682c89bb
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Wed Jan 18 15:42:47 2012 -0500
file-operations: first pass at passing on success information
We want to know if a file operation failed for some reason, so that we
don't add it in the redo queue.
libnautilus-private/nautilus-file-operations.c | 31 +++-
libnautilus-private/nautilus-file-operations.h | 6 +-
libnautilus-private/nautilus-file-undo-manager.c | 60 ++++---
libnautilus-private/nautilus-file-undo-manager.h | 8 +-
.../nautilus-file-undo-operations.c | 208 ++++++++++++++++----
.../nautilus-file-undo-operations.h | 76 +++++---
libnautilus-private/nautilus-file-undo-types.h | 38 +----
src/nautilus-places-sidebar.c | 1 +
src/nautilus-properties-window.c | 3 +-
src/nautilus-tree-sidebar.c | 4 +-
src/nautilus-view.c | 20 +--
test/test-copy.c | 4 +-
12 files changed, 302 insertions(+), 157 deletions(-)
---
diff --git a/libnautilus-private/nautilus-file-operations.c b/libnautilus-private/nautilus-file-operations.c
index 87b3554..5e84b66 100644
--- a/libnautilus-private/nautilus-file-operations.c
+++ b/libnautilus-private/nautilus-file-operations.c
@@ -2319,7 +2319,9 @@ volume_mount_cb (GObject *source_object,
GError *error;
char *primary;
char *name;
+ gboolean success;
+ success = TRUE;
error = NULL;
if (!g_volume_mount_finish (G_VOLUME (source_object), res, &error)) {
if (error->code != G_IO_ERROR_FAILED_HANDLED &&
@@ -2327,6 +2329,7 @@ volume_mount_cb (GObject *source_object,
name = g_volume_get_name (G_VOLUME (source_object));
primary = g_strdup_printf (_("Unable to mount %s"), name);
g_free (name);
+ success = FALSE;
eel_show_error_dialog (primary,
error->message,
NULL);
@@ -2342,6 +2345,7 @@ volume_mount_cb (GObject *source_object,
if (mount_callback != NULL) {
(* mount_callback) (G_VOLUME (source_object),
+ success,
mount_callback_data_object);
if (mount_callback_data_object != NULL) {
@@ -4464,7 +4468,9 @@ copy_job_done (gpointer user_data)
job = user_data;
if (job->done_callback) {
- job->done_callback (job->debuting_files, job->done_callback_data);
+ job->done_callback (job->debuting_files,
+ !job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
g_list_free_full (job->files, g_object_unref);
@@ -5025,7 +5031,9 @@ move_job_done (gpointer user_data)
job = user_data;
if (job->done_callback) {
- job->done_callback (job->debuting_files, job->done_callback_data);
+ job->done_callback (job->debuting_files,
+ !job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
g_list_free_full (job->files, g_object_unref);
@@ -5364,7 +5372,9 @@ link_job_done (gpointer user_data)
job = user_data;
if (job->done_callback) {
- job->done_callback (job->debuting_files, job->done_callback_data);
+ job->done_callback (job->debuting_files,
+ !job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
g_list_free_full (job->files, g_object_unref);
@@ -5541,7 +5551,8 @@ set_permissions_job_done (gpointer user_data)
g_object_unref (job->file);
if (job->done_callback) {
- job->done_callback (job->done_callback_data);
+ job->done_callback (!job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
finalize_common ((CommonJob *)job);
@@ -5724,7 +5735,7 @@ callback_for_move_to_trash (GHashTable *debuting_uris,
MoveTrashCBData *data)
{
if (data->real_callback)
- data->real_callback (debuting_uris, data->real_data);
+ data->real_callback (debuting_uris, !user_cancelled, data->real_data);
g_slice_free (MoveTrashCBData, data);
}
@@ -5838,7 +5849,9 @@ create_job_done (gpointer user_data)
job = user_data;
if (job->done_callback) {
- job->done_callback (job->created_file, job->done_callback_data);
+ job->done_callback (job->created_file,
+ !job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
g_object_unref (job->dest_dir);
@@ -6314,7 +6327,8 @@ empty_trash_job_done (gpointer user_data)
g_list_free_full (job->trash_dirs, g_object_unref);
if (job->done_callback) {
- job->done_callback (job->done_callback_data);
+ job->done_callback (!job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
nautilus_file_undo_manager_trash_has_emptied (nautilus_file_undo_manager_get ());
@@ -6392,7 +6406,8 @@ mark_trusted_job_done (gpointer user_data)
g_object_unref (job->file);
if (job->done_callback) {
- job->done_callback (job->done_callback_data);
+ job->done_callback (!job_aborted ((CommonJob *) job),
+ job->done_callback_data);
}
finalize_common ((CommonJob *)job);
diff --git a/libnautilus-private/nautilus-file-operations.h b/libnautilus-private/nautilus-file-operations.h
index 96e908b..55f7479 100644
--- a/libnautilus-private/nautilus-file-operations.h
+++ b/libnautilus-private/nautilus-file-operations.h
@@ -31,14 +31,18 @@
#include <gio/gio.h>
typedef void (* NautilusCopyCallback) (GHashTable *debuting_uris,
+ gboolean success,
gpointer callback_data);
typedef void (* NautilusCreateCallback) (GFile *new_file,
+ gboolean success,
+ gpointer callback_data);
+typedef void (* NautilusOpCallback) (gboolean success,
gpointer callback_data);
-typedef void (* NautilusOpCallback) (gpointer callback_data);
typedef void (* NautilusDeleteCallback) (GHashTable *debuting_uris,
gboolean user_cancel,
gpointer callback_data);
typedef void (* NautilusMountCallback) (GVolume *volume,
+ gboolean success,
GObject *callback_data_object);
typedef void (* NautilusUnmountCallback) (gpointer callback_data);
diff --git a/libnautilus-private/nautilus-file-undo-manager.c b/libnautilus-private/nautilus-file-undo-manager.c
index 8a53490..7366f51 100644
--- a/libnautilus-private/nautilus-file-undo-manager.c
+++ b/libnautilus-private/nautilus-file-undo-manager.c
@@ -452,11 +452,35 @@ get_redo_description (NautilusFileUndoData *action)
}
static void
+do_undo_redo_finish (NautilusFileUndoData *data,
+ gboolean success,
+ gpointer user_data)
+{
+ NautilusFileUndoManager *self = user_data;
+
+ self->priv->undo_redo_flag = FALSE;
+
+ /* If the action needed to be freed but was locked, free now */
+ if (data->freed) {
+ nautilus_file_undo_data_free (data);
+ return;
+ }
+
+ g_print ("success %d\n\n", success);
+
+ data->locked = FALSE;
+
+ if (!success) {
+ nautilus_file_undo_manager_add_action (self, data);
+ }
+
+ g_signal_emit (self, signals[SIGNAL_UNDO_CHANGED], 0);
+}
+
+static void
do_undo_redo (NautilusFileUndoManager *self,
GtkWindow *parent_window,
- gboolean undo,
- NautilusFileUndoFinishCallback callback,
- gpointer user_data)
+ gboolean undo)
{
NautilusFileUndoManagerPrivate *priv = self->priv;
NautilusFileUndoData *action;
@@ -481,6 +505,9 @@ do_undo_redo (NautilusFileUndoManager *self,
if (action != NULL) {
priv->undo_redo_flag = TRUE;
+
+ action->callback = do_undo_redo_finish;
+ action->callback_user_data = self;
if (undo) {
action->undo_func (action, parent_window);
@@ -488,28 +515,20 @@ do_undo_redo (NautilusFileUndoManager *self,
action->redo_func (action, parent_window);
}
}
-
- if (callback != NULL) {
- callback (user_data);
- }
}
void
nautilus_file_undo_manager_redo (NautilusFileUndoManager *manager,
- GtkWindow *parent_window,
- NautilusFileUndoFinishCallback callback,
- gpointer user_data)
+ GtkWindow *parent_window)
{
- do_undo_redo (manager, parent_window, FALSE, callback, user_data);
+ do_undo_redo (manager, parent_window, FALSE);
}
void
nautilus_file_undo_manager_undo (NautilusFileUndoManager *manager,
- GtkWindow *parent_window,
- NautilusFileUndoFinishCallback callback,
- gpointer user_data)
+ GtkWindow *parent_window)
{
- do_undo_redo (manager, parent_window, TRUE, callback, user_data);
+ do_undo_redo (manager, parent_window, TRUE);
}
void
@@ -540,16 +559,9 @@ nautilus_file_undo_manager_add_action (NautilusFileUndoManager *self,
gboolean
nautilus_file_undo_manager_is_undo_redo (NautilusFileUndoManager *manager)
{
- NautilusFileUndoManagerPrivate *priv;
-
- priv = manager->priv;
-
- if (priv->undo_redo_flag) {
- priv->undo_redo_flag = FALSE;
- return TRUE;
- }
+ NautilusFileUndoManagerPrivate *priv = manager->priv;
- return FALSE;
+ return priv->undo_redo_flag;
}
NautilusFileUndoManager *
diff --git a/libnautilus-private/nautilus-file-undo-manager.h b/libnautilus-private/nautilus-file-undo-manager.h
index e88b8ce..bcd4414 100644
--- a/libnautilus-private/nautilus-file-undo-manager.h
+++ b/libnautilus-private/nautilus-file-undo-manager.h
@@ -70,13 +70,9 @@ NautilusFileUndoManager * nautilus_file_undo_manager_get (void);
void nautilus_file_undo_manager_add_action (NautilusFileUndoManager *manager,
NautilusFileUndoData *action);
void nautilus_file_undo_manager_undo (NautilusFileUndoManager *manager,
- GtkWindow *parent_window,
- NautilusFileUndoFinishCallback callback,
- gpointer user_data);
+ GtkWindow *parent_window);
void nautilus_file_undo_manager_redo (NautilusFileUndoManager *manager,
- GtkWindow *parent_window,
- NautilusFileUndoFinishCallback callback,
- gpointer user_data);
+ GtkWindow *parent_window);
gboolean nautilus_file_undo_manager_is_undo_redo (NautilusFileUndoManager *manager);
void nautilus_file_undo_manager_trash_has_emptied (NautilusFileUndoManager *manager);
diff --git a/libnautilus-private/nautilus-file-undo-operations.c b/libnautilus-private/nautilus-file-undo-operations.c
index 7b87229..4c358b8 100644
--- a/libnautilus-private/nautilus-file-undo-operations.c
+++ b/libnautilus-private/nautilus-file-undo-operations.c
@@ -36,6 +36,48 @@
#include "nautilus-file-undo-manager.h"
#include "nautilus-file-undo-types.h"
+G_DEFINE_TYPE (NautilusFileUndoInfo, nautilus_file_undo_info, G_TYPE_OBJECT)
+
+enum {
+ PROP_TYPE = 1,
+ PROP_ITEM_COUNT,
+ N_PROPERTIES
+};
+
+static GParamSpec *properties[N_PROPERTIES] = { NULL, };
+
+struct _NautilusFileUndoInfoDetails {
+ NautilusFileUndoData *undo_data;
+
+ NautilusFileUndoDataType type;
+
+ NautilusFileUndoFinishCallback callback;
+ gpointer callback_user_data;
+
+ NautilusFileUndoManager *manager;
+ guint is_valid : 1;
+ guint locked : 1; /* True if the action is being undone/redone */
+ guint freed : 1; /* True if the action must be freed after undo/redo */
+ guint count; /* Number of items */
+
+ void (* undo_func) (NautilusFileUndoData *data,
+ GtkWindow *parent_window);
+ void (* redo_func) (NautilusFileUndoData *data,
+ GtkWindow *parent_window);
+
+ void (* strings_func) (NautilusFileUndoData *data,
+ guint count,
+ gchar **labels,
+ gchar **descriptions);
+
+ void (* finalize_func) (NautilusFileUndoData *data);
+
+ gchar *undo_label;
+ gchar *redo_label;
+ gchar *undo_description;
+ gchar *redo_description;
+};
+
void
nautilus_file_undo_data_free (NautilusFileUndoData *action)
{
@@ -143,20 +185,12 @@ retrieve_files_to_restore (GHashTable * trashed)
static void
undo_redo_done_transfer_callback (GHashTable * debuting_uris,
+ gboolean success,
gpointer data)
{
NautilusFileUndoData *action = data;
- NautilusFileUndoManager *manager = action->manager;
-
- /* If the action needed to be freed but was locked, free now */
- if (action->freed) {
- nautilus_file_undo_data_free (action);
- } else {
- action->locked = FALSE;
- }
- /* Update menus */
- g_signal_emit_by_name (manager, "undo-changed", 0);
+ action->callback (action, success, action->callback_user_data);
}
static void
@@ -165,14 +199,15 @@ undo_redo_done_rename_callback (NautilusFile * file,
GError * error,
gpointer callback_data)
{
- undo_redo_done_transfer_callback (NULL, callback_data);
+ undo_redo_done_transfer_callback (NULL, (error != NULL), callback_data);
}
static void
undo_redo_done_create_callback (GFile * new_file,
+ gboolean success,
gpointer callback_data)
{
- undo_redo_done_transfer_callback (NULL, callback_data);
+ undo_redo_done_transfer_callback (NULL, success, callback_data);
}
static void
@@ -180,13 +215,14 @@ undo_redo_done_delete_callback (GHashTable *debuting_uris,
gboolean user_cancel,
gpointer callback_data)
{
- undo_redo_done_transfer_callback (debuting_uris, callback_data);
+ undo_redo_done_transfer_callback (debuting_uris, !user_cancel, callback_data);
}
static void
-undo_redo_op_callback (gpointer callback_data)
+undo_redo_recursive_permissions_callback (gboolean success,
+ gpointer callback_data)
{
- undo_redo_done_transfer_callback (NULL, callback_data);
+ undo_redo_done_transfer_callback (NULL, success, callback_data);
}
/* undo helpers */
@@ -274,7 +310,7 @@ trash_undo_func (NautilusFileUndoData *action, GtkWindow *parent_window)
g_hash_table_destroy (files_to_restore);
/* Here we must do what's necessary for the callback */
- undo_redo_done_transfer_callback (NULL, action);
+ undo_redo_done_transfer_callback (NULL, TRUE, action);
}
static void
@@ -347,7 +383,7 @@ recursive_permissions_undo_func (NautilusFileUndoData *action, GtkWindow *parent
g_list_free (gfiles_list);
/* Here we must do what's necessary for the callback */
- undo_redo_done_transfer_callback (NULL, action);
+ undo_redo_done_transfer_callback (NULL, TRUE, action);
}
}
@@ -545,7 +581,7 @@ recursive_permissions_redo_func (NautilusFileUndoData *action, GtkWindow *parent
eaction->file_mask,
eaction->dir_permissions,
eaction->dir_mask,
- undo_redo_op_callback,
+ undo_redo_recursive_permissions_callback,
action);
g_free (parent_uri);
}
@@ -1121,7 +1157,7 @@ create_from_type (NautilusFileUndoDataType type)
/* functions to manipulate the action data */
NautilusFileUndoData *
nautilus_file_undo_data_new (NautilusFileUndoDataType type,
- gint items_count)
+ gint items_count)
{
NautilusFileUndoData *data;
@@ -1132,9 +1168,97 @@ nautilus_file_undo_data_new (NautilusFileUndoDataType type,
return data;
}
+static void
+nautilus_file_undo_info_init (NautilusFileUndoInfo *self)
+{
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NAUTILUS_TYPE_FILE_UNDO_INFO,
+ NautilusFileUndoInfoDetails);
+}
+
+static void
+nautilus_file_undo_info_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+
+}
+
+static void
+nautilus_file_undo_info_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+
+}
+
+static void
+nautilus_file_undo_info_constructed (GObject *obj)
+{
+ NautilusFileUndoInfo *self = NAUTILUS_FILE_UNDO_INFO (obj);
+}
+
+static void
+nautilus_file_undo_info_finalize (GObject *obj)
+{
+ NautilusFileUndoInfo *self = NAUTILUS_FILE_UNDO_INFO (obj);
+
+ if (self->priv->undo_data != NULL) {
+ nautilus_file_undo_data_free (self->priv->undo_data);
+ self->priv->undo_data = NULL;
+ }
+
+ G_OBJECT_CLASS (nautilus_file_undo_info_parent_class)->finalize (obj);
+}
+
+static void
+nautilus_file_undo_info_class_init (NautilusFileUndoInfoClass *klass)
+{
+ GObjectClass *oclass = G_OBJECT_CLASS (klass);
+
+ oclass->finalize = nautilus_file_undo_info_finalize;
+ oclass->constructed = nautilus_file_undo_info_constructed;
+ oclass->get_property = nautilus_file_undo_info_get_property;
+ oclass->set_property = nautilus_file_undo_info_set_property;
+
+ properties[PROP_TYPE] =
+ g_param_spec_int ("type",
+ "Undo info type",
+ "Type of undo operation",
+ 0, NAUTILUS_FILE_UNDO_NUM_TYPES - 1, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY);
+ properties[PROP_ITEM_COUNT] =
+ g_param_spec_int ("item-count",
+ "Number of items",
+ "Number of items",
+ 0, G_MAXINT, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY);
+
+ g_type_class_add_private (klass, sizeof (NautilusFileUndoInfoDetails));
+ g_object_class_install_properties (oclass, N_PROPERTIES, properties);
+}
+
+NautilusFileUndoInfo *
+nautilus_file_undo_info_new (NautilusFileUndoDataType type,
+ gint item_count)
+{
+ NautilusFileUndoInfo *retval;
+ NautilusFileUndoData *data;
+
+ retval = g_object_new (NAUTILUS_TYPE_FILE_UNDO_INFO,
+ "type", type,
+ "item-count", item_count,
+ NULL);
+
+ return retval;
+}
+
void
nautilus_file_undo_data_set_src_dir (NautilusFileUndoData *action_data,
- GFile *src)
+ GFile *src)
{
NautilusFileUndoDataExt* eaction_data = (NautilusFileUndoDataExt*) action_data;
eaction_data->src_dir = g_object_ref (src);
@@ -1142,7 +1266,7 @@ nautilus_file_undo_data_set_src_dir (NautilusFileUndoData *action_data,
void
nautilus_file_undo_data_set_dest_dir (NautilusFileUndoData *action_data,
- GFile *dest)
+ GFile *dest)
{
NautilusFileUndoDataExt* eaction_data = (NautilusFileUndoDataExt*) action_data;
eaction_data->dest_dir = g_object_ref (dest);
@@ -1150,8 +1274,8 @@ nautilus_file_undo_data_set_dest_dir (NautilusFileUndoData *action_data,
void
nautilus_file_undo_data_add_origin_target_pair (NautilusFileUndoData *action_data,
- GFile *origin,
- GFile *target)
+ GFile *origin,
+ GFile *target)
{
NautilusFileUndoDataExt* eaction_data = (NautilusFileUndoDataExt*) action_data;
eaction_data->sources =
@@ -1164,8 +1288,8 @@ nautilus_file_undo_data_add_origin_target_pair (NautilusFileUndoData *act
void
nautilus_file_undo_data_add_trashed_file (NautilusFileUndoData *action_data,
- GFile *file,
- guint64 mtime)
+ GFile *file,
+ guint64 mtime)
{
guint64 *modification_time;
char *original_uri;
@@ -1189,8 +1313,8 @@ nautilus_file_undo_data_add_trashed_file (NautilusFileUndoData *action_da
void
nautilus_file_undo_data_add_file_permissions (NautilusFileUndoData *action_data,
- GFile *file,
- guint32 permission)
+ GFile *file,
+ guint32 permission)
{
guint32 *current_permissions;
char *original_uri;
@@ -1213,9 +1337,9 @@ nautilus_file_undo_data_add_file_permissions (NautilusFileUndoData *actio
void
nautilus_file_undo_data_set_file_permissions (NautilusFileUndoData *action_data,
- GFile *file,
- guint32 current_permissions,
- guint32 new_permissions)
+ GFile *file,
+ guint32 current_permissions,
+ guint32 new_permissions)
{
NautilusFileUndoDataPermissions* eaction_data = (NautilusFileUndoDataPermissions*) action_data;
eaction_data->target_file = g_object_ref (file);
@@ -1227,9 +1351,9 @@ nautilus_file_undo_data_set_file_permissions (NautilusFileUndoData *actio
void
nautilus_file_undo_data_set_owner_change_information (NautilusFileUndoData *action_data,
- GFile *file,
- const char *current_user,
- const char *new_user)
+ GFile *file,
+ const char *current_user,
+ const char *new_user)
{
NautilusFileUndoDataOwnership* eaction_data = (NautilusFileUndoDataOwnership*) action_data;
eaction_data->target_file = g_object_ref (file);
@@ -1241,9 +1365,9 @@ nautilus_file_undo_data_set_owner_change_information (NautilusFileUndoData
void
nautilus_file_undo_data_set_group_change_information (NautilusFileUndoData *action_data,
- GFile *file,
- const char *current_group,
- const char *new_group)
+ GFile *file,
+ const char *current_group,
+ const char *new_group)
{
NautilusFileUndoDataOwnership* eaction_data = (NautilusFileUndoDataOwnership*) action_data;
eaction_data->target_file = g_object_ref (file);
@@ -1255,10 +1379,10 @@ nautilus_file_undo_data_set_group_change_information (NautilusFileUndoData
void
nautilus_file_undo_data_set_recursive_permissions (NautilusFileUndoData *action_data,
- guint32 file_permissions,
- guint32 file_mask,
- guint32 dir_permissions,
- guint32 dir_mask)
+ guint32 file_permissions,
+ guint32 file_mask,
+ guint32 dir_permissions,
+ guint32 dir_mask)
{
NautilusFileUndoDataRecursivePermissions* eaction_data = (NautilusFileUndoDataRecursivePermissions*) action_data;
eaction_data->file_permissions = file_permissions;
@@ -1291,8 +1415,8 @@ nautilus_file_undo_data_set_create_data (NautilusFileUndoData *action_dat
void
nautilus_file_undo_data_set_rename_information (NautilusFileUndoData *action_data,
- GFile *old_file,
- GFile *new_file)
+ GFile *old_file,
+ GFile *new_file)
{
NautilusFileUndoDataRename* eaction_data = (NautilusFileUndoDataRename*) action_data;
eaction_data->old_file = g_object_ref (old_file);
diff --git a/libnautilus-private/nautilus-file-undo-operations.h b/libnautilus-private/nautilus-file-undo-operations.h
index 69a79c2..b313e50 100644
--- a/libnautilus-private/nautilus-file-undo-operations.h
+++ b/libnautilus-private/nautilus-file-undo-operations.h
@@ -31,48 +31,70 @@
#include <glib.h>
#include <libnautilus-private/nautilus-file-undo-types.h>
+#define NAUTILUS_TYPE_FILE_UNDO_INFO (nautilus_file_undo_info_get_type ())
+#define NAUTILUS_FILE_UNDO_INFO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_FILE_UNDO_INFO, NautilusFileUndoInfo))
+#define NAUTILUS_FILE_UNDO_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_FILE_UNDO_INFO, NautilusFileUndoInfoClass))
+#define NAUTILUS_IS_FILE_UNDO_INFO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_FILE_UNDO_INFO))
+#define NAUTILUS_IS_FILE_UNDO_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_FILE_UNDO_INFO))
+#define NAUTILUS_FILE_UNDO_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_FILE_UNDO_INFO, NautilusFileUndoInfoClass))
+
+typedef struct _NautilusFileUndoInfo NautilusFileUndoInfo;
+typedef struct _NautilusFileUndoInfoClass NautilusFileUndoInfoClass;
+typedef struct _NautilusFileUndoInfoDetails NautilusFileUndoInfoDetails;
+
+struct _NautilusFileUndoInfo {
+ GObject parent;
+ NautilusFileUndoInfoDetails *priv;
+};
+
+struct _NautilusFileUndoInfoClass {
+ GObjectClass parent_class;
+};
+
+GType nautilus_file_undo_info_get_type (void) G_GNUC_CONST;
+
NautilusFileUndoData *nautilus_file_undo_data_new (NautilusFileUndoDataType type,
- gint items_count);
+ gint items_count);
void nautilus_file_undo_data_free (NautilusFileUndoData *action);
void nautilus_file_undo_data_set_src_dir (NautilusFileUndoData *data,
- GFile *src);
+ GFile *src);
void nautilus_file_undo_data_set_dest_dir (NautilusFileUndoData *data,
- GFile *dest);
+ GFile *dest);
void nautilus_file_undo_data_add_origin_target_pair (NautilusFileUndoData *data,
- GFile *origin,
- GFile *target);
+ GFile *origin,
+ GFile *target);
void nautilus_file_undo_data_set_create_data (NautilusFileUndoData *data,
- GFile *target_file,
- const char *template_uri);
+ GFile *target_file,
+ const char *template_uri);
void nautilus_file_undo_data_set_rename_information (NautilusFileUndoData *data,
- GFile *old_file,
- GFile *new_file);
+ GFile *old_file,
+ GFile *new_file);
void nautilus_file_undo_data_add_trashed_file (NautilusFileUndoData *data,
- GFile *file,
- guint64 mtime);
+ GFile *file,
+ guint64 mtime);
void nautilus_file_undo_data_add_file_permissions (NautilusFileUndoData *data,
- GFile *file,
- guint32 permission);
+ GFile *file,
+ guint32 permission);
void nautilus_file_undo_data_set_recursive_permissions (NautilusFileUndoData *data,
- guint32 file_permissions,
- guint32 file_mask,
- guint32 dir_permissions,
- guint32 dir_mask);
+ guint32 file_permissions,
+ guint32 file_mask,
+ guint32 dir_permissions,
+ guint32 dir_mask);
void nautilus_file_undo_data_set_recursive_permissions_dest_dir (NautilusFileUndoData *data,
- GFile *dest);
+ GFile *dest);
void nautilus_file_undo_data_set_file_permissions (NautilusFileUndoData *data,
- GFile *file,
- guint32 current_permissions,
- guint32 new_permissions);
+ GFile *file,
+ guint32 current_permissions,
+ guint32 new_permissions);
void nautilus_file_undo_data_set_owner_change_information (NautilusFileUndoData *data,
- GFile *file,
- const char *current_user,
- const char *new_user);
+ GFile *file,
+ const char *current_user,
+ const char *new_user);
void nautilus_file_undo_data_set_group_change_information (NautilusFileUndoData *data,
- GFile *file,
- const char *current_group,
- const char *new_group);
+ GFile *file,
+ const char *current_group,
+ const char *new_group);
#endif /* __NAUTILUS_FILE_UNDO_OPERATIONS_H__ */
diff --git a/libnautilus-private/nautilus-file-undo-types.h b/libnautilus-private/nautilus-file-undo-types.h
index 36cf769..f34c5b1 100644
--- a/libnautilus-private/nautilus-file-undo-types.h
+++ b/libnautilus-private/nautilus-file-undo-types.h
@@ -32,9 +32,6 @@
#include <gio/gio.h>
#include <gtk/gtk.h>
-typedef struct _NautilusFileUndoManager NautilusFileUndoManager;
-typedef void (* NautilusFileUndoFinishCallback) (gpointer data);
-
typedef enum {
NAUTILUS_FILE_UNDO_COPY,
NAUTILUS_FILE_UNDO_DUPLICATE,
@@ -61,37 +58,10 @@ typedef struct {
} NautilusFileUndoMenuData;
typedef struct _NautilusFileUndoData NautilusFileUndoData;
-
-struct _NautilusFileUndoData
-{
- NautilusFileUndoDataType type;
-
- void (* undo_func) (NautilusFileUndoData *data,
- GtkWindow *parent_window);
- void (* redo_func) (NautilusFileUndoData *data,
- GtkWindow *parent_window);
-
- NautilusFileUndoFinishCallback callback;
- gpointer callback_user_data;
-
- NautilusFileUndoManager *manager;
- guint is_valid : 1;
- guint locked : 1; /* True if the action is being undone/redone */
- guint freed : 1; /* True if the action must be freed after undo/redo */
- guint count; /* Number of items */
-
- void (* strings_func) (NautilusFileUndoData *data,
- guint count,
- gchar **labels,
- gchar **descriptions);
-
- gchar *undo_label;
- gchar *redo_label;
- gchar *undo_description;
- gchar *redo_description;
-
- void (* finalize_func) (NautilusFileUndoData *data);
-};
+typedef struct _NautilusFileUndoManager NautilusFileUndoManager;
+typedef void (* NautilusFileUndoFinishCallback) (NautilusFileUndoData *data,
+ gboolean success,
+ gpointer user_data);
typedef struct
{
diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index fc6a312..23fd751 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -1766,6 +1766,7 @@ bookmarks_selection_changed_cb (GtkTreeSelection *selection,
static void
volume_mounted_cb (GVolume *volume,
+ gboolean success,
GObject *user_data)
{
GMount *mount;
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 45fea6b..28b0094 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -4337,7 +4337,8 @@ create_advanced_permissions (NautilusPropertiesWindow *window, GtkGrid *page_gri
}
static void
-set_recursive_permissions_done (gpointer callback_data)
+set_recursive_permissions_done (gboolean success,
+ gpointer callback_data)
{
NautilusPropertiesWindow *window;
diff --git a/src/nautilus-tree-sidebar.c b/src/nautilus-tree-sidebar.c
index 5849efc7..fdefa2d 100644
--- a/src/nautilus-tree-sidebar.c
+++ b/src/nautilus-tree-sidebar.c
@@ -849,7 +849,9 @@ fm_tree_view_open_in_new_window_cb (GtkWidget *menu_item,
}
static void
-new_folder_done (GFile *new_folder, gpointer data)
+new_folder_done (GFile *new_folder,
+ gboolean success,
+ gpointer data)
{
GList *list;
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index bfda541..fd4adf6 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -1822,7 +1822,9 @@ track_newly_added_locations (NautilusView *view, NautilusFile *new_file,
}
static void
-new_folder_done (GFile *new_folder, gpointer user_data)
+new_folder_done (GFile *new_folder,
+ gboolean success,
+ gpointer user_data)
{
NautilusView *directory_view;
NautilusFile *file;
@@ -3160,7 +3162,9 @@ remove_not_really_moved_files (gpointer key,
* up a signal handler to await their arrival.
*/
static void
-copy_move_done_callback (GHashTable *debuting_files, gpointer data)
+copy_move_done_callback (GHashTable *debuting_files,
+ gboolean success,
+ gpointer data)
{
NautilusView *directory_view;
CopyMoveDoneData *copy_move_done_data;
@@ -6070,12 +6074,8 @@ real_action_undo (NautilusView *view)
manager = nautilus_file_undo_manager_get ();
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- /* Disable menus because they are in an untrustworthy status */
- update_undo_actions (view, TRUE);
-
nautilus_file_undo_manager_undo (manager,
- GTK_WINDOW (toplevel),
- NULL, NULL);
+ GTK_WINDOW (toplevel));
}
static void
@@ -6087,12 +6087,8 @@ real_action_redo (NautilusView *view)
manager = nautilus_file_undo_manager_get ();
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- /* Disable menus because they are in an untrustworthy status */
- update_undo_actions (view, TRUE);
-
nautilus_file_undo_manager_redo (manager,
- GTK_WINDOW (toplevel),
- NULL, NULL);
+ GTK_WINDOW (toplevel));
}
static void
diff --git a/test/test-copy.c b/test/test-copy.c
index 94ed239..be8e7c4 100644
--- a/test/test-copy.c
+++ b/test/test-copy.c
@@ -5,7 +5,9 @@
#include <libnautilus-private/nautilus-progress-info-manager.h>
static void
-copy_done (GHashTable *debuting_uris, gpointer data)
+copy_done (GHashTable *debuting_uris,
+ gboolean success,
+ gpointer data)
{
g_print ("Copy done\n");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]