void PrintGnome( void ) { GtkWidget *dialog; gint ret; PrintInit( ); dialog = gnome_print_dialog_new( job, (guchar*)"ClassicLadder", 0 ); ret = gtk_dialog_run( GTK_DIALOG( dialog ) ); gtk_widget_destroy( dialog ); switch( ret ) { case GNOME_PRINT_DIALOG_RESPONSE_PRINT: DrawPrint(gpc); gnome_print_job_close (job); gnome_print_job_print( job ); break; case GNOME_PRINT_DIALOG_RESPONSE_PREVIEW: PrintPreviewGnome(); break; } PrintFree( ); }
gint create_gnomeprint_session(void) { GnomePrintJob *job = NULL; static GnomePrintConfig *gpc = NULL; GtkWidget *dialog, *preview; gint res, page_num = 0; GtkWidget *notebook, *page; if (gpc == NULL) gpc = gnome_print_config_default(); job = gnome_print_job_new(gpc); if (job == NULL) return -1; dialog = gnome_print_dialog_new(job, (guchar *)_("Print"), 0); notebook = gtk_container_get_children( GTK_CONTAINER(GTK_DIALOG(dialog)->vbox))->data; gtk_widget_hide(notebook); if (!GTK_WIDGET_VISIBLE(gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_num))) page_num++; page = gtk_widget_ref( gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_num)); gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), page_num); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), page, FALSE, FALSE, 0); gtk_widget_set_size_request( gtk_container_get_children(GTK_CONTAINER(page))->data, -1, 240); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(pub->mw->window)); do { res = gtk_dialog_run(GTK_DIALOG(dialog)); gnome_print_config_unref(gpc); gpc = gnome_print_dialog_get_config(GNOME_PRINT_DIALOG(dialog)); switch (res) { case GNOME_PRINT_DIALOG_RESPONSE_PRINT: g_object_unref(job); job = create_job(gpc); gnome_print_job_print(job); break; case GNOME_PRINT_DIALOG_RESPONSE_PREVIEW: g_object_unref(job); job = create_job(gpc); preview = gnome_print_job_preview_new(job, (guchar *)_("Print Preview")); // gtk_window_set_transient_for(GTK_WINDOW(preview), GTK_WINDOW(dialog)); gtk_window_set_modal(GTK_WINDOW(preview), TRUE); gtk_widget_show(preview); g_signal_connect(G_OBJECT(preview), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main(); break; } } while (res == GNOME_PRINT_DIALOG_RESPONSE_PREVIEW); gtk_widget_destroy(dialog); g_object_unref(job); return res; }