static void update_image_preview (GtkFileChooser *chooser) { GtkWidget *image; gchar *file; image = gtk_file_chooser_get_preview_widget (GTK_FILE_CHOOSER (chooser)); file = gtk_file_chooser_get_preview_uri (chooser); if (file != NULL) { GdkPixbuf *pixbuf = NULL; pixbuf = create_preview_pixbuf (file); g_free (file); if (pixbuf != NULL) { gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); g_object_unref (pixbuf); } else { gtk_image_set_from_stock (GTK_IMAGE (image), "gtk-dialog-question", GTK_ICON_SIZE_DIALOG); } } gtk_file_chooser_set_preview_widget_active (chooser, file != NULL); }
static void setup_background_filechooser (GtkWidget *filechooser, TerminalProfile *profile) { GtkFileFilter *filter; const char *home_dir; filter = gtk_file_filter_new (); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_filter_set_name (filter, _("Images")); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (filechooser), filter); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (filechooser), TRUE); /* Start filechooser in $HOME instead of the current dir of the factory which is "/" */ home_dir = g_get_home_dir (); if (home_dir) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (filechooser), home_dir); #if 0 GtkWidget *image_preview; GdkPixbuf *pixbuf = NULL; image_preview = gtk_image_new (); /* FIXMchpe this is bogus */ pixbuf = create_preview_pixbuf (terminal_profile_get_property_string (profile, TERMINAL_PROFILE_BACKGROUND_IMAGE_FILE)); if (pixbuf != NULL) { gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), pixbuf); g_object_unref (pixbuf); } else { gtk_image_set_from_stock (GTK_IMAGE (image_preview), "gtk-dialog-question", GTK_ICON_SIZE_DIALOG); } gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (filechooser), image_preview); gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (filechooser), FALSE); gtk_widget_set_size_request (image_preview, 128, -1); gtk_widget_show (image_preview); g_signal_connect (filechooser, "update-preview", G_CALLBACK (update_image_preview), NULL); #endif }
static void add_preview_widget (GtkWidget *widget) { GtkWidget *image; image = gtk_image_new (); gtk_widget_set_size_request (image, 128, 128); gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (widget), image); gtk_image_set_from_pixbuf (GTK_IMAGE (image), create_preview_pixbuf (imagename)); g_signal_connect (widget, "update-preview", G_CALLBACK (update_preview_cb), NULL); }