1 2 /* fm-list-model.h - a GtkTreeModel for file lists. 3 4 Copyright (C) 2001, 2002 Anders Carlsson 5 6 The Gnome Library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Library General Public License as 8 published by the Free Software Foundation; either version 2 of the 9 License, or (at your option) any later version. 10 11 The Gnome Library is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Library General Public License for more details. 15 16 You should have received a copy of the GNU Library General Public 17 License along with the Gnome Library; see the file COPYING.LIB. If not, 18 see <http://www.gnu.org/licenses/>. 19 20 Authors: Anders Carlsson <andersca@gnu.org> 21 */ 22 23 #pragma once 24 25 #include <gtk/gtk.h> 26 #include <gdk/gdk.h> 27 #include "nautilus-file.h" 28 #include "nautilus-directory.h" 29 #include <nautilus-extension.h> 30 31 #define NAUTILUS_TYPE_LIST_MODEL nautilus_list_model_get_type() 32 G_DECLARE_DERIVABLE_TYPE (NautilusListModel, nautilus_list_model, NAUTILUS, LIST_MODEL, GObject); 33 34 enum { 35 NAUTILUS_LIST_MODEL_FILE_COLUMN, 36 NAUTILUS_LIST_MODEL_SUBDIRECTORY_COLUMN, 37 NAUTILUS_LIST_MODEL_SMALL_ICON_COLUMN, 38 NAUTILUS_LIST_MODEL_STANDARD_ICON_COLUMN, 39 NAUTILUS_LIST_MODEL_LARGE_ICON_COLUMN, 40 NAUTILUS_LIST_MODEL_LARGER_ICON_COLUMN, 41 NAUTILUS_LIST_MODEL_FILE_NAME_IS_EDITABLE_COLUMN, 42 NAUTILUS_LIST_MODEL_NUM_COLUMNS 43 }; 44 45 struct _NautilusListModelClass 46 { 47 GObjectClass parent_class; 48 49 void (* subdirectory_unloaded)(NautilusListModel *model, 50 NautilusDirectory *subdirectory); 51 }; 52 53 gboolean nautilus_list_model_add_file (NautilusListModel *model, 54 NautilusFile *file, 55 NautilusDirectory *directory); 56 void nautilus_list_model_file_changed (NautilusListModel *model, 57 NautilusFile *file, 58 NautilusDirectory *directory); 59 gboolean nautilus_list_model_is_empty (NautilusListModel *model); 60 void nautilus_list_model_remove_file (NautilusListModel *model, 61 NautilusFile *file, 62 NautilusDirectory *directory); 63 void nautilus_list_model_clear (NautilusListModel *model); 64 gboolean nautilus_list_model_get_tree_iter_from_file (NautilusListModel *model, 65 NautilusFile *file, 66 NautilusDirectory *directory, 67 GtkTreeIter *iter); 68 GList * nautilus_list_model_get_all_iters_for_file (NautilusListModel *model, 69 NautilusFile *file); 70 gboolean nautilus_list_model_get_first_iter_for_file (NautilusListModel *model, 71 NautilusFile *file, 72 GtkTreeIter *iter); 73 void nautilus_list_model_set_should_sort_directories_first (NautilusListModel *model, 74 gboolean sort_directories_first); 75 76 int nautilus_list_model_get_sort_column_id_from_attribute (NautilusListModel *model, 77 GQuark attribute); 78 GQuark nautilus_list_model_get_attribute_from_sort_column_id (NautilusListModel *model, 79 int sort_column_id); 80 void nautilus_list_model_sort_files (NautilusListModel *model, 81 GList **files); 82 83 NautilusListZoomLevel nautilus_list_model_get_zoom_level_from_column_id (int column); 84 int nautilus_list_model_get_column_id_from_zoom_level (NautilusListZoomLevel zoom_level); 85 guint nautilus_list_model_get_icon_size_for_zoom_level (NautilusListZoomLevel zoom_level); 86 87 NautilusFile * nautilus_list_model_file_for_path (NautilusListModel *model, GtkTreePath *path); 88 gboolean nautilus_list_model_load_subdirectory (NautilusListModel *model, GtkTreePath *path, NautilusDirectory **directory); 89 void nautilus_list_model_unload_subdirectory (NautilusListModel *model, GtkTreeIter *iter); 90 91 void nautilus_list_model_set_drag_view (NautilusListModel *model, 92 GtkTreeView *view, 93 int begin_x, 94 int begin_y); 95 GtkTreeView * nautilus_list_model_get_drag_view (NautilusListModel *model, 96 int *drag_begin_x, 97 int *drag_begin_y); 98 99 GtkTargetList * nautilus_list_model_get_drag_target_list (void); 100 101 int nautilus_list_model_compare_func (NautilusListModel *model, 102 NautilusFile *file1, 103 NautilusFile *file2); 104 105 106 int nautilus_list_model_add_column (NautilusListModel *model, 107 NautilusColumn *column); 108 109 void nautilus_list_model_subdirectory_done_loading (NautilusListModel *model, 110 NautilusDirectory *directory); 111 112 void nautilus_list_model_set_highlight_for_files (NautilusListModel *model, 113 GList *files);