/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2009 Free Software Foundation
+ Copyright (C) 2009, 2010, 2011 Free Software Foundation
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
#include <config.h>
-#include <gtk/gtktreeview.h>
-#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtk.h>
#include "psppire-var-view.h"
#include "psppire-var-ptr.h"
+#include "psppire-select-dest.h"
#include <data/variable.h>
static void psppire_var_view_class_init (PsppireVarViewClass *class);
static void psppire_var_view_init (PsppireVarView *var_view);
+/* Returns TRUE iff VV contains the item V.
+ V must be an initialised value containing a
+ PSPPIRE_VAR_PTR_TYPE.
+*/
+static gboolean
+var_view_contains_var (PsppireSelectDestWidget *sdm, const GValue *v)
+{
+ gboolean ok;
+ GtkTreeIter iter;
+ PsppireVarView *vv = PSPPIRE_VAR_VIEW (sdm);
+ g_return_val_if_fail (G_VALUE_HOLDS (v, PSPPIRE_VAR_PTR_TYPE), FALSE);
+
+ for (ok = psppire_var_view_get_iter_first (vv, &iter);
+ ok;
+ ok = psppire_var_view_get_iter_next (vv, &iter))
+ {
+ const struct variable *var = psppire_var_view_get_variable (vv, 0, &iter);
+ if (var == g_value_get_boxed (v))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+model_init (PsppireSelectDestWidgetIface *iface)
+{
+ iface->contains_var = var_view_contains_var;
+}
GType
psppire_var_view_get_type (void)
(GInstanceInitFunc) psppire_var_view_init,
};
+ static const GInterfaceInfo var_view_model_info = {
+ (GInterfaceInitFunc) model_init, /* Fill this in */
+ NULL,
+ NULL
+ };
+
psppire_var_view_type =
g_type_register_static (GTK_TYPE_TREE_VIEW, "PsppireVarView",
&psppire_var_view_info, 0);
+
+ g_type_add_interface_static (psppire_var_view_type,
+ PSPPIRE_TYPE_SELECT_DEST_WIDGET,
+ &var_view_model_info);
}
return psppire_var_view_type;
g_value_unset (&value);
- g_object_set (cell, "text", var_get_name (var), NULL);
+ g_object_set (cell, "text", var ? var_get_name (var) : "", NULL);
}
g_object_class_install_property (object_class,
PROP_N_COLS,
n_cols_spec);
-
}
if ( G_VALUE_TYPE (&value) == PSPPIRE_VAR_PTR_TYPE)
var = g_value_get_boxed (&value);
else
- g_critical ("Unsupported type \"%s\", in variable name treeview.",
+ g_critical ("Unsupported type `%s', in variable name treeview.",
G_VALUE_TYPE_NAME (&value));
g_value_unset (&value);
return n_vars;
}
-
-