AnyEvent-Tickit

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.014.
Build.PL
Changes
INSTALL
LICENSE
MANIFEST
META.json
META.yml
Makefile.PL
README
examples/demo-timer.pl
examples/testonewidget.pl
lib/AnyEvent/Tickit.pm
t/00-compile.t
t/00use.t
t/01basic.t
t/02input.t
t/03output.t
t/04timer.t
xt/release/eol.t
xt/release/kwalitee.t
xt/release/no-tabs.t
xt/release/pod-syntax.t
xt/release/portability.t

examples/demo-timer.pl  view on Meta::CPAN

      style => { linetype => "single" },
) );

my $fg = 1;
sub tick
{
   $fg++;
   $fg = 1 if $fg > 7;
   $static->pen->chattr( fg => $fg );

   $tickit->timer( after => 0.5, \&tick );
}
tick();

$tickit->set_root_widget( $vbox );

$tickit->run;

lib/AnyEvent/Tickit.pm  view on Meta::CPAN

    $self->{ae_loop} = $cv || AE::cv;

    $self->{ae_sigwinch} = AE::signal WINCH => sub {
        $self->_SIGWINCH;
    };

    $self->{ae_io} = AE::io $self->term->get_input_handle, 0, sub {
        $self->_input_readready();
    };

    $self->{ae_timer} = AE::timer 0, 0, sub {
        $self->_timeout();
    };

    return $self;
}

sub get_loop {
    return $_[0]->{ae_loop};
}

lib/AnyEvent/Tickit.pm  view on Meta::CPAN

    );

    return $self->{ae_writer};
}

sub _input_readready {
    my $self = shift;

    my $term = $self->term;

    undef $self->{timer};

    $term->input_readable();

    $self->_timeout;
}

sub _timeout {
    my $self = shift;

    my $term = $self->term;
    if ( defined( my $timeout = $term->check_timeout) ) {
        $self->{timer} = AE::timer $timeout / 1000, 0, sub {
            $self->_timeout();
        };
    }
}

sub later {
    my ($self, $cb) = @_;
    AnyEvent::postpone {
        $cb->();
    };
}

sub timer {
    my $self = shift;
    my ($mode, $when, $cb) = @_;

    my $after = $mode eq 'at' ? $when - time : $when;

    push @{ $self->{ae_timers} }, AE::timer $after, 0, $cb;
}

sub stop {
    $_[0]->get_loop->send;
}

sub run {
    my $self = shift;

    $self->setup_term();

lib/AnyEvent/Tickit.pm  view on Meta::CPAN

    $self->get_loop->recv;

    {
        $self->teardown_term;

        delete $self->{$_} for qw(
            ae_sigint
            ae_sigwinch
            ae_io
            ae_loop
            ae_timer
            ae_timers
        );
    }

    return 1;
}

package
    AnyEvent::Tickit::Handle;

use base 'AnyEvent::Handle';

t/02input.t  view on Meta::CPAN


   undef @key_events;
   do { AnyEvent->_poll } until ( @key_events );

   is_deeply( \@key_events, [ { type => "key", str => "M-X", mod => 2 } ], 'on_key Alt-X' );

   $my_wr->syswrite( "\e" );
   # 10msec should be enough for us to have to wait but short enough for
   # libtermkey to consider this

   my $t = AE::timer 0.010, 0, sub { $my_wr->syswrite( "Y" ); };

   undef @key_events;
   do { AnyEvent->_poll } until ( @key_events );

   is_deeply( \@key_events, [ { type => "key", str => "M-Y", mod => 2 } ], 'on_key Alt-Y split write' );

   # We'll test with a Unicode character outside of Latin-1, to ensure it
   # roundtrips correctly
   #
   # 'ĉ' [U+0109] - LATIN SMALL LETTER C WITH CIRCUMFLEX

t/04timer.t  view on Meta::CPAN


my ( $my_rd, $term_wr ) = portable_pipe or die "Cannot pipepair - $!";

my $tickit = AnyEvent::Tickit->new(
   cv => $loop,
   term_out => $term_wr,
);

{
   my $tick;
   $tickit->timer( after => 0.1, sub { $tick++ } );

   do { AnyEvent->_poll } until $tick;
   is( $tick, 1, '$tick 1 after "after" timer' );

   $tickit->timer( at => time() + 0.1, sub { $tick++ } );

   do { AnyEvent->_poll } until $tick == 2;
   is( $tick, 2, '$tick 2 after "at" timer' );
}

done_testing;



( run in 1.165 second using v1.01-cache-2.11-cpan-49f99fa48dc )