Finish converting struct variable to an opaque type. In this
[pspp-builds.git] / src / ui / gui / val-labs-dialog.c
index 070a4f50da0aa93db7ea00f294bbce785a025b47..ff78347c5a5426cf0e686386ead008d1bbb2066f 100644 (file)
@@ -22,6 +22,8 @@
 /*  This module describes the behaviour of the Value Labels dialog box,
     used for input of the value labels in the variable sheet */
 
+#include <config.h>
+
 #include <string.h>
 
 #include "helper.h"
 static void
 on_label_entry_change(GtkEntry *entry, gpointer data)
 {
+  union value v;
+  const gchar *text ;
   struct val_labs_dialog *dialog = data;
   g_assert(dialog->labs);
 
-  union value v;
-  const gchar *text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry));
+  text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry));
 
   text_to_value(text, &v, 
                *psppire_variable_get_write_spec(dialog->pv));
@@ -61,6 +64,8 @@ on_label_entry_change(GtkEntry *entry, gpointer data)
 static void
 select_treeview_from_value(GtkTreeView *treeview, union value *val)
 {
+  GtkTreePath *path ;
+  
   /*
     We do this with a linear search through the model --- hardly 
     efficient, but the list is short ... */
@@ -73,11 +78,11 @@ select_treeview_from_value(GtkTreeView *treeview, union value *val)
        success;
        success = gtk_tree_model_iter_next(model, &iter))
     {
+      union value v;
       GValue gvalue = {0};
 
       gtk_tree_model_get_value(model, &iter, 1, &gvalue);
          
-      union value v;
       v.f = g_value_get_double(&gvalue);
 
       if ( 0 == memcmp(&v, val, sizeof (union value)))
@@ -86,7 +91,7 @@ select_treeview_from_value(GtkTreeView *treeview, union value *val)
        }
     }
        
-  GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
+  path = gtk_tree_model_get_path(model, &iter);
   if ( path ) 
     {
       gtk_tree_view_set_cursor(treeview, path, 0, 0);
@@ -101,6 +106,8 @@ select_treeview_from_value(GtkTreeView *treeview, union value *val)
 static void
 on_value_entry_change(GtkEntry *entry, gpointer data)
 {
+  char *s;
+  
   struct val_labs_dialog *dialog = data;
 
   const gchar *text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry));
@@ -116,7 +123,6 @@ on_value_entry_change(GtkEntry *entry, gpointer data)
   gtk_entry_set_text(GTK_ENTRY(dialog->label_entry),"");
 
 
-  char *s;
   if ( (s = val_labs_find (dialog->labs, v)) ) 
     {
       gtk_entry_set_text(GTK_ENTRY(dialog->label_entry), s);
@@ -267,6 +273,7 @@ static void
 on_select_row                  (GtkTreeView *treeview,
                                gpointer data)
 {
+  gchar *labeltext;
   struct val_labs_dialog *dialog = data;
 
   struct val_lab * vl  = get_selected_tuple(dialog);
@@ -286,8 +293,10 @@ on_select_row                  (GtkTreeView *treeview,
   g_signal_handler_block(GTK_ENTRY(dialog->label_entry), 
                         dialog->change_handler_id);
 
+  labeltext = pspp_locale_to_utf8(vl->label, -1, 0);
   gtk_entry_set_text(GTK_ENTRY(dialog->label_entry),
-                    vl->label);
+                    labeltext);
+  g_free(labeltext);
 
   g_signal_handler_unblock(GTK_ENTRY(dialog->label_entry), 
                         dialog->change_handler_id);
@@ -302,6 +311,10 @@ on_select_row                  (GtkTreeView *treeview,
 struct val_labs_dialog *
 val_labs_dialog_create(GladeXML *xml)
 {
+  GtkTreeViewColumn *column;
+
+  GtkCellRenderer *renderer ;
+
   struct val_labs_dialog *dialog = g_malloc(sizeof(*dialog));
 
   dialog->window = get_widget_assert(xml,"val_labs_dialog");
@@ -321,9 +334,7 @@ val_labs_dialog_create(GladeXML *xml)
 
   gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(dialog->treeview), FALSE);
 
-  GtkTreeViewColumn *column;
-
-  GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
+  renderer = gtk_cell_renderer_text_new();
   
   column = gtk_tree_view_column_new_with_attributes ("Title",
                                                     renderer,
@@ -406,21 +417,25 @@ repopulate_dialog(struct val_labs_dialog *dialog)
       vl;
       vl = val_labs_next(dialog->labs, &vli))
     {
+
       gchar *const vstr  = 
        value_to_text(vl->value, 
                      *psppire_variable_get_write_spec(dialog->pv));
 
+      gchar *labeltext = 
+       pspp_locale_to_utf8(vl->label, -1, 0);  
                                           
-      
       gchar *const text = g_strdup_printf("%s = \"%s\"",
-                                         vstr, vl->label);
+                                         vstr, labeltext);
+
+      
       gtk_list_store_append (list_store, &iter);
       gtk_list_store_set (list_store, &iter,
                           0, text, 
                          1, vl->value.f,
                          -1);
 
+      g_free(labeltext);
       g_free(text); 
       g_free(vstr);
     }