<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:D="DAV:" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Courier New";}
.MsoChpDefault
{mso-style-type:export-only;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 0cm 72.0pt 0cm;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-IE link=blue vlink=purple>
<div class=Section1>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif"'>I have a
script I use to print out a PDF of all my observations. (It also has a
mode that generates a simple list of all observed objects and the date/times
for each observation.) It’s based on an old script (that I think
Paul wrote), but it’s been through some major metamorphisis.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'><o:p> </o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'>I’d
upload it to the general area, but it contains a couple of sections of
hard-coded stuff that’s probably only useful with my plans. (These
include the format of the transparency field and the location of a plan
containing all the planets and comets.)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'><o:p> </o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'>However,
for those of you who write script and want to customize it (or simply change
the hard-coded parts to your liking), I’ve appended it to this message.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'><o:p> </o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'>Cheers,<o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'>--
Jeff.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'><o:p> </o:p></span></p>
<p class=MsoPlainText><span style='font-family:"Arial","sans-serif";color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>sub PageNumbering(c as Canvas,
title as string, doPrint as boolean)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // Handle page
numbering<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim dateStr, page
as string, x as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> c.TextItalic =
true<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> c.ForeColor(64,
64, 64)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim now as Date<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> now = new Date<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dateStr =
now.ShortDate + " " + now.ShortTime<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> page = "Page
" + str(c.PageNumber)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if doPrint then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText(title, 0, c.TextHeight)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText(dateStr, c.Width - c.TextWidth(dateStr), c.TextHeight)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText(page, c.Width - c.TextWidth(page), c.Height)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText(dateStr, 0, c.TextHeight)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText(title, c.TextWidth(dateStr) + 20, c.TextHeight)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText(page, c.Width - c.TextWidth(page), c.TextHeight)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> c.TextItalic =
false <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> c.ForeColor(0, 0,
0)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end sub<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
FormatDateTime(dateTime as double) as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
obsDate as Date<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> obsDate
= new Date(dateTime)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
s as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= obsDate.ShortDate + " " + DoubleToTime(dateTime, false) +
" UT"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
s<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
FormatConditions(seeing as string, trans as string) as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
s as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //
Seeing should be either "Seeing 2/5" or "Pickering 6":<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
InStr(seeing, "/") > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= "Seeing " + seeing<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> elseif
InStr(seeing, ".") > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= "Pickering " + NthField(seeing, ".", 1)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> elseif
Len(seeing) > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= seeing<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //
See if we have NELM and/or SQM readings:<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
nelm, sqm as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> nelm
= Trim(NthField(trans, " ", 1))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> sqm
= Trim(NthField(trans, " ", 2))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Left(sqm, 1) = "(" then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> sqm
= Mid(sqm, 2, sqm.len - 2)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //
Format them into "NELM 5.5, SQM 20.7":<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(nelm) > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(s) > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + ", "<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + "NELM " + nelm<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(sqm) > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(s) > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + ", "<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + "SQM " + sqm<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
s<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function FormatEquipment(scope
as string, ep as string, filter as string, aid as string) as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
s as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= scope<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(ep) > 0 AND ep <> "None" then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + ", " + Trim(ep)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(filter) > 0 AND filter <> "None" then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + ", " + filter<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
Len(aid) > 0 AND aid <> "None" then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> s
= s + ", " + aid<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
s<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Support function which
calculates magnification and performs optional rounding.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
GetMagnification(scopeName as string, epName as string, aidName as string,
doRound as boolean) as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim scope as
TelescopeResource, ep as EyepieceResource, aid as VisualAidResource<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> scope =
TelescopeResource.Get(scopeName)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> ep =
EyepieceResource.Get(epName)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> aid =
VisualAidResource.Get(aidName)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim mag as double<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
scope.IsBinocular then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> mag =
scope.Magnification<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> mag =
APResource.Magnification(scope, ep, aid)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if doRound AND
scope.IsTelescope then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if mag < 200 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim dime, dimeFit, quarter, quarterFit as double<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dime = Round(mag / 10) * 10<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dimeFit = Abs(mag - dime)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
quarter = Round(mag / 25) * 25<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
quarterFit = Abs(mag - quarter)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if quarterFit < dimeFit then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
mag = quarter<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
mag = dime<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
mag = Round(mag / 25) * 25<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if mag > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return str(mag) + "X"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return "--"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// A couple of routines to
convert names to indicies.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
CurrentTelescopeIndex(scopes() as string) as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim target as
TelescopeResource<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> target =
TelescopeResource.Current<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if target = nil
then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
target = TelescopeResource.Default<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if target <>
nil then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim i
as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for i
= 0 to Ubound(scopes)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
scopes(i) = target.Name then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return i<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
CurrentSiteIndex(sites() as string) as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
target as SiteResource<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> target
= SiteResource.Current<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
target = nil then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> target
= SiteResource.Default<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
target <> nil then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim i as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for i
= 0 to Ubound(sites)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
sites(i) = target.Name then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
i<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Searches the open plans for
a particular ID. Useful for comets and planets where we can't<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// use RA/Dec to fetch images,
etc.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function GetPlanObject(id as
string) as APPlanObject<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
ssPlan as APPlan<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> ssPlan
= APPlan.Plan("Solar_System.apd")<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
ssPlan = nil then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
ssPlan = APPlan.OpenPlan("C:\Documents and Settings\jey\My
Documents\AstroPlanner\Plans\Solar_System.apd")<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
ssPlan <> nil then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
i as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
for i = 1 to ssPlan.nObjects<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if ssPlan.Obj(i).ID = id then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return ssPlan.Obj(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end
if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Collect a list of all
observers, telescopes and sites mentioned in global observations.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>sub AddToList(s as string,
list() as string)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim i as integer,
found as boolean<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if Len(s) = 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
exit<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> found = false<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for i = 0 to
Ubound(list)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if list(i) = s then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
found = true<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
exit<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if NOT found then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
list.Append(s)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end sub<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>sub
CollectResources(observerList() as string, scopeList() as string, siteList() as
string)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim i as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim obs as
APObservation<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim session as
APSession<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for i = 1 to
APObservation.Count<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
obs = APObservation.Observation(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
AddToList(obs.Telescope(1), scopeList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for i = 1 to
APSession.Count<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> session
= APSession.Session(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> AddToList(session.Observer,
observerList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
AddToList(session.Site, siteList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end sub<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Sort "M8" before
"M71", not after it (ie: a string compare won't quite do).<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function CompareIDs(id1 as
string, id2 as string) as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim i, cmp as
integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> i = 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> while i <=
len(id1) AND i <= len(id2)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// If we've gotten to numbers, proceed with numeric compare<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim c1, c2 as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim v1, v2 as double<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c1 = mid(id1, i, 1)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c2 = mid(id2, i, 1)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if IsNumeric(c1) AND IsNumeric(c2) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim j1 as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
j1 = i + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
while j1 <= len(id1) AND IsNumeric(mid(id1, j1, 1))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
j1 = j1 + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
wend <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim j2 as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
j2 = i + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
while j2 <= len(id2) AND IsNumeric(mid(id2, j2, 1))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
j2 = j2 + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
wend<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
v1 = val(mid(id1, i))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
v2 = val(mid(id2, i))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if v1 < v2 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return -1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
elseif v1 > v2 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else // Numbers equal, continue compare after them<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if j1 <= len(id1) AND j2 <= len(id2) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return CompareIDs(mid(id1, j1), mid(id2, j2))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Continue with single-character string compares<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
cmp = strcomp(c1, c2, 0)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if cmp < 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return -1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
elseif cmp > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
i = i + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> wend<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if len(id1) <
len(id2) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
-1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> elseif len(id1)
> len(id2) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// My first REALBasic
class. And dang, am I proud of it.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>class target<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim ID as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim obs(-1) as
integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end class<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Short form constants and
table routines.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>const ID_width = 16.0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>const Obs_width = 84.0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function NewShortFormTable() as
Table<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim t as table<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t = new Table(1,
2)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.ColumnTitle(1) =
"ID"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.ColumnTitle(2) =
"Observations"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.ColumnWidth(1) =
ID_width<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return t<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Long form table routines.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
ConstructObservationTable() as Table<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
t as Table<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t
= new Table(3, 1)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
row as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for
row = 1 to t.RowCount<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.RowHeight(row)
= 100.0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
t<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>function
PopulateObservationTable(t as Table, session as APSession, obs as
APObservation, _<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
doRound as boolean, c as Canvas, cellmargin as integer) as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.Cell(1,
1) = FormatDateTime(obs.LocalDateTime) + ", " + session.Site +
"; " _<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> +
FormatConditions(session.Seeing, session.Transparency)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.Cell(2,
1) = FormatEquipment(obs.Telescope(1), obs.Eyepiece(1), obs.Filter(1), obs.VisualAid(1))
+ "; " _<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
+ GetMagnification(obs.Telescope(1), obs.Eyepiece(1), obs.VisualAid(1),
doRound)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
paras() as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
i, nLines, colWidth as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> colWidth
= c.Width - cellmargin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> nLines
= 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> paras
= Split(obs.Notes, Chr(13))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for
i = 0 to Ubound(paras)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> nLines
= nLines + Round((c.TextWidth(paras(i)) * 1.05 / colWidth) + 0.5)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.RowHeight(3)
= 20.0 + (nLines * 80.0)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> t.Cell(3,
1) = LTrim(obs.Notes)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> return
nLines - 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end function<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>// Main script.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>sub main()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>try
// Be a good citizen<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
observerList(-1), scopeList(-1), siteList(-1) as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
CollectResources(observerList, scopeList, siteList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // Throw up a
dialog to see if user wants to limit to specific telescopes/sites.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
observerCheckbox = "For Specific Observer:"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
observerPopup = ".0"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
telescopeCheckbox = "For Specific Telescope:"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const telescopePopup
= ".1"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const siteCheckbox
= "At Specific Site:"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const sitePopup =
".2"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
longFormCheckbox = "Include Observation Details"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
pageBreaksCheckbox = "Start Objects at Top of Page" <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
roundMagsCheckbox = "Round Magnifications"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
imagesCheckbox = "Include User Images:"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
imagesPerLinePopup = ".3"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> const
printCheckbox = "Print Report"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
imagesPerLine(4) as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> imagesPerLine(0) =
"2 Images Per Line"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> imagesPerLine(1) =
"3 Images Per Line"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> imagesPerLine(2) =
"4 Images Per Line"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> imagesPerLine(3) =
"5 Images Per Line"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> imagesPerLine(4) =
"6 Images Per Line"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim forObserver,
forScope, forSite as string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim doPrint,
doLong, doBreaks, doRound, doImages as boolean<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim imagewidth as
double<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim
dlg as Dialog<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dlg
= new Dialog<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(observerCheckbox, Ubound(observerList) >= 0)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.PopupParameter(true, observerPopup, 0, observerList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(observerPopup, observerCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(telescopeCheckbox, Ubound(scopeList) >= 0)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.PopupParameter(true, telescopePopup, CurrentTelescopeIndex(scopeList),
scopeList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(telescopePopup, telescopeCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(siteCheckbox, Ubound(siteList) >= 0)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.PopupParameter(true, sitePopup, CurrentSiteIndex(siteList), siteList)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(sitePopup, siteCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.CaptionParameter("If options are not checked, report will include all
observers, telescopes and/or sites.", _<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
3,
true, false, false, false, true)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(longFormCheckbox, true)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(pageBreaksCheckbox, false)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(true, roundMagsCheckbox, true)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(imagesCheckbox, true)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dlg.PopupParameter(true,
imagesPerLinePopup, 0, imagesPerLine)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(pageBreaksCheckbox, longFormCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(roundMagsCheckbox, longFormCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(imagesCheckbox, longFormCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.ParameterDependency(imagesPerLinePopup, imagesCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.CaptionParameter("", 1, true, false, false, false,
true) // spacer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dlg.BooleanParameter(printCheckbox, true)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if NOT
dlg.Show("Observing Report") then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
dlg.BooleanParameter(observerCheckbox) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
forObserver = dlg.PopupParameterAsString(observerPopup)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
forObserver = "All Observers"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
dlg.BooleanParameter(telescopeCheckbox) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
forScope = dlg.PopupParameterAsString(telescopePopup)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
forScope = "All Telescopes"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
dlg.BooleanParameter(siteCheckbox) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
forSite = dlg.PopupParameterAsString(sitePopup)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
forSite = "All Sites"<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> doLong =
dlg.BooleanParameter(longFormCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> doBreaks =
dlg.BooleanParameter(pageBreaksCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> doRound =
dlg.BooleanParameter(roundMagsCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> doImages =
dlg.BooleanParameter(imagesCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if doImages then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim i as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
i = dlg.PopupParameter(imagesPerLinePopup) + 2<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
imagewidth = (1 / i) * 100.0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> doPrint =
dlg.BooleanParameter(printCheckbox)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // Go through all
global observations which match the criteria, building a sorted list of<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // unique targets.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim i, j as integer,
session as APSession, obs as APObservation<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim targets(-1) as
target, nTargets as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> nTargets = 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // Our sort is
actually n log n, but we report progress exponentailly so that it speeds<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // up at the end.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
Dialog.StartProgress("Collecting Observations...", true,
APSession.Count * APSession.Count)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> for i = 1 to
APObservation.Count<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if i MOD 100 = 0 AND Dialog.UpdateProgress(i * i) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
obs = APObservation.Observation(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
session = APSession.Session(obs)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if forObserver = "All Observers" OR forObserver = session.Observer
then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if
forSite = "All Sites" OR forSite = session.Site
then <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if forScope = "All Telescopes" OR forScope = obs.Telescope(1) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim upper, lower, middle, cmp as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim found as boolean, t as target<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
found = false<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
lower = 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
upper = nTargets<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
while NOT found AND upper > lower<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
middle = (lower + upper) / 2<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
cmp = CompareIDs(obs.ID, targets(middle).ID)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if cmp < 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
upper = middle<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
elseif cmp > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
lower = middle + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
middle = middle + 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
found = true<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
targets(middle).obs.Append(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
exit<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
wend<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if NOT found
then
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
t = new target<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
t.ID = obs.ID<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
t.obs.Append(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
targets.Insert(middle, t)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
nTargets = nTargets + 1 <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
Dialog.StopProgress()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> // Open a new
printer document (or display window)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> //<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim reportTitle as
string<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> reportTitle =
"Observing Report for " + forObserver + " using " +
forScope + " at " + forSite<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim c as Canvas<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if doPrint then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c = new Canvas(true)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.TextFont("Times", 10)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c = new Canvas(800, 1000, nil, "Observing Report")<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.TextFont("Times", 12)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if c.Cancelled
then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
return<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> dim cellmargin as
integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> cellmargin = 0.33
* c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> PageNumbering(c,
reportTitle, doPrint)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> if doLong then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Long-form table (in three parts).<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim w, h, x, y, y1, theight, imw, margin as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim tbl as Table, s as string, brk as boolean<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl = ConstructObservationTable()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
theight = 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
margin = 3 * c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = margin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
imw = floor(c.Width * imagewidth * 0.01)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim t as target <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
for i = 0 to nTargets - 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
t = targets(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
for j = 0 to Ubound(t.obs)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
obs = APObservation.Observation(t.obs(j))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
session = APSession.Session(obs)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Populate the observation table with values<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim extraLines, extraHeight as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
extraLines = PopulateObservationTable(tbl, session, obs, doRound, c,
cellmargin)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
extraHeight = extraLines * c.textHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// New page?<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
brk = (j = 0 AND y > margin AND doBreaks)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if brk OR y + theight + extraHeight > c.Height - margin then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.NewPage()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
PageNumbering(c, reportTitle, doPrint)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = margin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if j = 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Display the object ID/Name, etc. before the first observation<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if obs.ID = obs.Name then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
s = obs.ID<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
s = obs.ID +
" " + obs.Name<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.TextBold = true<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText s, 0, y + c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if obs.RA <> 0 OR obs.Dec <> 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
s = "RA: " + FormatRA(obs.RA) + " Dec: " + FormatDec(obs.Dec)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawText s, c.Width - c.TextWidth(s), y + c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.TextBold = false<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y + 1.6 * c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Display/print the table<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if theight = 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Measure the height of the first table to be printed/displayed<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y1 = c.DrawTable(tbl, 0, y, c.Width, c.Height, Canvas.grid_Thin)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
theight = y1 - y<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
theight = theight - (extraLines * c.textHeight)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = c.DrawTable(tbl, 0, y, c.Width, c.Height, Canvas.grid_Thin)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y + 0.5 * c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if doImages then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Draw user images, if available<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y + c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
x = 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
obs = APObservation.Observation(t.obs(0))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if obs.Type = "Planet" OR obs.Type = "Comet" OR obs.Type =
"Sun" then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim planObj as APPlanObject<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
planObj = GetPlanObject(obs.ID)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if planObj = nil then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
goto skipImages<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.Target(planObj)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.Target(obs.RA, obs.Dec)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
for j = 1 to c.ImageCount<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if c.IsUserImage(j) then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if x + imw > c.Width then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// New row required<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
x = 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y + imw + margin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if y + imw + margin > c.Height then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// New page required<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.NewPage()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
PageNumbering(c, reportTitle, doPrint)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = margin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.DrawImage(j, x, y, imw, obs.Type <> "Planet")<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
x = x + imw<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
skipImages:<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if x > 0 then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y + imw + margin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = y + c.TextHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Short-form table.<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
//<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim lineHeight, header, footer, colWidth as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
lineHeight = c.TextHeight + cellmargin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
header = 1.5 * lineHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if doPrint then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
footer = 1.5 * lineHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
else<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
footer = 0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
colWidth = (c.Width * (Obs_width / 100)) - cellmargin<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim linesPerPage, linesOnPage as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> linesPerPage
= (c.Height - (header + footer)) / lineHeight<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
linesOnPage = 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim tbl as Table, y as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl = NewShortFormTable()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.RowStyle(0) = Table.style_Bold + Table.style_Inverted + Table.style_Gray<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim t as target, dates as string <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
for i = 0 to nTargets - 1<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
t = targets(i)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dates = "" <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
for j = 0 to Ubound(t.obs)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if j > 0 then dates = dates + ", "<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
obs = APObservation.Observation(t.obs(j))<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dates = dates + FormatDateTime(obs.LocalDateTime)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
dim nLines as integer<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
nLines = Round((c.TextWidth(dates) * 1.05 / colWidth) + 0.5)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
linesOnPage = linesOnPage + nLines<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if linesOnPage > linesPerPage then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
// Create a new page<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = c.DrawTable(tbl, 0, header, c.Width, c.Height, Canvas.grid_Thin)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.Close()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
c.NewPage()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
PageNumbering(c, reportTitle, doPrint)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
linesOnPage = 1 + nLines<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl = NewShortFormTable()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.RowStyle(0) = Table.style_Bold + Table.style_Inverted + Table.style_Gray<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
if linesOnPage > 1 + nLines then<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.AddRow()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.RowHeight(tbl.RowCount()) = (nLines * 80.0) + 20.0<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.Cell(tbl.RowCount(), 1) = t.ID <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.Cell(tbl.RowCount(), 2) = dates<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
next<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
y = c.DrawTable(tbl, 0, header, c.Width, c.Height, Canvas.grid_Thin)<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>
tbl.Close()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> end if<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> <o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> c.Close()<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'><o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>catch<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'> print "My
bad. Observing Report script generated an exception."<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end try<o:p></o:p></span></p>
<p class=MsoPlainText><span style='color:black'>end sub<o:p></o:p></span></p>
</div>
</body>
</html>