X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fvar-sheet.c;h=9e73cce6220a8cc358e9e7f255de35fb7f4b62e7;hb=dde7b813c5747fba5d14e47f6dd82bb7b4dc7cf1;hp=7f14602b4159cf415ffa6feec1132cd0e0fae5e3;hpb=e10bd21c92f8d6a82ed06bec7af9ee40bf5eb727;p=pspp
diff --git a/src/ui/gui/var-sheet.c b/src/ui/gui/var-sheet.c
index 7f14602b41..9e73cce622 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);