diff options
Diffstat (limited to 'scripts/awaylogcnt.pl')
-rw-r--r-- | scripts/awaylogcnt.pl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/scripts/awaylogcnt.pl b/scripts/awaylogcnt.pl new file mode 100644 index 0000000..5c9ec82 --- /dev/null +++ b/scripts/awaylogcnt.pl @@ -0,0 +1,59 @@ +# $Id: awaylogcnt.pl,v 0.2 2004/10/27 19:46 derwan Exp $ +# +# Run command '/statusbar window add -after user -priority 1 awaylogcnt' after loading awaylogcnt.pl. +# + +use strict; +use vars qw($VERSION %IRSSI); + +use Irssi; +$VERSION = '0.2'; +%IRSSI = ( + authors => 'Marcin Rozycki', + contact => 'derwan@irssi.pl', + name => 'awalogcnt', + description => 'Displays in statusbar number of messages in awaylog', + modules => '', + sbitems => 'awaylogcnt', + license => 'GNU GPL v2', + url => 'http://derwan.irssi.pl', + changed => 'Wed Oct 27 19:46:28 CEST 2004' +); + +use Irssi::TextUI; + +our $cnt = 0; +our $fname = undef(); + + +Irssi::signal_add( 'log started' => sub { + my $logfile = Irssi::settings_get_str( 'awaylog_file' ); + return unless ( $_[0]->{fname} eq $logfile ); + ($fname, $cnt) = ($logfile, 0); + Irssi::statusbar_items_redraw('awaylogcnt'); +}); + +Irssi::signal_add( 'log stopped' => sub { + return unless ( $_[0]->{fname} eq $fname ); + ($cnt, $fname) = (0, undef); + Irssi::statusbar_items_redraw('awaylogcnt'); +}); + +Irssi::signal_add( 'log written' => sub { + return unless ( $_[0]->{fname} eq $fname ); + $cnt++; + Irssi::statusbar_items_redraw('awaylogcnt'); +}); + +sub awaylogcnt ($$) { + my ($sbitem, $get_size_only) = @_; + unless ( $cnt ) + { + $sbitem->{min_size} = $sbitem->{max_size} = 0 if ( ref $sbitem ); + return; + } + my $format = sprintf('{sb \%%yawaylog\%%n %d}', $cnt); + $sbitem->default_handler($get_size_only, $format, undef, 1); +} + +Irssi::statusbar_item_register('awaylogcnt', undef, 'awaylogcnt'); |