diff options
author | Tom Feist <shabble@metavore.org> | 2011-04-18 15:33:46 +0000 |
---|---|---|
committer | Tom Feist <shabble@metavore.org> | 2011-04-18 15:33:46 +0000 |
commit | 344287c95bb566ac158d8986dac97c533bc33a78 (patch) | |
tree | 83b84841f7bbc24f0f453310f55aac977d0dd8e2 /prompt_info/overlays.pl | |
parent | added uberprompt readme (diff) | |
download | irssi-scripts-344287c95bb566ac158d8986dac97c533bc33a78.tar.gz irssi-scripts-344287c95bb566ac158d8986dac97c533bc33a78.zip |
moved older scripts out of prompt-info to ensure uberprompt readme is correctly generated
Diffstat (limited to 'prompt_info/overlays.pl')
-rw-r--r-- | prompt_info/overlays.pl | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/prompt_info/overlays.pl b/prompt_info/overlays.pl deleted file mode 100644 index b3299e9..0000000 --- a/prompt_info/overlays.pl +++ /dev/null @@ -1,198 +0,0 @@ -# temp place for dumping all the stuff that doesn't belong in uberprompt. - -use strict; -use warnings; - -use Irssi; -use Irssi::TextUI; # for sbar_items_redraw -use Data::Dumper; - - -# TODO: maybe eval { use Term::Size } and use tthat if poss. -our $VERSION = "0.2"; -our %IRSSI = - ( - authors => "shabble", - contact => 'shabble+irssi@metavore.org, shabble@#irssi/Freenode', - name => "overlays", - description => "Library script for drawing overlays on irssi UI", - license => "MIT", - changed => "24/7/2010" - ); - -# overlay := { $num1 => line1, $num2 => line2 } -# line := [ region, region, region ] -# region := { start => x, end => y, ...? } - -my $overlays; -my ($term_w, $term_h) = (0, 0); - -sub DEBUG () { 1 } - -sub update_terminal_size { - - my @stty_data = qx/stty -a/; - my $line = $stty_data[0]; - - # linux - # speed 38400 baud; rows 36; columns 126; line = 0; - if ($line =~ m/rows (\d+); columns (\d+);/) { - $term_h = $1; - $term_w = $2; - # osx - # speed 9600 baud; 40 rows; 235 columns; - } elsif ($line =~ m/(\d+) rows; (\d+) columns;/) { - $term_h = $1; - $term_w = $2; - } else { - # guess? - $term_h = 24; - $term_w = 80; - } - - print "Terminal detected as $term_w cols by $term_h rows" if DEBUG; -} - -sub _add_overlay_region { - my ($x, $y, $text) = @_; - my $region = { start => $x, - text => $text, - }; - - my $o_line = $overlays->{$y}; - - unless (defined $o_line) { - $o_line = []; - $overlays->{$y} = $o_line; - } - - # foreach my $cur_region (@$o_line) { - # if (_region_overlaps($cur_region, $region)) { - # # do something. - # print "Region overlaps"; - # last; - # } - # } - - push @$o_line, $region; - redraw_overlay(); -} - -# sub _remove_overlay_region { -# my ($line, $start, $end) = @_; - -# my $o_line = $overlay->{$line}; -# return unless $o_line; - -# my $i = 0; -# foreach my $region (@$o_line) { -# if ($region->{start} == $start && $region->{end} == $end) { -# last; -# } -# $i++; -# } -# splice @$o_line, $i, 1, (); # remove it. -# } - -sub redraw_overlay { - # TODO: we can't assume the active win is the only one with overlays. - Irssi::active_win->view->redraw(); - foreach my $y (sort keys %$overlays) { - my $line = $overlays->{$y}; - foreach my $region (@$line) { - Irssi::gui_printtext($region->{start}, $y, $region->{text}); - } - } -} - -sub augment_redraw { - #print "Redraw called" if DEBUG; - #redraw_overlay(); - Irssi::timeout_add_once(10, \&redraw_overlay, 0); -} - -sub ctrl_L_intercept { - my $key = shift; - - if ($key == 12) { # C-L - print "C-l pressed" if DEBUG; - Irssi::command("redraw"); - Irssi::signal_stop(); - } -} - -sub init { - - die "needs uberprompt" unless script_is_loaded('uberprompt'); - - Irssi::signal_add_last ('command redraw', \&augment_redraw); - Irssi::signal_add_first('gui key pressed', \&ctrl_L_intercept); - Irssi::signal_add ('terminal resized', \&update_terminal_size); - Irssi::signal_add_first('gui print text finished', \&augment_redraw); - - my $api_sigs = { - # input signals - 'overlay create' => [qw/int int string/], # x, y, str - 'overlay remove' => [qw/int int/], # x, y - 'overlay clear' => [], # no args - # output signals - - }; - - Irssi::signal_register($api_sigs); - - Irssi::signal_add('overlay create', \&_add_overlay_region); - # Irssi::signal_add('overlay remove', \&_add_overlay_region); - Irssi::signal_add('overlay clear', \&_clear_overlay); - - Irssi::command_bind('ocr', \&cmd_overlay_create); - Irssi::command_bind('ocl', sub { Irssi::signal_emit('overlay clear'); }); - -} - -sub cmd_overlay_create { - my ($args) = @_; - my ($y, $x, $text) = split(/\s+/, $args, 3); - print "overlaying $text at [$x, $y]"; - - Irssi::signal_emit('overlay create', $x, $y, $text); -} - -sub _clear_overlay { - $overlays = {}; - redraw_overlay(); -} - -sub script_is_loaded { - my $name = shift; - print "Checking if $name is loaded" if DEBUG; - no strict 'refs'; - my $retval = defined %{ "Irssi::Script::${name}::" }; - use strict 'refs'; - - return $retval; -} -print "Moo!"; -init(); - -__END__ - -# sub _draw_overlay_menu { - -# my $w = 10; - -# my @lines = ( -# '%7+' . ('-' x $w) . '+%n', -# sprintf('%%7|%%n%*s%%7|%%n', $w, 'bacon'), -# sprintf('|%*s|', $w, 'bacon'), -# sprintf('|%*s|', $w, 'bacon'), -# sprintf('|%*s|', $w, 'bacon'), -# sprintf('|%*s|', $w, 'bacon'), -# sprintf('|%*s|', $w, 'bacon'), -# '%7+' . ('-' x $w) . '+%n', -# ); -# my $i = 10; # start vert offset. -# for my $line (@lines) { -# Irssi::gui_printtext(int ($term_w / 2), $i++, $line); -# } -# } |