// paste an external image void clipboard_paste_image(GdkPixbuf *pixbuf) { double pt[2]; reset_selection(); get_current_pointer_coords(pt); set_current_page(pt); create_image_from_pixbuf(pixbuf, pt); }
void insert_image(GdkEvent *event) { GtkTextBuffer *buffer; GnomeCanvasItem *canvas_item; GdkColor color; GtkWidget *dialog; GtkFileFilter *filt_all; GtkFileFilter *filt_gdkimage; char *filename; GdkPixbuf *pixbuf; double scale=1; double pt[2]; dialog = gtk_file_chooser_dialog_new(_("Insert Image"), GTK_WINDOW (winMain), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); #ifdef FILE_DIALOG_SIZE_BUGFIX gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 400); #endif filt_all = gtk_file_filter_new(); gtk_file_filter_set_name(filt_all, _("All files")); gtk_file_filter_add_pattern(filt_all, "*"); filt_gdkimage = gtk_file_filter_new(); gtk_file_filter_set_name(filt_gdkimage, _("Image files")); gtk_file_filter_add_pixbuf_formats(filt_gdkimage); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_gdkimage); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filt_all); if (ui.default_image != NULL) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), ui.default_image); if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) { gtk_widget_destroy(dialog); return; } filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog)); gtk_widget_destroy(dialog); if (filename == NULL) return; /* nothing selected */ if (ui.default_image != NULL) g_free(ui.default_image); ui.default_image = g_strdup(filename); set_cursor_busy(TRUE); pixbuf=gdk_pixbuf_new_from_file(filename, NULL); set_cursor_busy(FALSE); if(pixbuf==NULL) { /* open failed */ dialog = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error opening image '%s'"), filename); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); g_free(filename); ui.cur_item = NULL; ui.cur_item_type = ITEM_NONE; return; } ui.cur_item_type = ITEM_IMAGE; get_pointer_coords(event, pt); set_current_page(pt); create_image_from_pixbuf(pixbuf, pt); }