PPresenter
view release on metacpan or search on metacpan
PPresenter/Export/Website/HTML.pm view on Meta::CPAN
# Copyright (C) 2000-2002, Free Software Foundation FSF.
package PPresenter::Export::Website::HTML;
use strict;
use vars '@ISA';
use PPresenter::Export;
use base 'PPresenter::Export';
# Produce web-pages for the slides.
# The module contains a lot of small routines to simplify extention
# and adaptation to personal needs.
use constant ObjDefaults =>
{ -name => 'Website producer'
, -aliases => undef
, -slideAs => 'IMAGE' # IMAGE, TABLE, LINEAR, or SKIP
, -notesAs => 'SKIP' # same
, -outputDir => 'html'
, -indexFile => 'index.html'
};
sub makeSlides($$)
{ my ($export, $show, $parent) = @_;
return if 'Cancel' eq $parent->Dialog
( -title => 'Starting Export'
, -text => <<TEXT
Starting the export of you presentation into a website.
Each of the slides will be shown, and then has its picture taken.
Do not touch your mouse while the processing is going on.
TEXT
, -bitmap => 'info'
, -buttons => [ 'OK', 'Cancel' ]
)->Show;
$show->busy(1);
my $dir = $export->{-outputDir};
-d $dir || mkdir $dir, 0755
or die "Cannot create directory $dir: $^E.\n";
my @slides = $export->selectedSlides($show);
my @viewports = $export->selectedViewports($show);
my (@slidelinks, @mainlinks);
$export->mapExportedPhases
( $show
, sub { my ($export, $show, $slide, $viewports) = @_;
push @slidelinks, $export->slide2slidelink($slide);
push @mainlinks, $export->main2slidelink($slide);
}
);
my ($previous, $this, $next) = (undef, undef, shift @slidelinks);
$export->mapExportedPhases
( $show
, sub { my ($export, $show, $slide, $viewports) = @_;
($previous, $this, $next) = ($this, $next, shift @slidelinks);
$export->makeSlide($show, $slide, $viewports
, $export->slide2filename($slide), $previous, $next);
}
);
$export->makeMainPage($show, $export->slide2filename, \@mainlinks );
$show->busy(0);
$parent->Dialog
( -title => 'Ready'
, -text => 'The website is ready.'
, -bitmap => 'info'
, -buttons => [ 'OK' ]
)->Show;
$export;
}
sub slide2slidelink($)
{ my ($export, $slide) = @_;
my $slidename = $export->slide2linkname($slide);
my $link = $export->slide2slide($slide);
"<A HREF=$link>$slidename</A>";
}
sub main2slidelink($)
{ my ($export, $slide) = @_;
my $slidename = $export->slide2linkname($slide);
my $link = $export->main2slide($slide);
"<A HREF=$link>$slidename</A>";
}
my @views;
sub makeSlide($$$$$$)
{ my ($export, $show, $slide, $vps, $file, $previous, $next) = @_;
print PPresenter::TRACE "Working on slide $slide, phase "
, $slide->phase, ", file $file.\n";
my ($slidename, $showname) = ("$slide", "$show");
my $title = $export->Title($show, $slide);
my $chapter= $export->Chapter($show, $slide);
my $logo = $export->PageLogo($show, $slide);
my $vindex = $export->VerticalIndex($show, $slide, $previous, $next);
my $commer = $export->Commercial($show, $slide);
open HTML, ">$file" or die "Cannot write to file $file.\n";
my $oldout = select HTML;
print $export->Header( $show, $slide, $logo, $title, $chapter
, $commer, $vindex);
@views = ();
$export->mapSlideViewports($show, $slide, $vps
, sub {shift->makeSlideView(@_)}
);
my $extra = $export->ExtraText($show, $slide);
my $hindex = $export->HorizontalIndex($show, $slide, $previous, $next);
my $sig = $export->Signature($show, $slide);
my $footer = $export->Footer($show, $slide, $hindex, $sig);
local $" = "<P>";
print "<CENTER>@views</CENTER>\n$extra\n$footer\n";
select $oldout;
( run in 0.717 second using v1.01-cache-2.11-cpan-39bf76dae61 )