1. Incorporated sh/st, (un)set/lockout, forward/opername from Iain G0RDI
[spider.git] / cmd / show / qra.pl
index 8e91cf5fcda534a3c6855aac2eb326ea442f05f3..fe3f08abc59d555918a2dcf826816bb17aa9ac95 100644 (file)
@@ -1,5 +1,7 @@
 #
-# show the distance and bearing each QRA locator
+# show the distance and bearing to a  QRA locator
+#
+# you can enter two qra locators and it will calc the distance between them
 #
 # $Id$
 #
@@ -13,21 +15,37 @@ my $lat = $self->user->lat;
 my $long = $self->user->long;
 if (!$long && !$lat) {
        push @out, $self->msg('heade1');
-       $lat = $main::mylat;
-       $long = $main::mylong;
+       $lat = $main::mylatitude;
+       $long = $main::mylongitude;
 }
 
-foreach $l (@list) {
-       # locators --->
-       if (DXBearing::is_qra($l) || $l =~ /^[A-Za-z][A-Za-z]\d\d$/) {
-               my $qra = uc $l;
-               $qra .= 'MM' if $l =~ /^[A-Za-z][A-Za-z]\d\d$/;
-               
-               my ($qlat, $qlong) = DXBearing::qratoll($qra);
-               my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong);
-               my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long);
-               push @out, sprintf "%-9s Bearing: %.0f Recip: %.0f %.0fKm %.0fMi", $qra, $b, $r, $dx, $dx * 0.62133785;
-       }
+return (1, $self->msg('qrashe1')) unless @list > 0;
+return (1, $self->msg('qrae2')) unless (DXBearing::is_qra($list[0]) || $list[0] =~ /^[A-Za-z][A-Za-z]\d\d$/);
+
+#print "$lat $long\n";
+
+my $l = uc $list[0];
+my $f;
+
+if (@list > 1) {
+       $f = $l;
+       $f .= 'MM' if $f =~ /^[A-Z][A-Z]\d\d$/;
+       ($lat, $long) = DXBearing::qratoll($f);
+    #print "$lat $long\n";
+       
+       return (1, $self->msg('qrae2')) unless (DXBearing::is_qra($list[1]) || $list[1] =~ /^[A-Za-z][A-Za-z]\d\d$/);
+       $l = uc $list[1];
 }
 
+$l .= 'MM' if $l =~ /^[A-Z][A-Z]\d\d$/;
+               
+my ($qlat, $qlong) = DXBearing::qratoll($l);
+#print "$qlat $qlong\n";
+my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong);
+my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long);
+my $to = " -> $list[1]" if $f;
+my $from = $list[0];
+
+push @out, sprintf "$list[0]$to Bearing: %.0f Deg. Recip: %.0f Deg. %.0fMi. %.0fKm.", $b, $r, $dx * 0.62133785, $dx;
+
 return (1, @out);