The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

#----------------------------------------------------------------------------------------------

register_action_handlers
	(
	'Load slides'=> ['C00-l', \&load_slides] ,
	'previous slide' => ['C00-Left', \&previous_slide],
	'next slide' => ['C00-Right', \&next_slide],
	'first slide' => ['C00-Up', \&first_slide],
	) ;

#----------------------------------------------------------------------------------------------

my ($slides, $current_slide) ;

#----------------------------------------------------------------------------------------------

sub load_slides
{
my ($self, $file_name) = @_ ;

# get file name for slides definitions
$file_name = $self->get_file_name('open') unless defined $file_name ;

if(defined $file_name && $file_name ne q{})
	{
	# load slides
	$slides = do $file_name or die $@ ;
	$current_slide = 0 ;

	# run first slide
	$slides->[$current_slide]->($self) ;
	$self->update_display() ;
	}
}

#----------------------------------------------------------------------------------------------

sub first_slide
{
my ($self) = @_ ;

if($slides)
	{
	$current_slide = 0 ;
	$slides->[$current_slide]->($self) ;
	$self->update_display() ;
	}
}

#----------------------------------------------------------------------------------------------

sub next_slide
{
my ($self) = @_ ;

if($slides && $current_slide != $#$slides)
	{
	$current_slide++ ;
	$slides->[$current_slide]->($self) ;
	$self->update_display() ;
	}
}

#----------------------------------------------------------------------------------------------

sub previous_slide
{
my ($self) = @_ ;

if($slides && $current_slide != 0)
	{
	$current_slide-- ;
	$slides->[$current_slide]->($self) ;
	$self->update_display() ;
	}
}

#----------------------------------------------------------------------------------------------