Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Curses::UI callbacks

by keszler (Priest)
on Oct 12, 2011 at 01:16 UTC ( #930900=note: print w/ replies, xml ) Need Help??


in reply to Curses::UI callbacks

Curses::UI does have methods for timed events, but they are not documented. You need to read the source to find them. Based on a quick scan it looks like you need to do something like $cui->set_timer( $timer_id, $callback_ref );. There is an optional 3rd parm that seems to be # of seconds delay, default 1.

When you set_timer it is enabled. Methods disable_timer and enable_timer both take just one parm, the $timer_id.

Modus operandi: The CUI mainloop does some setup, then enters the following infinite loop: while ($self->{mainloop}) { $self->do_one_event }. do_one_event does various things including checking for keypress and mouse movement. One of the various things is do_timer, which loops through all the existing $timer_ids and executes their callbacks.

update: couldn't resist playing with it:

#!/usr/bin/env perl use strict; use warnings; use diagnostics; use Curses::UI; my $cui = Curses::UI->new(); my $win = $cui->add( 'window_id', 'Window', ); my $editor = $win->add( 'myeditor', 'TextEditor', -readonly, 1, -text, scalar `date;ps -ef`, ); $cui->set_binding( sub { exit; }, "\cQ"); # CTRL-Q to exit $cui->set_timer( 't1', sub { $editor->text(scalar `date;ps -ef`); $editor->draw; }, ); $cui->mainloop;


Comment on Re: Curses::UI callbacks
Select or Download Code
Re^2: Curses::UI callbacks
by gdanko (Initiate) on Oct 19, 2011 at 18:44 UTC
    What I need is to have my main callback executed once a second. It looks like it's re-executed as soon as it exits and this is a lot of unnecessary overhead. Looking at these timer functions and wondering if it's possible to use one to accomplish my goal.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://930900]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2015-07-03 03:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (48 votes), past polls