X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fvar-sheet.c;h=4358c78326e835e1d794c48808583241c2660f10;hb=e294a372f351d7105c21a2db58022af8b119aa64;hp=b38806bb1644dea49f20010011d65ac682b25baa;hpb=a19b858e0ac3c69e4a28c0ca6d8674427268a863;p=pspp diff --git a/src/ui/gui/var-sheet.c b/src/ui/gui/var-sheet.c index b38806bb16..4358c78326 100644 --- a/src/ui/gui/var-sheet.c +++ b/src/ui/gui/var-sheet.c @@ -22,6 +22,11 @@ /* This module creates the Variable Sheet used for inputing the variables in the dictonary */ +#include +#include +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + #include #include @@ -29,8 +34,9 @@ #include #include +#include -#define min(A,B) ((A < B)?A:B) +#include #include #include @@ -48,8 +54,6 @@ #include "val-labs-dialog.h" #include "missing-val-dialog.h" -#define _(A) A -#define N_(A) A static const gint n_initial_rows = 40; @@ -64,16 +68,16 @@ struct column_parameters }; static const struct column_parameters column_def[] = { - {N_("Name"), 80}, - {N_("Type"), 100}, - {N_("Width"), 57}, - {N_("Decimals"),91}, - {N_("Label"), 95}, - {N_("Values"), 103}, - {N_("Missing"), 95}, - {N_("Columns"), 80}, - {N_("Align"), 69}, - {N_("Measure"), 99}, + { N_("Name"), 80}, + { N_("Type"), 100}, + { N_("Width"), 57}, + { N_("Decimals"),91}, + { N_("Label"), 95}, + { N_("Values"), 103}, + { N_("Missing"), 95}, + { N_("Columns"), 80}, + { N_("Align"), 69}, + { N_("Measure"), 99}, }; @@ -81,9 +85,9 @@ static gboolean click2row(GtkWidget *w, gint row, gpointer data) { gint current_row, current_column; + GtkWidget *data_sheet = get_widget_assert(xml, "data_sheet"); select_sheet(PAGE_DATA_SHEET); - GtkWidget *data_sheet = get_widget_assert(xml, "data_sheet"); gtk_sheet_get_active_cell(GTK_SHEET(data_sheet), ¤t_row, ¤t_column); @@ -95,35 +99,36 @@ click2row(GtkWidget *w, gint row, gpointer data) -const gchar *alignments[]={ - _("Left"), - _("Right"), - _("Centre"), +const gchar *alignments[n_ALIGNMENTS + 1]={ + N_("Left"), + N_("Right"), + N_("Centre"), 0 }; -const gchar *measures[]={ - _("Nominal"), - _("Ordinal"), - _("Scale"), +const gchar *measures[n_MEASURES + 1]={ + N_("Nominal"), + N_("Ordinal"), + N_("Scale"), 0 }; static GtkListStore * create_label_list(const gchar **labels) { + const gchar *s; gint i = 0; GtkTreeIter iter; GtkListStore *list_store; list_store = gtk_list_store_new (1, G_TYPE_STRING); - const gchar *s; + while ( (s = labels[i++])) { gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, - 0, s, + 0, gettext(s), -1); } @@ -206,9 +211,13 @@ static gboolean var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, gpointer leaving) { + GtkSheetCellAttr attributes; + PsppireVarStore *var_store ; + struct PsppireVariable *pv ; + g_return_val_if_fail(sheet != NULL, FALSE); - PsppireVarStore *var_store = PSPPIRE_VAR_STORE(gtk_sheet_get_model(sheet)); + var_store = PSPPIRE_VAR_STORE(gtk_sheet_get_model(sheet)); if ( row >= psppire_var_store_get_var_cnt(var_store)) return TRUE; @@ -219,10 +228,10 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, return TRUE; } - GtkSheetCellAttr attributes; + gtk_sheet_get_attributes(sheet, row, column, &attributes); - struct PsppireVariable *pv = psppire_var_store_get_variable(var_store, row); + pv = psppire_var_store_get_variable(var_store, row); switch (column) { @@ -351,40 +360,43 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, if (!s) return FALSE; - const gint current_value = atoi(s); - - const struct fmt_spec *fmt = psppire_variable_get_write_spec(pv); - switch (column) - { - case COL_WIDTH: - r_min = fmt->d + 1; - r_max = (psppire_variable_get_type(pv) == ALPHA) ? 255 : 40; - break; - case COL_DECIMALS: - r_min = 0 ; - r_max = min(fmt->w - 1, 16); - break; - case COL_COLUMNS: - r_min = 1; - r_max = 255 ; /* Is this a sensible value ? */ - break; - default: - g_assert_not_reached(); - } - - GtkObject *adj = - gtk_adjustment_new(current_value, - r_min, r_max, - 1.0, 1.0, 1.0 /* steps */ - ); - - gtk_sheet_change_entry(sheet, GTK_TYPE_SPIN_BUTTON); - - GtkSpinButton *spinButton = - GTK_SPIN_BUTTON(gtk_sheet_get_entry(sheet)); - - gtk_spin_button_set_adjustment(spinButton, GTK_ADJUSTMENT(adj)); - gtk_spin_button_set_digits(spinButton, 0); + { + GtkSpinButton *spinButton ; + const gint current_value = atoi(s); + GtkObject *adj ; + + const struct fmt_spec *fmt = psppire_variable_get_write_spec(pv); + switch (column) + { + case COL_WIDTH: + r_min = fmt->d + 1; + r_max = (psppire_variable_get_type(pv) == ALPHA) ? MAX_STRING : 40; + break; + case COL_DECIMALS: + r_min = 0 ; + r_max = MIN(fmt->w - 1, 16); + break; + case COL_COLUMNS: + r_min = 1; + r_max = 255 ; /* Is this a sensible value ? */ + break; + default: + g_assert_not_reached(); + } + + adj = gtk_adjustment_new(current_value, + r_min, r_max, + 1.0, 1.0, 1.0 /* steps */ + ); + + gtk_sheet_change_entry(sheet, GTK_TYPE_SPIN_BUTTON); + + spinButton = + GTK_SPIN_BUTTON(gtk_sheet_get_entry(sheet)); + + gtk_spin_button_set_adjustment(spinButton, GTK_ADJUSTMENT(adj)); + gtk_spin_button_set_digits(spinButton, 0); + } } } break; @@ -398,6 +410,8 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, } +extern PsppireVarStore *var_store; + /* Create the var sheet */ GtkWidget* @@ -406,15 +420,13 @@ psppire_variable_sheet_create (gchar *widget_name, 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); @@ -434,14 +446,19 @@ psppire_variable_sheet_create (gchar *widget_name, 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, - 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);