aboutsummaryrefslogtreecommitdiffstats
path: root/feature-tests
diff options
context:
space:
mode:
authorTom Feist <shabble@metavore.org>2010-10-14 20:42:31 +0000
committerTom Feist <shabble@metavore.org>2010-10-14 20:42:31 +0000
commit91585163e7f7cd886b2bce4c98dbc3d14b9d3c2e (patch)
treead714832c76eb1c72537db47c1a309261d2385ab /feature-tests
parentuberprompt: removed dead code from startup func. (diff)
downloadirssi-scripts-91585163e7f7cd886b2bce4c98dbc3d14b9d3c2e.tar.gz
irssi-scripts-91585163e7f7cd886b2bce4c98dbc3d14b9d3c2e.zip
misc: tidying up my working dir
Diffstat (limited to 'feature-tests')
-rw-r--r--feature-tests/augment_inputline.pl69
-rw-r--r--feature-tests/safe.sub4
-rw-r--r--feature-tests/safescript.pl104
-rw-r--r--feature-tests/sbar-crash.pl15
4 files changed, 192 insertions, 0 deletions
diff --git a/feature-tests/augment_inputline.pl b/feature-tests/augment_inputline.pl
new file mode 100644
index 0000000..577f756
--- /dev/null
+++ b/feature-tests/augment_inputline.pl
@@ -0,0 +1,69 @@
+use strict;
+use Irssi;
+use Irssi::TextUI; # for sbar_items_redraw
+use Term::Size;
+
+use vars qw($VERSION %IRSSI);
+$VERSION = "1.0.1";
+%IRSSI = (
+ authors => "shabble",
+ contact => 'shabble+irssi@metavore.org, shabble@#irssi/Freenode',
+ name => "",
+ description => "",
+ license => "Public Domain",
+ changed => ""
+);
+
+
+my $buf = '';
+
+Irssi::command_bind('dogui', \&print_to_input);
+Irssi::signal_add_last('gui key pressed', \&key_pressed);
+
+sub stuff {
+ my $win = Irssi::active_win;
+ my ($w, $h);
+ $w = $win->{width};
+ $h = $win->{height};
+
+ my ($term_w, $term_h) = Term::Size::chars *STDOUT{IO};
+ print "win size is $w,$h, term is $term_w, $term_h";
+ print "Prompt len is: ", Irssi::format_get_length("{prompt foo bar}");
+}
+
+sub key_pressed {
+ my ($key) = @_;
+ my $char = chr($key);
+ $buf .= $char;
+ my $str = Irssi::parse_special('$L');
+
+ print_to_input($str);
+
+}
+
+sub print_to_input {
+ my ($str) = @_;
+ $str = "%8$str%8";
+
+ my ($term_w, $term_h) = Term::Size::chars *STDOUT{IO};
+
+ my $prompt_offset = 11;
+ my $theme = Irssi::current_theme();
+ my $prompt = $theme->format_expand('{prompt $itemname $winname}',
+ Irssi::EXPAND_FLAG_RECURSIVE_MASK);
+ #print "Prompt is $prompt";
+ Irssi::gui_printtext($prompt_offset, $term_h, $str);
+}
+
+
+sub parse_theme_file {
+ my ($file) = @_;
+ open my $fh, '<', $file or die "Couldn't open $file for reading: $!";
+ while (my $line = <$fh>) {
+ next if $line =~ m/^\s*#/; # comment
+ if ($line =~ m/^\s*prompt\s*=\s*"([^"]+)";\s*$/) {
+ my $prompt = $1;
+ }
+ }
+ close $fh or die "Couldn't close fh for $file: $!";
+}
diff --git a/feature-tests/safe.sub b/feature-tests/safe.sub
new file mode 100644
index 0000000..fcf7ff3
--- /dev/null
+++ b/feature-tests/safe.sub
@@ -0,0 +1,4 @@
+sub moo { print "Moo" }
+sub hello { print join( ", ", @_) }
+
+bless {}, __PACKAGE__;
diff --git a/feature-tests/safescript.pl b/feature-tests/safescript.pl
new file mode 100644
index 0000000..2d741e9
--- /dev/null
+++ b/feature-tests/safescript.pl
@@ -0,0 +1,104 @@
+use strict;
+use Irssi;
+use Irssi::TextUI; # for sbar_items_redraw
+use Safe;
+
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "0.1";
+
+%IRSSI = (
+ authors => "shabble",
+ contact => 'shabble+irssi@metavore.org, shabble@#irssi/Freenode',
+ name => "",
+ description => "",
+ license => "Public Domain",
+ changed => ""
+);
+
+my $safe;
+my $objs = {};
+init();
+
+sub _input {
+ return int rand 1000;
+}
+
+sub load {
+ my $file = shift;
+ my $obj;
+ if (-f $file) {
+ $obj = $safe->rdo($file);
+ }
+ $objs->{ref $obj} = $obj;
+ # print "Loading from file: $file";
+ # $funcs = do $file;
+ # }
+ # if (not defined $funcs) {
+ # if ($@) {
+ # print "failed to parse $file: $@";
+
+ # } elsif ($!) {
+ # print "failed to read $file: $!";
+
+ # }
+ # return;
+ # }
+ # my $ref = ref $funcs;
+ # if ($ref ne 'HASH') {
+ # print "$file didn't return a hashref: ", defined $ref ? $ref : 'undef';
+ # return;
+ # }
+
+ # foreach my $name (keys %$funcs) {
+ # my $func = $funcs->{$name};
+ # if (exists $functions->{$name}) {
+ # print "Redefining function $name";
+ # } else {
+ # print "adding function: $name";
+ # }
+ # $functions->{$name} = $func;
+ # }
+
+ # print "Loaded " . scalar(keys(%$funcs)) . " functions";
+}
+
+sub init {
+ Irssi::command_bind('subload', \&cmd_subload);
+ Irssi::command_bind('sublist', \&cmd_sublist);
+ Irssi::command_bind('subcall', \&cmd_subcall);
+
+ $safe = new Safe;
+}
+
+sub cmd_subload {
+ my $args = shift;
+ print "Going to load: $args";
+ load($args);
+}
+
+sub cmd_sublist {
+ foreach my $name (keys %$functions) {
+ my $func = $functions->{$name};
+ print "Function: $name => $func";
+ }
+}
+
+sub cmd_subcall {
+ my $args = shift;
+ my ($cmd, $cmdargs);
+ if ($args =~ m/^(\w+\b)(.*)$/) {
+ $cmd = $1; $cmdargs = $2;
+ } else {
+ print "Couldn't parse $args";
+ return;
+ }
+ my $fun = $functions->{$cmd};
+
+ if (ref $fun eq 'CODE') {
+ print "Calling $cmd with $cmdargs";
+ $fun->($cmdargs);
+ } else {
+ print "$cmd is not a coderef. cannot run";
+ }
+}
diff --git a/feature-tests/sbar-crash.pl b/feature-tests/sbar-crash.pl
new file mode 100644
index 0000000..5547bbd
--- /dev/null
+++ b/feature-tests/sbar-crash.pl
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+
+use Irssi;
+use Irssi::TextUI; # for sbar_items_redraw
+
+Irssi::statusbar_item_register('uberprompt', 0, 'uberprompt_draw');
+Irssi::command("STATUSBAR prompt add -alignment left -before input -priority '-1' uberprompt");
+
+sub uberprompt_draw {
+ my ($sb_item, $get_size_only) = @_;
+ print "This is a test";
+ return $sb_item->default_handler($get_size_only, '{uberprompt $winname}', '', 0);
+}
+