App-termpub
view release on metacpan or search on metacpan
lib/App/termpub.pm view on Meta::CPAN
$self->key_bindings->{p} = 'prev_chapter';
$self->key_bindings->{h} = 'help_screen';
$self->key_bindings->{o} = 'open_link';
$self->key_bindings->{'?'} = 'help_screen';
$self->key_bindings->{t} = 'jump_to_toc';
$self->key_bindings->{'<'} = 'history_back';
$self->key_bindings->{'>'} = 'history_forward';
$self->key_bindings->{'|'} = 'set_width';
$self->key_bindings->{Curses::KEY_RESIZE} = 'handle_resize';
$self->SUPER::run;
}
sub quit_without_saving {
shift->SUPER::quit;
}
sub quit {
my $self = shift;
$self->epub->save_metadata(
{ version => 2, position => $self->get_position } );
$self->SUPER::quit;
}
my %keycodes = (
Curses::KEY_DOWN => '<Down>',
Curses::KEY_UP => '<Up>',
' ' => '<Space>',
Curses::KEY_NPAGE => '<PageDown>',
Curses::KEY_PPAGE => '<PageUp>',
Curses::KEY_BACKSPACE => '<Backspace>',
Curses::KEY_HOME => '<Home>',
Curses::KEY_END => '<End>',
);
sub goto_position {
my ( $self, $position ) = @_;
$self->set_chapter( $position->{chapter} );
$self->SUPER::goto_position($position);
}
sub get_position {
my $self = shift;
my $position = $self->SUPER::get_position;
$position->{chapter} = $self->chapter;
return $position;
}
sub set_width {
my ( $self, $num ) = @_;
$num ||= $self->prefix;
if ($num) {
$self->pad_columns($num);
$self->render;
$self->update_screen;
}
return;
}
sub handle_resize {
my $self = shift;
$self->SUPER::handle_resize;
$self->render;
$self->update_screen;
}
sub jump_to_toc {
my $self = shift;
if ( $self->epub->toc ) {
$self->set_chapter( $self->epub->toc );
$self->update_screen;
}
lib/App/termpub.pm view on Meta::CPAN
my $self = shift;
return if $self->history_index - 1 < 0;
$self->history_index( $self->history_index - 1 );
$self->set_chapter( $self->history->[ $self->history_index ], 1 );
$self->update_screen;
return;
}
sub next_page {
my $self = shift;
$self->next_chapter if !$self->SUPER::next_page;
}
sub prev_page {
my $self = shift;
$self->prev_chapter if !$self->SUPER::prev_page;
}
sub next_chapter {
my $self = shift;
while (1) {
if ( $self->chapters->[ $self->chapter + 1 ] ) {
$self->set_chapter( $self->chapter + 1 );
$self->update_screen;
return 1;
}
lib/App/termpub.pm view on Meta::CPAN
else {
return;
}
}
return;
}
sub render {
my $self = shift;
my $content = $self->chapters->[ $self->chapter ]->content;
return $self->SUPER::render( decode( 'UTF-8', $content ) );
}
1;
( run in 0.253 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )