/var/www/www.irssi.org-old/scripts/html/awaylogcnt.pl
1 # $Id: awaylogcnt.pl,v 0.2 2004/10/27 19:46 derwan Exp $
2 #
3 # Run command '/statusbar window add -after user -priority 1 awaylogcnt' after loading awaylogcnt.pl.
4 #
5
6 use strict;
7 use vars qw($VERSION %IRSSI);
8
9 use Irssi;
10 $VERSION = '0.2';
11 %IRSSI = (
12 authors => 'Marcin Rozycki',
13 contact => 'derwan@irssi.pl',
14 name => 'awalogcnt',
15 description => 'Displays in statusbar number of messages in awaylog',
16 modules => '',
17 license => 'GNU GPL v2',
18 url => 'http://derwan.irssi.pl',
19 changed => 'Wed Oct 27 19:46:28 CEST 2004'
20 );
21
22 use Irssi::TextUI;
23
24 our $cnt = 0;
25 our $fname = undef();
26
27
28 Irssi::signal_add( 'log started' => sub {
29 my $logfile = Irssi::settings_get_str( 'awaylog_file' );
30 return unless ( $_[0]->{fname} eq $logfile );
31 ($fname, $cnt) = ($logfile, 0);
32 Irssi::statusbar_items_redraw('awaylogcnt');
33 });
34
35 Irssi::signal_add( 'log stopped' => sub {
36 return unless ( $_[0]->{fname} eq $fname );
37 ($cnt, $fname) = (0, undef);
38 Irssi::statusbar_items_redraw('awaylogcnt');
39 });
40
41 Irssi::signal_add( 'log written' => sub {
42 return unless ( $_[0]->{fname} eq $fname );
43 $cnt++;
44 Irssi::statusbar_items_redraw('awaylogcnt');
45 });
46
47 sub awaylogcnt ($$) {
48 my ($sbitem, $get_size_only) = @_;
49 unless ( $cnt )
50 {
51 $sbitem->{min_size} = $sbitem->{max_size} = 0 if ( ref $sbitem );
52 return;
53 }
54 my $format = sprintf('{sb \%%yawaylog\%%n %d}', $cnt);
55 $sbitem->default_handler($get_size_only, $format, undef, 1);
56 }
57
58 Irssi::statusbar_item_register('awaylogcnt', undef, 'awaylogcnt');