Merge pull request #47 from PAMGuard/main

pull from main
This commit is contained in:
Douglas Gillespie 2023-07-03 17:48:41 +01:00 committed by GitHub
commit 3385935aec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 341 additions and 290 deletions

View File

@ -388,7 +388,10 @@ PamguardBeta_ViewerMode.exe):</p>
<h1><a name="_LATEST_VERSION_2.02.03"></a><a name="_VERSION_2.02.07_January"></a><em><span <h1><a name="_LATEST_VERSION_2.02.03"></a><a name="_VERSION_2.02.07_January"></a><em><span
style='font-size:12.0pt;font-family:"Cambria",serif;font-style:normal'><a style='font-size:12.0pt;font-family:"Cambria",serif;font-style:normal'><a
href="#_Latest_Version_2.02.08">LATEST VERSION 2.02.08 May 2023</a></span></em></h1> href="#_Version_2.02.09_June">Latest Version 2.02.09 June 2023</a></span></em></h1>
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
normal'><a href="#_Version_2.02.08_May">Version 2.02.08 May 2023</a></span></em></h1>
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style: <h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
normal'><a href="#_Latest_Version_2.02.07">Version 2.02.07 January 2023</a></span></em></h1> normal'><a href="#_Latest_Version_2.02.07">Version 2.02.07 January 2023</a></span></em></h1>
@ -454,7 +457,17 @@ Version 2.00.10 June 2017</a></span></h1>
<h1><a name="_Latest_Version_2.02.03_1"></a><a name="_Latest_Version_2.02.05"></a><a <h1><a name="_Latest_Version_2.02.03_1"></a><a name="_Latest_Version_2.02.05"></a><a
name="_Latest_Version_2.02.06"></a><a name="_Latest_Version_2.02.07"></a><a name="_Latest_Version_2.02.06"></a><a name="_Latest_Version_2.02.07"></a><a
name="_Latest_Version_2.02.08"></a><span lang=EN-US>Latest Version 2.02.08 May name="_Latest_Version_2.02.08"></a><a name="_Version_2.02.09_June"></a><span
lang=EN-US>Version 2.02.09 June 2023</span></h1>
<h2><span lang=EN-US>Bug Fixes</span></h2>
<p class=MsoNormal><span lang=EN-US>Time zone displays: Fixed some bugs
associated with options to have PAMGuard display times in local time, rather
than UTC. This was affecting times typed into the scroll bars of displays which
were reading local time, even when set to use UTC. </span></p>
<h1><a name="_Version_2.02.08_May"></a><span lang=EN-US>Version 2.02.08 May
2023</span></h1> 2023</span></h1>
<h2><span lang=EN-US>Bug Fixes</span></h2> <h2><span lang=EN-US>Bug Fixes</span></h2>
@ -495,8 +508,8 @@ the first two characters of the string name may be. </span></p>
<h2><span lang=EN-US>Bug Fixes</span></h2> <h2><span lang=EN-US>Bug Fixes</span></h2>
<p class=MsoNormal><span lang=EN-US>Use of localization sensor and orientation <p class=MsoNormal><span lang=EN-US>Use of localization sensor and orientation data
data for static hydrophones had a bug whereby it would continually forget angle for static hydrophones had a bug whereby it would continually forget angle
offsets applied to static hydrophones in viewer mode. This is now fixed. </span></p> offsets applied to static hydrophones in viewer mode. This is now fixed. </span></p>
<p class=MsoNormal><span lang=EN-US>Click tool bar: Correctly shows event <p class=MsoNormal><span lang=EN-US>Click tool bar: Correctly shows event
@ -525,10 +538,10 @@ generates random chirps between around 200 and 800Hz, roughly the frequency
youd expect sound from higher frequency baleen whales, such as humpbacks, to youd expect sound from higher frequency baleen whales, such as humpbacks, to
vocalise at. &nbsp;&nbsp;</span></p> vocalise at. &nbsp;&nbsp;</span></p>
<p class=MsoNormal><span lang=EN-US>Hiding tool tips. A menu item to permanently <p class=MsoNormal><span lang=EN-US>Hiding tool tips. A menu item to
turn off all tool tips, or tap the Esc key to turn them off for 6 seconds if permanently turn off all tool tips, or tap the Esc key to turn them off for 6
they are getting in the way, particularly when trying to interact with displays seconds if they are getting in the way, particularly when trying to interact
using the mouse. </span></p> with displays using the mouse. </span></p>
<h1><span lang=EN-US>Version 2.02.06 November 2022</span></h1> <h1><span lang=EN-US>Version 2.02.06 November 2022</span></h1>
@ -550,8 +563,8 @@ whistle classification module.</span></p>
<p class=MsoNormal><span lang=EN-US>SoundTrap SUD file reading. If youre using <p class=MsoNormal><span lang=EN-US>SoundTrap SUD file reading. If youre using
SoundTrap autonomous recorders from Ocean Instruments, you no longer need to SoundTrap autonomous recorders from Ocean Instruments, you no longer need to
decompress the SoundTrap files prior to processing. This will save time and a decompress the SoundTrap files prior to processing. This will save time and a
lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click detector
detector can also happen while processing SUD file data with other detectors, thereby can also happen while processing SUD file data with other detectors, thereby
streamlining the whole processing chain. Read the online Help for details. streamlining the whole processing chain. Read the online Help for details.
&nbsp;&nbsp;</span></p> &nbsp;&nbsp;</span></p>
@ -656,9 +669,9 @@ selections from drop down lists within any form.</p>
<p class=MsoNormal>&nbsp;</p> <p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>Note that updates have also been made to the Matlab <p class=MsoNormal>Note that updates have also been made to the Matlab interface
interface to PAMGuard binary files, which has now also been migrated to GitHub to PAMGuard binary files, which has now also been migrated to GitHub at <a
at <a href="https://github.com/PAMGuard/PAMGuardMatlab">https://github.com/PAMGuard/PAMGuardMatlab</a>. href="https://github.com/PAMGuard/PAMGuardMatlab">https://github.com/PAMGuard/PAMGuardMatlab</a>.
</p> </p>
<h1>&nbsp;</h1> <h1>&nbsp;</h1>
@ -686,12 +699,12 @@ understand the notes listed for <a href="#_Latest_Beta_Version_2.00.10">Beta
Version 2.00.10</a> before proceeding with installation and use of this Version 2.00.10</a> before proceeding with installation and use of this
version.</b></p> version.</b></p>
<p class=MsoNormal>This version of PAMGuard has been bundled with Java 16 (OpenJDK <p class=MsoNormal>This version of PAMGuard has been bundled with Java 16
release), so you will not need to install a java runtime engine separately. (OpenJDK release), so you will not need to install a java runtime engine
PSFX files generated in previous beta releases (2.xx.xx) should be compatible separately. PSFX files generated in previous beta releases (2.xx.xx) should be
with this version, and vice-versa. PSF files generated in core releases compatible with this version, and vice-versa. PSF files generated in core
(1.15.xx) can be loaded in this version, but will be converted to PSFX files releases (1.15.xx) can be loaded in this version, but will be converted to PSFX
when PAMGuard exits.</p> files when PAMGuard exits.</p>
<p class=MsoNormal style='margin-bottom:0cm'><span style='font-size:12.0pt; <p class=MsoNormal style='margin-bottom:0cm'><span style='font-size:12.0pt;
font-family:"Times New Roman",serif'>&nbsp;</span></p> font-family:"Times New Roman",serif'>&nbsp;</span></p>
@ -739,8 +752,8 @@ params </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
&nbsp; 492. Data Model does not update button//tooltip text when underlying data &nbsp; 492. Data Model does not update button//tooltip text when underlying
changes </p> data changes </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
@ -835,17 +848,17 @@ Noise Level Outputs - as an aid to performance diagnosis, some detectors
(currently the GPL, Click Detector and Whistle and Moan Detector) are (currently the GPL, Click Detector and Whistle and Moan Detector) are
outputting additional noise metrics to their binary output files. These can be outputting additional noise metrics to their binary output files. These can be
read with the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard read with the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard
Matlab library</a> and used to diagnose system performance in varying noise Matlab library</a> and used to diagnose system performance in varying noise conditions.
conditions. Improved displays within PAMGuard for these noise metrics will be Improved displays within PAMGuard for these noise metrics will be included in a
included in a future release. </p> future release. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>An implementation of the Generalized Power Law Detector, lang=EN-US> </span>An implementation of the Generalized Power Law Detector,
developed by Tyler Helble ([Helble et al., ÃÂA generalized power-law developed by Tyler Helble ([Helble et al., ÃÂA generalized power-law detection
detection algorithm for humpback whale vocalizationsÃÂ, The Journal of the algorithm for humpback whale vocalizationsÃÂ, The Journal of the Acoustical
Acoustical Society of America, vol. 131, no. 4, pp. 2682ÃÂ2699, 2012) is now Society of America, vol. 131, no. 4, pp. 2682ÃÂ2699, 2012) is now available.
available. For details, see the online help </p> For details, see the online help </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -866,11 +879,11 @@ understand the notes listed for <a href="#_Latest_Beta_Version_2.00.10">Beta
Version 2.00.10</a> before proceeding with installation and use of this Version 2.00.10</a> before proceeding with installation and use of this
version.</b></p> version.</b></p>
<p class=MsoNormal>This version of PAMGuard has been bundled with Java 13 (release <p class=MsoNormal>This version of PAMGuard has been bundled with Java 13
13.0.1). PSFX files generated in previous beta releases (2.xx.xx) should be (release 13.0.1). PSFX files generated in previous beta releases (2.xx.xx)
compatible with this version, and vice-versa. PSF files generated in core should be compatible with this version, and vice-versa. PSF files generated in
releases (1.15.xx) can be loaded in this version, but will be converted to PSFX core releases (1.15.xx) can be loaded in this version, but will be converted to
files when PAMGuard exits.</p> PSFX files when PAMGuard exits.</p>
<p class=MsoNormal><b><span lang=EN-US>Bug Fixes</span></b></p> <p class=MsoNormal><b><span lang=EN-US>Bug Fixes</span></b></p>
@ -958,8 +971,9 @@ lang=EN-US> </span>Better auto-scaling in Ishmael Detector graphics window. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Change to Windows temporary folder location, to get around Windows lang=EN-US> </span>Change to Windows temporary folder location, to get around
Security settings that were preventing some modules from working properly. </p> Windows Security settings that were preventing some modules from working
properly. </p>
<!-- ************************************************************************************************************************** --><!-- ************************************************************************************************************************** --> <!-- ************************************************************************************************************************** --><!-- ************************************************************************************************************************** -->
@ -1015,8 +1029,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
&nbsp; 460. Click Detector BT Display vertical axis shows all zeroes when zooming &nbsp; 460. Click Detector BT Display vertical axis shows all zeroes when
out </p> zooming out </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
@ -1299,8 +1313,8 @@ Added a few new options to the Click Detector Sweep Classifier. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Add option to the Map module's Plot Overlay Options dialog, to lang=EN-US> </span>Add option to the Map module's Plot Overlay Options dialog,
show events occuring in the future (<em><span style='font-family:"Calibri",sans-serif'>look to show events occuring in the future (<em><span style='font-family:"Calibri",sans-serif'>look
ahead</span></em>) instead of the default display of events which have already ahead</span></em>) instead of the default display of events which have already
occurred. Can make it easier to match up the map with clicks seen in the Click occurred. Can make it easier to match up the map with clicks seen in the Click
Detector display. </p> Detector display. </p>
@ -1465,8 +1479,8 @@ Upgrades to the Group Localiser, including better error estimation.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Click Train Detector upgrades, including ability to import lang=EN-US> </span>Click Train Detector upgrades, including ability to import time
time chunks from csv file for batch processing.</p> chunks from csv file for batch processing.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1621,9 +1635,9 @@ from many channels.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bugs 398 and 399. Click Detector, FFT Engine and Filter modules were losing </span>Bugs 398 and 399. Click Detector, FFT Engine and Filter modules were
source during startup, if the source selected was not the first raw data source losing source during startup, if the source selected was not the first raw data
in the list.</p> source in the list.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -1738,9 +1752,9 @@ see new options in main menu.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Added Matched Template Click Classifier. Classifies clicks based lang=EN-US> </span>Added Matched Template Click Classifier. Classifies clicks
on an ideal template to match and a template to reject. An example of this is based on an ideal template to match and a template to reject. An example of
to classify beaked whale clicks in an environment with dolphin clicks.</p> this is to classify beaked whale clicks in an environment with dolphin clicks.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1856,11 +1870,11 @@ to work with whistles.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Added option to export all settings and parameters as an XML-formatted file. Added option to export all settings and parameters as an XML-formatted file. Note
Note that this required changes to the structure of the Array Manager, and as that this required changes to the structure of the Array Manager, and as such
such any settings (psf) files created with this version of Pamguard cannot be any settings (psf) files created with this version of Pamguard cannot be used
used in older versions. Older psf files can be loaded with this version, but in older versions. Older psf files can be loaded with this version, but will be
will be converted.</p> converted.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -2097,9 +2111,9 @@ Added circular movement option to source simulation </p>
<h1><a name="_Latest_Beta_Version_2.00.10"></a><span lang=EN-US>Beta Version <h1><a name="_Latest_Beta_Version_2.00.10"></a><span lang=EN-US>Beta Version
2.00.10 June 2017</span></h1> 2.00.10 June 2017</span></h1>
<p class=MsoNormal><span lang=EN-US>PAMGuard Version 2 contains major updates. You <p class=MsoNormal><span lang=EN-US>PAMGuard Version 2 contains major updates.
should read and understand these notes before proceeding with installation and You should read and understand these notes before proceeding with installation
use of this version. These changes have been funded under contract to NOAA and use of this version. These changes have been funded under contract to NOAA
Fisheries, contract no. WE-133F-16-SE-1126.</span></p> Fisheries, contract no. WE-133F-16-SE-1126.</span></p>
<h3><span lang=EN-US>Binary File Structural Changes</span></h3> <h3><span lang=EN-US>Binary File Structural Changes</span></h3>
@ -2112,11 +2126,11 @@ the PAMGuard Viewer the older data will be converted to the new format (see
below for details).</span></p> below for details).</span></p>
<p class=MsoNormal><span lang=EN-US>The most significant change in the binary <p class=MsoNormal><span lang=EN-US>The most significant change in the binary
file format is the addition of a Unique Data Identifier (UID) to each unit of file format is the addition of a Unique Data Identifier (UID) to each unit of data.
data. This is intended to aid in offline analysis by making it easier for the This is intended to aid in offline analysis by making it easier for the user to
user to link what they are seeing on different PAMGuard displays and also to link what they are seeing on different PAMGuard displays and also to link with
link with any data post processed in Matlab or other custom analysis software. any data post processed in Matlab or other custom analysis software. UIDÃÂs
UIDÃÂs are also added to PAMGuard database tables. </span></p> are also added to PAMGuard database tables. </span></p>
<h4><span lang=EN-US>Converting Old Data</span></h4> <h4><span lang=EN-US>Converting Old Data</span></h4>
@ -2222,8 +2236,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Rocca Module: added StartHr, ProportionWhists and ProportionClicks </span>Rocca Module: added StartHr, ProportionWhists and ProportionClicks parameters
parameters to Event classifier</p> to Event classifier</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2236,14 +2250,14 @@ switches/parameters to be included in *.ini files.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 308. Map Overlay Control. </span>Storage of data saying </span><span lang=EN-US>Bug 308. Map Overlay Control. </span>Storage of data
what get's plotted on each map and for how long became corrupted and the list saying what get's plotted on each map and for how long became corrupted and the
grew to a ridiculous size. Code has been put in place to a) stop it happening list grew to a ridiculous size. Code has been put in place to a) stop it
again and b) to repair any configuration files which are corrupted. Corrupted happening again and b) to repair any configuration files which are corrupted.
files will be slow to load, slow to save and will be &gt; several megabytes in Corrupted files will be slow to load, slow to save and will be &gt; several
size. It may be necessary to delete the PamguardSettings table in any databases megabytes in size. It may be necessary to delete the PamguardSettings table in
since these too may have become oversized which will slow down viewer mode any databases since these too may have become oversized which will slow down
PAMGuard start-up.</p> viewer mode PAMGuard start-up.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span <p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2374,10 +2388,10 @@ high sample rate. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'>2.<span style='font-size-adjust: none; <p class=MsoListParagraph style='text-indent:-18.0pt'>2.<span style='font-size-adjust: none;
font-stretch: normal'><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font-stretch: normal'><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span lang=EN-US>Bug 305. Date and Time not being correctly </span></span><span lang=EN-US>Bug 305. Date and Time not being correctly extracted
extracted from wav files created using SoundTrap recorders. Fixed by correctly from wav files created using SoundTrap recorders. Fixed by correctly finding
finding and unpacking information in the accompanying xml log files that come and unpacking information in the accompanying xml log files that come with
with SoundTrap files. </span></p> SoundTrap files. </span></p>
<h1><a name="_Latest_Version_1.15.06"></a><span lang=EN-US>Version 1.15.06 <h1><a name="_Latest_Version_1.15.06"></a><span lang=EN-US>Version 1.15.06
November 2016</span></h1> November 2016</span></h1>
@ -2533,9 +2547,9 @@ the future. </span></p>
<p class=MsoNormal><i>Logger Form Design</i></p> <p class=MsoNormal><i>Logger Form Design</i></p>
<p class=MsoNormal>A GUI driven system for designing Logger forms has been released. <p class=MsoNormal>A GUI driven system for designing Logger forms has been
Currently, this feature has no online help, but is reasonably intuitive released. Currently, this feature has no online help, but is reasonably
compared to the old method of typing directly into the database. </p> intuitive compared to the old method of typing directly into the database. </p>
<p class=MsoNormal><i><span lang=EN-US>Improved Number handling</span></i></p> <p class=MsoNormal><i><span lang=EN-US>Improved Number handling</span></i></p>
@ -2841,10 +2855,10 @@ displaying in the viewer. This is now fixed. </span></p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>3.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>3.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 248. Crash in hydrophone array manager. Bug in array </span><span lang=EN-US>Bug 248. Crash in hydrophone array manager. Bug in
manager would crash PAMGuard when the click detector was configured with more array manager would crash PAMGuard when the click detector was configured with
channels than the sound acquisition system (almost impossible to achieve, but more channels than the sound acquisition system (almost impossible to achieve,
someone managed it). </span></p> but someone managed it). </span></p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2913,8 +2927,8 @@ writing results files. Fixed. </p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>7.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>7.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 237. Logger forms not saving data to database after sound acquisition </span>Bug 237. Logger forms not saving data to database after sound
starts. Fixed. </p> acquisition starts. Fixed. </p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>8.<span <p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>8.<span
style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2957,15 +2971,15 @@ which is useful when using PAMGuard for demonstration purposes. </p>
lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The sound File and Folder audio input systems now have an optional time </span>The sound File and Folder audio input systems now have an optional time
zone setting. Note that PAMGuard analysis should still all be taking place in zone setting. Note that PAMGuard analysis should still all be taking place in
UTC and that this option is intended to allow the conversion of file times which UTC and that this option is intended to allow the conversion of file times
were not recorded as UTC into UTC and not the other way around. Use the option which were not recorded as UTC into UTC and not the other way around. Use the
with caution !</p> option with caution !</p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span <p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The Open Office Database system has been removed from the list of available </span>The Open Office Database system has been removed from the list of
options since it is not reliable. If you require a free database solution we available options since it is not reliable. If you require a free database
recommend you use the MySql Community Server <a solution we recommend you use the MySql Community Server <a
href="http://dev.mysql.com/downloads/mysql/">http://dev.mysql.com/downloads/mysql/</a></p> href="http://dev.mysql.com/downloads/mysql/">http://dev.mysql.com/downloads/mysql/</a></p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span <p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
@ -3115,8 +3129,9 @@ to read on a time. Fixed</p>
<p class=MsoNormal><i>Menu Layout</i></p> <p class=MsoNormal><i>Menu Layout</i></p>
<p class=MsoNormal>The PAMGuard menus have been rearranged into a more intuitive <p class=MsoNormal>The PAMGuard menus have been rearranged into a more
grouping which we believe will help users find functionality more easily. </p> intuitive grouping which we believe will help users find functionality more
easily. </p>
<p class=MsoNormal>'Detection' menu has been renamed to 'Settings' since many <p class=MsoNormal>'Detection' menu has been renamed to 'Settings' since many
menu items within this menu were not directly to do with 'Detection'.</p> menu items within this menu were not directly to do with 'Detection'.</p>
@ -3182,8 +3197,8 @@ whistles as well. </p>
<p class=MsoNormal>This module, funded by NOAA for the South West Fisheries <p class=MsoNormal>This module, funded by NOAA for the South West Fisheries
Science Centre (SWFSC), measures pitch and roll from analogue accelerometer Science Centre (SWFSC), measures pitch and roll from analogue accelerometer
sensors in a hydrophone. Data are fed real time into the updated hydrophone sensors in a hydrophone. Data are fed real time into the updated hydrophone
array manager in order that bearings from a tetrahedral tracking array are array manager in order that bearings from a tetrahedral tracking array are correctly
correctly calculated in real world coordinates. </p> calculated in real world coordinates. </p>
<p class=MsoNormal><i>Wild ArcGIS Interface</i> (Maps and Mapping group)</p> <p class=MsoNormal><i>Wild ArcGIS Interface</i> (Maps and Mapping group)</p>
@ -3193,12 +3208,12 @@ marine mammal survey package. See online help for details. </p>
<p class=MsoNormal><i>Alarms</i> (Utilities Group)</p> <p class=MsoNormal><i>Alarms</i> (Utilities Group)</p>
<p class=MsoNormal>This is a general system of visual and audio alarms <p class=MsoNormal>This is a general system of visual and audio alarms developed
developed by Doug Gillespie for use on a variety of projects. The alarms can be by Doug Gillespie for use on a variety of projects. The alarms can be coupled
coupled to any module or detector in PAMGuard. Where appropriate, modules can to any module or detector in PAMGuard. Where appropriate, modules can control
control which of their data will cause an alarm action (e.g. in the Click which of their data will cause an alarm action (e.g. in the Click detector you
detector you can set which types of classified click will fire the alarm). See can set which types of classified click will fire the alarm). See online help
online help for details. &nbsp;</p> for details. &nbsp;</p>
<p class=MsoNormal><i>Noise Band Monitor</i> (Sound Processing Group)</p> <p class=MsoNormal><i>Noise Band Monitor</i> (Sound Processing Group)</p>
@ -3246,9 +3261,9 @@ different. Details are available in the online help. </p>
<p class=MsoNormal>Can now read raw audio data direct from FLAC files. <a <p class=MsoNormal>Can now read raw audio data direct from FLAC files. <a
href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> is a lossless compression href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> is a lossless compression
algorithm for audio data. Files, or folders of files are accessed in the same algorithm for audio data. Files, or folders of files are accessed in the same way
way as WAV and AIFF files in the Sound Acquisition module. In a future release as WAV and AIFF files in the Sound Acquisition module. In a future release we
we also hope to provide support for writing FLAC files from the sound recorder also hope to provide support for writing FLAC files from the sound recorder
module. </p> module. </p>
<p class=MsoNormal><i>Sound Recorder Module</i></p> <p class=MsoNormal><i>Sound Recorder Module</i></p>
@ -3292,9 +3307,8 @@ shaped Finite Impulse Response filters (see online help for details). </p>
<p class=MsoNormal><i>Radar Display</i></p> <p class=MsoNormal><i>Radar Display</i></p>
<p class=MsoNormal>Can now show bearings relative to true North OR the vessel <p class=MsoNormal>Can now show bearings relative to true North OR the vessel heading.
heading. Also has the option of only showing certain types of click and Also has the option of only showing certain types of click and whistle.</p>
whistle.</p>
<p class=MsoNormal><b>Bug Fixes</b></p> <p class=MsoNormal><b>Bug Fixes</b></p>
@ -3373,8 +3387,8 @@ survey software package.</p>
<p class=MsoNormal style='margin-left:36.0pt'><i>Core Functionality</i></p> <p class=MsoNormal style='margin-left:36.0pt'><i>Core Functionality</i></p>
<p class=MsoNormal style='margin-left:36.0pt'>New storage options have been <p class=MsoNormal style='margin-left:36.0pt'>New storage options have been implemented
implemented which give the user greater control of where data are stored. </p> which give the user greater control of where data are stored. </p>
<p class=MsoNormal style='margin-left:36.0pt'>Modules have been arranged into <p class=MsoNormal style='margin-left:36.0pt'>Modules have been arranged into
different groups in the configuration menus and tool tip texts have been added different groups in the configuration menus and tool tip texts have been added
@ -3396,9 +3410,9 @@ other data sources for the PAMGuard viewer. </p>
<p class=MsoNormal style='margin-left:36.0pt'><i>Database</i></p> <p class=MsoNormal style='margin-left:36.0pt'><i>Database</i></p>
<p class=MsoNormal style='margin-left:36.0pt'>Can now copy data from binary storage <p class=MsoNormal style='margin-left:36.0pt'>Can now copy data from binary
to the database offline for any module having both binary and database storage. storage to the database offline for any module having both binary and database
</p> storage. </p>
<p class=MsoNormal style='margin-left:36.0pt'>Can create a blank MS Access <p class=MsoNormal style='margin-left:36.0pt'>Can create a blank MS Access
database (2007 and later *.accdb formats only).</p> database (2007 and later *.accdb formats only).</p>
@ -3461,8 +3475,8 @@ inter-detection interval.</p>
margin-left:36.0pt'>&nbsp;</p> margin-left:36.0pt'>&nbsp;</p>
<p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm; <p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm;
margin-left:36.0pt'>Target Motion Analysis: Updated target motion analysis margin-left:36.0pt'>Target Motion Analysis: Updated target motion analysis module
module so that it works in three (as opposed to two) dimensions.</p> so that it works in three (as opposed to two) dimensions.</p>
<p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm; <p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm;
margin-left:36.0pt'>&nbsp;</p> margin-left:36.0pt'>&nbsp;</p>
@ -3549,8 +3563,8 @@ start-up.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug in Noise Monitor. Version 1.11.01 would crash if only a subset of </span>Bug in Noise Monitor. Version 1.11.01 would crash if only a subset of
channels were selected, e.g. if you only measured noise on channel 0 of a two channel channels were selected, e.g. if you only measured noise on channel 0 of a two
configuration. This bug is now fixed</p> channel configuration. This bug is now fixed</p>
<h2>Version 1.11.01 Beta April 2012</h2> <h2>Version 1.11.01 Beta April 2012</h2>
@ -3605,8 +3619,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bearings can be calculated using the envelope of the waveform rather </span>Bearings can be calculated using the envelope of the waveform rather than
than the full waveform. The waveform or envelope can also be filtered prior to the full waveform. The waveform or envelope can also be filtered prior to
bearing calculation.</p> bearing calculation.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
@ -3699,8 +3713,8 @@ the correct data stream. This has been fixed. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Whistle classifier has some new features in the classifier training </span>Whistle classifier has some new features in the classifier training
panel. It is also now possible to export training data files directly from panel. It is also now possible to export training data files directly from binary
binary data files. </p> data files. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -3825,8 +3839,8 @@ of channel numbering was only implemented several years into the PAMGUARD
project, it was never fully implemented or well supported by the different project, it was never fully implemented or well supported by the different
modules which resulted in a number of bugs which could cause confusion as to modules which resulted in a number of bugs which could cause confusion as to
which hydrophones were being used during localisation or during calibrated which hydrophones were being used during localisation or during calibrated
measurement. The situation tended to only arise with a small number of ASIO sound measurement. The situation tended to only arise with a small number of ASIO
cards such as the RME Fireface 400 on which the most useful inputs, the sound cards such as the RME Fireface 400 on which the most useful inputs, the
balanced line inputs, are hardware channels 4,5,6 and 7 on the back of the balanced line inputs, are hardware channels 4,5,6 and 7 on the back of the
instrument. (On the Fireface 800, the balanced line inputs are channels 0 to instrument. (On the Fireface 800, the balanced line inputs are channels 0 to
7). When using the National Instruments system, data were always sent into the 7). When using the National Instruments system, data were always sent into the
@ -3849,13 +3863,14 @@ out a better system for handling channel numbering in PAMGUARD and have decided
that the only practical thing to do is to force all software channel numbering that the only practical thing to do is to force all software channel numbering
back to a zero indexed system. i.e. even if you read out hardware channels back to a zero indexed system. i.e. even if you read out hardware channels
3,4,5 and 6, within PAMGUARD, everywhere apart from the Sound acquisition 3,4,5 and 6, within PAMGUARD, everywhere apart from the Sound acquisition
dialog, you will see them listed as channels 0,1,2 and 3. &nbsp;The consequences dialog, you will see them listed as channels 0,1,2 and 3. &nbsp;The
of doing this are mainly very good. Most users will not notice any changes. For consequences of doing this are mainly very good. Most users will not notice any
those who need for some reason to read channel numbers not starting at zero changes. For those who need for some reason to read channel numbers not
things will be more stable. However, when you go to a new version with this new starting at zero things will be more stable. However, when you go to a new
feature, it will be necessary to reconfigure all the modules in any existing version with this new feature, it will be necessary to reconfigure all the
configurations. To do this, open the configuration dialog for each module in modules in any existing configurations. To do this, open the configuration
turn and select the correct, zero indexed, channel number. </p> dialog for each module in turn and select the correct, zero indexed, channel
number. </p>
<p class=MsoNormal><b>Other Changes / new features</b></p> <p class=MsoNormal><b>Other Changes / new features</b></p>
@ -3912,8 +3927,8 @@ existing configurations. </p>
<p class=MsoNormal>Sound acquisition</p> <p class=MsoNormal>Sound acquisition</p>
<p class=MsoNormal>Changes made for a previous Mac build now incorporated into main <p class=MsoNormal>Changes made for a previous Mac build now incorporated into
Beta branch. This should allow for basic 2 channel sound acquisition using main Beta branch. This should allow for basic 2 channel sound acquisition using
Macs. </p> Macs. </p>
<p class=MsoNormal>Bug Fixes</p> <p class=MsoNormal>Bug Fixes</p>
@ -3950,12 +3965,12 @@ port is closed. Might prevent a few problems when using a GPS. </p>
<p class=MsoNormal><b>Bug Fixes</b></p> <p class=MsoNormal><b>Bug Fixes</b></p>
<p class=MsoNormal>Crashes caused in real time or Mixed Mode if the number of <p class=MsoNormal>Crashes caused in real time or Mixed Mode if the number of
software channels exceeds the number of hydrophones configured in the array software channels exceeds the number of hydrophones configured in the array manager.
manager. It is of course illogical to have software channels which are not It is of course illogical to have software channels which are not assigned to a
assigned to a hydrophone, so rather than entirely prevent PAMGUARD from hydrophone, so rather than entirely prevent PAMGUARD from crashing I have
crashing I have inserted additional checks into the hydrophone array dialog inserted additional checks into the hydrophone array dialog which will prevent
which will prevent the user from closing that dialog unless all software the user from closing that dialog unless all software channels are assigned to
channels are assigned to a hydrophone. </p> a hydrophone. </p>
<h2><span style='font-weight:normal'>Version 1.8.01 Beta February 2010</span></h2> <h2><span style='font-weight:normal'>Version 1.8.01 Beta February 2010</span></h2>
@ -4005,9 +4020,9 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family: <p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>False buffer overflows at low sample rates stopped (size of data in </span>False buffer overflows at low sample rates stopped (size of data in individual
individual data blocks had been increased at low sample rates, but when this data blocks had been increased at low sample rates, but when this exceeded 3s a
exceeded 3s a false buffer overflow would occur).</p> false buffer overflow would occur).</p>
<p class=MsoNormal>&nbsp;</p> <p class=MsoNormal>&nbsp;</p>
@ -4057,8 +4072,8 @@ arrays to give two polar angle coordinates. this can be used to resolve left
right ambiguity and is implemented for both the click and the whistle/moan right ambiguity and is implemented for both the click and the whistle/moan
detectors. As a result, the click detector bearing time display can now be set detectors. As a result, the click detector bearing time display can now be set
to go from -180 to 180 degrees rather than 0 - 180 degrees. In this case, to go from -180 to 180 degrees rather than 0 - 180 degrees. In this case,
clicks in the upper half of the bearing display will be to port and clicks in clicks in the upper half of the bearing display will be to port and clicks in the
the right half will be to starboard. As you pass a whale which is to port, the right half will be to starboard. As you pass a whale which is to port, the
clicks will move UP the display. In the long term, I hope to turn this display clicks will move UP the display. In the long term, I hope to turn this display
around so that time is up the screen rather than across.&nbsp; </p> around so that time is up the screen rather than across.&nbsp; </p>
@ -4106,8 +4121,9 @@ methods used in PAMGUARD</p>
<p class=MsoNormal><b>New Modules</b></p> <p class=MsoNormal><b>New Modules</b></p>
<p class=MsoNormal>Two new modules are packaged. These are still in the final stages <p class=MsoNormal>Two new modules are packaged. These are still in the final
of development. Feedback is most welcome. See online help for further details. </p> stages of development. Feedback is most welcome. See online help for further
details. </p>
<p class=MsoNormal>Whistle and Moan Detector</p> <p class=MsoNormal>Whistle and Moan Detector</p>
@ -4715,7 +4731,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<h2>0.5b&nbsp;&nbsp;&nbsp; 31 August 2007 </h2> <h2>0.5b&nbsp;&nbsp;&nbsp; 31 August 2007 </h2>
<p class=MsoNormal>Requires Java 6 Update 2 (http://java.com/en/download/manual.jsp)</p> <p class=MsoNormal>Requires Java 6 Update 2
(http://java.com/en/download/manual.jsp)</p>
<p class=MsoNormal>Major new features include:</p> <p class=MsoNormal>Major new features include:</p>
@ -4758,8 +4775,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoNormal>&nbsp;</p> <p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal><a name="_Toc312065304"></a><a name="_Toc312063949"></a><span <p class=MsoNormal><a name="_Toc312065304"></a><a name="_Toc312063949"></a><span
class=Heading2Char><span style='font-size:13.0pt'>1.0Beta 22 Jan 2008 - Pamguard class=Heading2Char><span style='font-size:13.0pt'>1.0Beta 22 Jan 2008 -
starts two releases, core and beta release</span></span>, </p> Pamguard starts two releases, core and beta release</span></span>, </p>
<p class=MsoNormal>this is the beta release</p> <p class=MsoNormal>this is the beta release</p>
@ -4831,12 +4848,12 @@ and Ishmael-type detectors and localisers. </p>
<p class=MsoNormal>Information from above modules can be displayed on <p class=MsoNormal>Information from above modules can be displayed on
configurable user displays which support real time scrolling spectrograms and configurable user displays which support real time scrolling spectrograms and
radar displays. Detection and localisation information can be optionally radar displays. Detection and localisation information can be optionally
displayed on the map display.Map enhancements include improved scrolling displayed on the map display.Map enhancements include improved scrolling whereby
whereby the user can click and drag to pan the area. PamGuard can now interface the user can click and drag to pan the area. PamGuard can now interface with
with MySQL database servers and users can easily select which information is MySQL database servers and users can easily select which information is logged.
logged. (This replaces the previous 'flat-file' logging feature). A simulation (This replaces the previous 'flat-file' logging feature). A simulation module
module allows virtual vocalising animals to be placed on the map to assist in allows virtual vocalising animals to be placed on the map to assist in training
training and development. Extensive online user help has been added to PamGuard and development. Extensive online user help has been added to PamGuard
Application</p> Application</p>
<h2>0.03b - first version used in a real 'at sea' environment.18/08/06</h2> <h2>0.03b - first version used in a real 'at sea' environment.18/08/06</h2>

View File

@ -4,7 +4,7 @@
<groupId>org.pamguard</groupId> <groupId>org.pamguard</groupId>
<artifactId>Pamguard</artifactId> <artifactId>Pamguard</artifactId>
<name>Pamguard Java12+</name> <name>Pamguard Java12+</name>
<version>2.02.08</version> <version>2.02.09</version>
<description>Pamguard for Java 12+, using Maven to control dependcies</description> <description>Pamguard for Java 12+, using Maven to control dependcies</description>
<url>www.pamguard.org</url> <url>www.pamguard.org</url>
<organization> <organization>

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.pamguard</groupId> <groupId>org.pamguard</groupId>
<artifactId>Pamguard</artifactId> <artifactId>Pamguard</artifactId>
<version>2.02.08</version> <version>2.02.09</version>
<name>Pamguard Java12+</name> <name>Pamguard Java12+</name>
<description>Pamguard for Java 12+, using Maven to control dependcies</description> <description>Pamguard for Java 12+, using Maven to control dependcies</description>
<url>www.pamguard.org</url> <url>www.pamguard.org</url>

View File

@ -31,12 +31,12 @@ public class PamguardVersionInfo {
* Version number, major version.minorversion.sub-release. * Version number, major version.minorversion.sub-release.
* Note: can't go higher than sub-release 'f' * Note: can't go higher than sub-release 'f'
*/ */
static public final String version = "2.02.08a"; static public final String version = "2.02.09";
/** /**
* Release date * Release date
*/ */
static public final String date = "30 May 2023"; static public final String date = "29 June 2023";
// /** // /**
// * Release type - Beta or Core // * Release type - Beta or Core

View File

@ -42,6 +42,7 @@ public abstract class CommandManager extends PamControlledUnit {
commandsList.add(new SetXMLSettings()); commandsList.add(new SetXMLSettings());
commandsList.add(new BatchStatusCommand()); commandsList.add(new BatchStatusCommand());
commandsList.add(new BatchCommand(this)); commandsList.add(new BatchCommand(this));
commandsList.add(new FindGUICommand());
} }

View File

@ -0,0 +1,27 @@
package PamController.command;
import PamController.PamController;
import PamView.GuiFrameManager;
public class FindGUICommand extends ExtCommand {
public FindGUICommand() {
super("findgui", true);
}
@Override
public String execute(String command) {
GuiFrameManager frameManager = PamController.getInstance().getGuiFrameManager();
if (frameManager == null) {
return "No GUI to move";
}
frameManager.findGUI();
return "GUI Moved";
}
@Override
public String getHint() {
return "Move GUI components to the main monitor";
}
}

View File

@ -47,7 +47,10 @@ public class PamCalendar {
public static TimeZone defaultTimeZone = TimeZone.getTimeZone("UTC"); public static TimeZone defaultTimeZone = TimeZone.getTimeZone("UTC");
private static TimeZone localTimeZone = TimeZone.getDefault(); /*
* Not used: all now handled in PamCalendar.
*/
// private static TimeZone localTimeZone = defaultTimeZone;// TimeZone.getDefault();
public static final long millisPerDay = 1000L*24L*3600L; public static final long millisPerDay = 1000L*24L*3600L;
@ -60,7 +63,7 @@ public class PamCalendar {
private static boolean soundFile; private static boolean soundFile;
/** /**
* time from the start of the file to the currentmoment. * time from the start of the file to the current moment.
* This is updated every time data re read from the file, so is * This is updated every time data re read from the file, so is
* accurate to about 1/10 second. * accurate to about 1/10 second.
* For accurate timing within detectors, always try to use sample number * For accurate timing within detectors, always try to use sample number
@ -177,8 +180,44 @@ public class PamCalendar {
public static TimeZone getDisplayTimeZone(boolean useLocal) { public static TimeZone getDisplayTimeZone(boolean useLocal) {
// return TimeZone.getTimeZone("UTC"); // return TimeZone.getTimeZone("UTC");
// return useLocal ? CalendarControl.getInstance().getChosenTimeZone() : defaultTimeZone; return useLocal ? CalendarControl.getInstance().getChosenTimeZone() : defaultTimeZone;
return useLocal ? localTimeZone : defaultTimeZone; // return useLocal ? localTimeZone : defaultTimeZone;
}
/**
* Get the display time zone offset in milliseconds.
* @param useLocal
* @return
*/
public static long getDisplayTimeZoneOffest(boolean useLocal) {
TimeZone tz = getDisplayTimeZone(useLocal);
return tz.getOffset(getTimeInMillis());
}
/**
* Get a short string describing the time zone. This should be less than
* 10 characters. So if the full name of the TZ is long, then write it
* in the format "UTC+..."
* @param useLocal
* @return
*/
public static String getShortDisplayTimeZoneString(boolean useLocal) {
TimeZone tz = getDisplayTimeZone(useLocal);
String str = tz.getDisplayName();
str = CalendarControl.getInstance().getTZCode(true);
if (str.length() <= 10) {
return str;
}
// otherwise make up a string.
long offset = getDisplayTimeZoneOffest(useLocal) / 1000;
boolean isInt = offset % 3600 == 0;
if (isInt) {
str = String.format("UTC%+d", offset/3600);
}
else {
str = String.format("UTC%+3.1f", (double) offset/3600.);
}
return str;
} }
public static String formatDateTime(Date date) { public static String formatDateTime(Date date) {
@ -391,8 +430,13 @@ public class PamCalendar {
public static String formatDBStyleTime(long timeInMillis, boolean showMillis, boolean useLocal) { public static String formatDBStyleTime(long timeInMillis, boolean showMillis, boolean useLocal) {
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
TimeZone tz = getDisplayTimeZone(useLocal);
// if (tz != null) {
// long offs = tz.getOffset(timeInMillis);
// timeInMillis += tz.getOffset(timeInMillis);
// }
c.setTimeInMillis(timeInMillis); c.setTimeInMillis(timeInMillis);
c.setTimeZone(getDisplayTimeZone(useLocal)); c.setTimeZone(tz);
DateFormat df; DateFormat df;
if (showMillis) { if (showMillis) {
df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
@ -400,7 +444,7 @@ public class PamCalendar {
else { else {
df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} }
df.setTimeZone(getDisplayTimeZone(useLocal)); df.setTimeZone(tz);
Date d = c.getTime(); Date d = c.getTime();
// return String.format("%tY-%<tm-%<td %<tH:%<tM:%<tS", d); // return String.format("%tY-%<tm-%<td %<tH:%<tM:%<tS", d);
@ -732,6 +776,7 @@ public class PamCalendar {
public static long msFromDateString(String dateString) { public static long msFromDateString(String dateString) {
return msFromDateString(dateString, false); return msFromDateString(dateString, false);
} }
/** /**
* Read a date string and turn it into a millisecond time. * Read a date string and turn it into a millisecond time.
* @param dateString * @param dateString

View File

@ -83,7 +83,7 @@ public class CalendarControl implements PamSettings{
@Override @Override
public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings) { public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings) {
timeDisplayParameters = ((TimeDisplayParameters) pamControlledUnitSettings.getSettings()).clone(); timeDisplayParameters = ((TimeDisplayParameters) pamControlledUnitSettings.getSettings()).clone();
return false; return true;
} }
public String getTZCode(boolean daylight) { public String getTZCode(boolean daylight) {

View File

@ -11,13 +11,17 @@ public class TimeDisplayParameters implements Serializable, Cloneable, ManagedPa
public static final long serialVersionUID = 1L; public static final long serialVersionUID = 1L;
public static final int TIME_ZONE_UTC = 0; public static final int TIME_ZONE_UTC = 0;
public static final int TIME_ZONE_PC = 1;
public static final int TIME_ZONE_OTHER = 1; public static final int TIME_ZONE_OTHER = 1;
public static final int TIME_ZONE_PC = 2;
public int zoneType = TIME_ZONE_UTC; public int zoneType = TIME_ZONE_UTC;
public TimeZone timeZone; public TimeZone timeZone;
public TimeDisplayParameters() {
super();
}
@Override @Override
protected TimeDisplayParameters clone() { protected TimeDisplayParameters clone() {
try { try {

View File

@ -29,7 +29,7 @@ public class TimeZoneDisplayDialog extends PamDialog {
private JLabel pcTimeZone; private JLabel pcTimeZone;
private String[] timeZoneIds; private String[] timeZoneIds;
private TimeDisplayParameters timeDisplayParameters; private TimeDisplayParameters timeDisplayParameters;
private TimeZone thisTimeZone; // private TimeZone thisTimeZone;
private int utcTZIndex, pcTZIndex; private int utcTZIndex, pcTZIndex;
private static TimeZoneDisplayDialog singleInstance; private static TimeZoneDisplayDialog singleInstance;
@ -57,8 +57,8 @@ public class TimeZoneDisplayDialog extends PamDialog {
c.gridy++; c.gridy++;
c.gridx = 0; c.gridx = 0;
JLabel ta = new JLabel(); JLabel ta = new JLabel();
ta.setText("<html>Note that all processing and data storage will continue to <p>use UTC, the selection " + ta.setText("<html>Note that all processing and data storage will continue to use UTC. <p>The selection " +
"you make here \nwill only affect what is displayed on the screen"); "you make here will only affect what is displayed on the screen.");
tzPanel.add(ta, c); tzPanel.add(ta, c);
ButtonGroup bg = new ButtonGroup(); ButtonGroup bg = new ButtonGroup();
@ -66,7 +66,7 @@ public class TimeZoneDisplayDialog extends PamDialog {
bg.add(usePC); bg.add(usePC);
bg.add(useOther); bg.add(useOther);
thisTimeZone = Calendar.getInstance().getTimeZone(); TimeZone pcTimeZone = TimeZone.getDefault();
timeZoneIds = TimeZone.getAvailableIDs(); timeZoneIds = TimeZone.getAvailableIDs();
Arrays.sort(timeZoneIds, new TimeZoneComparator()); Arrays.sort(timeZoneIds, new TimeZoneComparator());
TimeZone tz; TimeZone tz;
@ -76,7 +76,7 @@ public class TimeZoneDisplayDialog extends PamDialog {
if (timeZoneIds[i].equals(PamCalendar.defaultTimeZone.getID())) { if (timeZoneIds[i].equals(PamCalendar.defaultTimeZone.getID())) {
utcTZIndex = i; utcTZIndex = i;
} }
if (timeZoneIds[i].equals(thisTimeZone.getID())) { if (timeZoneIds[i].equals(pcTimeZone.getID())) {
pcTZIndex = i; pcTZIndex = i;
} }
if (tz.getRawOffset() < 0) { if (tz.getRawOffset() < 0) {
@ -118,7 +118,8 @@ public class TimeZoneDisplayDialog extends PamDialog {
useUTC.setSelected(timeDisplayParameters.zoneType == TimeDisplayParameters.TIME_ZONE_UTC); useUTC.setSelected(timeDisplayParameters.zoneType == TimeDisplayParameters.TIME_ZONE_UTC);
usePC.setSelected(timeDisplayParameters.zoneType == TimeDisplayParameters.TIME_ZONE_PC); usePC.setSelected(timeDisplayParameters.zoneType == TimeDisplayParameters.TIME_ZONE_PC);
useOther.setSelected(timeDisplayParameters.zoneType == TimeDisplayParameters.TIME_ZONE_OTHER); useOther.setSelected(timeDisplayParameters.zoneType == TimeDisplayParameters.TIME_ZONE_OTHER);
pcTimeZone.setText(String.format("(%s / %s)", thisTimeZone.getID(), thisTimeZone.getDisplayName())); TimeZone defaultTimeZone = TimeZone.getDefault();
pcTimeZone.setText(String.format("(%s / %s)", defaultTimeZone.getID(), defaultTimeZone.getDisplayName()));
enableControls(); enableControls();
showSelection(); showSelection();
} }
@ -165,7 +166,7 @@ public class TimeZoneDisplayDialog extends PamDialog {
} }
else if (usePC.isSelected()) { else if (usePC.isSelected()) {
timeDisplayParameters.zoneType = TimeDisplayParameters.TIME_ZONE_PC; timeDisplayParameters.zoneType = TimeDisplayParameters.TIME_ZONE_PC;
timeDisplayParameters.timeZone = thisTimeZone; timeDisplayParameters.timeZone = TimeZone.getDefault();
} }
else if (useOther.isSelected()) { else if (useOther.isSelected()) {
timeDisplayParameters.zoneType = TimeDisplayParameters.TIME_ZONE_OTHER; timeDisplayParameters.zoneType = TimeDisplayParameters.TIME_ZONE_OTHER;

View File

@ -633,5 +633,26 @@ public class GuiFrameManager implements PamSettings, PAMControllerGUI {
return frameIcon; return frameIcon;
} }
/**
* Function that can move GUI frames back onto the main window.
* Can be used to recover a GUI if it's on a monitor that is not present.
*/
public void findGUI() {
if (pamViewList == null) {
return;
}
int loc = 10;
for (PamViewInterface view : pamViewList) {
JFrame frame = view.getGuiFrame();
if (frame == null) {
continue;
}
frame.setLocation(loc, loc);
frame.setState(JFrame.NORMAL);
frame.setVisible(true);
loc += 20;
}
}
} }

View File

@ -223,32 +223,24 @@ public class PamGui extends PamView implements WindowListener, PamSettings {
PamSettingManager.getInstance().registerSettings(this); PamSettingManager.getInstance().registerSettings(this);
if (guiParameters.bounds != null) { if (guiParameters.bounds != null) {
/* // /*
* now need to check that the frame is visible on the // * now need to check that the frame is visible on the
* current screen - a pain when psf files are sent between // * current screen - a pain when psf files are sent between
* users, or when I work on two screens at work and then one // * users, or when I work on two screens at work and then one
* at home ! // * at home !
*/ // */
// Rectangle screenRect = ScreenSize.getScreenBounds(20000);
Rectangle screenRect = ScreenSize.getScreenBounds(); Point topCorner = guiParameters.bounds.getLocation();
// Rectangle intercept = screenRect.intersection(frame.getBounds()); boolean posOK = true;
if (screenRect == null) { try {
System.out.println("Unable to get screen dimensions from system"); posOK = ScreenSize.isPointOnScreen(topCorner);
} catch (Exception e) {
} }
else { if (!posOK) {
while (guiParameters.bounds.x + guiParameters.bounds.width < screenRect.x + 200) { // put it in the top corner of the main screen.
guiParameters.bounds.x += screenRect.width; guiParameters.bounds.x = guiParameters.bounds.y = 10;
}
while (guiParameters.bounds.x > screenRect.x+screenRect.width) {
guiParameters.bounds.x -= screenRect.width;
}
while (guiParameters.bounds.y + guiParameters.bounds.height < screenRect.y + 200) {
guiParameters.bounds.y += screenRect.height;
}
while (guiParameters.bounds.y > screenRect.y+screenRect.height) {
guiParameters.bounds.y -= screenRect.height;
}
} }
frame.setBounds(guiParameters.bounds); frame.setBounds(guiParameters.bounds);

View File

@ -3,6 +3,7 @@ package PamView;
import java.awt.GraphicsConfiguration; import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice; import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment; import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.util.List; import java.util.List;
@ -15,7 +16,7 @@ import javafx.scene.layout.Pane;
/** /**
* Class to launch a thread which will get the screen size * Class to launch a thread which will get the screen size
* (inlcuding the bounds of multiple monitors) * (including the bounds of multiple monitors)
* <p> * <p>
* The process of getting the dimensions is launched in a * The process of getting the dimensions is launched in a
* different thread and can be going on while other PAMGAURD * different thread and can be going on while other PAMGAURD
@ -32,40 +33,6 @@ public class ScreenSize {
private static Rectangle[] screenDimensions; private static Rectangle[] screenDimensions;
// private volatile static boolean hasRun = false;
//
// private ScreenSize() {
// //Problems with startup on Mac that
// //seem to have been caused by the
// //GetBounds not being invoked from within
// //the Event Display Thread
// //CJB 2009-06-15
//// SwingUtilities.invokeLater(new GetBounds());
// //old version
// //Thread thread = new Thread(new GetBounds());
// //thread.start();
// long m1 = System.currentTimeMillis();
// findScreenBounds();
// long m2 = System.currentTimeMillis();
// System.out.println("screen bounds took ms: " + (m2-m1));
// }
//
// /**
// * Only needs to be called once to
// * start the background process which gets
// * the virtual screen size.
// * <p>
// * Is called from PAMGUARD Main to get it
// * going asap.
// */
// public static void startScreenSizeProcess() {
// if (hasRun == false) {
// hasRun = true;
// new ScreenSize();
// }
//
// }
//
/** /**
* Gets the screen bounds, sum / union of all screens. * Gets the screen bounds, sum / union of all screens.
* @return Virtual screen size, or null. * @return Virtual screen size, or null.
@ -103,40 +70,6 @@ public class ScreenSize {
return screenDimensions[iScreen]; return screenDimensions[iScreen];
} }
// /**
// * Gets the virtual screen size. Will wait for them to be
// * extracted from the background thread up to some set timeout
// * @param maxWaitMillis Max time to wait.
// * @return virtual screen dimension, or null if unavailable
// * after the set wait period.
// */
// public static Rectangle getScreenBounds(int maxWaitMillis) {
//
// startScreenSizeProcess();
//
// long endTime = System.currentTimeMillis() + maxWaitMillis;
// while (System.currentTimeMillis() <= endTime) {
// if (screenDimension != null) {
// return screenDimension;
// }
// try {
// Thread.sleep(100);
// }
// catch (InterruptedException e) {
// return screenDimension;
// }
// }
// return screenDimension;
// }
//
// /**
// *
// * @return true if screen bounds are available.
// */
// public boolean haveScreenBounds() {
// return (screenDimension != null);
// }
private static Rectangle findScreenBounds() { private static Rectangle findScreenBounds() {
Rectangle virtualBounds = new Rectangle(); Rectangle virtualBounds = new Rectangle();
if (PamGUIManager.getGUIType() == PamGUIManager.NOGUI) { if (PamGUIManager.getGUIType() == PamGUIManager.NOGUI) {
@ -160,40 +93,50 @@ public class ScreenSize {
//let PAMGUARD start up a little quicker //let PAMGUARD start up a little quicker
//CJB 2009-06-15 //CJB 2009-06-15
GraphicsConfiguration dgc = gd.getDefaultConfiguration(); GraphicsConfiguration dgc = gd.getDefaultConfiguration();
// System.out.printf("", dgc.getBufferCapabilities().)
// System.out.println(dgc);
screenDimensions[j] = dgc.getBounds(); screenDimensions[j] = dgc.getBounds();
virtualBounds = virtualBounds.union(dgc.getBounds()); virtualBounds = virtualBounds.union(dgc.getBounds());
} }
} }
// new Pane();
// List<Screen> screens = Screen.getScreens();
// if (screens != null) {
// for (Screen aScreen : screens) {
// System.out.printf("Screen resX %d, resY %d\n",
// aScreen.getResolutionX(),
// aScreen.getResolutionY());
// }
// }
//System.out.println("virtualBounds="+virtualBounds);
return virtualBounds; return virtualBounds;
} }
/**
* Pushes a rectangle so that it's visible on the screen.
* @param bounds - will get modified in place.
* @return true if the position was changed.
*/
public static boolean forceBoundToScreen(Rectangle bounds) {
try {
if (isPointOnScreen(bounds.getLocation()) == false) {
bounds.x = bounds.y = 0;
return true;
}
} catch (Exception e) {
return false;
}
return false;
}
/**
* Test to see if the point is within the bounds of any available monitor
* @param point point
* @return true if it's within the bounds of any montor
* @throws Exception Thrown if there are no monitors.
*/
public static boolean isPointOnScreen(Point point) throws Exception {
if (screenDimensions == null || screenDimensions.length == 0) {
throw new Exception("No attached screens. Can't test point");
}
for (int i = 0; i < screenDimensions.length; i++) {
if (screenDimensions[i].contains(point)) {
return true;
}
}
return false;
}
// /**
// * Thread to obtain the screen bounds.
// * @author Doug
// *
// */
// public class GetBounds implements Runnable {
//
// @Override
// public void run() {
//
// screenDimension = findScreenBounds();
//
// }
//
// }
} }