2 PSPPIRE --- A Graphical User Interface for PSPP
3 Copyright (C) 2007 Free Software Foundation
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 #ifndef __PSPPIRE_SELECTOR_H__
23 #define __PSPPIRE_SELECTOR_H__
27 #include <glib-object.h>
28 #include <gtk/gtkbutton.h>
29 #include <gtk/gtkarrow.h>
30 #include <gtk/gtktreemodel.h>
31 #include <gtk/gtktreemodelfilter.h>
35 #define PSPPIRE_SELECTOR_TYPE (psppire_selector_get_type ())
36 #define PSPPIRE_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPPIRE_SELECTOR_TYPE, PsppireSelector))
37 #define PSPPIRE_SELECTOR_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \
38 PSPPIRE_SELECTOR_TYPE, PsppireSelectorClass))
39 #define PSPPIRE_IS_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
40 PSPPIRE_SELECTOR_TYPE))
41 #define PSPPIRE_IS_SELECTOR_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \
42 PSPPIRE_SELECTOR_TYPE))
45 typedef struct _PsppireSelector PsppireSelector;
46 typedef struct _PsppireSelectorClass PsppireSelectorClass;
49 /* Function for appending selected items to the destination widget */
50 typedef void SelectItemsFunc (GtkTreeIter iter,
52 GtkTreeModel *source_model);
55 /* Function to determine whether an item in MODEL, pointed to by ITER
56 is currently selected.
58 Returns TRUE if the item is currently selected, FALSE otherwise.
60 typedef gboolean FilterItemsFunc (GtkTreeModel *model,
62 PsppireSelector *selector);
64 enum psppire_selector_dir
66 PSPPIRE_SELECTOR_SOURCE_TO_DEST,
67 PSPPIRE_SELECTOR_DEST_TO_SOURCE
71 struct _PsppireSelector
78 enum psppire_selector_dir direction;
83 GtkTreeModelFilter *filtered_source;
85 SelectItemsFunc *select_items;
86 FilterItemsFunc *filter;
89 struct _PsppireSelectorClass
91 GtkButtonClass parent_class;
93 /* This is a hash of Lists of FilterItemsFunc pointers, keyed by address of
95 GHashTable *source_hash;
98 GType psppire_selector_get_type (void);
99 GtkWidget* psppire_selector_new (void);
100 void psppire_selector_set_subjects (PsppireSelector *,
107 #endif /* __PSPPIRE_SELECTOR_H__ */