1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- 2 3 caja-window-info.h: Interface for caja windows 4 5 Copyright (C) 2004 Red Hat 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, write to the 19 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 20 Boston, MA 02110-1301, USA. 21 22 Author: Alexander Larsson <alexl@redhat.com> 23 */ 24 25 #ifndef CAJA_WINDOW_INFO_H 26 #define CAJA_WINDOW_INFO_H 27 28 #include <glib-object.h> 29 30 #include <gtk/gtk.h> 31 32 #include "caja-view.h" 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 typedef enum 39 { 40 CAJA_WINDOW_SHOW_HIDDEN_FILES_DEFAULT, 41 CAJA_WINDOW_SHOW_HIDDEN_FILES_ENABLE, 42 CAJA_WINDOW_SHOW_HIDDEN_FILES_DISABLE 43 } 44 CajaWindowShowHiddenFilesMode; 45 46 typedef enum 47 { 48 CAJA_WINDOW_SHOW_BACKUP_FILES_DEFAULT, 49 CAJA_WINDOW_SHOW_BACKUP_FILES_ENABLE, 50 CAJA_WINDOW_SHOW_BACKUP_FILES_DISABLE 51 } 52 CajaWindowShowBackupFilesMode; 53 54 typedef enum 55 { 56 CAJA_WINDOW_OPEN_ACCORDING_TO_MODE, 57 CAJA_WINDOW_OPEN_IN_SPATIAL, 58 CAJA_WINDOW_OPEN_IN_NAVIGATION 59 } CajaWindowOpenMode; 60 61 typedef enum 62 { 63 /* used in spatial mode */ 64 CAJA_WINDOW_OPEN_FLAG_CLOSE_BEHIND = 1<<0, 65 /* used in navigation mode */ 66 CAJA_WINDOW_OPEN_FLAG_NEW_WINDOW = 1<<1, 67 CAJA_WINDOW_OPEN_FLAG_NEW_TAB = 1<<2 68 } CajaWindowOpenFlags; 69 70 typedef enum 71 { 72 CAJA_WINDOW_SPATIAL, 73 CAJA_WINDOW_NAVIGATION, 74 CAJA_WINDOW_DESKTOP 75 } CajaWindowType; 76 77 #define CAJA_TYPE_WINDOW_INFO (caja_window_info_get_type ()) 78 #define CAJA_WINDOW_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAJA_TYPE_WINDOW_INFO, CajaWindowInfo)) 79 #define CAJA_IS_WINDOW_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAJA_TYPE_WINDOW_INFO)) 80 #define CAJA_WINDOW_INFO_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CAJA_TYPE_WINDOW_INFO, CajaWindowInfoIface)) 81 82 #ifndef CAJA_WINDOW_DEFINED 83 #define CAJA_WINDOW_DEFINED 84 /* Using CajaWindow for the vtable to make implementing this in 85 * CajaWindow easier */ 86 typedef struct CajaWindow CajaWindow; 87 #endif 88 89 #ifndef CAJA_WINDOW_SLOT_DEFINED 90 #define CAJA_WINDOW_SLOT_DEFINED 91 typedef struct CajaWindowSlot CajaWindowSlot; 92 #endif 93 94 95 typedef CajaWindowSlot CajaWindowSlotInfo; 96 typedef CajaWindow CajaWindowInfo; 97 98 typedef struct _CajaWindowInfoIface CajaWindowInfoIface; 99 100 typedef void (* CajaWindowGoToCallback) (CajaWindow *window, 101 GError *error, 102 gpointer user_data); 103 104 struct _CajaWindowInfoIface 105 { 106 GTypeInterface g_iface; 107 108 /* signals: */ 109 110 void (* loading_uri) (CajaWindowInfo *window, 111 const char *uri); 112 /* Emitted when the view in the window changes the selection */ 113 void (* selection_changed) (CajaWindowInfo *window); 114 void (* title_changed) (CajaWindowInfo *window, 115 const char *title); 116 void (* hidden_files_mode_changed)(CajaWindowInfo *window); 117 void (* backup_files_mode_changed)(CajaWindowInfo *window); 118 119 /* VTable: */ 120 /* A view calls this once after a load_location, once it starts loading the 121 * directory. Might be called directly, or later on the mainloop. 122 * This can also be called at any other time if the view needs to 123 * re-load the location. But the view needs to call load_complete first if 124 * its currently loading. */ 125 void (* report_load_underway) (CajaWindowInfo *window, 126 CajaView *view); 127 /* A view calls this once after reporting load_underway, when the location 128 has been fully loaded, or when the load was stopped 129 (by an error or by the user). */ 130 void (* report_load_complete) (CajaWindowInfo *window, 131 CajaView *view); 132 /* This can be called at any time when there has been a catastrophic failure of 133 the view. It will result in the view being removed. */ 134 void (* report_view_failed) (CajaWindowInfo *window, 135 CajaView *view); 136 void (* report_selection_changed) (CajaWindowInfo *window); 137 138 /* Returns the number of selected items in the view */ 139 int (* get_selection_count) (CajaWindowInfo *window); 140 141 /* Returns a list of uris for th selected items in the view, caller frees it */ 142 GList *(* get_selection) (CajaWindowInfo *window); 143 144 char * (* get_current_location) (CajaWindowInfo *window); 145 void (* push_status) (CajaWindowInfo *window, 146 const char *status); 147 char * (* get_title) (CajaWindowInfo *window); 148 GList *(* get_history) (CajaWindowInfo *window); 149 CajaWindowType 150 (* get_window_type) (CajaWindowInfo *window); 151 CajaWindowShowHiddenFilesMode 152 (* get_hidden_files_mode) (CajaWindowInfo *window); 153 void (* set_hidden_files_mode) (CajaWindowInfo *window, 154 CajaWindowShowHiddenFilesMode mode); 155 CajaWindowShowBackupFilesMode 156 (* get_backup_files_mode) (CajaWindowInfo *window); 157 void (* set_backup_files_mode) (CajaWindowInfo *window, 158 CajaWindowShowBackupFilesMode mode); 159 160 CajaWindowSlotInfo * (* get_active_slot) (CajaWindowInfo *window); 161 CajaWindowSlotInfo * (* get_extra_slot) (CajaWindowInfo *window); 162 163 gboolean (* get_initiated_unmount) (CajaWindowInfo *window); 164 void (* set_initiated_unmount) (CajaWindowInfo *window, 165 gboolean initiated_unmount); 166 167 void (* view_visible) (CajaWindowInfo *window, 168 CajaView *view); 169 void (* close_window) (CajaWindowInfo *window); 170 GtkUIManager * (* get_ui_manager) (CajaWindowInfo *window); 171 }; 172 173 GType caja_window_info_get_type (void); 174 void caja_window_info_report_load_underway (CajaWindowInfo *window, 175 CajaView *view); 176 void caja_window_info_report_load_complete (CajaWindowInfo *window, 177 CajaView *view); 178 void caja_window_info_report_view_failed (CajaWindowInfo *window, 179 CajaView *view); 180 void caja_window_info_report_selection_changed (CajaWindowInfo *window); 181 CajaWindowSlotInfo * caja_window_info_get_active_slot (CajaWindowInfo *window); 182 CajaWindowSlotInfo * caja_window_info_get_extra_slot (CajaWindowInfo *window); 183 void caja_window_info_view_visible (CajaWindowInfo *window, 184 CajaView *view); 185 void caja_window_info_close (CajaWindowInfo *window); 186 void caja_window_info_push_status (CajaWindowInfo *window, 187 const char *status); 188 CajaWindowType caja_window_info_get_window_type (CajaWindowInfo *window); 189 char * caja_window_info_get_title (CajaWindowInfo *window); 190 GList * caja_window_info_get_history (CajaWindowInfo *window); 191 char * caja_window_info_get_current_location (CajaWindowInfo *window); 192 int caja_window_info_get_selection_count (CajaWindowInfo *window); 193 GList * caja_window_info_get_selection (CajaWindowInfo *window); 194 CajaWindowShowHiddenFilesMode caja_window_info_get_hidden_files_mode (CajaWindowInfo *window); 195 void caja_window_info_set_hidden_files_mode (CajaWindowInfo *window, 196 CajaWindowShowHiddenFilesMode mode); 197 CajaWindowShowBackupFilesMode caja_window_info_get_backup_files_mode (CajaWindowInfo *window); 198 void caja_window_info_set_backup_files_mode (CajaWindowInfo *window, 199 CajaWindowShowBackupFilesMode mode); 200 201 gboolean caja_window_info_get_initiated_unmount (CajaWindowInfo *window); 202 void caja_window_info_set_initiated_unmount (CajaWindowInfo *window, 203 gboolean initiated_unmount); 204 GtkUIManager * caja_window_info_get_ui_manager (CajaWindowInfo *window); 205 206 #ifdef __cplusplus 207 } 208 #endif 209 210 #endif /* CAJA_WINDOW_INFO_H */ 211