PPresenter

 view release on metacpan or  search on metacpan

PPresenter/Export.pm  view on Meta::CPAN

    my $default = $export->{$flag};
    die "Cannot find default $default for flag $flag.\n"
        unless grep {$default eq $_} @_;

    $parent->Optionmenu
    ( -options => [ $default, grep {$_ ne $default} @_ ]
    , -variable => \$export->{$flag}
    );
}

sub popup($$)
{   my ($export, $show, $screen) = @_;
    $export->popup($show, $screen)
           ->Popup(-popover => 'cursor');
}

1;

PPresenter/Export/Handouts/IM_PostScript.pm  view on Meta::CPAN

};

my @paper_placers =
( [ '1'    , \&make1slide_pp,  'export_ps1.xbm'    ]
, [ '12'   , \&make2slides_pp, 'export_ps12.xbm'   ]
, [ '12 34', \&make4slides_pp, 'export_ps1234.xbm' ]
, [ '13 24', undef, 'export_ps1324.xbm' ]
);

sub exportPostscript($$)
{   my ($export, $show, $popup) = @_;

    $popup->destroy;

    print PPresenter::TRACE
        "Exporting slides to PostScript via ImageMagick started.\n";

    my @outfiles = $export->mapExportedPhases
      ( $show
      , sub { my ($export, $show, $slide, $viewports) = @_;
              $export->makeSlide($show, $slide, $viewports);
            }
      );

PPresenter/Export/Handouts/IM_PostScript.pm  view on Meta::CPAN

    return $pages->Quantize(colors     => 2)      if $mode eq 'mono';
}

sub writePages($$$)
{   my ($export, $pages, $file, $density) = @_;

    $pages->Set(density => $density);
    my $error = $pages->Write($file);
    return unless $error;

    $export->{popup}->Dialog
    ( -text    => "Cannot write result to $file:\n$error"
    , -bitmap  => 'error'
    , -title   => 'Write error'
    , -buttons => [ 'Bummer!' ]
    )->Show;
}

sub fitToPaper($$$)
{   my ($export, $img, $pwidth, $pheight) = @_;
    my ($width, $height) = $img->Get('width', 'height');

PPresenter/Export/Handouts/IM_PostScript.pm  view on Meta::CPAN

        push @$all_images, $page->Append(-stack => 1);
    }

    $all_images;
}

#
# The user interface to this module.
#

sub popup($$)
{   my ($export, $show, $screen) = @_;

    my $popup = MainWindow->new(-screen => $screen
    , -title => 'Export slides with Postscript via ImageMagick'
    );
    $popup->withdraw;

    my $vp = $export->tkViewportSettings($show, $popup);
    my $ps = $export->tkPostscript($show, $popup);

    my $options = $popup->Frame;
    $options->Label
    ( -text     => 'export'
    , -anchor   => 'e'
    )->grid($export->tkSlideSelector($popup), -sticky => 'ew');

    $options->Label
    ( -text     => 'output file'
    , -anchor   => 'e'
    )->grid($options->Entry(-textvariable => \$export->{-outputFile})
           , -sticky => 'ew');

    my $commands = $popup->Frame;
    $commands->Button
    ( -text      => 'Export'
    , -relief    => 'ridge'
    , -command   => sub {$export->exportPostscript($show, $popup)}
    )->grid($commands->Button
       ( -text      => 'Cancel'
       , -relief    => 'sunken'
       , -command   => sub {$popup->withdraw}
       )
    , -padx => 10, -pady => 10
    );

    if(defined $vp)
    {   $vp->grid($ps, -sticky => 'ewns');
        $options->grid('^', -sticky => 'ew');
    }
    else {$options->grid($ps, -sticky => 'ew')}
    $commands->grid(-columnspan => 2, -sticky => 'ew');

    if(grep {$_->device ne 'printer'} $show->viewports)
    {   my $hint = $popup->LabFrame
        ( -label     => 'Hint'
        , -labelside => 'acrosstop'
        )->grid(-columnspan => 2, -sticky => 'ew');
        $hint->Label(-text => <<HINT
Black on white is usually nicer, so you may consider
the use `-device=>printer' for all viewports.
HINT
        )->grid(-sticky=>'nwsw');
    }

    $popup->Popup(popover => 'cursor');
}

sub tkPostscript($$)
{   my ($export, $show, $popup) = @_;
    my $ps = $export->SUPER::tkPostscript($show, $popup);

    my $options = $ps->Frame;
    foreach (@paper_placers)
    {   my ($label, $function, $bitmap) = @$_;
        $options->Checkbutton
        ( -bitmap      => '@'. $show->findImageFile($bitmap)
        , -onvalue     => $label
        , -variable    => \$export->{-paperUse}
        , -indicatoron => 0
        )->pack(-side => 'left');

PPresenter/Export/Handouts/PostScript.pm  view on Meta::CPAN

    , -rotate    => $rotate
    , -file      => $file
    );
    print "$err\n" if $err;
}

#
# The user interface to this module.
#

sub popup($$)
{   my ($export, $show, $screen) = @_;
    return $export->{popup}
        if exists $export->{popup};

    $export->{popup} = my $popup = MainWindow->new(-screen => $screen
    , -title => 'Export slides with Tk Postscript'
    );
    $popup->withdraw;

    my $vp = $export->tkViewportSettings($show, $popup);
    my $ps = $export->tkPostscript($show, $popup);

    my $options = $popup->Frame;
    $options->Label
    ( -text     => 'export'
    , -anchor   => 'e'
    )->grid($export->tkSlideSelector($popup), -sticky => 'ew');

    $options->Label
    ( -text     => 'output dir'
    , -anchor   => 'e'
    )->grid($options->Entry(-textvariable => \$export->{-outputDir})
           , -sticky => 'ew');

    my $commands = $popup->Frame;
    $commands->Button
    ( -text      => 'Export'
    , -relief    => 'ridge'
    , -command   => sub {$export->exportPostscript($show, $popup)}
    )->grid($commands->Button
       ( -text      => 'Cancel'
       , -relief    => 'sunken'
       , -command   => sub {$popup->withdraw}
       )
    , -padx => 10, -pady => 10
    );

    if(defined $vp)
    {   $vp->grid($ps, -sticky => 'ewns');
        $options->grid('^', -sticky => 'ew');
    }
    else {$options->grid($ps, -sticky => 'ew')}
    $commands->grid(-columnspan => 2, -sticky => 'ew');

    if(grep {$_->device ne 'printer'} $show->viewports)
    {   my $warning = $popup->LabFrame
        ( -label     => 'warning'
        , -labelside => 'acrosstop'
        )->grid(-columnspan => 2, -sticky => 'ew');
        $warning->Label(-text => <<WARN
The background-color will be lost, so you better
specify `-device=>printer' for all viewports.
WARN
        )->grid(-sticky=>'nwsw');
    }

    return $popup;
}

sub tkPostscript($$)
{   my ($export, $show, $parent) = @_;
    
    my $ps = $parent->LabFrame
    ( -label     => 'Postscript'
    , -labelside => 'acrosstop'
    );

PPresenter/Export/Handouts/PostScript.pm  view on Meta::CPAN

                : die "-paperUnits of $units?\n";

        return ( int($export->{-paperWidth}*$pts)
               , int($export->{-paperHeight}*$pts));
    }

    return $export->paperSize($size);
}

sub exportPostscript($$)
{   my ($export, $show, $popup) = @_;

    $export->createDirectory($popup, $export->{-outputDir}) || return;
    $popup->withdraw;

    print PPresenter::TRACE "Exporting slides to postscript started.\n";

    my @viewports   = $export->selectedViewports;

    foreach ($export->selectedSlides($show))
    {   $export->makeSlideExports
        ( $show, $_, \@viewports
        , [ sub {shift->view2postscript(@_)}, $export ]
        )

PPresenter/Export/Images/ImageMagick.pm  view on Meta::CPAN


sub getDimensions($)
{   my ($export, $image) = @_;
    $image->Get('width', 'height');
}

#
# The user interface to this module.
#

sub popup($$)
{   my ($export, $show, $screen) = @_;
    return $export->{popup}
        if exists $export->{popup};

    $export->{popup} = my $popup = MainWindow->new(-screen => $screen
    , -title => 'Export images'
    );
    $popup->withdraw;

    my $vp = $export->tkViewportSettings($show, $popup);
    my $im = $export->tkImageSettings($show, $popup);

    my $options = $popup->Frame;
    $options->Label
    ( -text     => 'export'
    , -anchor   => 'e'
    )->grid($export->tkSlideSelector($popup), -sticky => 'ew');

    $options->Label
    ( -text     => 'output dir'
    , -anchor   => 'e'
    )->grid($options->Entry(-textvariable => \$export->{-outputDir})
           , -sticky => 'ew');

    my $commands = $popup->Frame;
    $commands->Button
    ( -text      => 'Export'
    , -relief    => 'ridge'
    , -command   => sub {$export->export($show, $popup)}
    )->grid($commands->Button
       ( -text      => 'Cancel'
       , -relief    => 'sunken'
       , -command   => sub {$popup->withdraw}
       )
    , -padx => 10, -pady => 10
    );

    $im      ->grid(-sticky => 'ew');
    $options ->grid(-sticky => 'ew');
    $vp      ->grid(-sticky => 'ew') if defined $vp;
    $commands->grid(-columnspan => 2, -sticky => 'ew');

    $popup->Popup(popover => 'cursor');
}

sub export($$)
{   my ($export, $show, $popup) = @_;

    $export->createDirectory($popup, $export->{-outputDir}) || return;
    $popup->withdraw;

    return if 'Cancel' eq $popup->Dialog
    (   -title    => 'Starting Export'
    ,   -text     => <<TEXT
Starting the export of you presentation as images.

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' ]

PPresenter/Export/Images/ImageMagick.pm  view on Meta::CPAN


    print PPresenter::TRACE "Exporting slides to images started.\n";

    $export->mapExportedPhases
    ( $show
    , sub { my ($export, $show, $slide, $viewports) = @_;
            $export->makeSlide($show, $slide, $viewports);
          }
    );

    $popup->Dialog
    (   -title    => 'Ready'
    ,   -text     => 'The images are ready.'
    ,   -bitmap   => 'info'
    ,   -buttons  => [ 'OK' ]
    )->Show;

    print PPresenter::TRACE "Exporting slides to images ready.\n";

    $export;
}

PPresenter/Export/Website/HTML.pm  view on Meta::CPAN

    <<include;
<IMG SRC="$file" WIDTH=$width HEIGHT=$height
 BORDER=0 HSPACE=15 VSPACE=15 ALIGN=center><P>
include
}

#
# The user interface to this module.
#

sub popup($$)
{   my ($export, $show, $screen) = @_;
    return $export->{popup}
        if exists $export->{popup};

    if($show->hasImageMagick)
    {   require PPresenter::Export::Images::ImageMagick;
        unshift @ISA, 'PPresenter::Export::Images::ImageMagick';
    }
    else
    {   require PPresenter::Export::Images::Tk;
        unshift @ISA, 'PPresenter::Export::Images::Tk';
    }

    $export->{popup} = my $popup = MainWindow->new(-screen => $screen
    , -title => 'Create a Website'
    );
    $popup->withdraw;

    my $vp  = $export->tkViewportSettings($show, $popup);
    my $fmt = $export->tkImageSettings($show,$popup);

    my $options = $popup->LabFrame
        ( -label     => "Don't know"
        , -labelside => 'acrosstop'
        );

    $options->Label
    ( -text     => 'export'
    , -anchor   => 'e'
    )->grid( $export->tkSlideSelector($popup)
           , -sticky => 'ew');

    $options->Label
    ( -text     => 'output directory'
    , -anchor   => 'e'
    )->grid( $options->Entry(-textvariable => \$export->{-outputDir})
           , -sticky => 'ew');

    $options->Label
    ( -text     => 'index file'

PPresenter/Export/Website/HTML.pm  view on Meta::CPAN

           , -sticky => 'ew');

    if($show->containsSlideNotes)
    {   $options->Label
        ( -text     => 'notes as'
        , -anchor   => 'e'
        )->grid( $export->tkSlideFormatting($options, $show, 'notesAs')
               , -sticky => 'ew');
    }

    my $commands = $popup->Frame;
    $commands->Button
    ( -text      => 'Export'
    , -relief    => 'ridge'
    , -command   => sub { $popup->withdraw;
                          $export->makeSlides($show, $popup);
                        }
    )->grid($commands->Button
       ( -text      => 'Cancel'
       , -relief    => 'sunken'
       , -command   => sub {$popup->withdraw}
       )
       , -padx => 10, -pady => 10
    );

    $vp->pack(-fill => 'x') if $vp;
    $options->pack(-fill => 'x');
    $fmt->pack(-fill => 'x');
    $commands->pack(-fill => 'x');

    $popup->Popup(popover => 'cursor');
}

sub tkSlideFormatting($$$)
{   my ($export, $parent, $show, $label) = @_;

    my @options;
    # first slide used as standard for show, which is incorrect... but it
    # is hard to decide differently.  I do not expect many people will
    # change to incompatible formatters or templates within the show.

PPresenter/Viewport/BackgroundMenu.pm  view on Meta::CPAN

#
# A special version of a viewport: a viewport with controls.
#

package PPresenter::Viewport::BackgroundMenu;

use Tk;
use strict;

sub new($$$;)
{   my ($class, $show, $viewport, $screen, $has_popup) = @_;

    my $self = bless {}, $class;

    my $menu = $screen->Menu
    ( -tearoff   => 1
    , -menuitems => [ [ command => '  Control  ', -state => 'disabled'] ]
    );

    my $phases = $menu->Menu
    ( -tearoff   => 0

PPresenter/Viewport/BackgroundMenu.pm  view on Meta::CPAN

    $screen->bind("<Key-h>", sub {$show->setRunning(0);} );
    $screen->bind("<Key-n>", sub {$show->showSlide('NEXT_SELECTED');} );
    $screen->bind("<Key-N>", sub {$show->showSlide('NEXT');} );
    $screen->bind("<Key-p>", sub {$show->showSlide('PREVIOUS');} );

    $menu->add('cascade'
    , -label   => 'steps'
    , -menu    => $steps
    );

    if($has_popup)
    {   $menu->command
        ( -label       => 'slides'
        , -underline   => 0
        , -command     => sub {$viewport->showControl}
        , -accelerator => 's'
        );

        $screen->bind("<Key-s>", sub {$viewport->showControl});
    }

PPresenter/Viewport/BackgroundMenu.pm  view on Meta::CPAN


    my @exporters = $show->exporters;
    if(@exporters)
    {   my $export = $menu->Menu
        ( -tearoff     => 0
        );

        foreach (sort {"$a" cmp "$b"} @exporters)
        {   $export->add('command'
            , -label   => "$_"
            , -command => [sub {$_[0]->popup($show, $viewport->{-display})},$_ ]
            );
        }

        $menu->add('cascade'
        , -label       => 'export'
        , -menu        => $export
        );
    }

    $menu->command

PPresenter/Viewport/Control.pm  view on Meta::CPAN

    die "Progress color-list for progress shall have odd length.\n"
        unless (@{$viewport->{-progressColors}} & 1) == 1;

    $viewport;
}

sub createControl()
{   my $viewport = shift;

    my ($show,$screen) = @$viewport{'show', 'screen'};
    my $has_popup = not $viewport->{-includeControls};
    my $where     = $has_popup
                  ? MainWindow->new(-screen => $viewport->{-display})
                  : ($viewport->{controlframe} = $screen->Frame);

    @$viewport{ qw/progressbar slidebar neighbours menu
                   slidecontrol tagcontrol phases/ } =
    ( PPresenter::Viewport::ProgressBar->new($show, $viewport)
    , PPresenter::Viewport::SlideButtonBar->new($show, $viewport)
    , PPresenter::Viewport::Neighbours->new($show, $viewport)
    , PPresenter::Viewport::BackgroundMenu->new($show, $viewport,
         $viewport->{screen}, $has_popup)
    , PPresenter::Viewport::SlideControl->new($show, $viewport, $where)
    , PPresenter::Viewport::TagControl->new($show, $viewport, $where)
    , PPresenter::Viewport::Phases->new($show, $viewport)
    );

    if($has_popup)
    {   $where->withdraw;
        $viewport->make_popup($show, $where,
            $viewport->{slidecontrol}, $viewport->{tagcontrol});

        $viewport->{controlpopup} = $where;
    }
    else
    {   # These two are grouped into a separate frame which is repacked
        # when needed.  The controls do not need to be repacked ever.
        $viewport->getSlideControl->pack(-fill => 'both', -anchor => 'n');
        $viewport->getTagControl->pack(-fill => 'both', -anchor => 'n');
    }

    $viewport->packViewport;
}

PPresenter/Viewport/Control.pm  view on Meta::CPAN

}

sub slideSelectionChanged()
{   my $viewport = shift;
    $viewport->{slidebar}->reconstruct;
    $viewport->{slidecontrol}->selectionChanged;
    $viewport->{tagcontrol}->selectionChanged;
    $viewport;
}

sub make_popup($$$$)
{   my ($viewport, $show, $w, $slidecontrol, $tagcontrol) = @_;

    $w->withdraw;
    $w->iconname('Control');

    my $f = $w->Frame;

    $f->Button
        ( -text       => "Dismiss"
        , -underline  => 0

PPresenter/Viewport/Control.pm  view on Meta::CPAN


    $w->bind("<Key-n>", sub {$show->showSlide('NEXT_SELECTED');} );
    $w->bind("<Key-N>", sub {$show->showSlide('NEXT');} );
    $w->bind("<Key-p>", sub {$show->showSlide('PREVIOUS');} );

    $w->Advertise(slides => $slidecontrol);
    $w->Advertise(tags   => $tagcontrol);
}

sub showControl()
{   shift->{controlpopup}->Popup(-popover => 'cursor')
}

1;

doc_html/manual.html  view on Meta::CPAN

        <A HREF=viewport/index.html><B><FONT COLOR=green>viewports</FONT></B></A>
        showing slides.
    <LI>one <A HREF=viewport/control.html><B><FONT COLOR=green>control viewport</FONT></B></A>,
        which shows
        slide notes,
        names of the neighbouring slides,
        a slide-buttons bar, and
        a progress bar.
    <LI>a <B><FONT COLOR=green>background menu</FONT></B> is hidden behind the
        right mouse-button in a viewport with controls.
    <LI>via a <A HREF=viewport/popup.html><B><FONT COLOR=green>popup
        window</FONT></B></A>,
        or via the controling viewport,
        you can control the timing of the show,
        <A HREF=viewport/popup.html#slidecontrol>selecting slides</A>, and
        <A HREF=viewport/popup.html#tagcontrol>manage tagged slides</A>.
    </UL>
    Sorted index of <A HREF=options.html>all options</A>.
    <P>
<LI><A HREF=tutorial/index.html><B><FONT COLOR=green>Tutorials:</FONT></B></A>
    <UL>
    <LI>Brief <A HREF=tutorial/file.html>presentation description</A>.
    <LI>Possibilities to <A HREF=tutorial/notation.html>denote</A>
        strings in Perl.
    <LI>Detailed guide how to <A HREF=tutorial/beginners/index.html>create
        a presentation</A> and how to use PPresenter for it.

doc_html/show/new.html  view on Meta::CPAN

<DD>Used for a poor mans show creation.  If you do not explicity add
    any window (excluding control viewports which show slidenotes), then
    PPresenter adds one for you.  The size and location are derived from this
    flag.  Default is <CODE>undef</CODE> which results in a window
    filling the whole screen.
    <P>
<DT><B>-controlDisplay =&gt;</B> <I>display</I>
<DT><B>-controlGeometry =&gt;</B> <I>geometry</I>
<DD>The simpelest way to get a <A HREF=../viewport/control.html>control
    viewport</A> is using this display option. If you do
    not add a control viewport, you will have a popup via the background-menu
    which shows the data.
    The default geometry is <CODE>640x480</CODE><BR>
    A demonstration of this option:
<PRE>
   $show->new(-controlDisplay =&gt; \$ENV{DISPLAY});
</PRE>

<DT><B>-trace =&gt;</B> <I>file</I>
<DD>The file where a verbatim trace on the internal activities of
    PPresenter is written to.  Two nice values are <CODE>/dev/null</CODE> (the

doc_html/slide/index.html  view on Meta::CPAN

    <P>
<DT><B>-nextSlide =&gt;</B> <I>string</I>
<DD>The slide to be shown after this one.  This may be a name (the
    <CODE>-title</CODE> of the slide), an alias name of a slide,
    a sequence number in the list of slides, or <CODE>'FIRST'</CODE> or
    <CODE>'LAST'</CODE>.
    <P>
<DT><B>-active =&gt;</B> <I>boolean</I>
<DD>Include the slide in the presentation yes (true, <CODE>1</CODE>
    --the default) or no (false, <CODE>0</CODE>).  You can also
    (de-)activate slides with tags and via the control-popup or
    <A HREF=../viewport/control.html>control window</A>.
    <P>
<DT><B>-tag =&gt;</B> <I>string</I>
<DT><B>-tags =&gt;</B> <B>[</B> <I>string, ...</I> <B>]</B>
<DD>Tags, used to select (activate) or unselect (deactive) groups of
    slides.  See the <A HREF../show/new.html>show's new() function</A>
    how to use the tags.
    <P>
<DT><B>-callback =&gt;</B> <I>code</I>
<DT><B>-callback =&gt; [</B> <I>dynamic, callback</I> <B>]</B>

doc_html/tutorial/beginners/timing.html  view on Meta::CPAN

<PRE>
   my $show = PPresenter->new
      ( -name      =&gt; 'Wildlife'
      , -totaltime =&gt; '1h15m'
      );
</PRE>
<IMG SRC=../../viewport/slidecontrol.gif WIDTH=284 HEIGHT=262 ALIGN=right
 HSPACE=10>
Now, when you run the script (start the presentation), PPresenter will show how the
sum of the required times fits to the total time you have available.  Press
`<CODE>s</CODE>' in your presentation-<WBR>window to get a popup including
the table shown here right.
<P>
In for a big shock?: too much time required!  Response?  No, wrong response!r
Do never shorten the required time per slide unless you strip content,
otherwise you will have to hurry, which is deadly for your message.
<P>
The colours you see in the image show how the time used is related to the
time available.  Press `<CODE>g</CODE>' to start the timer.
<BR CLEAR=right>
<P>

doc_html/viewport/control.html  view on Meta::CPAN

viewports</A>, and the <A HREF=#examples>examples below</A>.  A typical
example of a control viewport look like:
</TD></TR>
<TR><TD COLSPAN=2 ALIGN=right><IMG SRC=control.gif WIDTH=639
     HEIGHT=479></TD></TR>
<TR><TD>&nbsp;</TD><TD VALIGN=top>

A control window contains a various controls:
<UL>
<LI>a background menu,
<LI>control <A HREF=popup.html>popup</A> (optional),
<LI><A HREF=popup.html#tagcontrol>tag control</A> (unless control-popup),
<LI><A HREF=popup.html#slidecontrol>slide control</A> (unless control-popup),
<LI><A HREF=phase.html>slide phase</A>,
<LI>slide notes,
<LI>progress bar,
<LI>slide button bar, and
<LI>neighbour names bar.
</UL>

<H2><A NAME=options>Options for control viewports</H2>

Viewports with control have all <A HREF=index.html#options>options of
the usual viewports</A>, but often with other defaults, but have a
few more which are used for the various controls which are displayed:
<DL>
<DT>
<DT><B>-includeControls =&gt;</B> <I>boolean</I>
<DD>This flag determines wheter the
    <A HREF=slidecontrol.html>slide-control</A> and
    <A HREF=tagcontrol.html>tag-control</A> should
    be included in the control-window or via a popup.<BR>
    The default is in a seperate popup, but the implicit generated
    control viewport will contain these controls.
    <P>
<DT><B>-showPhases =&gt;</B> <I>boolean</I>
<DD>Specifies if you want to see how many phases still has to be done
    to complete this slide.  Read the special page about the possibilities
    on location and shape of the <A HREF=phase.html>representation of
    phases</A>.
    <P>
<DT><B>-showProgressBar =&gt;</B> <I>boolean</I>
<DT><B>-showSlideButtons =&gt;</B> <I>boolean</I>

doc_html/viewport/popup.html  view on Meta::CPAN

<BODY BGCOLOR=#FFFFFF TEXT=#000000>

<TABLE WIDTH=100%>
<TR><TD WIDTH=15% VALIGN=top><IMG SRC=../images/ppresenter.png WIDTH=150 HEIGHT=170></TD>
    <TD ALIGN=center><H1>Control Popup</H1></TD></TR>
<TR><TD VALIGN=top>

<A HREF=../index.html>PPresenter</A><BR>
<A HREF=../manual.html>Manual</A><BR>
<A HREF=index.html>Viewport</A><BR>
<B>control&nbsp;popup</B>
<P>
<A HREF=#slidecontrol>slide&nbsp;control</A><BR>
<A HREF=#tagcontrol>tag&nbsp;control</A><BR>
<P>
    </TD><TD VALIGN=top>

<IMG SRC=popup.gif WIDTH=339 HEIGHT=246 ALIGN=right HSPACE=10>
<A HREF=../index.html>Portable Presenter</A> is a package designed to give
presentations.  For serious presentations, timing is important: you want
to plan your show such that all <A HREF=../slide/index.html>slides</A>
get the time they require.
<P>
The full popup is shown on the right.  The popup has three parts:
<OL>
<LI><A HREF=#slidecontrol>slide control</A>
<LI><A HREF=#tagcontrol>tag control</A>
<LI>some buttons, which I will not describe here.
</OL>
In the near future, the timing and slide-selection information can be
saved and loaded, but this is not yet implemented.
<BR CLEAR=right>
<P>&nbsp;

    </TD></TR>
<TR><TD VALIGN=top>

    </TD><TD VALIGN=top>

<H2><A NAME=slidecontrol>Slide Control</A></H2>
The slide control window shows many details about the progress in time
of the presentation.
Slide control can be part of the popup or shown in the
<A HREF=control.html>control viewport</A> (depends on the control viewport's
<CODE>-includeControls</CODE> option).
<IMG SRC=slidecontrol.gif WIDTH=284 HEIGHT=262 HSPACE=10 ALIGN=right>
<UL>
<LI>The left column is a list of checkboxes, showing
    <UL>
    <LI>how much time the slide requires (the <CODE>-reqtime</CODE>
        option of <A HREF=../slide/index.html>slides</A>;
    <LI>whether the slide is selected or not.
    </UL>

doc_html/viewport/popup.html  view on Meta::CPAN

        Again, the <CODE>-totaltime</CODE> option
        of <A HREF=../show/new.html>show new()</A>.
    </UL>
</UL>
The colors are defined by the <CODE>-progressColors</CODE> option of
the <A HREF=control.html>control viewport</A>.

<BR CLEAR=right>

<H2><A NAME=tagcontrol>Tag Control</A></H2>
The tagcontrol can be part of the popup or shown in the
<A HREF=control.html>control viewport</A> (depends on the control viewport's
<CODE>-includeControls</CODE> option).
<P>
When a <A HREF=../slide/index.html>slides</A> is added, you can provide
the <CODE>-tag</CODE> or </CODE>-tags</CODE> option.  All the used tags
are shown in the tag-control window.
<P>
With this window, you can select or unselect tagged groups of slides, for
instance if you want to use a sub-set of the slide for a shorter
presentation, or have a few different slides for a group of managers than

ppr/demo/dynamics  view on Meta::CPAN

   );

$show->addSlide
   ( -title      => 'third slide: proceeds after 10 secs'
   , -reqtime    => 10
   , -proceed    => 'TIME'
   , -main       => <<MAIN
The second slide was skipped, because it is not
selected.
<P>
See the popup (press <TT>s</TT>) how this is done.
MAIN
   );

$show->addSlide
   ( -title      => 'fourth slide'
   , -reqtime    => 30
   , -main       => <<MAIN
When you move to the next slide, you see the next
button on the bottom become green.
<P>



( run in 3.756 seconds using v1.01-cache-2.11-cpan-364913b4093 )