Example #1
0
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( );
}
Example #2
0
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;
}