X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fui%2Fgui%2Fhelper.c;h=a0d753b5d6668bd1d204981f4b4c023824716170;hb=refs%2Fbuilds%2F20100227040506%2Fpspp;hp=a4c07ca46d78ae74efd5317f3a7b87216578b1ee;hpb=14aac9fe7a7efbb6c9bded2ed5969a643cb76645;p=pspp diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index a4c07ca46d..a0d753b5d6 100644 --- a/src/ui/gui/helper.c +++ b/src/ui/gui/helper.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2009 Free Software Foundation + Copyright (C) 2007, 2009, 2010 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 @@ -24,7 +24,6 @@ #include #include "helper.h" -#include "message-dialog.h" #include #include #include @@ -49,29 +48,38 @@ /* 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) +value_to_text (union value v, const PsppireDict *dict, struct fmt_spec format) { gchar *s = 0; - s = g_new (gchar, format.w + 1); - data_out (&v, &format, s); - s[format.w]='\0'; + s = data_out (&v, dict_get_encoding (dict->dict), &format); g_strchug (s); return s; } +/* Converts TEXT to a value. -gboolean -text_to_value (const gchar *text, union value *v, - struct fmt_spec format) + VAL will be initialised and filled by this function. + It is the caller's responsibility to destroy VAL when no longer needed. + VAR and DICT must be the variable and dictionary with which VAL + is associated. + + On success, VAL is returned, NULL otherwise. +*/ +union value * +text_to_value (const gchar *text, + const PsppireDict *dict, + const struct variable *var, + union value *val) { - bool ok; + const struct fmt_spec *format = var_get_print_format (var); + int width = var_get_width (var); - if ( format.type != FMT_A) + if ( format->type != FMT_A) { - if ( ! text ) return FALSE; + if ( ! text ) return NULL; { const gchar *s = text; @@ -82,16 +90,18 @@ text_to_value (const gchar *text, union value *v, s++; } - if ( !*s) return FALSE; + if ( !*s) return NULL; } } + value_init (val, width); msg_disable (); - ok = data_in (ss_cstr (text), LEGACY_NATIVE, format.type, 0, 0, 0, - v, fmt_var_width (&format)); + data_in (ss_cstr (text), UTF8, format->type, 0, 0, 0, + dict->dict, + val, width); msg_enable (); - return ok; + return val; } @@ -121,8 +131,7 @@ get_object_assert (GtkBuilder *builder, const gchar *name, GType type) if ( !o ) g_critical ("Object \"%s\" could not be found\n", name); - - if ( ! g_type_is_a (G_OBJECT_TYPE (o), type)) + else if ( ! g_type_is_a (G_OBJECT_TYPE (o), type)) { g_critical ("Object \"%s\" was expected to have type %s, but in fact has type %s", name, g_type_name (type), G_OBJECT_TYPE_NAME (o)); @@ -228,7 +237,10 @@ reference_manual (GtkMenuItem *menu, gpointer data) if ( ! g_spawn_command_line_async (cmd, &err) ) { - msg (ME, _("Cannot open reference manual: %s"), err->message); + msg (ME, _("Cannot open reference manual: %s. The PSPP user manual is " + "also available at " + "http://www.gnu.org/software/pspp/documentation.html"), + err->message); } g_free (cmd); @@ -289,3 +301,12 @@ paste_syntax_in_new_window (const gchar *syntax) gtk_widget_show (se); } + + +/* gtk_box_pack_start_defaults is deprecated. + Therefore we roll our own until a better solution is found */ +void +psppire_box_pack_start_defaults (GtkBox *box, GtkWidget *widget) +{ + gtk_box_pack_start (box, widget, TRUE, TRUE, 0); +}