The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#
# basic-font.pl: sample gnome-font code
#

use Gtk2;
use Gnome2::Print;

Gtk2->init;

$d = create_dialog();
$d->show;

Gtk2->main;

0;

sub render_job
{
	my $job = shift;
	my $conf = $job->get_config;
	my $pc = $job->get_context;
		
	my $font = Gnome2::Print::Font->find_closest_from_full_name("Monospace Regular 10");
	my $font_name = $font->get_name;
	print "Found: " . $font_name . "\n";

	$pc->beginpage("1");

	$pc->setfont($font);

	$pc->moveto(100, 700);
	$pc->show("Some text for testing.");

	$pc->moveto(100, 650);
	$pc->show("Some more text for testing.");

	$pc->showpage;

	$job->close;
}

sub create_dialog
{
	$job = Gnome2::Print::Job->new;
	$dialog = Gnome2::Print::Dialog->new($job, "Sample print dialog", 0);

	$dialog->signal_connect(delete_event => sub { $dialog->destroy; });
	$dialog->signal_connect(destroy      => sub { Gtk2->main_quit;  });

	$dialog->signal_connect(response     => sub {
			my ($d, $response_id, $job) = @_;
			my $conf = $d->get_config;
			my $j = Gnome2::Print::Job->new($conf);

			if    (1 == $response_id)
			{
				render_job($j);

				my $pc = Gnome2::Print::Context->new($conf);
				$j->render($pc);
				$pc->close;

				$dialog->destroy;
			}
			elsif (2 == $response_id)
			{
				render_job($j);

				my $preview = Gnome2::Print::JobPreview->new($j, "Sample preview dialog");
				$preview->set_property("allow-grow" => 1);
				$preview->set_property("allow-shrink" => 1);
				$preview->set_transient_for($d);
				$preview->show_all;
			}
			else
			{
				$d->destroy;
			}
		}, $job);

	return $dialog;
}