AnyEvent-Tickit
view release on metacpan or search on metacpan
# 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 )