1/* gtktreeselection.h
2 * Copyright (C) 2000 Red Hat, Inc., Jonathan Blandford <[email protected]>
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#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
24#error "Only <gtk/gtk.h> can be included directly."
25#endif
26
27#include <gtk/gtktreeview.h>
28
29G_BEGIN_DECLS
30
31
32#define GTK_TYPE_TREE_SELECTION (gtk_tree_selection_get_type ())
33#define GTK_TREE_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_SELECTION, GtkTreeSelection))
34#define GTK_TREE_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_SELECTION, GtkTreeSelectionClass))
35#define GTK_IS_TREE_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_SELECTION))
36#define GTK_IS_TREE_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_SELECTION))
37#define GTK_TREE_SELECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_SELECTION, GtkTreeSelectionClass))
38
39typedef gboolean (* GtkTreeSelectionFunc) (GtkTreeSelection *selection,
40 GtkTreeModel *model,
41 GtkTreePath *path,
42 gboolean path_currently_selected,
43 gpointer data);
44typedef void (* GtkTreeSelectionForeachFunc) (GtkTreeModel *model,
45 GtkTreePath *path,
46 GtkTreeIter *iter,
47 gpointer data);
48
49struct _GtkTreeSelection
50{
51 GObject parent;
52
53 /*< private >*/
54
55 GtkTreeView *GSEAL (tree_view);
56 GtkSelectionMode GSEAL (type);
57 GtkTreeSelectionFunc GSEAL (user_func);
58 gpointer GSEAL (user_data);
59 GDestroyNotify GSEAL (destroy);
60};
61
62struct _GtkTreeSelectionClass
63{
64 GObjectClass parent_class;
65
66 void (* changed) (GtkTreeSelection *selection);
67
68 /* Padding for future expansion */
69 void (*_gtk_reserved1) (void);
70 void (*_gtk_reserved2) (void);
71 void (*_gtk_reserved3) (void);
72 void (*_gtk_reserved4) (void);
73};
74
75
76GType gtk_tree_selection_get_type (void) G_GNUC_CONST;
77
78void gtk_tree_selection_set_mode (GtkTreeSelection *selection,
79 GtkSelectionMode type);
80GtkSelectionMode gtk_tree_selection_get_mode (GtkTreeSelection *selection);
81void gtk_tree_selection_set_select_function (GtkTreeSelection *selection,
82 GtkTreeSelectionFunc func,
83 gpointer data,
84 GDestroyNotify destroy);
85gpointer gtk_tree_selection_get_user_data (GtkTreeSelection *selection);
86GtkTreeView* gtk_tree_selection_get_tree_view (GtkTreeSelection *selection);
87
88GtkTreeSelectionFunc gtk_tree_selection_get_select_function (GtkTreeSelection *selection);
89
90/* Only meaningful if GTK_SELECTION_SINGLE or GTK_SELECTION_BROWSE is set */
91/* Use selected_foreach or get_selected_rows for GTK_SELECTION_MULTIPLE */
92gboolean gtk_tree_selection_get_selected (GtkTreeSelection *selection,
93 GtkTreeModel **model,
94 GtkTreeIter *iter);
95GList * gtk_tree_selection_get_selected_rows (GtkTreeSelection *selection,
96 GtkTreeModel **model);
97gint gtk_tree_selection_count_selected_rows (GtkTreeSelection *selection);
98void gtk_tree_selection_selected_foreach (GtkTreeSelection *selection,
99 GtkTreeSelectionForeachFunc func,
100 gpointer data);
101void gtk_tree_selection_select_path (GtkTreeSelection *selection,
102 GtkTreePath *path);
103void gtk_tree_selection_unselect_path (GtkTreeSelection *selection,
104 GtkTreePath *path);
105void gtk_tree_selection_select_iter (GtkTreeSelection *selection,
106 GtkTreeIter *iter);
107void gtk_tree_selection_unselect_iter (GtkTreeSelection *selection,
108 GtkTreeIter *iter);
109gboolean gtk_tree_selection_path_is_selected (GtkTreeSelection *selection,
110 GtkTreePath *path);
111gboolean gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection,
112 GtkTreeIter *iter);
113void gtk_tree_selection_select_all (GtkTreeSelection *selection);
114void gtk_tree_selection_unselect_all (GtkTreeSelection *selection);
115void gtk_tree_selection_select_range (GtkTreeSelection *selection,
116 GtkTreePath *start_path,
117 GtkTreePath *end_path);
118void gtk_tree_selection_unselect_range (GtkTreeSelection *selection,
119 GtkTreePath *start_path,
120 GtkTreePath *end_path);
121
122
123G_END_DECLS
124
125#endif /* __GTK_TREE_SELECTION_H__ */
126