summaryrefslogtreecommitdiffstats
path: root/scripts/awaylogcnt.pl
blob: 5c9ec82438b5766a947d6f6950dd6ba3b3e5a8cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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');