Respect the case_cnt field from sys file header. Closes patch #6092
[pspp] / src / ui / gui / var-sheet.c
index 45111621dade6832b235cc58746fc1970d1a6502..b6440e4d3caa32071dcaff366de85b65bb00bb31 100644 (file)
@@ -1,10 +1,9 @@
-/*
-   PSPPIRE --- A Graphical User Interface for PSPP
+/* PSPPIRE - a graphical user interface for PSPP.
    Copyright (C) 2004, 2005, 2006  Free Software Foundation
 
    Copyright (C) 2004, 2005, 2006  Free Software Foundation
 
-   This program is free software; you can redistribute it and/or modify
+   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
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -13,9 +12,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 
 /* This module creates the Variable Sheet used for inputing the
 
 
 /* This module creates the Variable Sheet used for inputing the
@@ -33,7 +30,6 @@
 
 #include <stdlib.h>
 #include <string.h>
 
 #include <stdlib.h>
 #include <string.h>
-#include <langinfo.h>
 
 #include <data/value.h>
 
 
 #include <data/value.h>
 
@@ -41,6 +37,7 @@
 #include <gtksheet/gsheet-hetero-column.h>
 #include <gtksheet/gsheet-uniform-row.h>
 
 #include <gtksheet/gsheet-hetero-column.h>
 #include <gtksheet/gsheet-uniform-row.h>
 
+#include "localcharset.h"
 #include "psppire-var-store.h"
 #include "helper.h"
 #include "psppire-dict.h"
 #include "psppire-var-store.h"
 #include "helper.h"
 #include "psppire-dict.h"
@@ -93,7 +90,7 @@ const gchar *const measures[n_MEASURES + 1]={
 };
 
 static GtkListStore *
 };
 
 static GtkListStore *
-create_label_list(const gchar **labels)
+create_label_list (const gchar *const *labels)
 {
   const gchar *s;
   gint i = 0;
 {
   const gchar *s;
   gint i = 0;
@@ -107,7 +104,7 @@ create_label_list(const gchar **labels)
     {
       gtk_list_store_append (list_store, &iter);
       gtk_list_store_set (list_store, &iter,
     {
       gtk_list_store_append (list_store, &iter);
       gtk_list_store_set (list_store, &iter,
-                         0, gettext(s),
+                         0, gettext (s),
                          -1);
     }
 
                          -1);
     }
 
@@ -117,11 +114,11 @@ create_label_list(const gchar **labels)
 /* Callback for when the alignment combo box
    item is selected */
 static void
 /* Callback for when the alignment combo box
    item is selected */
 static void
-change_alignment(GtkComboBox *cb,
+change_alignment (GtkComboBox *cb,
     gpointer user_data)
 {
   struct variable *pv = user_data;
     gpointer user_data)
 {
   struct variable *pv = user_data;
-  gint active_item = gtk_combo_box_get_active(cb);
+  gint active_item = gtk_combo_box_get_active (cb);
 
   if ( active_item < 0 ) return ;
 
 
   if ( active_item < 0 ) return ;
 
@@ -133,11 +130,11 @@ change_alignment(GtkComboBox *cb,
 /* Callback for when the measure combo box
    item is selected */
 static void
 /* Callback for when the measure combo box
    item is selected */
 static void
-change_measure(GtkComboBox *cb,
+change_measure (GtkComboBox *cb,
     gpointer user_data)
 {
   struct variable *pv = user_data;
     gpointer user_data)
 {
   struct variable *pv = user_data;
-  gint active_item = gtk_combo_box_get_active(cb);
+  gint active_item = gtk_combo_box_get_active (cb);
 
   if ( active_item < 0 ) return ;
 
 
   if ( active_item < 0 ) return ;
 
@@ -152,20 +149,20 @@ traverse_cell_callback (GtkSheet * sheet,
                        gint *new_row, gint *new_column
                        )
 {
                        gint *new_row, gint *new_column
                        )
 {
-  PsppireVarStore *var_store = PSPPIRE_VAR_STORE(gtk_sheet_get_model(sheet));
+  PsppireVarStore *var_store = PSPPIRE_VAR_STORE (gtk_sheet_get_model (sheet));
 
 
-  gint n_vars = psppire_var_store_get_var_cnt(var_store);
+  gint n_vars = psppire_var_store_get_var_cnt (var_store);
 
   if ( row == n_vars && *new_row >= n_vars)
     {
 
   if ( row == n_vars && *new_row >= n_vars)
     {
-      GtkEntry *entry = GTK_ENTRY(gtk_sheet_get_entry(sheet));
+      GtkEntry *entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
 
 
-      const gchar *name = gtk_entry_get_text(entry);
+      const gchar *name = gtk_entry_get_text (entry);
 
 
-      if (! psppire_dict_check_name(var_store->dict, name, TRUE))
+      if (! psppire_dict_check_name (var_store->dict, name, TRUE))
        return FALSE;
 
        return FALSE;
 
-      psppire_dict_insert_variable(var_store->dict, row, name);
+      psppire_dict_insert_variable (var_store->dict, row, name);
 
       return TRUE;
     }
 
       return TRUE;
     }
@@ -178,7 +175,7 @@ traverse_cell_callback (GtkSheet * sheet,
     {
       gint i;
       for ( i = n_vars ; i <= *new_row; ++i )
     {
       gint i;
       for ( i = n_vars ; i <= *new_row; ++i )
-       psppire_dict_insert_variable(var_store->dict, i, NULL);
+       psppire_dict_insert_variable (var_store->dict, i, NULL);
     }
 
   return TRUE;
     }
 
   return TRUE;
@@ -194,7 +191,7 @@ static gboolean
 var_sheet_cell_entry_leave (GtkSheet * sheet, gint row, gint column,
                            gpointer data)
 {
 var_sheet_cell_entry_leave (GtkSheet * sheet, gint row, gint column,
                            gpointer data)
 {
-  gtk_sheet_change_entry(sheet, GTK_TYPE_ENTRY);
+  gtk_sheet_change_entry (sheet, GTK_TYPE_ENTRY);
   return TRUE;
 }
 
   return TRUE;
 }
 
@@ -213,18 +210,18 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
 
   GladeXML *xml;
 
 
   GladeXML *xml;
 
-  g_return_val_if_fail(sheet != NULL, FALSE);
+  g_return_val_if_fail (sheet != NULL, FALSE);
 
 
-  var_store = PSPPIRE_VAR_STORE (gtk_sheet_get_model(sheet));
+  var_store = PSPPIRE_VAR_STORE (gtk_sheet_get_model (sheet));
 
   g_assert (var_store);
 
 
   g_assert (var_store);
 
-  if ( row >= psppire_var_store_get_var_cnt(var_store))
+  if ( row >= psppire_var_store_get_var_cnt (var_store))
     return TRUE;
 
     return TRUE;
 
-  xml = glade_xml_new (PKGDATADIR "/data-editor.glade", NULL, NULL);
+  xml = XML_NEW ("data-editor.glade");
 
 
-  gtk_sheet_get_attributes(sheet, row, column, &attributes);
+  gtk_sheet_get_attributes (sheet, row, column, &attributes);
 
   pv = psppire_var_store_get_var (var_store, row);
 
 
   pv = psppire_var_store_get_var (var_store, row);
 
@@ -234,40 +231,40 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
       {
        static GtkListStore *list_store = 0;
        GtkComboBoxEntry *cbe;
       {
        static GtkListStore *list_store = 0;
        GtkComboBoxEntry *cbe;
-       gtk_sheet_change_entry(sheet, GTK_TYPE_COMBO_BOX_ENTRY);
+       gtk_sheet_change_entry (sheet, GTK_TYPE_COMBO_BOX_ENTRY);
        cbe =
        cbe =
-         GTK_COMBO_BOX_ENTRY(gtk_sheet_get_entry(sheet)->parent);
+         GTK_COMBO_BOX_ENTRY (gtk_sheet_get_entry (sheet)->parent);
 
 
 
 
-       if ( ! list_store) list_store = create_label_list(alignments);
+       if ( ! list_store) list_store = create_label_list (alignments);
 
 
-       gtk_combo_box_set_model(GTK_COMBO_BOX(cbe),
-                               GTK_TREE_MODEL(list_store));
+       gtk_combo_box_set_model (GTK_COMBO_BOX (cbe),
+                               GTK_TREE_MODEL (list_store));
 
        gtk_combo_box_entry_set_text_column (cbe, 0);
 
 
 
        gtk_combo_box_entry_set_text_column (cbe, 0);
 
 
-       g_signal_connect(G_OBJECT(cbe),"changed",
-                        G_CALLBACK(change_alignment), pv);
+       g_signal_connect (G_OBJECT (cbe),"changed",
+                        G_CALLBACK (change_alignment), pv);
       }
       break;
     case COL_MEASURE:
       {
        static GtkListStore *list_store = 0;
        GtkComboBoxEntry *cbe;
       }
       break;
     case COL_MEASURE:
       {
        static GtkListStore *list_store = 0;
        GtkComboBoxEntry *cbe;
-       gtk_sheet_change_entry(sheet, GTK_TYPE_COMBO_BOX_ENTRY);
+       gtk_sheet_change_entry (sheet, GTK_TYPE_COMBO_BOX_ENTRY);
        cbe =
        cbe =
-         GTK_COMBO_BOX_ENTRY(gtk_sheet_get_entry(sheet)->parent);
+         GTK_COMBO_BOX_ENTRY (gtk_sheet_get_entry (sheet)->parent);
 
 
        if ( ! list_store) list_store = create_label_list (measures);
 
 
 
        if ( ! list_store) list_store = create_label_list (measures);
 
-       gtk_combo_box_set_model(GTK_COMBO_BOX(cbe),
-                               GTK_TREE_MODEL(list_store));
+       gtk_combo_box_set_model (GTK_COMBO_BOX (cbe),
+                               GTK_TREE_MODEL (list_store));
 
        gtk_combo_box_entry_set_text_column (cbe, 0);
 
 
        gtk_combo_box_entry_set_text_column (cbe, 0);
 
-       g_signal_connect (G_OBJECT(cbe),"changed",
+       g_signal_connect (G_OBJECT (cbe),"changed",
                          G_CALLBACK (change_measure), pv);
       }
       break;
                          G_CALLBACK (change_measure), pv);
       }
       break;
@@ -278,20 +275,20 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
 
        PsppireCustomEntry *customEntry;
 
 
        PsppireCustomEntry *customEntry;
 
-       gtk_sheet_change_entry(sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
+       gtk_sheet_change_entry (sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
 
        customEntry =
 
        customEntry =
-         PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry(sheet));
+         PSPPIRE_CUSTOM_ENTRY (gtk_sheet_get_entry (sheet));
 
 
        if (!val_labs_dialog )
 
 
        if (!val_labs_dialog )
-           val_labs_dialog = val_labs_dialog_create(xml);
+           val_labs_dialog = val_labs_dialog_create (xml);
 
 
-       val_labs_dialog->pv = pv;
+       val_labs_dialog_set_target_variable (val_labs_dialog, pv);
 
 
-       g_signal_connect_swapped(GTK_OBJECT(customEntry),
+       g_signal_connect_swapped (GTK_OBJECT (customEntry),
                                 "clicked",
                                 "clicked",
-                                GTK_SIGNAL_FUNC(val_labs_dialog_show),
+                                GTK_SIGNAL_FUNC (val_labs_dialog_show),
                                 val_labs_dialog);
       }
       break;
                                 val_labs_dialog);
       }
       break;
@@ -300,19 +297,19 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
        static struct missing_val_dialog *missing_val_dialog = 0;
        PsppireCustomEntry *customEntry;
 
        static struct missing_val_dialog *missing_val_dialog = 0;
        PsppireCustomEntry *customEntry;
 
-       gtk_sheet_change_entry(sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
+       gtk_sheet_change_entry (sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
 
        customEntry =
 
        customEntry =
-         PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry(sheet));
+         PSPPIRE_CUSTOM_ENTRY (gtk_sheet_get_entry (sheet));
 
        if (!missing_val_dialog )
 
        if (!missing_val_dialog )
-           missing_val_dialog = missing_val_dialog_create(xml);
+           missing_val_dialog = missing_val_dialog_create (xml);
 
        missing_val_dialog->pv = psppire_var_store_get_var (var_store, row);
 
 
        missing_val_dialog->pv = psppire_var_store_get_var (var_store, row);
 
-       g_signal_connect_swapped(GTK_OBJECT(customEntry),
+       g_signal_connect_swapped (GTK_OBJECT (customEntry),
                                 "clicked",
                                 "clicked",
-                                GTK_SIGNAL_FUNC(missing_val_dialog_show),
+                                GTK_SIGNAL_FUNC (missing_val_dialog_show),
                                 missing_val_dialog);
       }
       break;
                                 missing_val_dialog);
       }
       break;
@@ -323,22 +320,22 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
 
        PsppireCustomEntry *customEntry;
 
 
        PsppireCustomEntry *customEntry;
 
-       gtk_sheet_change_entry(sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
+       gtk_sheet_change_entry (sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
 
        customEntry =
 
        customEntry =
-         PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry(sheet));
+         PSPPIRE_CUSTOM_ENTRY (gtk_sheet_get_entry (sheet));
 
 
        /* Popup the Variable Type dialog box */
        if (!var_type_dialog )
 
 
        /* Popup the Variable Type dialog box */
        if (!var_type_dialog )
-           var_type_dialog = var_type_dialog_create(xml);
+           var_type_dialog = var_type_dialog_create (xml);
 
 
        var_type_dialog->pv = pv;
 
 
 
        var_type_dialog->pv = pv;
 
-       g_signal_connect_swapped(GTK_OBJECT(customEntry),
+       g_signal_connect_swapped (GTK_OBJECT (customEntry),
                                 "clicked",
                                 "clicked",
-                                GTK_SIGNAL_FUNC(var_type_dialog_show),
+                                GTK_SIGNAL_FUNC (var_type_dialog_show),
                                 var_type_dialog);
       }
       break;
                                 var_type_dialog);
       }
       break;
@@ -350,12 +347,12 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
          {
            gint r_min, r_max;
 
          {
            gint r_min, r_max;
 
-           const gchar *s = gtk_sheet_cell_get_text(sheet, row, column);
+           const gchar *s = gtk_sheet_cell_get_text (sheet, row, column);
 
            if (s)
              {
                GtkSpinButton *spinButton ;
 
            if (s)
              {
                GtkSpinButton *spinButton ;
-               const gint current_value  = atoi(s);
+               const gint current_value  = atoi (s);
                GtkObject *adj ;
 
                const struct fmt_spec *fmt = var_get_write_format (pv);
                GtkObject *adj ;
 
                const struct fmt_spec *fmt = var_get_write_format (pv);
@@ -374,28 +371,28 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column,
                    r_max = 255 ; /* Is this a sensible value ? */
                    break;
                  default:
                    r_max = 255 ; /* Is this a sensible value ? */
                    break;
                  default:
-                   g_assert_not_reached();
+                   g_assert_not_reached ();
                  }
 
                  }
 
-               adj = gtk_adjustment_new(current_value,
+               adj = gtk_adjustment_new (current_value,
                                         r_min, r_max,
                                         1.0, 1.0, 1.0 /* steps */
                                         );
 
                                         r_min, r_max,
                                         1.0, 1.0, 1.0 /* steps */
                                         );
 
-               gtk_sheet_change_entry(sheet, GTK_TYPE_SPIN_BUTTON);
+               gtk_sheet_change_entry (sheet, GTK_TYPE_SPIN_BUTTON);
 
                spinButton =
 
                spinButton =
-                 GTK_SPIN_BUTTON(gtk_sheet_get_entry(sheet));
+                 GTK_SPIN_BUTTON (gtk_sheet_get_entry (sheet));
 
 
-               gtk_spin_button_set_adjustment(spinButton, GTK_ADJUSTMENT(adj));
-               gtk_spin_button_set_digits(spinButton, 0);
+               gtk_spin_button_set_adjustment (spinButton, GTK_ADJUSTMENT (adj));
+               gtk_spin_button_set_digits (spinButton, 0);
              }
          }
       }
       break;
 
     default:
              }
          }
       }
       break;
 
     default:
-      gtk_sheet_change_entry(sheet, GTK_TYPE_ENTRY);
+      gtk_sheet_change_entry (sheet, GTK_TYPE_ENTRY);
       break;
     }
 
       break;
     }
 
@@ -410,7 +407,7 @@ extern PsppireVarStore *the_var_store;
 
 
 /* Create the var sheet */
 
 
 /* Create the var sheet */
-GtkWidget*
+G_MODULE_EXPORT GtkWidget*
 psppire_variable_sheet_create (gchar *widget_name,
                               gchar *string1,
                               gchar *string2,
 psppire_variable_sheet_create (gchar *widget_name,
                               gchar *string1,
                               gchar *string2,
@@ -420,12 +417,12 @@ psppire_variable_sheet_create (gchar *widget_name,
   gint i;
   GtkWidget *sheet;
 
   gint i;
   GtkWidget *sheet;
 
-  GObject *geo = g_sheet_hetero_column_new(75, n_COLS);
+  GObject *geo = g_sheet_hetero_column_new (75, n_COLS);
 
   g_assert (the_var_store);
 
 
   g_assert (the_var_store);
 
-  sheet = gtk_sheet_new(G_SHEET_ROW(the_var_store),
-                       G_SHEET_COLUMN(geo),
+  sheet = gtk_sheet_new (G_SHEET_ROW (the_var_store),
+                       G_SHEET_COLUMN (geo),
                        "variable sheet", 0);
 
 
                        "variable sheet", 0);
 
 
@@ -441,24 +438,26 @@ psppire_variable_sheet_create (gchar *widget_name,
                    GTK_SIGNAL_FUNC (traverse_cell_callback), 0);
 
 
                    GTK_SIGNAL_FUNC (traverse_cell_callback), 0);
 
 
-  gtk_sheet_set_model(sheet, G_SHEET_MODEL(the_var_store));
+  gtk_sheet_set_model (GTK_SHEET (sheet), G_SHEET_MODEL (the_var_store));
 
 
   /* Since this happens inside glade_xml_new, we must prevent strings from
    * being re-encoded twice */
 
 
   /* Since this happens inside glade_xml_new, we must prevent strings from
    * being re-encoded twice */
-  codeset = bind_textdomain_codeset(PACKAGE, 0);
-  bind_textdomain_codeset(PACKAGE, nl_langinfo(CODESET));
+  codeset = bind_textdomain_codeset (PACKAGE, 0);
+  bind_textdomain_codeset (PACKAGE, locale_charset ());
+
   for (i = 0 ; i < n_COLS ; ++i )
     {
   for (i = 0 ; i < n_COLS ; ++i )
     {
-      g_sheet_hetero_column_set_button_label(G_SHEET_HETERO_COLUMN(geo), i,
-                       gettext(column_def[i].label));
+      g_sheet_hetero_column_set_button_label (G_SHEET_HETERO_COLUMN (geo), i,
+                       gettext (column_def[i].label));
 
 
-      g_sheet_hetero_column_set_width(G_SHEET_HETERO_COLUMN(geo), i,
+      g_sheet_hetero_column_set_width (G_SHEET_HETERO_COLUMN (geo), i,
                                               column_def[i].width);
     }
                                               column_def[i].width);
     }
-  bind_textdomain_codeset(PACKAGE, codeset);
 
 
-  gtk_widget_show(sheet);
+  bind_textdomain_codeset (PACKAGE, codeset);
+
+  gtk_widget_show (sheet);
 
   return sheet;
 }
 
   return sheet;
 }