1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ 2 3 /* CajaUndoStackManager - Manages undo of file operations (header) 4 * 5 * Copyright (C) 2007-2010 Amos Brocco 6 * Copyright (C) 2011 Stefano Karapetsas 7 * Copyright (C) 2012-2021 The MATE developers 8 * 9 * Authors: Amos Brocco <amos.brocco@unifr.ch>, 10 * Stefano Karapetsas <stefano@karapetsas.com> 11 * 12 * This library is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public 14 * License as published by the Free Software Foundation; either 15 * version 2 of the License, or (at your option) any later version. 16 * 17 * This library is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 * General Public License for more details. 21 * 22 * You should have received a copy of the GNU General Public 23 * License along with this library; if not, write to the 24 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 25 * Boston, MA 02110-1301, USA. 26 */ 27 28 #ifndef CAJA_UNDOSTACK_MANAGER_H 29 #define CAJA_UNDOSTACK_MANAGER_H 30 31 #include <glib.h> 32 #include <glib-object.h> 33 #include <gtk/gtk.h> 34 #include <gio/gio.h> 35 36 /* Begin action structures */ 37 38 typedef enum 39 { 40 CAJA_UNDOSTACK_COPY, 41 CAJA_UNDOSTACK_DUPLICATE, 42 CAJA_UNDOSTACK_MOVE, 43 CAJA_UNDOSTACK_RENAME, 44 CAJA_UNDOSTACK_CREATEEMPTYFILE, 45 CAJA_UNDOSTACK_CREATEFILEFROMTEMPLATE, 46 CAJA_UNDOSTACK_CREATEFOLDER, 47 CAJA_UNDOSTACK_MOVETOTRASH, 48 CAJA_UNDOSTACK_CREATELINK, 49 CAJA_UNDOSTACK_DELETE, 50 CAJA_UNDOSTACK_RESTOREFROMTRASH, 51 CAJA_UNDOSTACK_SETPERMISSIONS, 52 CAJA_UNDOSTACK_RECURSIVESETPERMISSIONS, 53 CAJA_UNDOSTACK_CHANGEOWNER, 54 CAJA_UNDOSTACK_CHANGEGROUP 55 } CajaUndoStackActionType; 56 57 typedef struct _CajaUndoStackActionData CajaUndoStackActionData; 58 59 typedef struct _CajaUndoStackMenuData CajaUndoStackMenuData; 60 61 struct _CajaUndoStackMenuData { 62 char* undo_label; 63 char* undo_description; 64 char* redo_label; 65 char* redo_description; 66 }; 67 68 /* End action structures */ 69 70 typedef void 71 (*CajaUndostackFinishCallback)(gpointer data); 72 73 typedef struct _CajaUndoStackManagerPrivate CajaUndoStackManagerPrivate; 74 75 typedef struct _CajaUndoStackManager 76 { 77 GObject parent_instance; 78 79 CajaUndoStackManagerPrivate* priv; 80 81 } CajaUndoStackManager; 82 83 typedef struct _CajaUndoStackManagerClass 84 { 85 GObjectClass parent_class; 86 87 } CajaUndoStackManagerClass; 88 89 #define TYPE_CAJA_UNDOSTACK_MANAGER (caja_undostack_manager_get_type()) 90 91 #define CAJA_UNDOSTACK_MANAGER(object) \ 92 (G_TYPE_CHECK_INSTANCE_CAST((object), TYPE_CAJA_UNDOSTACK_MANAGER, CajaUndoStackManager)) 93 94 #define CAJA_UNDOSTACK_MANAGER_CLASS(klass) \ 95 (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_CAJA_UNDOSTACK_MANAGER, CajaUndoStackManagerClass)) 96 97 #define IS_CAJA_UNDOSTACK_MANAGER(object) \ 98 (G_TYPE_CHECK_INSTANCE_TYPE((object), TYPE_CAJA_UNDOSTACK_MANAGER)) 99 100 #define IS_CAJA_UNDOSTACK_MANAGER_CLASS(klass) \ 101 (G_TYPE_CHECK_CLASS_TYPE((klass), TYPE_CAJA_UNDOSTACK_MANAGER)) 102 103 #define CAJA_UNDOSTACK_MANAGER_GET_CLASS(object) \ 104 (G_TYPE_INSTANCE_GET_CLASS((object), TYPE_CAJA_UNDOSTACK_MANAGER, CajaUndoStackManagerClass)) 105 106 GType 107 caja_undostack_manager_get_type (void); 108 109 void 110 caja_undostack_manager_add_action(CajaUndoStackManager* manager, 111 CajaUndoStackActionData* action); 112 113 void 114 caja_undostack_manager_undo(CajaUndoStackManager* manager, 115 GtkWidget *parent_view, CajaUndostackFinishCallback cb); 116 117 void 118 caja_undostack_manager_redo(CajaUndoStackManager* manager, 119 GtkWidget *parent_view, CajaUndostackFinishCallback cb); 120 121 CajaUndoStackActionData* 122 caja_undostack_manager_data_new(CajaUndoStackActionType type, 123 gint items_count); 124 125 gboolean 126 caja_undostack_manager_is_undo_redo(CajaUndoStackManager* manager); 127 128 void 129 caja_undostack_manager_trash_has_emptied(CajaUndoStackManager* manager); 130 131 CajaUndoStackManager* 132 caja_undostack_manager_instance(void); 133 134 void 135 caja_undostack_manager_data_set_src_dir(CajaUndoStackActionData* data, 136 GFile* src); 137 138 void 139 caja_undostack_manager_data_set_dest_dir(CajaUndoStackActionData* data, 140 GFile* dest); 141 142 void 143 caja_undostack_manager_data_add_origin_target_pair( 144 CajaUndoStackActionData* data, GFile* origin, GFile* target); 145 146 void 147 caja_undostack_manager_data_set_create_data( 148 CajaUndoStackActionData* data, char* target_uri, char* template_uri); 149 150 void 151 caja_undostack_manager_data_set_rename_information( 152 CajaUndoStackActionData* data, GFile* old_file, GFile* new_file); 153 154 guint64 155 caja_undostack_manager_get_file_modification_time(GFile* file); 156 157 void 158 caja_undostack_manager_data_add_trashed_file( 159 CajaUndoStackActionData* data, GFile* file, guint64 mtime); 160 161 void 162 caja_undostack_manager_request_menu_update(CajaUndoStackManager* manager); 163 164 void 165 caja_undostack_manager_data_add_file_permissions( 166 CajaUndoStackActionData* data, GFile* file, guint32 permission); 167 168 void 169 caja_undostack_manager_data_set_recursive_permissions( 170 CajaUndoStackActionData* data, guint32 file_permissions, guint32 file_mask, 171 guint32 dir_permissions, guint32 dir_mask); 172 173 void 174 caja_undostack_manager_data_set_file_permissions( 175 CajaUndoStackActionData* data, char* uri, guint32 current_permissions, guint32 new_permissions); 176 177 void 178 caja_undostack_manager_data_set_owner_change_information( 179 CajaUndoStackActionData* data, char* uri, const char* current_user, const char* new_user); 180 181 void 182 caja_undostack_manager_data_set_group_change_information( 183 CajaUndoStackActionData* data, char* uri, const char* current_group, const char* new_group); 184 185 #endif /* CAJA_UNDOSTACK_MANAGER_H */ 186