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.412 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )