/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');