/*
PSPPIRE --- A Graphical User Interface for PSPP
Copyright (C) 2004, 2005, 2006 Free Software Foundation
- Written by John Darrington
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
#include <stdlib.h>
#include <string.h>
+#include <langinfo.h>
#include <data/value.h>
#include "helper.h"
#include "menu-actions.h"
#include "psppire-dict.h"
-#include "psppire-variable.h"
#include "var-type-dialog.h"
#include "var-sheet.h"
#include "customentry.h"
-const gchar *alignments[]={
+const gchar *alignments[n_ALIGNMENTS + 1]={
N_("Left"),
N_("Right"),
N_("Centre"),
0
};
-const gchar *measures[]={
+const gchar *measures[n_MEASURES + 1]={
N_("Nominal"),
N_("Ordinal"),
N_("Scale"),
change_alignment(GtkComboBox *cb,
gpointer user_data)
{
- struct PsppireVariable *pv = user_data;
+ struct variable *pv = user_data;
gint active_item = gtk_combo_box_get_active(cb);
if ( active_item < 0 ) return ;
- psppire_variable_set_alignment(pv, active_item);
+ var_set_alignment (pv, active_item);
}
/* Callback for when the measure combo box
item is selected */
-static void
+static void
change_measure(GtkComboBox *cb,
gpointer user_data)
{
- struct PsppireVariable *pv = user_data;
+ struct variable *pv = user_data;
gint active_item = gtk_combo_box_get_active(cb);
if ( active_item < 0 ) return ;
- psppire_variable_set_measure(pv, active_item);
+ var_set_measure (pv, active_item);
}
}
/* If the destination cell is outside the current variables, then
- accept the destination only as the name column of the first blank row
+ automatically create variables for the new rows.
*/
- if ( *new_row > n_vars)
- return FALSE;
-
- if ( *new_row >= n_vars && *new_column != COL_NAME)
- return FALSE;
+ if ( (*new_row > n_vars) ||
+ (*new_row == n_vars && *new_column != COL_NAME) )
+ {
+ gint i;
+ for ( i = n_vars ; i <= *new_row; ++i )
+ psppire_dict_insert_variable(var_store->dict, i, NULL);
+ }
return TRUE;
}
{
GtkSheetCellAttr attributes;
PsppireVarStore *var_store ;
- struct PsppireVariable *pv ;
+ struct variable *pv ;
g_return_val_if_fail(sheet != NULL, FALSE);
gtk_sheet_get_attributes(sheet, row, column, &attributes);
- pv = psppire_var_store_get_variable(var_store, row);
+ pv = psppire_var_store_get_var (var_store, row);
switch (column)
{
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_entry_set_text_column (cbe, 0);
- g_signal_connect(G_OBJECT(cbe),"changed",
- G_CALLBACK(change_measure), pv);
+ g_signal_connect (G_OBJECT(cbe),"changed",
+ G_CALLBACK (change_measure), pv);
}
break;
if (!missing_val_dialog )
missing_val_dialog = missing_val_dialog_create(xml);
- missing_val_dialog->pv = psppire_var_store_get_variable(var_store, row);
+ missing_val_dialog->pv = psppire_var_store_get_var (var_store, row);
g_signal_connect_swapped(GTK_OBJECT(customEntry),
"clicked",
const gint current_value = atoi(s);
GtkObject *adj ;
- const struct fmt_spec *fmt = psppire_variable_get_write_spec(pv);
+ const struct fmt_spec *fmt = var_get_write_format (pv);
switch (column)
{
case COL_WIDTH:
- r_min = fmt->d + 1;
- r_max = (psppire_variable_get_type(pv) == ALPHA) ? MAX_STRING : 40;
+ r_min = MAX (fmt->d + 1, fmt_min_output_width (fmt->type));
+ r_max = fmt_max_output_width (fmt->type);
break;
case COL_DECIMALS:
r_min = 0 ;
- r_max = MIN(fmt->w - 1, 16);
+ r_max = fmt_max_output_decimals (fmt->type, fmt->w);
break;
case COL_COLUMNS:
r_min = 1;
}
+extern PsppireVarStore *var_store;
+
/* Create the var sheet */
GtkWidget*
gchar *string2,
gint int1, gint int2)
{
+ gchar *codeset;
gint i;
GtkWidget *sheet;
GObject *geo = g_sheet_hetero_column_new(75, n_COLS);
- GObject *row_geometry = g_sheet_uniform_row_new(25, n_initial_rows);
-
-
- sheet = gtk_sheet_new(G_SHEET_ROW(row_geometry),
+ sheet = gtk_sheet_new(G_SHEET_ROW(var_store),
G_SHEET_COLUMN(geo),
"variable sheet", 0);
GTK_SIGNAL_FUNC (click2row),
sheet);
+ /* 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));
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));
-
+ gettext(column_def[i].label));
+
g_sheet_hetero_column_set_width(G_SHEET_HETERO_COLUMN(geo), i,
column_def[i].width);
}
+ bind_textdomain_codeset(PACKAGE, codeset);
gtk_widget_show(sheet);