diff options
-rw-r--r-- | Regen.ico | bin | 0 -> 318 bytes | |||
-rw-r--r-- | Regen_Sturm.ico | bin | 0 -> 318 bytes | |||
-rw-r--r-- | Sonne.ico | bin | 0 -> 318 bytes | |||
-rw-r--r-- | Sturm.ico | bin | 0 -> 318 bytes | |||
-rw-r--r-- | Wolke.ico | bin | 0 -> 318 bytes | |||
-rw-r--r-- | fhunit.pas | 91 | ||||
-rw-r--r-- | pegelunit.pas | 6 | ||||
-rw-r--r-- | unit1.lfm | 104 | ||||
-rw-r--r-- | unit1.pas | 59 | ||||
-rw-r--r-- | wetter.lps | 134 |
10 files changed, 324 insertions, 70 deletions
diff --git a/Regen.ico b/Regen.ico Binary files differnew file mode 100644 index 0000000..924f46a --- /dev/null +++ b/Regen.ico diff --git a/Regen_Sturm.ico b/Regen_Sturm.ico Binary files differnew file mode 100644 index 0000000..c3993b2 --- /dev/null +++ b/Regen_Sturm.ico diff --git a/Sonne.ico b/Sonne.ico Binary files differnew file mode 100644 index 0000000..3528859 --- /dev/null +++ b/Sonne.ico diff --git a/Sturm.ico b/Sturm.ico Binary files differnew file mode 100644 index 0000000..c064e1e --- /dev/null +++ b/Sturm.ico diff --git a/Wolke.ico b/Wolke.ico Binary files differnew file mode 100644 index 0000000..8a4879f --- /dev/null +++ b/Wolke.ico @@ -85,21 +85,27 @@ type procedure achsenZeichnen(zuZeichnen: tMessGroeszenSet; startZeit,stopZeit: extended); procedure graphenZeichnen(zuZeichnen: tMessGroeszenSet; startZeit,stopZeit: extended); procedure mutBeenden; + function sonnigkeit: extended; + function maxWind: extended; + function gesRegen: extended; + function hintInfo: string; + function mehrInfos(was: tMessGroeszenSet): string; end; procedure uZeit2mZeit(uZ: extended; out mZ: tZeit); inline; +procedure mZeit2uZeit(mZ: tZeit; out uZ: extended); inline; function strZuMZeit(s: string; out mZ: tZeit): boolean; const - messNamen: array[tMessgroesze] of string = + messNamen: array[tMessGroesze] of string = ('Temperatur','Luftfeuchte','Windgeschwindigkeit','Windrichtung', 'Niederschlag','Globalstrahlung','Luftdruck'); - maszEinheit: array[tMessgroesze] of string = + maszEinheit: array[tMessGroesze] of string = ('°C','%','m/s','°','mm','W/m²','mbar'); monatsNamen: array[1..12] of string = ('Januar','Februar','M'#$e4'rz','April','Mai','Juni','Juli', 'August','September','Oktober','November','Dezember'); - farben: array[tMessgroesze] of tColor = + farben: array[tMessGroesze] of tColor = ($0000DF,$CFAF7F,$007FFF,$FF00FF,$FFAF3F,$3FAFAF,$AFAFAF); implementation @@ -128,9 +134,7 @@ end; procedure tMessPunkt.setzeUZeit; begin - _uZeit:= - encodeDate(_mZeit[zgJahr],_mZeit[zgMonat],_mZeit[zgTag])+ - encodeTime(_mZeit[zgStunde],_mZeit[zgMin10]*10,0,0) + mZeit2uZeit(_mZeit,_uZeit); end; procedure tMessPunkt.setzeZeit; @@ -549,6 +553,74 @@ begin muts[i].beenden:=true; end; +function tMessPunkte.sonnigkeit: extended; +var + i: longint; + a,e,fA: extended; + fAZ: tZeit; +begin + result:=0; + i:=werte.bisekt(werte.last.zeit-1); + while i<werte.count do begin + result:=result+werte[i].mW[mgGlobalStrahlung]*(werte[i].zeit-werte[i-1].zeit); + inc(i); + end; + uZeit2mZeit(werte.last.zeit,fAZ); + fAZ[zgTag]:=21; // Frühlingsanfang + fAZ[zgMonat]:=3; + mZeit2uZeit(fAZ,fA); + a:=50/180*pi; // Breitengrad + e:=23.15/180*pi*sin((werte.last.zeit-fA)*2*pi/365); // eff. Neigung + result:=result/(1367/pi*(sin(a)*sin(e)*arccos(-tan(a)*tan(e))+cos(a)*cos(e)*sqrt(1-sqr(tan(a)*tan(e))))); +end; + +function tMessPunkte.maxWind: extended; +var + i: longint; +begin + result:=0; + i:=werte.bisekt(werte.last.zeit-1/24*2); + while i<werte.count do begin + result:=max(result,werte[i].mW[mgWindGeschwindigkeit]); + inc(i); + end; +end; + +function tMessPunkte.gesRegen: extended; +var + i: longint; +begin + result:=0; + i:=werte.bisekt(werte.last.zeit-1/24*14); + while i<werte.count do begin + result:=result+werte[i].mW[mgNiederschlag]*(werte[i].zeit-werte[i-1].zeit); + inc(i); + end; +end; + +function tMessPunkte.hintInfo: string; +var + sk: extended; +begin + result:=dateTimeToStr(werte.last.zeit)+' '; + sk:=sonnigkeit*100; + result:=result+inttostr(floor(sk))+','; + sk:=(sk-floor(sk))*10; + result:=result+char(ord('0')+floor(sk)); + sk:=(sk-floor(sk))*10; + result:=result+char(ord('0')+floor(sk))+'%'; +end; + +function tMessPunkte.mehrInfos(was: tMessGroeszenSet): string; +var + mG: tMessGroesze; +begin + result:=''; + for mG:=high(mG) downto low(mG) do + if mG in was then + result:=result+#13+floattostr(werte.last.mW[mG])+maszEinheit[mG]; +end; + // allgemeine Funktionen ******************************************************* procedure uZeit2mZeit(uZ: extended; out mZ: tZeit); inline; @@ -560,6 +632,13 @@ begin mZ[zgMin10]:=round(mi/10); end; +procedure mZeit2uZeit(mZ: tZeit; out uZ: extended); inline; +begin + uZ:= + encodeDate(mZ[zgJahr],mZ[zgMonat],mZ[zgTag])+ + encodeTime(mZ[zgStunde],mZ[zgMin10]*10,0,0) +end; + function strZuMZeit(s: string; out mZ: tZeit): boolean; var t: string; diff --git a/pegelunit.pas b/pegelunit.pas index 033ea3d..f5951b6 100644 --- a/pegelunit.pas +++ b/pegelunit.pas @@ -78,6 +78,7 @@ type procedure achsenZeichnen(zuZeichnen: tPegelStationsSet; startZeit,stopZeit: extended); procedure graphenZeichnen(zuZeichnen: tPegelStationsSet; startZeit,stopZeit: extended); procedure putBeenden; + function hintInfo: string; end; implementation @@ -548,5 +549,10 @@ begin put.beenden:=true; end; +function tPegelStaende.hintInfo: string; +begin + result:=inttostr(werte[psRothenstein].last.hoehe)+'cm'; +end; + end. @@ -10,6 +10,7 @@ object Form1: TForm1 OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy + OnShow = FormShow LCLVersion = '1.4.4.0' object Image1: TImage Left = 0 @@ -17,7 +18,110 @@ object Form1: TForm1 Top = 0 Width = 714 end + object WolkeIco: TImage + Left = 80 + Height = 18 + Top = 18 + Width = 18 + Picture.Data = { + 055449636F6E3E01000000000100010010101000000000002801000016000000 + 2800000010000000200000000100040000000000C00000000000000000000000 + 0000000000000000000000000000800000800000008080008000000080008000 + 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 + FFFF0000FFFFFF00000000000000000000000077777770000000077077777000 + 0077777077700000007777070007770000777777777777700000077777707770 + 0077707777070000077770777777770007777707007777000777707777077700 + 0777777777077000000777770007000000000070777000000000000777770000 + 0000000000000000FC070000F8030000C0030000800300008001000080000000 + C0000000800100000001000000010000000100000003000080070000E00F0000 + FC070000FE0F0000 + } + Visible = False + end + object SonneIco: TImage + Left = 112 + Height = 18 + Top = 18 + Width = 18 + Picture.Data = { + 055449636F6E3E01000000000100010010101000000000002801000016000000 + 2800000010000000200000000100040000000000C00000000000000000000000 + 0000000000000000000000000000800000800000008080008000000080008000 + 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 + FFFF0000FFFFFF0000000000B000000000B00000B0000000000B0000B00000B0 + 000B000BB0000B000000BBBBBBB0B0000000BBBBBBBBB000BBB0BBBBBBBB0000 + 000BBBBBBBBBBBB0000BBBBBBBBBB0000000BBBBBBBB0000000BBBBBBBBB0000 + 00B00BBBBBBB00000B0000BBB000BB00000000B0B00000B000000B000B00000B + 00000B000B000000FF7F0000DF7F0000EF7D0000EE7B0000F0170000F0070000 + 100F0000E0010000E0070000F00F0000E00F0000D80F0000BC730000FD7D0000 + FBBE0000FBBF0000 + } + Visible = False + end + object SturmIco: TImage + Left = 144 + Height = 18 + Top = 18 + Width = 18 + Picture.Data = { + 055449636F6E3E01000000000100010010101000000000002801000016000000 + 2800000010000000200000000100040000000000C00000000000000000000000 + 0000000000000000000000000000800000800000008080008000000080008000 + 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 + FFFF0000FFFFFF00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000008F0F000076F7000055BB0000B5DD0000FEDF0000E73F0000 + DBFF0000DD870000E77B0000FEDD000086EE00007B6F00006D9F00009FF10000 + FFEE0000FFF60000 + } + Visible = False + end + object RegenIco: TImage + Left = 172 + Height = 18 + Top = 18 + Width = 18 + Picture.Data = { + 055449636F6E3E01000000000100010010101000000000002801000016000000 + 2800000010000000200000000100040000000000C00000000000000000000000 + 0000000000000000000000000000800000800000008080008000000080008000 + 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 + FFFF0000FFFFFF000000000000000000C020000000000020C0A2A0000000A2AC + C0CA2A2A2A2A2A0C00C0A2A2A2A2A00C00000A2A2A2A0C000000C002A2000C00 + 0000C0C000000C000C00C0C000C0000C0C00C000C0C0000C00000000C0C0000C + 000000C0C000C000000C00C00000C000000C0000C000C0C00C0C0000C00000C0 + 0C0C0000C00000C0FEFF00005D7D00004770000040020000D0060000F80B0000 + F63B0000F5FB0000B5DE0000B75E0000FF5E0000FD770000EDF70000EF750000 + AF7D0000AF7D0000 + } + Visible = False + end + object RegenSturmIco: TImage + Left = 200 + Height = 18 + Top = 18 + Width = 18 + Picture.Data = { + 055449636F6E3E01000000000100010010101000000000002801000016000000 + 2800000010000000200000000100040000000000C00000000000000000000000 + 0000000000000000000000000000800000800000008080008000000080008000 + 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 + FFFF0000FFFFFF000000000000000C00C000C00000000C00C000C000000C0C0C + C0C0C009190C000C00C001919191000C0000191919191C000001919191919100 + 001910C0000019100C90C0C000C0009C0C00C000C0C0000C00000000C0C0000C + 000000C0C000C000000C00C00000C000000C0000C000C0C00C0C0000C00000C0 + 0C0C0000C00000C0FEFB0000757B0000776A0000562E0000D80E0000F0030000 + E0030000C5F1000095DC0000B75E0000FF5E0000FD770000EDF70000EF750000 + AF7D0000AF7D0000 + } + Visible = False + end object TrayIcon1: TTrayIcon + OnClick = TrayIcon1Click + OnDblClick = TrayIcon1DblClick + OnMouseDown = TrayIcon1MouseDown left = 16 top = 8 end @@ -12,16 +12,27 @@ type TForm1 = class(TForm) Image1: TImage; + RegenSturmIco: TImage; + RegenIco: TImage; + SturmIco: TImage; + SonneIco: TImage; + WolkeIco: TImage; TrayIcon1: TTrayIcon; procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure TrayIcon1Click(Sender: TObject); + procedure TrayIcon1DblClick(Sender: TObject); + procedure TrayIcon1MouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X,Y: Integer); private { private declarations } datenZeitRaum: extended; pegel: tPegelStaende; wetter: tMessPunkte; pegelDatei,wetterDatei: string; + lMB: tMouseButton; public { public declarations } procedure zeichnen; @@ -70,6 +81,7 @@ var begin fehler:=true; __ausgabenMaske:=1; + lMB:=mbLeft; pidDatei:=''; pegelDatei:=''; datenZeitRaum:=1; @@ -162,9 +174,34 @@ begin wetter.free; end; +procedure TForm1.FormShow(Sender: TObject); +begin + form1.top:=screen.height-form1.height-24; + form1.left:=screen.width-form1.width; +end; + +procedure TForm1.TrayIcon1Click(Sender: TObject); +begin + form1.visible:=not form1.visible; +end; + +procedure TForm1.TrayIcon1DblClick(Sender: TObject); +begin + if (lMB=mbRight) or + (messageDlg('Wetter wirklich beenden?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then + form1.close; +end; + +procedure TForm1.TrayIcon1MouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X,Y: Integer); +begin + lMB:=button; +end; + procedure TForm1.zeichnen; var tmp,startZeit,stopZeit: extended; + s: string; begin fehler:=true; image1.canvas.brush.color:=$ffffff; @@ -185,6 +222,28 @@ begin pegel.graphenZeichnen([psRudolstadt,psRothenstein],now-datenZeitRaum,now); wetter.graphenZeichnen([mgTemperatur,mgLuftfeuchte,mgNiederschlag,mgGlobalstrahlung,mgLuftdruck],now-datenZeitRaum,now); + + case byte(wetter.sonnigkeit > 0.25) or + (byte(wetter.maxWind > 2.5)*2) or + (byte(wetter.gesRegen > 0)*4) of + $00: trayIcon1.Icon:=WolkeIco.Picture.Icon; + $01: trayIcon1.Icon:=SonneIco.Picture.Icon; + $02,$03: trayIcon1.Icon:=SturmIco.Picture.Icon; + $04,$05: trayIcon1.Icon:=RegenIco.Picture.Icon; + $06,$07: trayIcon1.Icon:=RegenSturmIco.Picture.Icon; + end{of Case}; + + s:=wetter.hintInfo+' '+pegel.hintInfo; + image1.canvas.font.color:=$000000; + image1.canvas.textOut((image1.width-image1.canvas.textWidth(s)) div 2,1,s); + s[pos(',',s)-3]:=#13; + s[pos('%',s)+1]:=#13; + s:=s+wetter.mehrInfos([mgTemperatur,mgLuftfeuchte,mgWindgeschwindigkeit,//mgWindrichtung, + mgNiederschlag,//mgGlobalstrahlung, + mgLuftdruck]); + trayIcon1.hint:=s; + + trayIcon1.visible:=true; fehler:=false; end; @@ -9,7 +9,7 @@ <IsPartOfProject Value="True"/> <EditorIndex Value="-1"/> <CursorPos X="12" Y="6"/> - <UsageCount Value="42"/> + <UsageCount Value="44"/> </Unit0> <Unit1> <Filename Value="unit1.pas"/> @@ -18,10 +18,9 @@ <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> - <IsVisibleTab Value="True"/> - <TopLine Value="179"/> - <CursorPos X="49" Y="215"/> - <UsageCount Value="42"/> + <TopLine Value="236"/> + <CursorPos X="14" Y="244"/> + <UsageCount Value="44"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit1> @@ -29,29 +28,32 @@ <Filename Value="original/pegelunit.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="-1"/> - <UsageCount Value="42"/> + <UsageCount Value="44"/> </Unit2> <Unit3> <Filename Value="fhunit.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="2"/> - <UsageCount Value="42"/> + <TopLine Value="441"/> + <CursorPos X="70" Y="473"/> + <UsageCount Value="44"/> <Loaded Value="True"/> </Unit3> <Unit4> <Filename Value="original/Unit1.pas"/> <EditorIndex Value="4"/> - <TopLine Value="665"/> - <CursorPos X="120" Y="465"/> - <UsageCount Value="21"/> + <TopLine Value="664"/> + <CursorPos Y="678"/> + <UsageCount Value="22"/> <Loaded Value="True"/> </Unit4> <Unit5> <Filename Value="pegelunit.pas"/> + <IsVisibleTab Value="True"/> <EditorIndex Value="3"/> - <TopLine Value="393"/> - <CursorPos Y="432"/> - <UsageCount Value="21"/> + <TopLine Value="447"/> + <CursorPos X="48" Y="477"/> + <UsageCount Value="22"/> <Loaded Value="True"/> </Unit5> <Unit6> @@ -65,7 +67,7 @@ <Filename Value="wetter.konf"/> <EditorIndex Value="1"/> <CursorPos X="13" Y="2"/> - <UsageCount Value="21"/> + <UsageCount Value="22"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="None"/> </Unit7> @@ -106,123 +108,127 @@ <DefaultSyntaxHighlighter Value="None"/> </Unit12> </Units> - <JumpHistory Count="29" HistoryIndex="28"> + <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="fhunit.pas"/> - <Caret Line="184" Column="37" TopLine="164"/> + <Filename Value="unit1.pas"/> + <Caret Line="194" Column="30" TopLine="174"/> </Position1> <Position2> - <Filename Value="fhunit.pas"/> - <Caret Line="185" Column="19" TopLine="179"/> + <Filename Value="unit1.pas"/> + <Caret Line="195" Column="30" TopLine="175"/> </Position2> <Position3> - <Filename Value="fhunit.pas"/> - <Caret Line="534" Column="36" TopLine="532"/> + <Filename Value="unit1.pas"/> + <Caret Line="196" Column="30" TopLine="176"/> </Position3> <Position4> - <Filename Value="fhunit.pas"/> - <Caret Line="89" Column="36" TopLine="78"/> + <Filename Value="unit1.pas"/> + <Caret Line="197" Column="30" TopLine="177"/> </Position4> <Position5> - <Filename Value="fhunit.pas"/> - <Caret Line="481" Column="49" TopLine="433"/> + <Filename Value="unit1.pas"/> + <Caret Line="200" Column="3" TopLine="173"/> </Position5> <Position6> - <Filename Value="fhunit.pas"/> - <Caret Line="76" Column="20" TopLine="62"/> + <Filename Value="unit1.pas"/> + <Caret Line="11" Column="35"/> </Position6> <Position7> - <Filename Value="fhunit.pas"/> - <Caret Line="424" Column="21" TopLine="393"/> + <Filename Value="unit1.pas"/> + <Caret Line="8" Column="3"/> </Position7> <Position8> - <Filename Value="fhunit.pas"/> - <Caret Line="437" Column="14" TopLine="430"/> + <Filename Value="unit1.pas"/> + <Caret Line="173" Column="3" TopLine="153"/> </Position8> <Position9> - <Filename Value="fhunit.pas"/> - <Caret Line="454" Column="67" TopLine="435"/> + <Filename Value="unit1.pas"/> + <Caret Line="7" Column="34"/> </Position9> <Position10> - <Filename Value="fhunit.pas"/> - <Caret Line="68" Column="45" TopLine="41"/> + <Filename Value="unit1.pas"/> + <Caret Line="186" Column="3" TopLine="162"/> </Position10> <Position11> - <Filename Value="fhunit.pas"/> - <Caret Line="64" Column="27" TopLine="45"/> + <Filename Value="unit1.pas"/> + <Caret Line="189" Column="74" TopLine="189"/> </Position11> <Position12> - <Filename Value="fhunit.pas"/> - <Caret Line="325" Column="14" TopLine="314"/> + <Filename Value="unit1.pas"/> + <Caret Line="188" Column="60" TopLine="168"/> </Position12> <Position13> - <Filename Value="fhunit.pas"/> - <Caret Line="352" Column="47" TopLine="339"/> + <Filename Value="unit1.pas"/> + <Caret Line="179" TopLine="174"/> </Position13> <Position14> - <Filename Value="fhunit.pas"/> - <Caret Line="355" Column="31" TopLine="332"/> + <Filename Value="unit1.pas"/> + <Caret Line="7" Column="34"/> </Position14> <Position15> - <Filename Value="fhunit.pas"/> - <Caret Line="537" Column="30" TopLine="512"/> + <Filename Value="pegelunit.pas"/> + <Caret Line="552" TopLine="523"/> </Position15> <Position16> <Filename Value="fhunit.pas"/> - <Caret Line="219" Column="56" TopLine="190"/> + <Caret Line="599" TopLine="572"/> </Position16> <Position17> <Filename Value="fhunit.pas"/> - <Caret Line="165" TopLine="130"/> + <Caret Line="91" Column="14" TopLine="79"/> </Position17> <Position18> - <Filename Value="fhunit.pas"/> - <Caret Line="88" Column="83" TopLine="73"/> + <Filename Value="pegelunit.pas"/> + <Caret Line="81" Column="14" TopLine="60"/> </Position18> <Position19> - <Filename Value="fhunit.pas"/> - <Caret Line="524" Column="49" TopLine="504"/> + <Filename Value="unit1.pas"/> + <Caret Line="244" TopLine="211"/> </Position19> <Position20> <Filename Value="fhunit.pas"/> - <Caret Line="97" TopLine="78"/> + <Caret Line="614" TopLine="582"/> </Position20> <Position21> <Filename Value="fhunit.pas"/> - <Caret Line="160" TopLine="159"/> + <Caret Line="92" Column="15" TopLine="79"/> </Position21> <Position22> - <Filename Value="fhunit.pas"/> - <Caret Line="165" Column="19" TopLine="153"/> + <Filename Value="unit1.pas"/> + <Caret Line="241" Column="15" TopLine="221"/> </Position22> <Position23> - <Filename Value="fhunit.pas"/> - <Caret Line="12" Column="63"/> + <Filename Value="unit1.pas"/> + <Caret Line="243" Column="27" TopLine="223"/> </Position23> <Position24> - <Filename Value="fhunit.pas"/> - <Caret Line="165" TopLine="146"/> + <Filename Value="unit1.pas"/> + <Caret Line="244" Column="13" TopLine="224"/> </Position24> <Position25> <Filename Value="fhunit.pas"/> - <Caret Line="542" Column="24" TopLine="516"/> + <Caret Line="92" Column="13" TopLine="71"/> </Position25> <Position26> <Filename Value="fhunit.pas"/> - <Caret Line="16" Column="57"/> + <Caret Line="621" Column="69" TopLine="594"/> </Position26> <Position27> <Filename Value="fhunit.pas"/> - <Caret Line="107" Column="29" TopLine="81"/> + <Caret Line="101" TopLine="78"/> </Position27> <Position28> <Filename Value="fhunit.pas"/> - <Caret Line="8" Column="73"/> + <Caret Line="626" TopLine="606"/> </Position28> <Position29> <Filename Value="fhunit.pas"/> - <Caret Line="535" TopLine="525"/> + <Caret Line="100" Column="26" TopLine="78"/> </Position29> + <Position30> + <Filename Value="fhunit.pas"/> + <Caret Line="108" Column="23" TopLine="100"/> + </Position30> </JumpHistory> </ProjectSession> </CONFIG> |