X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fdict-display.c;h=77da88bd98826c9791151af09edccc4de1d9b186;hb=df11254fddfd186f3d947c9891ab85eca20739ab;hp=d6b1bcd58c3b60bc5bb17705da7c18c4121d4105;hpb=9e0e4996fad6563f0a1ce628b80db5c23ef8279e;p=pspp diff --git a/src/ui/gui/dict-display.c b/src/ui/gui/dict-display.c index d6b1bcd58c..77da88bd98 100644 --- a/src/ui/gui/dict-display.c +++ b/src/ui/gui/dict-display.c @@ -23,6 +23,10 @@ #include "dict-display.h" #include "psppire-dict.h" +#include "psppire-dictview.h" +#include "psppire-var-ptr.h" +#include "psppire-var-view.h" +#include "psppire-select-dest.h" #include #include "helper.h" #include @@ -54,7 +58,6 @@ get_base_model (GtkTreeModel *top_model, GtkTreeIter *top_iter, } - void insert_source_row_into_entry (GtkTreeIter iter, GtkWidget *dest, @@ -67,7 +70,6 @@ insert_source_row_into_entry (GtkTreeIter iter, gint *idx; struct variable *var; GtkTreeIter dict_iter; - gchar *name; g_return_if_fail (GTK_IS_ENTRY(dest)); @@ -81,14 +83,10 @@ insert_source_row_into_entry (GtkTreeIter iter, gtk_tree_path_free (path); - name = recode_string (UTF8, psppire_dict_encoding (PSPPIRE_DICT (dict)), - var_get_name (var), -1); - gtk_entry_set_text (GTK_ENTRY (dest), name); - g_free (name); + gtk_entry_set_text (GTK_ENTRY (dest), var_get_name (var)); } - void insert_source_row_into_tree_view (GtkTreeIter iter, GtkWidget *dest, @@ -100,37 +98,45 @@ insert_source_row_into_tree_view (GtkTreeIter iter, GtkTreeIter dest_iter; GtkTreeIter dict_iter; gint *row ; - GtkTreeModel *destmodel = gtk_tree_view_get_model ( GTK_TREE_VIEW (dest)); + 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); path = gtk_tree_model_get_path (dict, &dict_iter); row = gtk_tree_path_get_indices (path); + var = psppire_dict_get_variable (PSPPIRE_DICT (dict), *row); + gtk_list_store_append (GTK_LIST_STORE (destmodel), &dest_iter); - gtk_list_store_set (GTK_LIST_STORE (destmodel), &dest_iter, 0, *row, -1); + + gtk_list_store_set (GTK_LIST_STORE (destmodel), &dest_iter, 0, var, -1); gtk_tree_path_free (path); } + gboolean is_currently_in_entry (GtkTreeModel *model, GtkTreeIter *iter, PsppireSelector *selector) { gboolean result; - gchar *name; GtkTreeIter dict_iter; GtkTreeModel *dict; struct variable *var; gint dict_index; gint *indeces; GtkTreePath *path; - const gchar *text = gtk_entry_get_text (GTK_ENTRY (selector->dest)); + GtkWidget *entry = NULL; + const gchar *text = NULL; + + g_object_get (selector, "dest-widget", &entry, NULL); + + text = gtk_entry_get_text (GTK_ENTRY (entry)); get_base_model (model, iter, &dict, &dict_iter); @@ -144,13 +150,38 @@ is_currently_in_entry (GtkTreeModel *model, GtkTreeIter *iter, gtk_tree_path_free (path); - name = recode_string (UTF8, psppire_dict_encoding (PSPPIRE_DICT (dict)), - var_get_name (var), -1); - result = ( 0 == strcmp (text, name)); - g_free (name); + result = ( 0 == strcmp (text, var_get_name (var) )); 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 ; +}