]> Pileus Git - ~andy/gtk/blob - gtk/gtktreeselection.h
104cb73dfa6eabb0d5d7835f446c70bf2e3717c1
[~andy/gtk] / gtk / gtktreeselection.h
1 /* gtktreeselection.h
2  * Copyright (C) 2000  Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 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  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 #ifndef __GTK_TREE_SELECTION_H__
21 #define __GTK_TREE_SELECTION_H__
22
23 #include <gtk/gtkobject.h>
24 #include <gtk/gtktreeview.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* __cplusplus */
29
30 #define GTK_TYPE_TREE_SELECTION                 (gtk_tree_selection_get_type ())
31 #define GTK_TREE_SELECTION(obj)                 (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_SELECTION, GtkTreeSelection))
32 #define GTK_TREE_SELECTION_CLASS(klass)         (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_SELECTION, GtkTreeSelectionClass))
33 #define GTK_IS_TREE_SELECTION(obj)              (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_SELECTION))
34 #define GTK_IS_TREE_SELECTION_CLASS(klass)      (GTK_CHECK_CLASS_TYPE ((obj), GTK_TYPE_TREE_SELECTION))
35 #define GTK_TREE_SELECTION_GET_CLASS(obj)       (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TREE_SELECTION, GtkTreeSelectionClass))
36
37 typedef enum
38 {
39   GTK_TREE_SELECTION_SINGLE,
40   GTK_TREE_SELECTION_MULTI
41 } GtkTreeSelectionMode;
42
43 typedef gboolean (* GtkTreeSelectionFunc)    (GtkTreeSelection  *selection,
44                                               GtkTreeModel      *model,
45                                               GtkTreePath       *path,
46                                               gpointer           data);
47 typedef void (* GtkTreeSelectionForeachFunc) (GtkTreeModel      *model,
48                                               GtkTreeIter       *iter,
49                                               gpointer           data);
50
51 struct _GtkTreeSelection
52 {
53   GtkObject parent;
54
55   /*< private >*/
56   
57   GtkTreeView *tree_view;
58   GtkTreeSelectionMode type;
59   GtkTreeSelectionFunc user_func;
60   gpointer user_data;
61   GtkDestroyNotify destroy;
62 };
63
64 struct _GtkTreeSelectionClass
65 {
66   GtkObjectClass parent_class;
67
68   void (* selection_changed) (GtkTreeView *tree_view);
69 };
70
71
72 GtkType          gtk_tree_selection_get_type            (void);
73
74 void             gtk_tree_selection_set_mode            (GtkTreeSelection            *selection,
75                                                          GtkTreeSelectionMode         type);
76 void             gtk_tree_selection_set_select_function (GtkTreeSelection            *selection,
77                                                          GtkTreeSelectionFunc         func,
78                                                          gpointer                     data,
79                                                          GtkDestroyNotify             destroy);
80 gpointer         gtk_tree_selection_get_user_data       (GtkTreeSelection            *selection);
81 GtkTreeView*     gtk_tree_selection_get_tree_view       (GtkTreeSelection            *selection);
82
83 /* Only meaningful if GTK_TREE_SELECTION_SINGLE is set */
84 /* Use selected_foreach for GTK_TREE_SELECTION_MULTI */
85 gboolean         gtk_tree_selection_get_selected        (GtkTreeSelection            *selection,
86                                                          GtkTreeModel               **model,
87                                                          GtkTreeIter                 *iter);
88
89 /* FIXME: Get a more convenient get_selection function????  one returning GSList?? */
90 void             gtk_tree_selection_selected_foreach    (GtkTreeSelection            *selection,
91                                                          GtkTreeSelectionForeachFunc  func,
92                                                          gpointer                     data);
93 void             gtk_tree_selection_select_path         (GtkTreeSelection            *selection,
94                                                          GtkTreePath                 *path);
95 void             gtk_tree_selection_unselect_path       (GtkTreeSelection            *selection,
96                                                          GtkTreePath                 *path);
97 void             gtk_tree_selection_select_iter         (GtkTreeSelection            *selection,
98                                                          GtkTreeIter                 *iter);
99 void             gtk_tree_selection_unselect_iter       (GtkTreeSelection            *selection,
100                                                          GtkTreeIter                 *iter);
101 void             gtk_tree_selection_select_all          (GtkTreeSelection            *selection);
102 void             gtk_tree_selection_unselect_all        (GtkTreeSelection            *selection);
103 void             gtk_tree_selection_select_range        (GtkTreeSelection            *selection,
104                                                          GtkTreePath                 *start_path,
105                                                          GtkTreePath                 *end_path);
106
107
108 #ifdef __cplusplus
109 }
110 #endif /* __cplusplus */
111
112
113 #endif /* __GTK_TREE_SELECTION_H__ */
114