aboutsummaryrefslogtreecommitdiffstats
path: root/prompt_info/overlays.pl
diff options
context:
space:
mode:
Diffstat (limited to 'prompt_info/overlays.pl')
-rw-r--r--prompt_info/overlays.pl198
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);
-# }
-# }