1# awaybar.pl -- initially built for Irssi 0.8.9
2# thanks to mood.pl for practically allowing me
3# to copy the approach..
4use strict;
5use Irssi;
6use Irssi::TextUI;
7use vars qw($VERSION %IRSSI);
8
9$VERSION = "0.1.1";
10%IRSSI = (
11    authors     => 'Simon Shine',
12    contact     => 'http://shine.eu.org/',
13    name        => 'awaybar',
14    description => 'Provides a menubar item with away message',
15    sbitems     => 'awaybar',
16    license     => 'Public domain',
17);
18
19Irssi::statusbar_item_register('awaybar', 0, 'awaybar');
20Irssi::signal_add('away mode changed', 'awaybar_redraw');
21
22sub awaybar {
23    my ($item, $get_size_only) = @_;
24    my $away_reason = !Irssi::active_server() ? undef : Irssi::active_server()->{away_reason};
25
26    if (defined $away_reason && length $away_reason) {
27        my %r = ('\{' => '(',
28                 '\}' => ')',
29                 '%' => '%%',);
30        $away_reason =~ s/$_/$r{$_}/g for (keys %r);
31
32        #my $format = $theme->format_expand("{sb_awaybar $away_reason}");
33        my $format = "{sb Away: $away_reason}";
34
35        $item->{min_size} = $item->{max_size} = length($away_reason);
36        $item->default_handler($get_size_only, $format, 0, 1);
37    } else {
38        $item->{min_size} = $item->{max_size} = 0;
39    }
40}
41
42sub awaybar_redraw {
43    Irssi::statusbar_items_redraw('awaybar');
44}
45