[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] psppire/src ChangeLog misc.h val_labs_dialog.c ...
From: |
John Darrington |
Subject: |
[Pspp-cvs] psppire/src ChangeLog misc.h val_labs_dialog.c ... |
Date: |
Mon, 12 Dec 2005 07:52:51 +0000 |
CVSROOT: /sources/pspp
Module name: psppire
Branch:
Changes by: John Darrington <address@hidden> 05/12/12 07:52:51
Modified files:
src : ChangeLog misc.h val_labs_dialog.c
val_labs_dialog.h var_sheet.c
Log message:
Fixed problem with value labels on non numeric data.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/psppire/src/ChangeLog.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/psppire/src/misc.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/psppire/src/val_labs_dialog.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/psppire/src/val_labs_dialog.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/psppire/src/var_sheet.c.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
Patches:
Index: psppire/src/ChangeLog
diff -u psppire/src/ChangeLog:1.8 psppire/src/ChangeLog:1.9
--- psppire/src/ChangeLog:1.8 Mon Nov 28 07:14:23 2005
+++ psppire/src/ChangeLog Mon Dec 12 07:52:51 2005
@@ -1,3 +1,8 @@
+Mon Dec 12 15:50:47 WST 2005 John Darrington <address@hidden>
+
+ * val_labs_dialog.[ch]: Fixed problem with value labels on non numeric
+ data.
+
Mon Nov 28 15:11:52 WST 2005 John Darrington <address@hidden>
* data_sheet.c var_sheet.c: Implemented the input and display of
Index: psppire/src/misc.h
diff -u psppire/src/misc.h:1.2 psppire/src/misc.h:1.3
--- psppire/src/misc.h:1.2 Sun Dec 11 10:14:39 2005
+++ psppire/src/misc.h Mon Dec 12 07:52:51 2005
@@ -28,7 +28,11 @@
#include <gtk/gtk.h>
#include <glade/glade.h>
+/* Formats a value according to FORMAT
+ The returned string must be freed when no longer required */
gchar * value_to_text(union value v, struct fmt_spec format);
+
+
gboolean text_to_value(const gchar *text, union value *v,
struct fmt_spec format);
Index: psppire/src/val_labs_dialog.c
diff -u psppire/src/val_labs_dialog.c:1.3 psppire/src/val_labs_dialog.c:1.4
--- psppire/src/val_labs_dialog.c:1.3 Sun Dec 11 10:14:39 2005
+++ psppire/src/val_labs_dialog.c Mon Dec 12 07:52:51 2005
@@ -23,10 +23,6 @@
used for input of the value labels in the variable sheet */
-/* FIXME:
- Much of this code assumes that values are Numeric values.
- Behaviour needs to be tested (and fixed) for Currency, Shortstring
- and Date values */
#include "val_labs_dialog.h"
#include "value-labels.h"
@@ -38,15 +34,23 @@
on_label_entry_change(GtkEntry *entry, gpointer data)
{
struct val_labs_dialog *dialog = data;
+ g_assert(dialog->labs);
union value v;
const gchar *text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry));
- v.f = strtod(text, 0);
+
+ text_to_value(text, &v, dialog->var->write);
if ( val_labs_find (dialog->labs, v) )
- gtk_widget_set_sensitive(dialog->change_button, TRUE);
+ {
+ gtk_widget_set_sensitive(dialog->change_button, TRUE);
+ gtk_widget_set_sensitive(dialog->add_button, FALSE);
+ }
else
- gtk_widget_set_sensitive(dialog->change_button, FALSE);
+ {
+ gtk_widget_set_sensitive(dialog->change_button, FALSE);
+ gtk_widget_set_sensitive(dialog->add_button, TRUE);
+ }
}
@@ -60,7 +64,7 @@
const gchar *text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry));
union value v;
- v.f = strtod(text, 0);
+ text_to_value(text, &v, dialog->var->write);
g_signal_handler_block(GTK_ENTRY(dialog->label_entry),
dialog->change_handler_id);
@@ -93,8 +97,8 @@
{
struct val_labs_dialog *dialog = data;
- val_labs_destroy(*dialog->target);
- *dialog->target = val_labs_copy(dialog->labs);
+ val_labs_destroy(dialog->var->val_labs);
+ dialog->var->val_labs = val_labs_copy(dialog->labs);
val_labs_destroy (dialog->labs);
dialog->labs = 0;
@@ -170,7 +174,9 @@
union value v;
- v.f = strtod(gtk_entry_get_text(GTK_ENTRY(dialog->value_entry)),0);
+ const gchar *text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry));
+
+ text_to_value(text, &v, dialog->var->write);
if ( ! val_labs_add (dialog->labs, v,
gtk_entry_get_text(GTK_ENTRY(dialog->label_entry)) ) )
@@ -214,10 +220,8 @@
struct val_lab * vl = get_selected_tuple(dialog);
- /* FIXME: properly deal with
- a) short string variables;
- b) format width */
- gchar * text = g_strdup_printf("%g", vl->value.f);
+ gchar *const text = value_to_text(vl->value, dialog->var->write);
+
g_signal_handler_block(GTK_ENTRY(dialog->value_entry),
dialog->value_handler_id);
@@ -351,7 +355,11 @@
vl;
vl = val_labs_next(dialog->labs, &vli))
{
- gchar *text = g_strdup_printf("%g = \"%s\"",vl->value.f, vl->label);
+ gchar *const vstr = value_to_text(vl->value, dialog->var->write);
+
+
+ gchar *const text = g_strdup_printf("%s = \"%s\"",
+ vstr, vl->label);
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter,
@@ -360,6 +368,7 @@
-1);
g_free(text);
+ g_free(vstr);
}
gtk_tree_view_set_model(GTK_TREE_VIEW(dialog->treeview),
@@ -374,7 +383,7 @@
val_labs_dialog_show(struct val_labs_dialog *dialog)
{
g_assert(!dialog->labs);
- dialog->labs = val_labs_copy(*dialog->target);
+ dialog->labs = val_labs_copy(dialog->var->val_labs);
gtk_widget_set_sensitive(dialog->remove_button, FALSE);
gtk_widget_set_sensitive(dialog->change_button, FALSE);
Index: psppire/src/val_labs_dialog.h
diff -u psppire/src/val_labs_dialog.h:1.1 psppire/src/val_labs_dialog.h:1.2
--- psppire/src/val_labs_dialog.h:1.1 Sun Nov 27 08:21:33 2005
+++ psppire/src/val_labs_dialog.h Mon Dec 12 07:52:51 2005
@@ -38,9 +38,8 @@
{
GtkWidget *window;
-
- /* Pointer to the value labels that will (potentially) be updated */
- struct val_labs **target ;
+ /* The variable to be updated */
+ struct variable *var;
/* Local copy of labels */
struct val_labs *labs;
Index: psppire/src/var_sheet.c
diff -u psppire/src/var_sheet.c:1.27 psppire/src/var_sheet.c:1.28
--- psppire/src/var_sheet.c:1.27 Sun Dec 11 10:14:39 2005
+++ psppire/src/var_sheet.c Mon Dec 12 07:52:51 2005
@@ -287,7 +287,7 @@
if (!val_labs_dialog )
val_labs_dialog = val_labs_dialog_create(xml);
- val_labs_dialog->target = &var->val_labs ;
+ val_labs_dialog->var = var;
g_signal_connect_swapped(GTK_OBJECT(customEntry),
"clicked",
@@ -695,12 +695,14 @@
g_assert(vl);
+ const gchar *vstr = value_to_text(vl->value, var->write);
gchar *const text =
- g_strdup_printf("{%g,\"%s\"}_", vl->value.f, vl->label);
+ g_strdup_printf("{%s,\"%s\"}_", vstr, vl->label);
gtk_sheet_set_cell_text(sheet, row, c, text);
g_free(text);
+ g_free(vstr);
val_labs_done(&ip);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] psppire/src ChangeLog misc.h val_labs_dialog.c ...,
John Darrington <=