/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* CajaUndoStackManager - Manages undo of file operations (header) * * Copyright (C) 2007-2010 Amos Brocco * Copyright (C) 2011 Stefano Karapetsas * * Authors: Amos Brocco , * Stefano Karapetsas * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef CAJA_UNDOSTACK_MANAGER_H #define CAJA_UNDOSTACK_MANAGER_H #include #include #include #include /* Begin action structures */ typedef enum { CAJA_UNDOSTACK_COPY, CAJA_UNDOSTACK_DUPLICATE, CAJA_UNDOSTACK_MOVE, CAJA_UNDOSTACK_RENAME, CAJA_UNDOSTACK_CREATEEMPTYFILE, CAJA_UNDOSTACK_CREATEFILEFROMTEMPLATE, CAJA_UNDOSTACK_CREATEFOLDER, CAJA_UNDOSTACK_MOVETOTRASH, CAJA_UNDOSTACK_CREATELINK, CAJA_UNDOSTACK_DELETE, CAJA_UNDOSTACK_RESTOREFROMTRASH, CAJA_UNDOSTACK_SETPERMISSIONS, CAJA_UNDOSTACK_RECURSIVESETPERMISSIONS, CAJA_UNDOSTACK_CHANGEOWNER, CAJA_UNDOSTACK_CHANGEGROUP } CajaUndoStackActionType; typedef struct _CajaUndoStackActionData CajaUndoStackActionData; typedef struct _CajaUndoStackMenuData CajaUndoStackMenuData; struct _CajaUndoStackMenuData { char* undo_label; char* undo_description; char* redo_label; char* redo_description; }; /* End action structures */ typedef void (*CajaUndostackFinishCallback)(gpointer data); typedef struct _CajaUndoStackManagerPrivate CajaUndoStackManagerPrivate; typedef struct _CajaUndoStackManager { GObject parent_instance; CajaUndoStackManagerPrivate* priv; } CajaUndoStackManager; typedef struct _CajaUndoStackManagerClass { GObjectClass parent_class; } CajaUndoStackManagerClass; #define TYPE_CAJA_UNDOSTACK_MANAGER (caja_undostack_manager_get_type()) #define CAJA_UNDOSTACK_MANAGER(object) \ (G_TYPE_CHECK_INSTANCE_CAST((object), TYPE_CAJA_UNDOSTACK_MANAGER, CajaUndoStackManager)) #define CAJA_UNDOSTACK_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_CAJA_UNDOSTACK_MANAGER, CajaUndoStackManagerClass)) #define IS_CAJA_UNDOSTACK_MANAGER(object) \ (G_TYPE_CHECK_INSTANCE_TYPE((object), TYPE_CAJA_UNDOSTACK_MANAGER)) #define IS_CAJA_UNDOSTACK_MANAGER_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass), TYPE_CAJA_UNDOSTACK_MANAGER)) #define CAJA_UNDOSTACK_MANAGER_GET_CLASS(object) \ (G_TYPE_INSTANCE_GET_CLASS((object), TYPE_CAJA_UNDOSTACK_MANAGER, CajaUndoStackManagerClass)) GType caja_undostack_manager_get_type (void); void caja_undostack_manager_add_action(CajaUndoStackManager* manager, CajaUndoStackActionData* action); void caja_undostack_manager_undo(CajaUndoStackManager* manager, GtkWidget *parent_view, CajaUndostackFinishCallback cb); void caja_undostack_manager_redo(CajaUndoStackManager* manager, GtkWidget *parent_view, CajaUndostackFinishCallback cb); CajaUndoStackActionData* caja_undostack_manager_data_new(CajaUndoStackActionType type, gint items_count); gboolean caja_undostack_manager_is_undo_redo(CajaUndoStackManager* manager); void caja_undostack_manager_trash_has_emptied(CajaUndoStackManager* manager); CajaUndoStackManager* caja_undostack_manager_instance(void); void caja_undostack_manager_data_set_src_dir(CajaUndoStackActionData* data, GFile* src); void caja_undostack_manager_data_set_dest_dir(CajaUndoStackActionData* data, GFile* dest); void caja_undostack_manager_data_add_origin_target_pair( CajaUndoStackActionData* data, GFile* origin, GFile* target); void caja_undostack_manager_data_set_create_data( CajaUndoStackActionData* data, char* target_uri, char* template_uri); void caja_undostack_manager_data_set_rename_information( CajaUndoStackActionData* data, GFile* old_file, GFile* new_file); guint64 caja_undostack_manager_get_file_modification_time(GFile* file); void caja_undostack_manager_data_add_trashed_file( CajaUndoStackActionData* data, GFile* file, guint64 mtime); void caja_undostack_manager_request_menu_update(CajaUndoStackManager* manager); void caja_undostack_manager_data_add_file_permissions( CajaUndoStackActionData* data, GFile* file, guint32 permission); void caja_undostack_manager_data_set_recursive_permissions( CajaUndoStackActionData* data, guint32 file_permissions, guint32 file_mask, guint32 dir_permissions, guint32 dir_mask); void caja_undostack_manager_data_set_file_permissions( CajaUndoStackActionData* data, char* uri, guint32 current_permissions, guint32 new_permissions); void caja_undostack_manager_data_set_owner_change_information( CajaUndoStackActionData* data, char* uri, const char* current_user, const char* new_user); void caja_undostack_manager_data_set_group_change_information( CajaUndoStackActionData* data, char* uri, const char* current_group, const char* new_group); #endif /* CAJA_UNDOSTACK_MANAGER_H */