1 /* 2 * Copyright © 2018 Benjamin Otte 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 * 17 * Authors: Benjamin Otte <otte@gnome.org> 18 */ 19 20 21 #ifndef __GTK_LIST_LIST_MODEL_H__ 22 #define __GTK_LIST_LIST_MODEL_H__ 23 24 #include <gio/gio.h> 25 26 G_BEGIN_DECLS 27 28 #define GTK_TYPE_LIST_LIST_MODEL (gtk_list_list_model_get_type ()) 29 #define GTK_LIST_LIST_MODEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_LIST_LIST_MODEL, GtkListListModel)) 30 #define GTK_LIST_LIST_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_LIST_LIST_MODEL, GtkListListModelClass)) 31 #define GTK_IS_LIST_LIST_MODEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_LIST_LIST_MODEL)) 32 #define GTK_IS_LIST_LIST_MODEL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_LIST_LIST_MODEL)) 33 #define GTK_LIST_LIST_MODEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_LIST_LIST_MODEL, GtkListListModelClass)) 34 35 typedef struct _GtkListListModel GtkListListModel; 36 typedef struct _GtkListListModelClass GtkListListModelClass; 37 38 GType gtk_list_list_model_get_type (void) G_GNUC_CONST; 39 40 GtkListListModel * gtk_list_list_model_new (gpointer (* get_first) (gpointer), 41 gpointer (* get_next) (gpointer, gpointer), 42 gpointer (* get_previous) (gpointer, gpointer), 43 gpointer (* get_last) (gpointer), 44 gpointer (* get_item) (gpointer, gpointer), 45 gpointer data, 46 GDestroyNotify notify); 47 48 GtkListListModel * gtk_list_list_model_new_with_size (guint n_items, 49 gpointer (* get_first) (gpointer), 50 gpointer (* get_next) (gpointer, gpointer), 51 gpointer (* get_previous) (gpointer, gpointer), 52 gpointer (* get_last) (gpointer), 53 gpointer (* get_item) (gpointer, gpointer), 54 gpointer data, 55 GDestroyNotify notify); 56 57 void gtk_list_list_model_item_added (GtkListListModel *self, 58 gpointer item); 59 void gtk_list_list_model_item_added_at (GtkListListModel *self, 60 guint position); 61 void gtk_list_list_model_item_removed (GtkListListModel *self, 62 gpointer previous); 63 void gtk_list_list_model_item_removed_at (GtkListListModel *self, 64 guint position); 65 void gtk_list_list_model_item_moved (GtkListListModel *self, 66 gpointer item, 67 gpointer previous_previous); 68 69 void gtk_list_list_model_clear (GtkListListModel *self); 70 71 72 G_END_DECLS 73 74 #endif /* __GTK_LIST_LIST_MODEL_H__ */ 75