X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fvar-sheet.c;h=9e73cce6220a8cc358e9e7f255de35fb7f4b62e7;hb=463d2f08bc7b9a2a2e47090f4f1e5a811278db43;hp=7f14602b4159cf415ffa6feec1132cd0e0fae5e3;hpb=e10bd21c92f8d6a82ed06bec7af9ee40bf5eb727;p=pspp-builds.git diff --git a/src/ui/gui/var-sheet.c b/src/ui/gui/var-sheet.c index 7f14602b..9e73cce6 100644 --- a/src/ui/gui/var-sheet.c +++ b/src/ui/gui/var-sheet.c @@ -1,10 +1,9 @@ -/* - PSPPIRE --- A Graphical User Interface for PSPP - Copyright (C) 2004, 2005, 2006 Free Software Foundation +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 2004, 2005, 2006, 2007 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 - 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, @@ -13,9 +12,7 @@ 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 . */ /* This module creates the Variable Sheet used for inputing the @@ -33,7 +30,6 @@ #include #include -#include #include @@ -41,6 +37,8 @@ #include #include +#include "localcharset.h" +#include "xalloc.h" #include "psppire-var-store.h" #include "helper.h" #include "psppire-dict.h" @@ -81,7 +79,7 @@ static const struct column_parameters column_def[] = { const gchar *const alignments[n_ALIGNMENTS + 1]={ N_("Left"), N_("Right"), - N_("Centre"), + N_("Center"), 0 }; @@ -152,13 +150,13 @@ traverse_cell_callback (GtkSheet * sheet, 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); 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); @@ -209,7 +207,7 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, { GtkSheetCellAttr attributes; PsppireVarStore *var_store ; - struct variable *pv ; + struct variable *var ; GladeXML *xml; @@ -222,79 +220,85 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, if ( row >= psppire_var_store_get_var_cnt (var_store)) 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); - pv = psppire_var_store_get_var (var_store, row); + var = psppire_var_store_get_var (var_store, row); switch (column) { case COL_ALIGN: { - static GtkListStore *list_store = 0; + static GtkListStore *list_store = NULL; GtkComboBoxEntry *cbe; gtk_sheet_change_entry (sheet, GTK_TYPE_COMBO_BOX_ENTRY); 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); - 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); - g_signal_connect (G_OBJECT(cbe),"changed", - G_CALLBACK(change_alignment), pv); + g_signal_connect (G_OBJECT (cbe),"changed", + G_CALLBACK (change_alignment), var); } break; + case COL_MEASURE: { static GtkListStore *list_store = 0; GtkComboBoxEntry *cbe; gtk_sheet_change_entry (sheet, GTK_TYPE_COMBO_BOX_ENTRY); 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); - 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); - g_signal_connect (G_OBJECT(cbe),"changed", - G_CALLBACK (change_measure), pv); + g_signal_connect (G_OBJECT (cbe),"changed", + G_CALLBACK (change_measure), var); } break; case COL_VALUES: { - static struct val_labs_dialog *val_labs_dialog = 0; + static struct val_labs_dialog *val_labs_dialog = NULL; PsppireCustomEntry *customEntry; gtk_sheet_change_entry (sheet, PSPPIRE_CUSTOM_ENTRY_TYPE); customEntry = - PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry (sheet)); + PSPPIRE_CUSTOM_ENTRY (gtk_sheet_get_entry (sheet)); + if ( var_is_long_string (var)) + g_object_set (customEntry, + "editable", FALSE, + NULL); if (!val_labs_dialog ) val_labs_dialog = val_labs_dialog_create (xml); - val_labs_dialog->pv = pv; + val_labs_dialog_set_target_variable (val_labs_dialog, var); - g_signal_connect_swapped (GTK_OBJECT(customEntry), + g_signal_connect_swapped (GTK_OBJECT (customEntry), "clicked", - GTK_SIGNAL_FUNC(val_labs_dialog_show), + GTK_SIGNAL_FUNC (val_labs_dialog_show), val_labs_dialog); } break; + case COL_MISSING: { static struct missing_val_dialog *missing_val_dialog = 0; @@ -303,16 +307,21 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, gtk_sheet_change_entry (sheet, PSPPIRE_CUSTOM_ENTRY_TYPE); customEntry = - PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry (sheet)); + PSPPIRE_CUSTOM_ENTRY (gtk_sheet_get_entry (sheet)); + + if ( var_is_long_string (var)) + g_object_set (customEntry, + "editable", FALSE, + NULL); if (!missing_val_dialog ) missing_val_dialog = missing_val_dialog_create (xml); 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", - GTK_SIGNAL_FUNC(missing_val_dialog_show), + GTK_SIGNAL_FUNC (missing_val_dialog_show), missing_val_dialog); } break; @@ -326,7 +335,7 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, gtk_sheet_change_entry (sheet, PSPPIRE_CUSTOM_ENTRY_TYPE); customEntry = - PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry (sheet)); + PSPPIRE_CUSTOM_ENTRY (gtk_sheet_get_entry (sheet)); /* Popup the Variable Type dialog box */ @@ -334,14 +343,15 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, var_type_dialog = var_type_dialog_create (xml); - var_type_dialog->pv = pv; + var_type_dialog->pv = var; - g_signal_connect_swapped (GTK_OBJECT(customEntry), + g_signal_connect_swapped (GTK_OBJECT (customEntry), "clicked", - GTK_SIGNAL_FUNC(var_type_dialog_show), + GTK_SIGNAL_FUNC (var_type_dialog_show), var_type_dialog); } break; + case COL_WIDTH: case COL_DECIMALS: case COL_COLUMNS: @@ -358,7 +368,7 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, const gint current_value = atoi (s); GtkObject *adj ; - const struct fmt_spec *fmt = var_get_write_format (pv); + const struct fmt_spec *fmt = var_get_write_format (var); switch (column) { case COL_WIDTH: @@ -385,9 +395,9 @@ var_sheet_cell_entry_enter (GtkSheet * sheet, gint row, gint column, gtk_sheet_change_entry (sheet, GTK_TYPE_SPIN_BUTTON); 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_adjustment (spinButton, GTK_ADJUSTMENT (adj)); gtk_spin_button_set_digits (spinButton, 0); } } @@ -410,7 +420,7 @@ extern PsppireVarStore *the_var_store; /* Create the var sheet */ -GtkWidget* +G_MODULE_EXPORT GtkWidget* psppire_variable_sheet_create (gchar *widget_name, gchar *string1, gchar *string2, @@ -424,8 +434,8 @@ psppire_variable_sheet_create (gchar *widget_name, 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); @@ -441,22 +451,25 @@ psppire_variable_sheet_create (gchar *widget_name, GTK_SIGNAL_FUNC (traverse_cell_callback), 0); - gtk_sheet_set_model (GTK_SHEET (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 */ - codeset = bind_textdomain_codeset (PACKAGE, 0); - bind_textdomain_codeset (PACKAGE, nl_langinfo (CODESET)); + codeset = xstrdup (bind_textdomain_codeset (PACKAGE, 0)); + bind_textdomain_codeset (PACKAGE, locale_charset ()); + for (i = 0 ; i < n_COLS ; ++i ) { - g_sheet_hetero_column_set_button_label (G_SHEET_HETERO_COLUMN(geo), i, + 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); } + bind_textdomain_codeset (PACKAGE, codeset); + free (codeset); gtk_widget_show (sheet);