Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
139 lines (117 sloc) 3.16 KB
use Irssi;
use Irssi::TextUI;
use strict;
use vars qw($VERSION %IRSSI);
$VERSION="0.2.1";
%IRSSI = (
authors=> 'BC-bd',
contact=> 'bd@bc-bd.org',
name=> 'rotator',
description=> 'Displaye a small, changeing statusbar item to show irssi is still running',
sbitems=> 'rotator',
license=> 'GPL v2',
url=> 'https://bc-bd.org/svn/repos/irssi/trunk/',
);
# rotator Displaye a small, changeing statusbar item to show irssi is still running
# for irssi 0.8.4 by bd@bc-bd.org
#
#########
# USAGE
###
#
# To use this script type f.e.:
#
# /statusbar window add -after more -alignment right rotator
#
# For more info on statusbars read the docs for /statusbar
#
#########
# OPTIONS
#########
#
# /set rotator_seperator <char>
# The character that is used to split the string in elements.
#
# /set rotator_chars <string>
# The string to display. Examples are:
#
# /set rotator_chars . o 0 O
# /set rotator_chars _ ­ ¯
# /set rotator_chars %r­ %Y- %g-
#
# /set rotator_speed <int>
# The number of milliseconds to display every char.
# 1 second = 1000 milliseconds.
#
# /set rotator_bounce <ON|OFF>
# * ON : reverse direction at the end of rotator_chars
# * OFF : start from the beginning
#
###
################
###
# Changelog
#
# Version 0.2.1
# - checking rotator_speed to be > 10
#
# Version 0.2
# - added rotator_bounce
# - added rotator_seperator
# - added support for elements longer than one char
# - fixed displaying of special chars (thx to peder for pointing this one out)
#
# Version 0.1
# - initial release
#
###
################
my ($pos,$char,$timeout,$boundary,$direction);
$char = '';
sub rotatorTimeout {
my @rot = split(Irssi::settings_get_str('rotator_seperator'), Irssi::settings_get_str('rotator_chars'));
my $len = scalar @rot;
$char = quotemeta($rot[$pos]);
if ($pos == $boundary) {
if (Irssi::settings_get_bool('rotator_bounce')) {
if ($direction < 0) {
$boundary = $len -1;
} else {
$boundary = 0;
}
$direction *= -1;
} else {
$pos = -1;
}
}
$pos += $direction;
Irssi::statusbar_items_redraw('rotator');
}
sub rotatorStatusbar() {
my ($item, $get_size_only) = @_;
$item->default_handler($get_size_only, "{sb ".$char."}", undef, 1);
}
sub rotatorSetup() {
my $time = Irssi::settings_get_int('rotator_speed');
Irssi::timeout_remove($timeout);
$boundary = scalar split(Irssi::settings_get_str('rotator_seperator'), Irssi::settings_get_str('rotator_chars')) -1;
$direction = +1;
$pos = 0;
if ($time < 10) {
Irssi::print("rotator: rotator_speed must be > 10");
} else {
$timeout = Irssi::timeout_add($time, 'rotatorTimeout' , undef);
}
}
Irssi::signal_add('setup changed', 'rotatorSetup');
Irssi::statusbar_item_register('rotator', '$0', 'rotatorStatusbar');
Irssi::settings_add_str('misc', 'rotator_chars', '. o 0 O 0 o');
Irssi::settings_add_str('misc', 'rotator_seperator', ' ');
Irssi::settings_add_int('misc', 'rotator_speed', 2000);
Irssi::settings_add_bool('misc', 'rotator_bounce', 1);
if (Irssi::settings_get_int('rotator_speed') < 10) {
Irssi::print("rotator: rotator_speed must be > 10");
} else {
$timeout = Irssi::timeout_add(Irssi::settings_get_int('rotator_speed'), 'rotatorTimeout' , undef);
}
rotatorSetup();
You can’t perform that action at this time.