X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fhelper.c;h=c70f8f7c215b15cb31b636c1e10b3bd53be416c6;hb=d3ceb500f824c3765b424e69c69cf3eb85117d15;hp=a65764f4487d239c8b3bb76694be16a4e3795ab9;hpb=8af88c0b7ea2fe75df7e45497988ed0371006a86;p=pspp-builds.git diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index a65764f4..c70f8f7c 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 Free Software Foundation + Copyright (C) 2007, 2009 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 @@ -152,14 +152,32 @@ get_widget_assert (GtkBuilder *builder, const gchar *name) return GTK_WIDGET (get_object_assert (builder, name, GTK_TYPE_WIDGET)); } -/* Converts a string in the pspp locale to utf-8. - The return value must be freed when no longer required*/ +/* This function must be used whenever a filename generated by glib, + (eg, from gtk_file_chooser_get_filename) and passed to the C library, + (eg through a pspp syntax string). +*/ gchar * -pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err) +convert_glib_filename_to_system_filename (const gchar *fname, GError **err) { - return recode_string (CONV_PSPP_TO_UTF8, text, len); + gchar *output_name; + +#ifdef G_OS_WIN32 + const gchar *target_encoding; + gchar *utf8_name = NULL; + + g_get_charset (&target_encoding); + + output_name = g_convert (fname, -1, target_encoding, + "UTF-8", NULL, NULL, err); +#else + output_name = xstrdup (fname); +#endif + + return output_name; } + + #define _(msgid) gettext (msgid) #define N_(msgid) msgid @@ -201,7 +219,7 @@ connect_help (GtkBuilder *xml) if ( 0 == strcmp ("help_button", s)) { - g_signal_connect (GTK_WIDGET (o), "clicked", give_help, 0); + g_signal_connect (o, "clicked", give_help, 0); } } } @@ -214,10 +232,14 @@ void reference_manual (GtkMenuItem *menu, gpointer data) { GError *err = NULL; - if ( ! g_spawn_command_line_async ("yelp info:pspp", &err) ) + gchar *cmd = g_strdup_printf ("yelp file://%s", relocate (DOCDIR "/pspp.xml")); + + if ( ! g_spawn_command_line_async (cmd, &err) ) { msg (ME, _("Cannot open reference manual: %s"), err->message); } + + g_free (cmd); g_clear_error (&err); }