$pagelth = $default_pagelth unless defined $pagelth;
$self->{pagelth} = $pagelth;
($self->{width}) = $line =~ /width=(\d+)/; $line =~ s/\s*width=\d+\s*//;
+ $self->{enhanced} = $line =~ /\benhanced\b/; $line =~ s/\s*enhanced\s*//;
if ($line =~ /host=/) {
my ($h) = $line =~ /host=(\d+\.\d+\.\d+\.\d+)/;
$line =~ s/\s*host=\d+\.\d+\.\d+\.\d+// if $h;
$self->{width} = 80 unless $self->{width} && $self->{width} > 80;
$self->{consort} = $line; # save the connection type
- LogDbg('DXCommand', "$call connected from $self->{hostname}");
+ LogDbg('DXCommand', "$call connected from $self->{hostname} cols $self->width" . $self->{enhanced}?"enhanced":'');
# set some necessary flags on the user if they are connecting
$self->{beep} = $user->wantbeep;
my $self = shift;
my $t = ztime($_[2]);
- my $loc = '';
- my $clth = 30 + $self->{width} - 80; # allow comment to grow according the screen width
- # --$clth if $self->{consort} eq 'local';
+ my ($slot1, $slot2) = ('', '');
+ my $clth = 30 + $self->{width} - 80; # allow comment to grow according the screen width
my $comment = substr (($_[3] || ''), 0, $clth);
$comment =~ s/\t/ /g;
-
$comment .= ' ' x ($clth - (length($comment)));
- if ($self->{user}->wantgrid) {
+ if (!$slot1 && $self->{user}->wantgrid) {
my $ref = DXUser::get_current($_[1]);
if ($ref && $ref->qra) {
- my $cloc = ' ' . substr($ref->qra, 0, 4);
- $comment = substr $comment, 0, ($clth - (length($comment)+length($cloc)));
- $comment .= $cloc;
+ $slot1 = ' ' . substr($ref->qra, 0, 4);
+ }
+ }
+ if (!$slot1 && $self->{user}->wantusstate) {
+ $slot1 = " $_[12]" if $_[12];
+ }
+ unless ($slot1) {
+ if ($self->{user}->wantdxitu) {
+ $slot1 = sprintf(" %2d", $_[8]) if defined $_[8];
+ } elsif ($self->{user}->wantdxcq) {
+ $slot1 = sprintf(" %2d", $_[9]) if defined $_[9];
}
+ }
+ $comment = substr($comment, 0, $clth-length($slot1)) . $slot1 if $slot1;
+
+ if (!$slot2 && $self->{user}->wantgrid) {
my $origin = $_[4];
$origin =~ s/-#$//; # sigh......
- $ref = DXUser::get_current($origin);
+ my $ref = DXUser::get_current($origin);
if ($ref && $ref->qra) {
- $loc = ' ' . substr($ref->qra, 0, 4);
+ $slot2 = ' ' . substr($ref->qra, 0, 4);
+ }
+ }
+ if (!$slot2 && $self->{user}->wantusstate) {
+ $slot2 = " $_[13]" if $_[13];
+ }
+ unless ($slot2) {
+ if ($self->{user}->wantdxitu) {
+ $slot2 = sprintf(" %2d", $_[10]) if defined $_[10];
+ } elsif ($self->{user}->wantdxcq) {
+ $slot2 = sprintf(" %2d", $_[11]) if defined $_[11];
}
- } elsif ($self->{user}->wantdxitu) {
- $loc = ' ' . sprintf("%2d", $_[10]) if defined $_[10];
- $comment = substr($comment, 0, $clth-3) . ' ' . sprintf("%2d", $_[8]) if defined $_[8];
- } elsif ($self->{user}->wantdxcq) {
- $loc = ' ' . sprintf("%2d", $_[11]) if defined $_[11];
- $comment = substr($comment, 0, $clth-3) . ' ' . sprintf("%2d", $_[9]) if defined $_[9];
- } elsif ($self->{user}->wantusstate) {
- $loc = ' ' . $_[13] if $_[13];
- $comment = substr($comment, 0, $clth-3) . ' ' . $_[12] if $_[12];
}
- return sprintf "DX de %-8.8s%10.1f %-12.12s %-s $t$loc", "$_[4]:", $_[0], $_[1], $comment;
+ return sprintf "DX de %-8.8s%10.1f %-12.12s %-s $t$slot2", "$_[4]:", $_[0], $_[1], $comment;
}
return ($users, $maxusers);
}
-sub isregistered
-{
- my $self = shift;
-
- # the sysop is registered!
- return 1 if $self->call eq $main::myalias || $self->call eq $main::mycall;
-
- if ($main::reqreg) {
- return $self->{registered};
- } else {
- return 1;
- }
-}
-
1;
__END__
show_screen();
}
- addtotop($inbuf);
+ addtotop(' ', $inbuf);
# send it to the cluster
$conn->send_later("I$call|$inbuf");
# add a line to the end of the top screen
sub addtotop
{
+ my $sort = shift;
+
while (@_) {
my $inbuf = shift;
my $l = length $inbuf;
- dbg("addtotop: $l $inbuf");
- if ($l > $cols) {
+ dbg("addtotop: $sort $l $inbuf") if isdbg('console');
+ if ($l > $cols && grep $sort eq $_, qw(T A C)) {
$inbuf =~ s/\s+/ /g;
if (length $inbuf > $cols) {
$Text::Wrap::columns = $cols;
$line =~ s/[\x00-\x06\x08\x0a-\x19\x1b-\x1f\x80-\x9f]/./g; # immutable CSI sequence + control characters
if ($sort && $sort eq 'D') {
$line = " " unless length($line);
- addtotop($line);
+ addtotop($sort, $line);
} elsif ($sort && $sort eq 'Z') { # end, disconnect, go, away .....
cease(0);
}
sub on_connect
{
my $conn = shift;
- $conn->send_later("A$call|$connsort width=$cols");
+ $conn->send_later("A$call|$connsort width=$cols enhanced");
$conn->send_later("I$call|set/page $maxshist");
#$conn->send_later("I$call|set/nobeep");
}