1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 3 /* 4 * Engrampa 5 * 6 * Copyright (C) 2007 Free Software Foundation, Inc. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 21 */ 22 23 #ifndef FR_WINDOW_H 24 #define FR_WINDOW_H 25 26 #include <gio/gio.h> 27 #include <gtk/gtk.h> 28 #include "typedefs.h" 29 #include "fr-archive.h" 30 31 32 enum { 33 COLUMN_FILE_DATA, 34 COLUMN_ICON, 35 COLUMN_NAME, 36 COLUMN_EMBLEM, 37 COLUMN_SIZE, 38 COLUMN_TYPE, 39 COLUMN_TIME, 40 COLUMN_PATH, 41 NUMBER_OF_COLUMNS 42 }; 43 44 enum { 45 TREE_COLUMN_PATH, 46 TREE_COLUMN_ICON, 47 TREE_COLUMN_NAME, 48 TREE_COLUMN_WEIGHT, 49 TREE_NUMBER_OF_COLUMNS 50 }; 51 52 typedef enum { 53 FR_BATCH_ACTION_NONE, 54 FR_BATCH_ACTION_LOAD, 55 FR_BATCH_ACTION_OPEN, 56 FR_BATCH_ACTION_ADD, 57 FR_BATCH_ACTION_EXTRACT, 58 FR_BATCH_ACTION_EXTRACT_HERE, 59 FR_BATCH_ACTION_EXTRACT_INTERACT, 60 FR_BATCH_ACTION_RENAME, 61 FR_BATCH_ACTION_PASTE, 62 FR_BATCH_ACTION_OPEN_FILES, 63 FR_BATCH_ACTION_SAVE_AS, 64 FR_BATCH_ACTION_TEST, 65 FR_BATCH_ACTION_CLOSE, 66 FR_BATCH_ACTION_QUIT, 67 FR_BATCH_ACTIONS 68 } FrBatchActionType; 69 70 /* -- FrWindow -- */ 71 72 #define FR_TYPE_WINDOW (fr_window_get_type ()) 73 #define FR_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FR_TYPE_WINDOW, FrWindow)) 74 #define FR_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FR_WINDOW_TYPE, FrWindowClass)) 75 #define FR_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FR_TYPE_WINDOW)) 76 #define FR_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FR_TYPE_WINDOW)) 77 #define FR_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), FR_TYPE_WINDOW, FrWindowClass)) 78 79 typedef struct _FrWindow FrWindow; 80 typedef struct _FrWindowClass FrWindowClass; 81 typedef struct _FrWindowPrivateData FrWindowPrivateData; 82 83 struct _FrWindow 84 { 85 GtkApplicationWindow __parent; 86 FrArchive *archive; 87 FrWindowPrivateData *priv; 88 }; 89 90 struct _FrWindowClass 91 { 92 GtkApplicationWindowClass __parent_class; 93 94 /*<signals>*/ 95 96 void (*archive_loaded) (FrWindow *window, 97 gboolean success); 98 void (*progress) (FrWindow *window, 99 double fraction, 100 const char *msg); 101 void (*ready) (FrWindow *window, 102 GError *error); 103 }; 104 105 GType fr_window_get_type (void); 106 GtkWidget * fr_window_new (void); 107 void fr_window_close (FrWindow *window); 108 109 /* archive operations */ 110 111 gboolean fr_window_archive_new (FrWindow *window, 112 const char *uri); 113 FrWindow * fr_window_archive_open (FrWindow *window, 114 const char *uri, 115 GtkWindow *parent); 116 void fr_window_archive_close (FrWindow *window); 117 const char *fr_window_get_archive_uri (FrWindow *window); 118 const char *fr_window_get_paste_archive_uri (FrWindow *window); 119 gboolean fr_window_archive_is_present (FrWindow *window); 120 void fr_window_archive_save_as (FrWindow *window, 121 const char *filename, 122 const char *password, 123 gboolean encrypt_header, 124 guint volume_size); 125 void fr_window_archive_reload (FrWindow *window); 126 void fr_window_archive_add_files (FrWindow *window, 127 GList *file_list, /* GFile list */ 128 gboolean update); 129 void fr_window_archive_add_with_wildcard (FrWindow *window, 130 const char *include_files, 131 const char *exclude_files, 132 const char *exclude_folders, 133 const char *base_dir, 134 const char *dest_dir, 135 gboolean update, 136 gboolean follow_links); 137 void fr_window_archive_add_directory (FrWindow *window, 138 const char *directory, 139 const char *base_dir, 140 const char *dest_dir, 141 gboolean update); 142 void fr_window_archive_add_items (FrWindow *window, 143 GList *dir_list, 144 const char *base_dir, 145 const char *dest_dir, 146 gboolean update); 147 void fr_window_archive_add_dropped_items (FrWindow *window, 148 GList *item_list, 149 gboolean update); 150 void fr_window_archive_remove (FrWindow *window, 151 GList *file_list); 152 void fr_window_archive_extract (FrWindow *window, 153 GList *file_list, 154 const char *extract_to_dir, 155 const char *base_dir, 156 gboolean skip_older, 157 FrOverwrite overwrite, 158 gboolean junk_paths, 159 gboolean ask_to_open_destination); 160 void fr_window_archive_extract_here (FrWindow *window, 161 gboolean skip_older, 162 gboolean overwrite, 163 gboolean junk_paths); 164 void fr_window_archive_test (FrWindow *window); 165 166 /**/ 167 168 void fr_window_set_password (FrWindow *window, 169 const char *password); 170 void fr_window_set_password_for_paste (FrWindow *window, 171 const char *password); 172 const char *fr_window_get_password (FrWindow *window); 173 void fr_window_set_encrypt_header (FrWindow *window, 174 gboolean encrypt_header); 175 gboolean fr_window_get_encrypt_header (FrWindow *window); 176 void fr_window_set_compression (FrWindow *window, 177 FrCompression compression); 178 FrCompression fr_window_get_compression (FrWindow *window); 179 void fr_window_set_volume_size (FrWindow *window, 180 guint volume_size); 181 guint fr_window_get_volume_size (FrWindow *window); 182 183 /**/ 184 185 void fr_window_go_to_location (FrWindow *window, 186 const char *path, 187 gboolean force_update); 188 const char*fr_window_get_current_location (FrWindow *window); 189 void fr_window_go_up_one_level (FrWindow *window); 190 void fr_window_go_back (FrWindow *window); 191 void fr_window_go_forward (FrWindow *window); 192 void fr_window_current_folder_activated (FrWindow *window, 193 gboolean from_sidebar); 194 void fr_window_set_list_mode (FrWindow *window, 195 FrWindowListMode list_mode); 196 197 /**/ 198 199 void fr_window_update_list_order (FrWindow *window); 200 GList * fr_window_get_file_list_selection (FrWindow *window, 201 gboolean recursive, 202 gboolean *has_dirs); 203 GList * fr_window_get_file_list_from_path_list (FrWindow *window, 204 GList *path_list, 205 gboolean *has_dirs); 206 GList * fr_window_get_file_list_pattern (FrWindow *window, 207 const char *pattern); 208 int fr_window_get_n_selected_files (FrWindow *window); 209 GList * fr_window_get_folder_tree_selection (FrWindow *window, 210 gboolean recursive, 211 gboolean *has_dirs); 212 GList * fr_window_get_selection (FrWindow *window, 213 gboolean from_sidebar, 214 char **return_base_dir); 215 GtkTreeModel * 216 fr_window_get_list_store (FrWindow *window); 217 void fr_window_find (FrWindow *window); 218 void fr_window_select_all (FrWindow *window); 219 void fr_window_unselect_all (FrWindow *window); 220 void fr_window_set_sort_type (FrWindow *window, 221 GtkSortType sort_type); 222 223 /**/ 224 225 void fr_window_rename_selection (FrWindow *window, 226 gboolean from_sidebar); 227 void fr_window_cut_selection (FrWindow *window, 228 gboolean from_sidebar); 229 void fr_window_copy_selection (FrWindow *window, 230 gboolean from_sidebar); 231 void fr_window_paste_selection (FrWindow *window, 232 gboolean from_sidebar); 233 234 /**/ 235 236 void fr_window_stop (FrWindow *window); 237 void fr_window_start_activity_mode (FrWindow *window); 238 void fr_window_stop_activity_mode (FrWindow *window); 239 240 /**/ 241 242 void fr_window_view_last_output (FrWindow *window, 243 const char *title); 244 245 void fr_window_open_files (FrWindow *window, 246 GList *file_list, 247 gboolean ask_application); 248 void fr_window_open_files_with_command (FrWindow *window, 249 GList *file_list, 250 char *command); 251 void fr_window_open_files_with_application (FrWindow *window, 252 GList *file_list, 253 GAppInfo *app); 254 gboolean fr_window_update_files (FrWindow *window, 255 GList *file_list); 256 void fr_window_update_columns_visibility (FrWindow *window); 257 void fr_window_update_history_list (FrWindow *window); 258 void fr_window_set_default_dir (FrWindow *window, 259 const char *default_dir, 260 gboolean freeze); 261 void fr_window_set_open_default_dir (FrWindow *window, 262 const char *default_dir); 263 const char *fr_window_get_open_default_dir (FrWindow *window); 264 void fr_window_set_add_default_dir (FrWindow *window, 265 const char *default_dir); 266 const char *fr_window_get_add_default_dir (FrWindow *window); 267 void fr_window_set_extract_default_dir (FrWindow *window, 268 const char *default_dir, 269 gboolean freeze); 270 const char *fr_window_get_extract_default_dir (FrWindow *window); 271 void fr_window_push_message (FrWindow *window, 272 const char *msg); 273 void fr_window_pop_message (FrWindow *window); 274 void fr_window_set_toolbar_visibility (FrWindow *window, 275 gboolean value); 276 void fr_window_set_statusbar_visibility (FrWindow *window, 277 gboolean value); 278 void fr_window_set_folders_visibility (FrWindow *window, 279 gboolean value); 280 void fr_window_use_progress_dialog (FrWindow *window, 281 gboolean value); 282 283 /* batch mode procedures. */ 284 285 void fr_window_new_batch (FrWindow *window, 286 const char *title); 287 void fr_window_set_current_batch_action (FrWindow *window, 288 FrBatchActionType action, 289 void *data, 290 GFreeFunc free_func); 291 void fr_window_reset_current_batch_action (FrWindow *window); 292 void fr_window_restart_current_batch_action (FrWindow *window); 293 void fr_window_append_batch_action (FrWindow *window, 294 FrBatchActionType action, 295 void *data, 296 GFreeFunc free_func); 297 void fr_window_start_batch (FrWindow *window); 298 void fr_window_stop_batch (FrWindow *window); 299 void fr_window_resume_batch (FrWindow *window); 300 gboolean fr_window_is_batch_mode (FrWindow *window); 301 void fr_window_set_batch__extract (FrWindow *window, 302 const char *filename, 303 const char *dest_dir); 304 void fr_window_set_batch__extract_here (FrWindow *window, 305 const char *filename); 306 void fr_window_set_batch__add (FrWindow *window, 307 const char *archive, 308 GList *file_list); 309 void fr_window_destroy_with_error_dialog (FrWindow *window); 310 311 /**/ 312 313 gboolean fr_window_file_list_drag_data_get (FrWindow *window, 314 GdkDragContext *context, 315 GtkSelectionData *selection_data, 316 GList *path_list); 317 318 void fr_window_update_dialog_closed (FrWindow *window); 319 320 #endif /* FR_WINDOW_H */ 321