App-termpub
view release on metacpan or search on metacpan
lib/App/termpub/Pager.pm view on Meta::CPAN
}
}
sub prev_line {
my $self = shift;
if ( $self->line != 0 ) {
$self->line( $self->line - 1 );
$self->update_screen;
}
}
sub first_page {
my $self = shift;
$self->set_mark;
$self->line(0);
$self->update_screen;
}
sub last_page {
my $self = shift;
$self->set_mark;
my $line = $self->pad_rows - $self->rows + 1;
$self->line( $line >= 0 ? $line : 0 );
$self->update_screen;
}
sub next_page {
my $self = shift;
$self->set_mark;
if ( $self->line + $self->rows <= $self->pad_rows ) {
$self->line( $self->line + $self->rows );
$self->update_screen;
return 1;
}
return 0;
}
sub prev_page {
my $self = shift;
$self->set_mark;
if ( $self->line == 0 && $self->chapter - 1 >= 0 ) {
return 0;
}
if ( $self->line - $self->rows > 0 ) {
$self->line( $self->line - $self->rows );
}
else {
$self->line(0);
}
$self->update_screen;
return 1;
}
sub get_percent {
my $self = shift;
return 0 if !$self->pad_rows;
int( ( $self->line + 1 ) * 100 / $self->pad_rows );
}
sub update_screen {
my $self = shift;
clear;
refresh;
prefresh( $self->pad, $self->line, 0, 0, 0, $self->rows - 1,
$self->pad_columns );
my $status = '-' x $self->columns;
substr( $status, 0, length( $self->title ) ) = $self->title;
my $pos = $self->get_percent . '%';
if ( $self->line + $self->rows - 1 >= $self->pad_rows ) {
$pos = "end";
}
$pos = "($pos)";
substr( $status, -length($pos) - 2, length($pos) ) = $pos;
move( $self->rows, 0 );
addstring($status);
move( $self->rows, 0 );
chgat( -1, A_STANDOUT, 0, 0 );
}
1;
( run in 1.132 second using v1.01-cache-2.11-cpan-39bf76dae61 )