Merge commit 'origin/stable'
[pspp-builds.git] / src / ui / gui / psppire-selector.h
index f5ca4e9a94f76663a9f9be020193452d90b5a2b3..6fff5d4269da20286062e0f8c36def77374f1fa5 100644 (file)
@@ -22,6 +22,7 @@
 #include <glib.h>
 #include <glib-object.h>
 #include <gtk/gtkbutton.h>
+#include <gtk/gtkaction.h>
 #include <gtk/gtkarrow.h>
 #include <gtk/gtktreemodel.h>
 #include <gtk/gtktreemodelfilter.h>
@@ -45,7 +46,11 @@ typedef struct _PsppireSelectorClass  PsppireSelectorClass;
 /* Function for appending selected items to the destination widget */
 typedef void SelectItemsFunc (GtkTreeIter iter,
                              GtkWidget *dest,
-                             GtkTreeModel *source_model);
+                             GtkTreeModel *source_model,
+                             gpointer data);
+
+/* Function to determine if items may be selected */
+typedef gboolean AllowSelectionFunc (GtkWidget *src, GtkWidget *dest);
 
 
 /* Function to determine whether an item in MODEL, pointed to by ITER
@@ -70,6 +75,7 @@ struct _PsppireSelector
 
   /* <private> */
   GtkWidget *arrow;
+  GtkAction *action;
 
   enum psppire_selector_dir direction;
   GtkWidget *source;
@@ -86,7 +92,11 @@ struct _PsppireSelector
   GtkTreeModelFilter *filtered_source;
 
   SelectItemsFunc *select_items;
+  gpointer select_user_data;
+
   FilterItemsFunc *filter;
+
+  AllowSelectionFunc *allow_selection;
 };
 
 struct _PsppireSelectorClass
@@ -104,7 +114,11 @@ void       psppire_selector_set_subjects    (PsppireSelector *,
                                             GtkWidget *,
                                             GtkWidget *,
                                             SelectItemsFunc *,
-                                            FilterItemsFunc * );
+                                            FilterItemsFunc *,
+                                            gpointer );
+
+void      psppire_selector_set_allow        (PsppireSelector *, AllowSelectionFunc *);
+
 
 GType psppire_selector_orientation_get_type (void) G_GNUC_CONST;
 
@@ -116,7 +130,7 @@ typedef enum {
   PSPPIRE_SELECT_SOURCE_BELOW_DEST
 } PsppireSelectorOrientation;
 
-#define G_TYPE_PSPPIRE_SELECTOR_ORIENTATION \
+#define PSPPIRE_TYPE_SELECTOR_ORIENTATION \
   (psppire_selector_orientation_get_type())