X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdict-display.c;h=cb46ad5716eaf7bd2d6c2a90f243ba799332e2ef;hb=refs%2Fbuilds%2F20140228030505%2Fpspp;hp=ada7fb40fcbd5ab45ad55edca1c5508c5a4c8c07;hpb=21f2e65c7c2555bf5422920651eab07d1e8f5154;p=pspp diff --git a/src/ui/gui/dict-display.c b/src/ui/gui/dict-display.c index ada7fb40fc..cb46ad5716 100644 --- a/src/ui/gui/dict-display.c +++ b/src/ui/gui/dict-display.c @@ -23,7 +23,11 @@ #include "dict-display.h" #include "psppire-dict.h" +#include "psppire-dictview.h" +#include "psppire-means-layer.h" +#include "psppire-var-ptr.h" #include "psppire-var-view.h" +#include "psppire-select-dest.h" #include #include "helper.h" #include @@ -84,23 +88,22 @@ insert_source_row_into_entry (GtkTreeIter iter, } -void -insert_source_row_into_tree_view (GtkTreeIter iter, - GtkWidget *dest, - GtkTreeModel *model, - gpointer data - ) + +static void +insert_source_row_into_tree_model (GtkTreeIter source_iter, + GtkTreeModel *dest_model, + GtkTreeModel *source_model, + gpointer data) { GtkTreePath *path; GtkTreeIter dest_iter; GtkTreeIter dict_iter; gint *row ; - GtkTreeModel *destmodel = gtk_tree_view_get_model (GTK_TREE_VIEW (dest)); const struct variable *var; GtkTreeModel *dict; - get_base_model (model, &iter, &dict, &dict_iter); + get_base_model (source_model, &source_iter, &dict, &dict_iter); path = gtk_tree_model_get_path (dict, &dict_iter); @@ -108,15 +111,43 @@ insert_source_row_into_tree_view (GtkTreeIter iter, var = psppire_dict_get_variable (PSPPIRE_DICT (dict), *row); - gtk_list_store_append (GTK_LIST_STORE (destmodel), &dest_iter); + gtk_list_store_append (GTK_LIST_STORE (dest_model), &dest_iter); - gtk_list_store_set (GTK_LIST_STORE (destmodel), &dest_iter, 0, var, -1); + gtk_list_store_set (GTK_LIST_STORE (dest_model), &dest_iter, 0, var, -1); gtk_tree_path_free (path); } +void +insert_source_row_into_tree_view (GtkTreeIter iter, + GtkWidget *dest, + GtkTreeModel *model, + gpointer data) +{ + GtkTreeModel *destmodel = gtk_tree_view_get_model (GTK_TREE_VIEW (dest)); + + insert_source_row_into_tree_model (iter, destmodel, model, data); +} + + +void +insert_source_row_into_layers (GtkTreeIter iter, + GtkWidget *dest, + GtkTreeModel *model, + gpointer data) +{ + GtkTreeModel *destmodel = psppire_means_layer_get_model (PSPPIRE_MEANS_LAYER (dest)); + + insert_source_row_into_tree_model (iter, destmodel, model, data); + + psppire_means_layer_update (PSPPIRE_MEANS_LAYER (dest)); +} + + + + gboolean is_currently_in_entry (GtkTreeModel *model, GtkTreeIter *iter, PsppireSelector *selector) @@ -152,3 +183,33 @@ is_currently_in_entry (GtkTreeModel *model, GtkTreeIter *iter, return result; } +gboolean +is_currently_in_varview (GtkTreeModel *model, GtkTreeIter *iter, PsppireSelector *sel) +{ + gboolean ret = false; + + /* First, fetch the variable from the source */ + + PsppireDictView *dv = PSPPIRE_DICT_VIEW (sel->source); + + GtkTreePath *path = gtk_tree_model_get_path (model, iter); + + gint *idx = gtk_tree_path_get_indices (path); + + const struct variable *var = psppire_dict_get_variable (dv->dict, *idx); + + + /* Now test if that variable exists in the destination */ + + GValue value = {0}; + + g_value_init (&value, PSPPIRE_VAR_PTR_TYPE); + g_value_set_boxed (&value, var); + + ret = psppire_select_dest_widget_contains_var (PSPPIRE_SELECT_DEST_WIDGET (sel->dest), &value); + + g_value_unset (&value); + + return ret ; +} +