X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fconsole.pl;h=8af9f3b3aed640fb6500efa34d1c471a1f192b38;hb=fa9e414f691e4e9a80c80eb54cb7b1e971976b22;hp=4dba480b03ea56b19d60b8d68a89b382a9d6cabe;hpb=21ee7b1845f8fc5ab10c6a33a058cfbd11d7a705;p=spider.git diff --git a/perl/console.pl b/perl/console.pl index 4dba480b..8af9f3b3 100755 --- a/perl/console.pl +++ b/perl/console.pl @@ -85,11 +85,13 @@ sub do_initscr $top = $scr->subwin($lines-4, $cols, 0, 0); $top->intrflush(0); $top->scrollok(1); + $top->idlok(1); $top->meta(1); # $scr->addstr($lines-4, 0, '-' x $cols); $bot = $scr->subwin(3, $cols, $lines-3, 0); $bot->intrflush(0); $bot->scrollok(1); + $top->idlok(1); $bot->keypad(1); $bot->move(1,0); $bot->meta(1); @@ -106,7 +108,8 @@ sub do_resize initscr(); raw(); noecho(); - $lines = LINES; + nonl(); + $lines = LINES; $cols = COLS; $has_colors = has_colors(); do_initscr(); @@ -168,6 +171,7 @@ sub show_screen $top->addstr("\n") if $spos > 0; setattr($line); $top->addstr($line); +# $top->addstr("\n"); $top->attrset(COLOR_PAIR(0)) if $has_colors; $spos = @shistory; @@ -190,8 +194,9 @@ sub show_screen my $line = $shistory[$p]; my $lines = measure($line); last if $i + $lines > $pagel; + $top->addstr("\n") if $i; setattr($line); - $top->addstr($i, 0, $line); + $top->addstr($line); $top->attrset(COLOR_PAIR(0)) if $has_colors; $i += $lines; } @@ -236,6 +241,7 @@ sub rec_socket my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; if ($sort && $sort eq 'D') { + $line = " " unless $line; addtotop($line); } elsif ($sort && $sort eq 'Z') { # end, disconnect, go, away ..... cease(0); @@ -267,39 +273,38 @@ sub rec_stdin if ($r eq KEY_ENTER || $r eq "\n" || $r eq "\r") { # save the lines - if ($inbuf) { - # check for a pling and do a search back for a command - if ($inbuf =~ /^!/o) { - my $i; - $inbuf =~ s/^!//o; - for ($i = $#khistory; $i >= 0; $i--) { - if ($khistory[$i] =~ /^$inbuf/) { - $inbuf = $khistory[$i]; - last; - } - } - if ($i < 0) { - beep(); - return; + $inbuf = " " unless $inbuf; + + # check for a pling and do a search back for a command + if ($inbuf =~ /^!/o) { + my $i; + $inbuf =~ s/^!//o; + for ($i = $#khistory; $i >= 0; $i--) { + if ($khistory[$i] =~ /^$inbuf/) { + $inbuf = $khistory[$i]; + last; } } - push @khistory, $inbuf if $inbuf; - shift @khistory if @khistory > $maxkhist; - $khistpos = @khistory; - $bot->move(0,0); - $bot->clrtoeol(); - $bot->addstr(substr($inbuf, 0, $cols)); + if ($i < 0) { + beep(); + return; + } } + push @khistory, $inbuf if $inbuf; + shift @khistory if @khistory > $maxkhist; + $khistpos = @khistory; + $bot->move(0,0); + $bot->clrtoeol(); + $bot->addstr(substr($inbuf, 0, $cols)); # add it to the monitor window unless ($spos == @shistory) { $spos = @shistory; show_screen(); }; - addtotop($inbuf) if $inbuf; + addtotop($inbuf); # send it to the cluster - $inbuf = " " unless $inbuf; $conn->send_later("I$call|$inbuf"); $inbuf = ""; $pos = $lth = 0;