summaryrefslogtreecommitdiff
path: root/gtk/gtkprinteroptionwidget.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2006-06-20 17:36:55 +0000
committerChristian Persch <chpe@src.gnome.org>2006-06-20 17:36:55 +0000
commit0bce4d271acc1d280df4aafd6d1d3409a088d1c6 (patch)
tree704b56b54b6c8e52dfe7b7810c446ed88202f16a /gtk/gtkprinteroptionwidget.c
parent2406a5b256da7b0f23bd35ad391266987221d3a5 (diff)
downloadgtk+-0bce4d271acc1d280df4aafd6d1d3409a088d1c6.tar.gz
Convert input to filename encoding and construct an URI from that. Add
2006-06-20 Christian Persch <chpe@cvs.gnome.org> * gtk/gtkprinteroptionwidget.c: (filesave_changed_cb), (alternative_set), (construct_widgets): Convert input to filename encoding and construct an URI from that. * gtk/gtkprintsettings.h: Add OUTPUT_FILE_FORMAT and OUTPUT_URI keys. * modules/printbackends/pdf/gtkprintbackendpdf.c: Use those defines. Step 1 from bug #339592.
Diffstat (limited to 'gtk/gtkprinteroptionwidget.c')
-rw-r--r--gtk/gtkprinteroptionwidget.c46
1 files changed, 28 insertions, 18 deletions
diff --git a/gtk/gtkprinteroptionwidget.c b/gtk/gtkprinteroptionwidget.c
index 2b5941164f..85b767baab 100644
--- a/gtk/gtkprinteroptionwidget.c
+++ b/gtk/gtkprinteroptionwidget.c
@@ -411,31 +411,41 @@ filesave_changed_cb (GtkWidget *w,
GtkPrinterOptionWidget *widget)
{
GtkPrinterOptionWidgetPrivate *priv = widget->priv;
- char *value;
- char *directory;
- const char *file;
+ gchar *uri, *directory, *path;
+ const gchar *file;
- /* combine the value of the chooser with the value of the entry */
- g_signal_handler_block (priv->source, priv->source_changed_handler);
-
/* TODO: how do we support nonlocal file systems? */
directory = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (priv->combo));
- file = gtk_entry_get_text (GTK_ENTRY (priv->entry));
+ file = g_filename_from_utf8 (gtk_entry_get_text (GTK_ENTRY (priv->entry)),
+ -1, NULL, NULL, NULL);
+ if (file == NULL)
+ return;
+
+ /* combine the value of the chooser with the value of the entry */
+ g_signal_handler_block (priv->source, priv->source_changed_handler);
if (g_path_is_absolute (file))
- value = g_strdup (file);
+ uri = g_filename_to_uri (file, NULL, NULL);
+ else
+ {
#ifdef G_OS_UNIX
- else if (file[0] == '~' && file[1] == '/')
- value = g_build_filename (g_get_home_dir (), file + 2, NULL);
+ if (file[0] == '~' && file[1] == '/')
+ {
+ directory = g_strdup (g_get_home_dir ());
+ file += 2;
+ }
#endif
- else
- value = g_build_filename (directory, file, NULL);
+
+ path = g_build_filename (directory, file, NULL);
+ uri = g_filename_to_uri (path, NULL, NULL);
+ g_free (path);
+ }
- if (value)
- gtk_printer_option_set (priv->source, value);
+ if (uri)
+ gtk_printer_option_set (priv->source, uri);
g_free (directory);
- g_free (value);
+ g_free (uri);
g_signal_handler_unblock (priv->source, priv->source_changed_handler);
emit_changed (widget);
@@ -505,7 +515,7 @@ alternative_set (GtkWidget *box,
{
gtk_container_foreach (GTK_CONTAINER (box),
(GtkCallback) select_maybe,
- value);
+ (gpointer) value);
}
static GSList *
@@ -619,8 +629,8 @@ construct_widgets (GtkPrinterOptionWidget *widget)
/* TODO: make this a gtkfilechooserentry once we move to GTK */
priv->entry = gtk_entry_new ();
- priv->combo = gtk_file_chooser_button_new (_("Print to PDF"),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ priv->combo = gtk_file_chooser_button_new (source->display_text,
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
label = gtk_label_new_with_mnemonic (_("_Name:"));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);