ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/example-refresh-hooks
Revision: 1.2
Committed: Wed Jan 18 11:05:09 2006 UTC (18 years, 4 months ago) by root
Branch: MAIN
CVS Tags: rel-7_3, rel-7_2, rel-7_1, before_dynamic_fontidx, rel-7_6, rel-7_5, rel-7_8, rel-7_9, rel-7_7, rel-9_14, rel-7_4, rel-9_11, rel-9_10, rel-8_1, rel-9_12, rel-8_5a, rel-7_3a, rel-8_2, rel-8_9, rel-8_8, dynamic_fontidx, rel-8_0, rel-8_4, rel-9_0, rel-8_3, rxvt-unicode-rel-9_15, rel-8_6, rel-8_7, rel-9_09, rel-9_02, rel-9_01, rel-9_06, rel-9_07, rel-9_05
Changes since 1.1: +3 -5 lines
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 root 1.2 ->start (1 + int urxvt::NOW)
12     ->interval (1)
13     ->cb (sub { $self->want_refresh });
14 root 1.1
15     ()
16     }
17    
18     # before refreshing: replace upper right with the clock display
19     sub on_refresh_begin {
20     my ($self) = @_;
21    
22     my $time = sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2, 1, 0];
23     my $xpos = $self->ncol - length $time;
24    
25     $xpos >= 0
26     or return;
27    
28     $self->{digital_clock_rend} = $self->ROW_r (0, [(urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
29     $self->{digital_clock_text} = $self->ROW_t (0, $time, $xpos);
30    
31     ()
32     }
33    
34     # after refreshing: restore previous screen contents
35     sub on_refresh_end {
36     my ($self) = @_;
37    
38     exists $self->{digital_clock_text}
39     or return;
40    
41     $self->ROW_r (0, delete $self->{digital_clock_rend});
42     $self->ROW_t (0, delete $self->{digital_clock_text});
43    
44     ()
45     }
46    
47