1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| static void file_open (GtkMenuItem *menuitem, gpointer vbox)
{
GtkWidget *file_open_dialog;
GSList *filenames;
GtkFileFilter *file_filter_bmp, *file_filter_all;
gint result;
gchar *filename;
GtkWidget *table;
GtkWidget *image;
GdkPixbuf *pixbuf;
file_open_dialog = gtk_file_chooser_dialog_new(_("打开文件"), NULL,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_open_dialog), g_get_home_dir ());
file_filter_bmp = gtk_file_filter_new();
file_filter_all = gtk_file_filter_new();
gtk_file_filter_set_name(file_filter_bmp, "BMP files (*.bmp)");
gtk_file_filter_set_name(file_filter_all, "All files (*.*)");
gtk_file_filter_add_pattern(file_filter_bmp, "*.bmp");
gtk_file_filter_add_pattern(file_filter_all, "*");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(file_open_dialog), file_filter_bmp);
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(file_open_dialog), file_filter_all);
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(file_open_dialog), file_filter_bmp);
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(file_open_dialog), file_filter_all);
/* allow the user to choose only ONE file at a time. */
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(file_open_dialog), FALSE);
result = gtk_dialog_run(GTK_DIALOG(file_open_dialog));
if(GTK_RESPONSE_ACCEPT == result)
{
filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(file_open_dialog));
filename = (gchar *)filenames->data;
}
gtk_widget_destroy(file_open_dialog);
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
image = gtk_image_new_from_pixbuf(gdk_pixbuf_scale_simple(pixbuf, (int)(gdk_pixbuf_get_width(pixbuf)*0.25),
(int)(gdk_pixbuf_get_height(pixbuf)*0.25), GDK_INTERP_BILINEAR));
gtk_box_pack_start(GTK_BOX(vbox), image, FALSE, FALSE, 0);
gtk_widget_show(image);
} |