Fix bug rendering margin in output viewer.
[pspp] / src / ui / gui / psppire-selector.h
index cb3f10f824e41b031a7331467bf7466a4d10def3..33f96c21aadba3730dc07e4376abf466f60842ce 100644 (file)
@@ -1,10 +1,9 @@
-/*
-   PSPPIRE --- A Graphical User Interface for PSPP
-   Copyright (C) 2007  Free Software Foundation
+/* PSPPIRE - a graphical user interface for PSPP.
+   Copyright (C) 2007, 2010  Free Software Foundation
 
-   This program is free software; you can redistribute it and/or modify
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 #ifndef __PSPPIRE_SELECTOR_H__
 
 #include <glib.h>
 #include <glib-object.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkarrow.h>
-#include <gtk/gtktreemodel.h>
-#include <gtk/gtktreemodelfilter.h>
+#include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
@@ -49,7 +42,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
@@ -75,7 +72,10 @@ struct _PsppireSelector
   /* <private> */
   GtkWidget *arrow;
 
+  gboolean dispose_has_run;
+
   enum psppire_selector_dir direction;
+
   GtkWidget *source;
   GtkWidget *dest;
 
@@ -87,10 +87,18 @@ struct _PsppireSelector
 
   gint orientation;
 
-  GtkTreeModelFilter *filtered_source;
-
   SelectItemsFunc *select_items;
+  gpointer select_user_data;
+
   FilterItemsFunc *filter;
+
+  AllowSelectionFunc *allow_selection;
+
+  gulong row_activate_id ;
+  gulong source_select_id ;
+
+  gboolean primary_requested;
+  GList *source_litem;
 };
 
 struct _PsppireSelectorClass
@@ -100,15 +108,27 @@ struct _PsppireSelectorClass
   /* This is a hash of Lists of FilterItemsFunc pointers, keyed by address of
      the source widget */
   GHashTable *source_hash;
+
+  /* A hash of SelectItemFuncs indexed by GType */
+  GHashTable *default_selection_funcs;
 };
 
 GType      psppire_selector_get_type        (void);
 GtkWidget* psppire_selector_new             (void);
-void       psppire_selector_set_subjects    (PsppireSelector *,
-                                            GtkWidget *,
-                                            GtkWidget *,
-                                            SelectItemsFunc *,
-                                            FilterItemsFunc * );
+
+
+/* Set FILTER_FUNC for this selector */
+void psppire_selector_set_filter_func (PsppireSelector *selector,
+                                      FilterItemsFunc *filter_func);
+
+/* Set SELECT_FUNC for this selector */
+void psppire_selector_set_select_func (PsppireSelector *selector,
+                                      SelectItemsFunc *select_func,
+                                      gpointer user_data);
+
+
+void psppire_selector_set_allow (PsppireSelector *, AllowSelectionFunc *);
+
 
 GType psppire_selector_orientation_get_type (void) G_GNUC_CONST;
 
@@ -120,10 +140,12 @@ typedef enum {
   PSPPIRE_SELECT_SOURCE_BELOW_DEST
 } PsppireSelectorOrientation;
 
-#define G_TYPE_PSPPIRE_SELECTOR_ORIENTATION \
+#define PSPPIRE_TYPE_SELECTOR_ORIENTATION \
   (psppire_selector_orientation_get_type())
 
 
+void psppire_selector_set_default_selection_func (GType type, SelectItemsFunc *);
+
 
 G_END_DECLS