1 
2 /* nautilus-file-operations: execute file operations.
3 
4    Copyright (C) 1999, 2000 Free Software Foundation
5    Copyright (C) 2000, 2001 Eazel, Inc.
6 
7    This program is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License as
9    published by the Free Software Foundation; either version 2 of the
10    License, or (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16 
17    You should have received a copy of the GNU General Public
18    License along with this program; if not, see <http://www.gnu.org/licenses/>.
19 
20    Authors: Ettore Perazzoli <ettore@gnu.org>,
21             Pavel Cisler <pavel@eazel.com>
22 */
23 
24 #pragma once
25 
26 #include <gtk/gtk.h>
27 #include <gio/gio.h>
28 #include <gnome-autoar/gnome-autoar.h>
29 
30 #include "nautilus-file-operations-dbus-data.h"
31 
32 #define SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE 1
33 
34 typedef void (* NautilusCopyCallback)      (GHashTable *debuting_uris,
35 					    gboolean    success,
36 					    gpointer    callback_data);
37 typedef void (* NautilusCreateCallback)    (GFile      *new_file,
38 					    gboolean    success,
39 					    gpointer    callback_data);
40 typedef void (* NautilusOpCallback)        (gboolean    success,
41 					    gpointer    callback_data);
42 typedef void (* NautilusDeleteCallback)    (GHashTable *debuting_uris,
43 					    gboolean    user_cancel,
44 					    gpointer    callback_data);
45 typedef void (* NautilusMountCallback)     (GVolume    *volume,
46 					    gboolean    success,
47 					    GObject    *callback_data_object);
48 typedef void (* NautilusUnmountCallback)   (gpointer    callback_data);
49 typedef void (* NautilusExtractCallback)   (GList    *outputs,
50                                             gpointer  callback_data);
51 
52 /* FIXME: int copy_action should be an enum */
53 
54 void nautilus_file_operations_copy_move   (const GList                    *item_uris,
55                                            const char                     *target_dir_uri,
56                                            GdkDragAction                   copy_action,
57                                            GtkWidget                      *parent_view,
58                                            NautilusFileOperationsDBusData *dbus_data,
59                                            NautilusCopyCallback            done_callback,
60                                            gpointer                        done_callback_data);
61 void nautilus_file_operations_empty_trash (GtkWidget                      *parent_view,
62                                            gboolean                        ask_confirmation,
63                                            NautilusFileOperationsDBusData *dbus_data);
64 void nautilus_file_operations_new_folder  (GtkWidget                      *parent_view,
65                                            NautilusFileOperationsDBusData *dbus_data,
66                                            const char                     *parent_dir_uri,
67                                            const char                     *folder_name,
68                                            NautilusCreateCallback          done_callback,
69                                            gpointer                        done_callback_data);
70 void nautilus_file_operations_new_file    (GtkWidget                 *parent_view,
71 					   const char                *parent_dir,
72 					   const char                *target_filename,
73 					   const char                *initial_contents,
74 					   int                        length,
75 					   NautilusCreateCallback     done_callback,
76 					   gpointer                   data);
77 void nautilus_file_operations_new_file_from_template (GtkWidget               *parent_view,
78 						      const char              *parent_dir,
79 						      const char              *target_filename,
80 						      const char              *template_uri,
81 						      NautilusCreateCallback   done_callback,
82 						      gpointer                 data);
83 
84 void nautilus_file_operations_trash_or_delete_sync (GList                  *files);
85 void nautilus_file_operations_delete_sync (GList                  *files);
86 void nautilus_file_operations_trash_or_delete_async (GList                          *files,
87                                                      GtkWindow                      *parent_window,
88                                                      NautilusFileOperationsDBusData *dbus_data,
89                                                      NautilusDeleteCallback          done_callback,
90                                                      gpointer                        done_callback_data);
91 void nautilus_file_operations_delete_async (GList                          *files,
92                                             GtkWindow                      *parent_window,
93                                             NautilusFileOperationsDBusData *dbus_data,
94                                             NautilusDeleteCallback          done_callback,
95                                             gpointer                        done_callback_data);
96 
97 void nautilus_file_set_permissions_recursive (const char                     *directory,
98 					      guint32                         file_permissions,
99 					      guint32                         file_mask,
100 					      guint32                         folder_permissions,
101 					      guint32                         folder_mask,
102 					      NautilusOpCallback              callback,
103 					      gpointer                        callback_data);
104 
105 void nautilus_file_operations_unmount_mount (GtkWindow                      *parent_window,
106 					     GMount                         *mount,
107 					     gboolean                        eject,
108 					     gboolean                        check_trash);
109 void nautilus_file_operations_unmount_mount_full (GtkWindow                 *parent_window,
110 						  GMount                    *mount,
111 						  GMountOperation           *mount_operation,
112 						  gboolean                   eject,
113 						  gboolean                   check_trash,
114 						  NautilusUnmountCallback    callback,
115 						  gpointer                   callback_data);
116 void nautilus_file_operations_mount_volume  (GtkWindow                      *parent_window,
117 					     GVolume                        *volume);
118 void nautilus_file_operations_mount_volume_full (GtkWindow                      *parent_window,
119 						 GVolume                        *volume,
120 						 NautilusMountCallback           mount_callback,
121 						 GObject                        *mount_callback_data_object);
122 
123 void nautilus_file_operations_copy_async (GList                          *files,
124                                           GFile                          *target_dir,
125                                           GtkWindow                      *parent_window,
126                                           NautilusFileOperationsDBusData *dbus_data,
127                                           NautilusCopyCallback            done_callback,
128                                           gpointer                        done_callback_data);
129 void nautilus_file_operations_copy_sync (GList                *files,
130                                          GFile                *target_dir);
131 
132 void nautilus_file_operations_move_async (GList                          *files,
133                                           GFile                          *target_dir,
134                                           GtkWindow                      *parent_window,
135                                           NautilusFileOperationsDBusData *dbus_data,
136                                           NautilusCopyCallback            done_callback,
137                                           gpointer                        done_callback_data);
138 void nautilus_file_operations_move_sync (GList                *files,
139                                          GFile                *target_dir);
140 
141 void nautilus_file_operations_duplicate (GList                          *files,
142                                          GtkWindow                      *parent_window,
143                                          NautilusFileOperationsDBusData *dbus_data,
144                                          NautilusCopyCallback            done_callback,
145                                          gpointer                        done_callback_data);
146 void nautilus_file_operations_link      (GList                          *files,
147                                          GFile                          *target_dir,
148                                          GtkWindow                      *parent_window,
149                                          NautilusFileOperationsDBusData *dbus_data,
150                                          NautilusCopyCallback            done_callback,
151                                          gpointer                        done_callback_data);
152 void nautilus_file_operations_extract_files (GList                          *files,
153                                              GFile                          *destination_directory,
154                                              GtkWindow                      *parent_window,
155                                              NautilusFileOperationsDBusData *dbus_data,
156                                              NautilusExtractCallback         done_callback,
157                                              gpointer                        done_callback_data);
158 void nautilus_file_operations_compress (GList                          *files,
159                                         GFile                          *output,
160                                         AutoarFormat                    format,
161                                         AutoarFilter                    filter,
162                                         const gchar                    *passphrase,
163                                         GtkWindow                      *parent_window,
164                                         NautilusFileOperationsDBusData *dbus_data,
165                                         NautilusCreateCallback          done_callback,
166                                         gpointer                        done_callback_data);
167