/var/www/www.irssi.org-old/scripts/html/awaybar.pl


   1 # awaybar.pl -- initially built for Irssi 0.8.9
   2 # thanks to mood.pl for practically allowing me
   3 # to copy the approach..
   4 use strict;
   5 use Irssi;
   6 use Irssi::TextUI;
   7 use 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     license     => 'Public domain',
  16 );
  17 
  18 Irssi::statusbar_item_register('awaybar', 0, 'awaybar');
  19 Irssi::signal_add('away mode changed', 'awaybar_redraw');
  20 
  21 sub awaybar {
  22     my ($item, $get_size_only) = @_;
  23     my $away_reason = !Irssi::active_server() ? undef : Irssi::active_server()->{away_reason};
  24 
  25     if (defined $away_reason && length $away_reason) {
  26         my %r = ('\{' => '(',
  27                  '\}' => ')',
  28                  '%' => '%%',);
  29         $away_reason =~ s/$_/$r{$_}/g for (keys %r);
  30 
  31         #my $format = $theme->format_expand("{sb_awaybar $away_reason}");
  32         my $format = "{sb Away: $away_reason}";
  33 
  34         $item->{min_size} = $item->{max_size} = length($away_reason);
  35         $item->default_handler($get_size_only, $format, 0, 1);
  36     } else {
  37         $item->{min_size} = $item->{max_size} = 0;
  38     }
  39 }
  40 
  41 sub awaybar_redraw {
  42     Irssi::statusbar_items_redraw('awaybar');
  43 }