/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2011 Free Software Foundation
+ Copyright (C) 2011, 2014 Free Software Foundation
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 <config.h>
+#include <float.h>
#include <gtk/gtk.h>
+#include "dialog-common.h"
#include "psppire-val-chooser.h"
#include "libpspp/str.h"
{N_("_All other values"), NULL, else_set }
};
-static void
-set_sensitivity_from_toggle (GtkToggleButton *togglebutton, GtkWidget *w)
-{
- gboolean active = gtk_toggle_button_get_active (togglebutton);
-
- gtk_widget_set_sensitive (w, active);
-}
-
static void
psppire_val_chooser_init (PsppireValChooser *vr)
{
{
case OV_NUMERIC:
{
- gchar *text = g_strdup_printf ("%g", ov->v.v);
+ gchar *text = g_strdup_printf ("%.*g", DBL_DIG + 1, ov->v.v);
g_value_set_string (dest, text);
g_free (text);
}
g_unichar_to_utf8 (0x2013, en_dash);
- text = g_strdup_printf ("%g %s %g",
- ov->v.range[0],
- en_dash,
- ov->v.range[1]);
+ text = g_strdup_printf ("%.*g %s %.*g",
+ DBL_DIG + 1, ov->v.range[0],
+ en_dash,
+ DBL_DIG + 1, ov->v.range[1]);
g_value_set_string (dest, text);
g_free (text);
}
g_unichar_to_utf8 (0x2013, en_dash);
- text = g_strdup_printf ("LOWEST %s %g",
+ text = g_strdup_printf ("LOWEST %s %.*g",
en_dash,
- ov->v.range[1]);
+ DBL_DIG + 1, ov->v.range[1]);
g_value_set_string (dest, text);
g_free (text);
g_unichar_to_utf8 (0x2013, en_dash);
- text = g_strdup_printf ("%g %s HIGHEST",
- ov->v.range[0],
+ text = g_strdup_printf ("%.*g %s HIGHEST",
+ DBL_DIG + 1, ov->v.range[0],
en_dash);
g_value_set_string (dest, text);
/* Generate a syntax fragment for NV and append it to STR */
void
-old_value_append_syntax (GString *str, const struct old_value *ov)
+old_value_append_syntax (struct string *str, const struct old_value *ov)
{
switch (ov->type)
{
case OV_NUMERIC:
- g_string_append_printf (str, "%g", ov->v.v);
+ ds_put_c_format (str, "%.*g", DBL_DIG + 1, ov->v.v);
break;
case OV_STRING:
{
struct string ds = DS_EMPTY_INITIALIZER;
syntax_gen_string (&ds, ss_cstr (ov->v.s));
- g_string_append (str, ds_cstr (&ds));
+ ds_put_cstr (str, ds_cstr (&ds));
ds_destroy (&ds);
}
break;
case OV_MISSING:
- g_string_append (str, "MISSING");
+ ds_put_cstr (str, "MISSING");
break;
case OV_SYSMIS:
- g_string_append (str, "SYSMIS");
+ ds_put_cstr (str, "SYSMIS");
break;
case OV_ELSE:
- g_string_append (str, "ELSE");
+ ds_put_cstr (str, "ELSE");
break;
case OV_RANGE:
- g_string_append_printf (str, "%g THRU %g",
- ov->v.range[0],
- ov->v.range[1]);
+ ds_put_c_format (str, "%.*g THRU %.*g",
+ DBL_DIG + 1, ov->v.range[0],
+ DBL_DIG + 1, ov->v.range[1]);
break;
case OV_LOW_UP:
- g_string_append_printf (str, "LOWEST THRU %g",
- ov->v.range[1]);
+ ds_put_c_format (str, "LOWEST THRU %*gg",
+ DBL_DIG + 1, ov->v.range[1]);
break;
case OV_HIGH_DOWN:
- g_string_append_printf (str, "%g THRU HIGHEST",
- ov->v.range[0]);
+ ds_put_c_format (str, "%.*g THRU HIGHEST",
+ DBL_DIG + 1, ov->v.range[0]);
break;
default:
g_warning ("Invalid type in old recode value");
- g_string_append (str, "???");
+ ds_put_cstr (str, "???");
break;
};
}
static gchar *
num_to_string (gdouble x)
{
- return g_strdup_printf ("%g", x);
+ return g_strdup_printf ("%.*g", DBL_DIG + 1, x);
}