148
|
1 # QueryResume by Stefan Tomanek <[email protected]>
|
|
2 #
|
|
3 use strict;
|
|
4
|
|
5 use vars qw($VERSION %IRSSI);
|
|
6 $VERSION = '2003021201';
|
|
7 %IRSSI = (
|
|
8 authors => 'Stefan \'tommie\' Tomanek',
|
|
9 contact => '[email protected]',
|
|
10 name => 'QueryResume',
|
|
11 description => 'restores the last lines of a query on re-creation',
|
|
12 license => 'GPLv2',
|
|
13 modules => 'Date::Format File::Glob',
|
|
14 changed => $VERSION,
|
|
15 );
|
|
16
|
|
17 use Irssi 20020324;
|
|
18 use Date::Format;
|
|
19 use File::Glob ':glob';
|
|
20
|
|
21 sub draw_box ($$$$) {
|
|
22 my ($title, $text, $footer, $colour) = @_;
|
|
23 my $box = '';
|
|
24 $box .= '%R,--[%n%9%U'.$title.'%U%9%R]%n'."\n";
|
|
25 foreach (split(/\n/, $text)) {
|
|
26 $box .= '%R|%n '.$_."\n";
|
|
27 }
|
|
28 $box .= '%R`--<%n'.$footer.'%R>->%n';
|
|
29 $box =~ s/%.//g unless $colour;
|
|
30 return $box;
|
|
31 }
|
|
32
|
|
33 sub sig_window_item_new ($$) {
|
|
34 my ($win, $witem) = @_;
|
|
35 return unless (ref $witem && $witem->{type} eq 'QUERY');
|
|
36 my @data;
|
|
37 my $filename = Irssi::settings_get_str('autolog_path');
|
|
38 my $servertag = $witem->{server}->{tag};
|
|
39 my $name = lc $witem->{name};
|
|
40 $filename =~ s/(\$tag|\$1)/$servertag/g;
|
|
41 $filename =~ s/\$0/$name/g;
|
|
42 my @lt = localtime(time);
|
|
43 my $zone;
|
|
44 $filename = strftime($filename, @lt, $zone);
|
|
45 $filename =~ s/(\[|\])/\\$1/g;
|
|
46 local *F;
|
|
47 open(F, "<".bsd_glob($filename));
|
|
48 my $lines = Irssi::settings_get_int('queryresume_lines');
|
|
49 foreach (<F>) {
|
|
50 unless (/^--- Log/) {
|
|
51 push(@data, $_);
|
|
52 shift(@data) if (@data > $lines);
|
|
53 }
|
|
54 }
|
|
55 my $text;
|
|
56 $text .= $_ foreach @data;
|
|
57 $text =~ s/%/%%/g;
|
|
58 $witem->print(draw_box('QueryResume', $text, $filename, 1), MSGLEVEL_CLIENTCRAP) if $text;
|
|
59 }
|
|
60
|
|
61 Irssi::settings_add_int($IRSSI{name}, 'queryresume_lines', 10);
|
|
62
|
|
63 Irssi::signal_add('window item new', 'sig_window_item_new');
|
|
64
|