ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/example-refresh-hooks
Revision: 1.1
Committed: Tue Jan 3 04:18:47 2006 UTC (18 years, 4 months ago) by root
Branch: MAIN
CVS Tags: rel-7_0, rel-6_3
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #! perl
2    
3     # this creates a simple digital clock by overwriting the refresh hooks
4    
5     sub on_init {
6     my ($self) = @_;
7    
8     # force a refresh every second
9     $self->{digital_clock_refresh} = urxvt::timer
10     ->new
11     ->start (urxvt::NOW)
12     ->cb (sub {
13     $self->{digital_clock_refresh}->start ($self->{digital_clock_refresh}->at + 1);
14     $self->want_refresh;
15     });
16    
17     ()
18     }
19    
20     # before refreshing: replace upper right with the clock display
21     sub on_refresh_begin {
22     my ($self) = @_;
23    
24     my $time = sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2, 1, 0];
25     my $xpos = $self->ncol - length $time;
26    
27     $xpos >= 0
28     or return;
29    
30     $self->{digital_clock_rend} = $self->ROW_r (0, [(urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
31     $self->{digital_clock_text} = $self->ROW_t (0, $time, $xpos);
32    
33     ()
34     }
35    
36     # after refreshing: restore previous screen contents
37     sub on_refresh_end {
38     my ($self) = @_;
39    
40     exists $self->{digital_clock_text}
41     or return;
42    
43     $self->ROW_r (0, delete $self->{digital_clock_rend});
44     $self->ROW_t (0, delete $self->{digital_clock_text});
45    
46     ()
47     }
48    
49