+
+static guint
+gni (GListModel *list)
+{
+ PsppireDict *dict = PSPPIRE_DICT (list);
+
+ return psppire_dict_get_var_cnt (dict);
+}
+
+static GType
+git (GListModel *list)
+{
+ return JMD_TYPE_DATUM;
+}
+
+static gpointer
+gi (GListModel *list, guint id)
+{
+ JmdDatum *gd = JMD_DATUM (g_object_new (JMD_TYPE_DATUM, NULL));
+
+ PsppireDict *dict = PSPPIRE_DICT (list);
+
+ if (id >= psppire_dict_get_var_cnt (dict))
+ {
+ gd->text = g_strdup (_("Var"));
+ }
+ else
+ {
+ const struct variable *v = psppire_dict_get_variable (dict, id);
+
+ gd->text = g_strdup (var_get_name (v));
+ gd->label = g_strdup (var_get_label (v));
+ }
+
+ return gd;
+}
+
+
+static void
+jmd_init_iface (GListModelInterface *iface)
+{
+ iface->get_n_items = gni;
+ iface->get_item = gi;
+ iface->get_item_type = git;
+}
+
+