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 6use strict; 7use vars qw($VERSION %IRSSI); 8 9use 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 sbitems => 'awaylogcnt', 18 license => 'GNU GPL v2', 19 url => 'http://derwan.irssi.pl', 20 changed => 'Wed Oct 27 19:46:28 CEST 2004' 21); 22 23use Irssi::TextUI; 24 25our $cnt = 0; 26our $fname = undef(); 27 28 29Irssi::signal_add( 'log started' => sub { 30 my $logfile = Irssi::settings_get_str( 'awaylog_file' ); 31 return unless ( $_[0]->{fname} eq $logfile ); 32 ($fname, $cnt) = ($logfile, 0); 33 Irssi::statusbar_items_redraw('awaylogcnt'); 34}); 35 36Irssi::signal_add( 'log stopped' => sub { 37 return unless ( $_[0]->{fname} eq $fname ); 38 ($cnt, $fname) = (0, undef); 39 Irssi::statusbar_items_redraw('awaylogcnt'); 40}); 41 42Irssi::signal_add( 'log written' => sub { 43 return unless ( $_[0]->{fname} eq $fname ); 44 $cnt++; 45 Irssi::statusbar_items_redraw('awaylogcnt'); 46}); 47 48sub awaylogcnt ($$) { 49 my ($sbitem, $get_size_only) = @_; 50 unless ( $cnt ) 51 { 52 $sbitem->{min_size} = $sbitem->{max_size} = 0 if ( ref $sbitem ); 53 return; 54 } 55 my $format = sprintf('{sb \%%yawaylog\%%n %d}', $cnt); 56 $sbitem->default_handler($get_size_only, $format, undef, 1); 57} 58 59Irssi::statusbar_item_register('awaylogcnt', undef, 'awaylogcnt'); 60