1 /* 2 * gedit-file-browser-store.h - Gedit plugin providing easy file access 3 * from the sidepanel 4 * 5 * Copyright (C) 2006 - Jesse van den Kieboom <jesse@icecrew.nl> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2, or (at your option) 10 * 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 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #ifndef GEDIT_FILE_BROWSER_STORE_H 22 #define GEDIT_FILE_BROWSER_STORE_H 23 24 #include <gtk/gtk.h> 25 26 G_BEGIN_DECLS 27 #define GEDIT_TYPE_FILE_BROWSER_STORE (gedit_file_browser_store_get_type ()) 28 #define GEDIT_FILE_BROWSER_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEDIT_TYPE_FILE_BROWSER_STORE, GeditFileBrowserStore)) 29 #define GEDIT_FILE_BROWSER_STORE_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEDIT_TYPE_FILE_BROWSER_STORE, GeditFileBrowserStore const)) 30 #define GEDIT_FILE_BROWSER_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEDIT_TYPE_FILE_BROWSER_STORE, GeditFileBrowserStoreClass)) 31 #define GEDIT_IS_FILE_BROWSER_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEDIT_TYPE_FILE_BROWSER_STORE)) 32 #define GEDIT_IS_FILE_BROWSER_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEDIT_TYPE_FILE_BROWSER_STORE)) 33 #define GEDIT_FILE_BROWSER_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEDIT_TYPE_FILE_BROWSER_STORE, GeditFileBrowserStoreClass)) 34 35 typedef enum 36 { 37 GEDIT_FILE_BROWSER_STORE_COLUMN_ICON = 0, 38 GEDIT_FILE_BROWSER_STORE_COLUMN_ICON_NAME, 39 GEDIT_FILE_BROWSER_STORE_COLUMN_MARKUP, 40 GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION, 41 GEDIT_FILE_BROWSER_STORE_COLUMN_FLAGS, 42 43 /* Columns not in common with GeditFileBookmarksStore */ 44 GEDIT_FILE_BROWSER_STORE_COLUMN_NAME, 45 GEDIT_FILE_BROWSER_STORE_COLUMN_EMBLEM, 46 GEDIT_FILE_BROWSER_STORE_COLUMN_NUM 47 } GeditFileBrowserStoreColumn; 48 49 typedef enum 50 { 51 GEDIT_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY = 1 << 0, 52 GEDIT_FILE_BROWSER_STORE_FLAG_IS_HIDDEN = 1 << 1, 53 GEDIT_FILE_BROWSER_STORE_FLAG_IS_TEXT = 1 << 2, 54 GEDIT_FILE_BROWSER_STORE_FLAG_LOADED = 1 << 3, 55 GEDIT_FILE_BROWSER_STORE_FLAG_IS_FILTERED = 1 << 4, 56 GEDIT_FILE_BROWSER_STORE_FLAG_IS_DUMMY = 1 << 5 57 } GeditFileBrowserStoreFlag; 58 59 typedef enum 60 { 61 GEDIT_FILE_BROWSER_STORE_RESULT_OK, 62 GEDIT_FILE_BROWSER_STORE_RESULT_NO_CHANGE, 63 GEDIT_FILE_BROWSER_STORE_RESULT_ERROR, 64 GEDIT_FILE_BROWSER_STORE_RESULT_NO_TRASH, 65 GEDIT_FILE_BROWSER_STORE_RESULT_MOUNTING, 66 GEDIT_FILE_BROWSER_STORE_RESULT_NUM 67 } GeditFileBrowserStoreResult; 68 69 typedef enum 70 { 71 GEDIT_FILE_BROWSER_STORE_FILTER_MODE_NONE = 0, 72 GEDIT_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN = 1 << 0, 73 GEDIT_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY = 1 << 1 74 } GeditFileBrowserStoreFilterMode; 75 76 #define FILE_IS_DIR(flags) (flags & GEDIT_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY) 77 #define FILE_IS_HIDDEN(flags) (flags & GEDIT_FILE_BROWSER_STORE_FLAG_IS_HIDDEN) 78 #define FILE_IS_TEXT(flags) (flags & GEDIT_FILE_BROWSER_STORE_FLAG_IS_TEXT) 79 #define FILE_LOADED(flags) (flags & GEDIT_FILE_BROWSER_STORE_FLAG_LOADED) 80 #define FILE_IS_FILTERED(flags) (flags & GEDIT_FILE_BROWSER_STORE_FLAG_IS_FILTERED) 81 #define FILE_IS_DUMMY(flags) (flags & GEDIT_FILE_BROWSER_STORE_FLAG_IS_DUMMY) 82 83 typedef struct _GeditFileBrowserStore GeditFileBrowserStore; 84 typedef struct _GeditFileBrowserStoreClass GeditFileBrowserStoreClass; 85 typedef struct _GeditFileBrowserStorePrivate GeditFileBrowserStorePrivate; 86 87 typedef gboolean (*GeditFileBrowserStoreFilterFunc) (GeditFileBrowserStore *model, 88 GtkTreeIter *iter, 89 gpointer user_data); 90 91 struct _GeditFileBrowserStore 92 { 93 GObject parent; 94 95 GeditFileBrowserStorePrivate *priv; 96 }; 97 98 struct _GeditFileBrowserStoreClass { 99 GObjectClass parent_class; 100 101 /* Signals */ 102 void (* begin_loading) (GeditFileBrowserStore *model, 103 GtkTreeIter *iter); 104 void (* end_loading) (GeditFileBrowserStore *model, 105 GtkTreeIter *iter); 106 void (* error) (GeditFileBrowserStore *model, 107 guint code, 108 gchar *message); 109 gboolean (* no_trash) (GeditFileBrowserStore *model, 110 GList *files); 111 void (* rename) (GeditFileBrowserStore *model, 112 GFile *oldfile, 113 GFile *newfile); 114 void (* begin_refresh) (GeditFileBrowserStore *model); 115 void (* end_refresh) (GeditFileBrowserStore *model); 116 void (* unload) (GeditFileBrowserStore *model, 117 GFile *location); 118 void (* before_row_deleted) (GeditFileBrowserStore *model, 119 GtkTreePath *path); 120 }; 121 122 GType gedit_file_browser_store_get_type (void) G_GNUC_CONST; 123 124 GeditFileBrowserStore *gedit_file_browser_store_new (GFile *root); 125 GeditFileBrowserStoreResult gedit_file_browser_store_set_root_and_virtual_root (GeditFileBrowserStore *model, 126 GFile *root, 127 GFile *virtual_root); 128 GeditFileBrowserStoreResult gedit_file_browser_store_set_root (GeditFileBrowserStore *model, 129 GFile *root); 130 GeditFileBrowserStoreResult gedit_file_browser_store_set_virtual_root (GeditFileBrowserStore *model, 131 GtkTreeIter *iter); 132 GeditFileBrowserStoreResult gedit_file_browser_store_set_virtual_root_from_location (GeditFileBrowserStore *model, 133 GFile *root); 134 GeditFileBrowserStoreResult gedit_file_browser_store_set_virtual_root_up (GeditFileBrowserStore *model); 135 GeditFileBrowserStoreResult gedit_file_browser_store_set_virtual_root_top (GeditFileBrowserStore *model); 136 gboolean gedit_file_browser_store_get_iter_virtual_root (GeditFileBrowserStore *model, 137 GtkTreeIter *iter); 138 gboolean gedit_file_browser_store_get_iter_root (GeditFileBrowserStore *model, 139 GtkTreeIter *iter); 140 GFile *gedit_file_browser_store_get_root (GeditFileBrowserStore *model); 141 GFile *gedit_file_browser_store_get_virtual_root (GeditFileBrowserStore *model); 142 gboolean gedit_file_browser_store_iter_equal (GeditFileBrowserStore *model, 143 GtkTreeIter *iter1, 144 GtkTreeIter *iter2); 145 void gedit_file_browser_store_set_value (GeditFileBrowserStore *tree_model, 146 GtkTreeIter *iter, 147 gint column, 148 GValue *value); 149 void _gedit_file_browser_store_iter_expanded (GeditFileBrowserStore *model, 150 GtkTreeIter *iter); 151 void _gedit_file_browser_store_iter_collapsed (GeditFileBrowserStore *model, 152 GtkTreeIter *iter); 153 GeditFileBrowserStoreFilterMode gedit_file_browser_store_get_filter_mode (GeditFileBrowserStore *model); 154 void gedit_file_browser_store_set_filter_mode (GeditFileBrowserStore *model, 155 GeditFileBrowserStoreFilterMode mode); 156 void gedit_file_browser_store_set_filter_func (GeditFileBrowserStore *model, 157 GeditFileBrowserStoreFilterFunc func, 158 gpointer user_data); 159 const gchar * const *gedit_file_browser_store_get_binary_patterns (GeditFileBrowserStore *model); 160 void gedit_file_browser_store_set_binary_patterns (GeditFileBrowserStore *model, 161 const gchar **binary_patterns); 162 void gedit_file_browser_store_refilter (GeditFileBrowserStore *model); 163 GeditFileBrowserStoreFilterMode gedit_file_browser_store_filter_mode_get_default (void); 164 void gedit_file_browser_store_refresh (GeditFileBrowserStore *model); 165 gboolean gedit_file_browser_store_rename (GeditFileBrowserStore *model, 166 GtkTreeIter *iter, 167 gchar const *new_name, 168 GError **error); 169 GeditFileBrowserStoreResult gedit_file_browser_store_delete (GeditFileBrowserStore *model, 170 GtkTreeIter *iter, 171 gboolean trash); 172 GeditFileBrowserStoreResult gedit_file_browser_store_delete_all (GeditFileBrowserStore *model, 173 GList *rows, 174 gboolean trash); 175 gboolean gedit_file_browser_store_new_file (GeditFileBrowserStore *model, 176 GtkTreeIter *parent, 177 GtkTreeIter *iter); 178 gboolean gedit_file_browser_store_new_directory (GeditFileBrowserStore *model, 179 GtkTreeIter *parent, 180 GtkTreeIter *iter); 181 void gedit_file_browser_store_cancel_mount_operation (GeditFileBrowserStore *store); 182 183 void _gedit_file_browser_store_register_type (GTypeModule *type_module); 184 185 G_END_DECLS 186 187 #endif /* GEDIT_FILE_BROWSER_STORE_H */ 188 /* ex:set ts=8 noet: */ 189