BBS-Perm

 view release on metacpan or  search on metacpan

lib/BBS/Perm.pm  view on Meta::CPAN

            }
        );
    }

    return $self;
}

sub _clean {                                 # be called when an agent exited
    my $self = shift;
    $self->term->clean;
    if ( $self->term->term ) {
        $self->window->set_title( $self->term->title );
    }
    else {

  #        $self->window->set_title($self->config->setting('global')->{title} ||
  #                'bbs-perm' );
        Gtk2->main_quit;
    }
}

sub _switch {
    my ( $self, $direct ) = @_;
    $self->term->switch($direct);
    $self->window->set_title( $self->term->title );
}

sub _register_accel {
    my $self  = shift;
    my %accel = (
        quit       => 'MW-q',
        copy       => 'MW-c',
        paste      => 'MW-v',
        fullscreen => 'MW-f',
        close_tab  => 'MW-w',
        left_tab   => 'M-[',
        right_tab  => 'M-]',
        feed       => 'M-f',
        $self->config->setting('global')->{shortcuts}
        ? %{ $self->config->setting('global')->{shortcuts} }
        : ()
    );

    my $fullscreen = 0;
    my @accels = (
        [
            $self->_parse_shortcut( $accel{quit} ),
            ['mask'],
            sub { Gtk2->main_quit }
        ],
        [
            $self->_parse_shortcut( $accel{close_tab} ),
            ['mask'],
            sub { $self->term->clean }
        ],
        [
            $self->_parse_shortcut( $accel{copy} ),
            ['mask'],
            sub {
                my $focus = $self->window->get_focus;
                $focus->copy_clipboard if $focus;
              }
        ],
        [
            $self->_parse_shortcut( $accel{paste} ),
            ['mask'],
            sub {
                my $focus = $self->window->get_focus;
                $focus->paste_clipboard if $focus;
              }
        ],
        [
            $self->_parse_shortcut( $accel{fullscreen} ),
            ['mask'],
            sub {
                if ($fullscreen) {
                    $self->window->unfullscreen;
                    $fullscreen = 0;
                }
                else {
                    $self->window->fullscreen;
                    $fullscreen = 1;
                }
              }
        ],
        [
            $self->_parse_shortcut( $accel{left_tab} ),
            ['mask'],
            sub { $self->_switch(-1) }
        ],
        [
            $self->_parse_shortcut( $accel{right_tab} ),
            ['mask'],
            sub { $self->_switch(1) }
        ],
    );

    if ( $component{Feed} ) {
        push @accels, [
            $self->_parse_shortcut( $accel{feed} ),
            ['mask'],
            sub {
                if ( $self->feed->entry->has_focus ) {
                    $self->term->term->grab_focus if $self->term->term;
                }
                else {
                    $self->feed->entry->grab_focus;
                }
            },
        ];
    }

    if ( $component{URI} ) {
        for my $key ( 0 .. 9 ) {
            push @accels, [
                $key,
                ['mod1-mask', 'super-mask'],
                ['mask'],
                sub {
                    my $uri;
                    if ( $key > 0 ) {
                        if ( $key == 9 ) {
                            # 9 means last one
                            $uri = $self->uri->uri->[-1];
                        }
                        else {
                            $uri = $self->uri->uri->[ $key - 1 ];
                        }
                    }



( run in 2.945 seconds using v1.01-cache-2.11-cpan-df04353d9ac )