Squashed commit of the following:

commit 514b398a10
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Mar 17 17:27:14 2025 +0000

    Help updates

    Small updates to Tethys and arraysensor helps

commit bbc47c595e
Merge: 6a8c9aff 3dbbdfbe
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 14 14:21:58 2025 +0000

    Merge branch 'main' of https://github.com/PAMGuard/PAMGuard

commit 6a8c9affbc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 14 14:21:51 2025 +0000

    Add export option to Calibrations table

commit 3dbbdfbe8f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 14 13:52:37 2025 +0000

    Add notify command

    Add notify command to try to debug notification handling. Send udp command notify with a single integer parameter, e.g. notify 16

commit dfadf25b5e
Merge: 6b63f14d 84d75dfa
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 14 13:17:48 2025 +0000

    Merge branch 'main' of https://github.com/PAMGuard/PAMGuard

commit 6b63f14d5d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 14 13:17:45 2025 +0000

    Update batch tasks for bearings

    update batch offline tasks so that they support the bearing localiser

commit 84d75dfa57
Author: Jamie Mac <macster110@gmail.com>
Date:   Wed Mar 12 11:42:06 2025 -0700

    Update readme.md

commit ccc59c7b79
Merge: c33ad180 78da90e2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Mar 12 12:59:40 2025 +0000

    Merge branch 'main' of https://github.com/PAMGuard/PAMGuard

commit c33ad18067
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Mar 12 12:55:54 2025 +0000

    Update FileMapMakingdialog.java

    update map making dialog to always fully dispose dialog

commit 78da90e23e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Mar 10 17:38:42 2025 +0000

    Update README.html

commit 38ec369a46
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Mar 10 17:09:52 2025 +0000

    Update whistleClassifier_Overview.html

    updated wsl classifier help with link to new model download page

commit 545e2b010a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Mar 10 13:47:21 2025 +0000

    Clip Display for DL

    Added a clip display for the deep learning classifier. Could do with more decoration.

commit 0941b3ab7f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sun Mar 9 18:55:38 2025 +0000

    Rocca graphics

    Added Rocca overlay graphics to RoccaLoggingDataBlock

commit f88be0ca3c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sat Mar 8 17:55:51 2025 +0000

    Species map choice

    species map choices for Detection Grouper based on content of Logger Form annotation.

commit 624024709a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 7 18:27:58 2025 +0000

    Species manager on logger forms

    Nearly working. Needs a bit of tweaking

commit e69520a0b5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Mar 7 10:44:11 2025 +0000

    Tethys funcs in ROCCA

commit 6bd7131255
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Mar 6 12:37:01 2025 +0000

    Revamp of Whistle Classifier

    Add Tethys output
    Mod data units so they show the start time and duration of classified whistle groups
    Add frequency output
    Refactor code to better separate graphics from functionality

commit 11bb7d5fe1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Mar 5 17:58:45 2025 +0000

    Fix array manager

    Fix so that it's possible to load a VERY old psf file that didn't have a lot of the new array managmeent features.

commit 2bf023ffed
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Mar 5 17:40:05 2025 +0000

    Tethys updates

    Started adding Tethys functions for click train detector and GPL detector

commit d3907ac8f5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Mar 5 16:19:21 2025 +0000

    Tethys improvements

    Better species sel panel in export dialog
    updated / corrected help
    Sorted 'final' button in export wizard.

commit cb9b41719f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Mar 4 17:35:12 2025 +0000

    Tethys updates

    adding localisation info to TM annotation
    Change granularity for group detections to gouped
    Added call type selection for all Detections exports.
    Added super detection into

commit c92be153fa
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Mar 4 11:35:47 2025 +0000

    update filter design dialog and help pages

    Include impulse response plot for IIR Filters

commit cadf61d218
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Mar 3 00:57:54 2025 +0000

    Impulse response plot for IIF filters

    Optional IIF filter impulse response plot.

commit 7b6466b06f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Feb 28 23:40:29 2025 +0000

    TEthys output of groups detector

commit 0365ebef36
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Feb 20 17:03:33 2025 +0000

    15f. DAQ SUD Bug fix

commit d6dc3839ac
Author: Jamie Mac <macster110@gmail.com>
Date:   Thu Feb 20 16:41:59 2025 +0000

    Fixes to Sound Acquisition module ()

    * Sound Acquisition fix

    Fix issue with subfolder check box not being using when loading data.
    Made sub folder default
    Added listener to sub folder button to redo file list.

    * Update .gitignore

    * Squashed commit of the following:

    commit 68ade16b39
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Wed Feb 19 16:26:44 2025 +0000

        Update MulticastController.java

        Small update to ignore a test message to Multicast controller which will probably never be sent anyway.

    commit f7a6138774
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Feb 18 16:31:08 2025 +0000

        buffer io of serialised datamaps

    commit 50154d99e7
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Sun Feb 16 13:38:19 2025 +0000

        V 2.02.15e

        Approaching a final release for PAMGuard Tethys workshop

    commit fce60115f0
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Feb 14 15:46:11 2025 +0000

        update to 2.02.15d

        Building 2.02.15d in prep for next major release

    commit 300570712b
    Merge: f476a56b e3b90946
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Fri Feb 14 15:17:14 2025 +0000

        Merge pull request  from macster110/main

        Minor fixes to deep leanring module

    commit f476a56bda
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Feb 14 14:38:14 2025 +0000

        Small fixes

        Added a 20 minute range to scrollers (common in some duty cycled data)
        Fixed issue 194 of Source dialog crashing in Noise Monitor due to null pointer before first selection of a datablock.
        Fixed issue 195: resetting of scrollers when datamap changes

commit 68ade16b39
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Feb 19 16:26:44 2025 +0000

    Update MulticastController.java

    Small update to ignore a test message to Multicast controller which will probably never be sent anyway.

commit f7a6138774
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Feb 18 16:31:08 2025 +0000

    buffer io of serialised datamaps

commit 50154d99e7
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sun Feb 16 13:38:19 2025 +0000

    V 2.02.15e

    Approaching a final release for PAMGuard Tethys workshop

commit fce60115f0
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Feb 14 15:46:11 2025 +0000

    update to 2.02.15d

    Building 2.02.15d in prep for next major release

commit 300570712b
Merge: f476a56b e3b90946
Author: Jamie Mac <macster110@gmail.com>
Date:   Fri Feb 14 15:17:14 2025 +0000

    Merge pull request  from macster110/main

    Minor fixes to deep leanring module

commit f476a56bda
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Feb 14 14:38:14 2025 +0000

    Small fixes

    Added a 20 minute range to scrollers (common in some duty cycled data)
    Fixed issue 194 of Source dialog crashing in Noise Monitor due to null pointer before first selection of a datablock.
    Fixed issue 195: resetting of scrollers when datamap changes
This commit is contained in:
Jamie Mac 2025-03-17 20:22:42 +00:00
parent d4a2678871
commit 426c71848a
31 changed files with 387 additions and 134 deletions

1
.gitignore vendored
View File

@ -143,3 +143,4 @@ dependency-reduced-pom.xml
.settings/org.eclipse.jdt.core.prefs
.settings/org.eclipse.core.resources.prefs
.classpath
.settings/org.eclipse.jdt.core.prefs

View File

@ -438,25 +438,26 @@ name="_2.02.15_December_2014"></a><a name="_Version_2.02.16_February"></a>Versio
<h2>New Features</h2>
<p class=MsoNormal><b>Updates to Tethys</b></p>
<p class=MsoNormal><b>Updates to Tethys Interface</b></p>
<p class=MsoNormal>Updates to compatibility with Tethys Server version 3.2 beta
2 and Nilus 3.2. PAMGuard is no longer compatible with 3.1, the pre-release
version. </p>
2 and Nilus 3.2. PAMGuard is no longer compatible with Tethys 3.1, the
pre-release version. </p>
<p class=MsoNormal>Added Tethys functionality for the following modules:
Whistle Classifier, Detection Group Localiser, Rocca, Click Train Detector, GPL
Detector. IF the Detection Group Localiser is used with Logger Form
Detector. If the Detection Group Localiser is used with Logger Form
annotations, species codes can be taken from the logger form. </p>
<p class=MsoNormal>Made export of data (Calibrations, Deployments, Detections,
and Localisations) available as offline tasks. This is not useful when
running Tethys on a single dataset, since all tasks can be easily performed
using Export buttons on the main Tethys interface. However, this change means
that these export tasks become available to the batch processor (Version 2.0 or
above) which can be used to export data from multiple similar datasets without
having to personally go into each one individually. See Tethys online help
pages and help pages for the Batch processor for details.</p>
that these export tasks become available to the <a
href="https://www.pamguard.org/plugins/batchprocessor.html">batch processor</a>
(Version 2.0 or above) which can be used to export data from multiple similar
datasets without having to personally go into each one individually. See Tethys
online help pages and help pages for the Batch processor for details.</p>
<p class=MsoNormal><b>Other</b></p>
@ -995,12 +996,11 @@ font-family:"Times New Roman",serif'>&nbsp;</span></p>
<p class=MsoNormal><b><span lang=EN-US>Localisation Modules</span></b><span
lang=EN-US> </span></p>
<p class=MsoNormal>Bearing and Group 3D localization modules have been
thoroughly tested and a number of bugs rectified. Documentation has been
developed and is available in the online help. Further, a number of example
configurations have been generated, configuration files for these are available
in the PAMGuard downloads area <a
href="http://www.PAMGuard.org/downloads.php?cat_id=3">here</a>.</p>
<p class=MsoNormal>Bearing and Group 3D localization modules have been thoroughly
tested and a number of bugs rectified. Documentation has been developed and is
available in the online help. Further, a number of example configurations have
been generated, configuration files for these are available in the PAMGuard
downloads area <a href="http://www.PAMGuard.org/downloads.php?cat_id=3">here</a>.</p>
<p class=MsoNormal><b><span lang=EN-US>Detection Group Localiser</span></b><span
lang=EN-US> </span></p>
@ -1111,8 +1111,8 @@ lang=EN-US> </span>new CPOD features </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>15. </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>Better interpolation of data by the Decimator when
decimating/upsampling by a non-integer amount </p>
lang=EN-US> </span>Better interpolation of data by the Decimator when decimating/upsampling
by a non-integer amount </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1239,8 +1239,9 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Added ability to receive NMEA over UDP multicast in addition to UDP broadcast </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><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;</span>
Added logger form annotation to Spectrogram Annotation module. </p>
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 logger form annotation to Spectrogram Annotation
module. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -2152,10 +2153,10 @@ including expanding to work with whistles.</p>
<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> </span>Added option to export all settings and parameters as an
XML-formatted file. Note that this required changes to the structure of the
Array Manager, and as such any settings (psf) files created with this version
of PAMGuard cannot be used in older versions. Older psf files can be loaded
with this version, but will be converted.</p>
XML-formatted file. Note that this required changes to the structure of the Array
Manager, and as such any settings (psf) files created with this version of
PAMGuard cannot be used in older versions. Older psf files can be loaded with
this version, but will be converted.</p>
<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
@ -2407,12 +2408,12 @@ compatible with older versions of PAMGuard. If you open older data sets with
the PAMGuard Viewer the older data will be converted to the new format (see
below for details).</span></p>
<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
data. This is intended to aid in offline analysis by making it easier for the
user to link what they are seeing on different PAMGuard displays and also to
link with any data post processed in Matlab or other custom analysis software.
UID's are also added to PAMGuard database tables. </span></p>
<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 data.
This is intended to aid in offline analysis by making it easier for the user to
link what they are seeing on different PAMGuard displays and also to link with
any data post processed in Matlab or other custom analysis software. UID's are
also added to PAMGuard database tables. </span></p>
<h4><span lang=EN-US>Converting Old Data</span></h4>
@ -2529,14 +2530,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
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 what get's plotted on each map and for how long became corrupted and the
list grew to a ridiculous size. Code has been put in place to a) stop it
happening again and b) to repair any configuration files which are corrupted.
Corrupted files will be slow to load, slow to save and will be &gt; several
megabytes in size. It may be necessary to delete the PAMGuardSettings table in
any databases since these too may have become oversized which will slow down
viewer mode PAMGuard start-up.</p>
</span><span lang=EN-US>Bug 308. Map Overlay Control. </span>Storage of data saying
what get's plotted on each map and for how long became corrupted and the list
grew to a ridiculous size. Code has been put in place to a) stop it happening
again and b) to repair any configuration files which are corrupted. Corrupted
files will be slow to load, slow to save and will be &gt; several megabytes in
size. It may be necessary to delete the PAMGuardSettings table in any databases
since these too may have become oversized which will slow down viewer mode
PAMGuard start-up.</p>
<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;
@ -2782,10 +2783,10 @@ the online help. Users of the Click Detector will notice the following changes:<
<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;
</span><span lang=EN-US>There is now a choice of least squares and Simplex
based algorithms for real-time animal tracking. The improved algorithms also
provide better error information both for display on the map and for storage in
the database. </span></p>
</span><span lang=EN-US>There is now a choice of least squares and Simplex based
algorithms for real-time animal tracking. The improved algorithms also provide
better error information both for display on the map and for storage in the
database. </span></p>
<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;
@ -2826,9 +2827,9 @@ the future. </span></p>
<p class=MsoNormal><i>Logger Form Design</i></p>
<p class=MsoNormal>A GUI driven system for designing Logger forms has been released.
Currently, this feature has no online help, but is reasonably intuitive
compared to the old method of typing directly into the database. </p>
<p class=MsoNormal>A GUI driven system for designing Logger forms has been
released. Currently, this feature has no online help, but is reasonably
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>
@ -3066,9 +3067,9 @@ will no longer crash but issue a clear warning and carry onto the next table.</p
name="_Toc312065299"></a><a name="_Toc312063944"></a><a name="_Toc312065300"></a><a
name="_Toc312063945"></a>Version 1.14.00 Beta, September 2015</h1>
<p class=MsoNormal>The format of configuration files has changed for version
1.14.00. Older configurations will load with this new version, but
configurations saved with 1.14.00 may not open correctly with earlier versions.</p>
<p class=MsoNormal>The format of configuration files has changed for version 1.14.00.
Older configurations will load with this new version, but configurations saved
with 1.14.00 may not open correctly with earlier versions.</p>
<p class=MsoNormal>PAMGuard Versions 1.14.00 and above will work with Java 8.
PAMGuard will continue to work with Java 7, but support for Java 7 will be
@ -3313,9 +3314,9 @@ crash when analyzing click event containing unclassified clicks</span></p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 230. Click Bearing Display. With a two hydrophone
system, clicks calculated to have a bearing of exactly 180 degrees would be
displayed at 0 degrees on the bearing time display.</span></p>
</span><span lang=EN-US>Bug 230. Click Bearing Display. With a two hydrophone system,
clicks calculated to have a bearing of exactly 180 degrees would be displayed
at 0 degrees on the bearing time display.</span></p>
<p class=MsoListParagraph style='margin-left:36.75pt;text-indent:-18.75pt'><span
lang=EN-US>&nbsp;</span></p>
@ -3408,9 +3409,8 @@ to read on a time. Fixed</p>
<p class=MsoNormal><i>Menu Layout</i></p>
<p class=MsoNormal>The PAMGuard menus have been rearranged into a more
intuitive grouping which we believe will help users find functionality more
easily. </p>
<p class=MsoNormal>The PAMGuard menus have been rearranged into a more 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
menu items within this menu were not directly to do with 'Detection'.</p>
@ -3547,9 +3547,9 @@ module. </p>
<p class=MsoNormal><i>Sound Recorder Module</i></p>
<p class=MsoNormal>Now supports writing 8 and 24 bit as well as 16 bit files.
Also writes data to dated sub folders, starting a new folder each day (UTC).
Also provides additional information on disk space on the main display panel.
<p class=MsoNormal>Now supports writing 8 and 24 bit as well as 16 bit files. Also
writes data to dated sub folders, starting a new folder each day (UTC). Also
provides additional information on disk space on the main display panel.
Millisecond time is also now included in the output file names. </p>
<p class=MsoNormal><i>Datagram Options</i></p>
@ -3586,9 +3586,8 @@ shaped Finite Impulse Response filters (see online help for details). </p>
<p class=MsoNormal><i>Radar Display</i></p>
<p class=MsoNormal>Can now show bearings relative to true North OR the vessel
heading. Also has the option of only showing certain types of click and
whistle.</p>
<p class=MsoNormal>Can now show bearings relative to true North OR the vessel heading.
Also has the option of only showing certain types of click and whistle.</p>
<p class=MsoNormal><b>Bug Fixes</b></p>
@ -3670,9 +3669,9 @@ survey software package.</p>
<p class=MsoNormal style='margin-left:36.0pt'>New storage options have been
implemented 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
different groups in the configuration menus and tool tip texts have been added
to these menus to provide additional information to users. &nbsp;</p>
<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 to these
menus to provide additional information to users. &nbsp;</p>
<p class=MsoNormal style='margin-left:36.0pt'><i>Radar Display</i></p>
@ -3778,8 +3777,8 @@ margin-left:36.0pt'>&nbsp;</p>
<p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-18.0pt'><i>Ishmael
Detection Modules</i></p>
<p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-18.0pt'>We have
implemented database storage for output of these modules. </p>
<p class=MsoListParagraph style='margin-left:54.0pt;text-indent:-18.0pt'>We
have implemented database storage for output of these modules. </p>
<p class=MsoNormal><b>Bug fixes</b></p>
@ -3961,9 +3960,9 @@ length. </p>
<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;
</span>The filter module can now also generate finite Impulse Response (FIR) filters.
Note however, that FIR filters may require considerably more execution time
than IIR filters. </p>
</span>The filter module can now also generate finite Impulse Response (FIR)
filters. Note however, that FIR filters may require considerably more execution
time than IIR filters. </p>
<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;
@ -4226,8 +4225,8 @@ column was setting to zero. This is now fixed</p>
<p class=MsoNormal>Ishmael Detectors</p>
<p class=MsoNormal>Better rendering of detection boxes on spectrogram display and
more meaningful names in spectrogram display menu.</p>
<p class=MsoNormal>Better rendering of detection boxes on spectrogram display
and more meaningful names in spectrogram display menu.</p>
<p class=MsoNormal>Sound acquisition</p>
@ -4300,9 +4299,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:
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 individual
data blocks had been increased at low sample rates, but when this exceeded 3s a
false buffer overflow would occur).</p>
</span>False buffer overflows at low sample rates stopped (size of data in
individual data blocks had been increased at low sample rates, but when this
exceeded 3s a false buffer overflow would occur).</p>
<p class=MsoNormal>&nbsp;</p>
@ -4476,8 +4475,8 @@ them before proceeding with installation.</p>
<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;
</span>Installer now setting permissions on some of the default settings files so
that under Vista they can still be written to without needed to be an
</span>Installer now setting permissions on some of the default settings files
so that under Vista they can still be written to without needed to be an
Administrator</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:

View File

@ -16,7 +16,7 @@ PAMGuard fulfils two main requirements within marine bioacoustics
2) **Processing and visualisation of large datasets**: Off-the-shelf autonomous PAM devices, large scale surveys involving drifters, towed arrays, gliders, bottom mounted devices and real time continuous monitoring system all generate huge volumes of data which requires automated analysis approaches. PAMGuard allows the processing of very large passive acoustic datasets using automated algorithms and crucially provides comprehensive visualisation tools for a manual analyst to check the results.
## Installation
PAMGuard is available on Windows and can be downloaded from the [PAMGuard website](https://pamguard.org). Note that we are considering MacOS and Linux installers but they are not available at this time.
PAMGuard is available on Windows and MacOS and can be downloaded from the [PAMGuard website](https://pamguard.org). Note that we are considering a Linux installer but it is not available at this time.
## Quick start tutorial
PAMGuard is a modular program with two modes; real-time and viewer. Typically a user will start with real-time model, either in the field collecting data or post processing sound files from a recorder. Once data are processed, users move on to viewer mode where data can be explored and further processed.

View File

@ -1,4 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Sat Feb 15 15:13:56 GMT 2025
#Fri Mar 14 18:57:04 GMT 2025
nilus-3.2.jar>=
nilus-3.2.pom>=

View File

@ -30,6 +30,7 @@ public abstract class CommandManager extends PamControlledUnit {
commandsList.add(new StartCommand());
commandsList.add(new StopCommand());
commandsList.add(new PingCommand());
commandsList.add(new NotifyCommand());
commandsList.add(new StatusCommand());
commandsList.add(new SummaryCommand());
commandsList.add(new SummaryPeekCommand());

View File

@ -0,0 +1,47 @@
package PamController.command;
import javax.swing.SwingUtilities;
import PamController.PamController;
public class NotifyCommand extends ExtCommand {
public NotifyCommand() {
super("notify", false);
}
@Override
public String getHint() {
return "Send an integer notification method to PamController";
}
@Override
public String execute(String command) {
String[] commandWords = CommandManager.splitCommandLine(command);
if (commandWords.length < 2) {
return "Notify command requires one parameter";
}
String pStr = commandWords[1];
int pInt = 0;
try {
pInt = Integer.valueOf(pStr);
}
catch (NumberFormatException e) {
return String.format("Command \"%s\" is not a valid parameter for the notiry command", pStr);
}
final int pInt2 = pInt;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
PamController.getInstance().notifyModelChanged(pInt2);
}
});
return null;
}
}

View File

@ -491,14 +491,14 @@ final public class PamModel implements PamSettings {
mi.setHelpPoint("utilities/tethys/docs/tethys_overview.html");
mi.setAllowedModes(PamPluginInterface.VIEWERONLY);
if (isViewer) {
// if (isViewer) {
mi = PamModuleInfo.registerControlledUnit(RavenControl.class.getName(), RavenControl.defaultName);
mi.setToolTipText("Import data from Raven selection tables");
mi.setModulesMenuGroup(utilitiesGroup);
mi.setHidden(!SMRUEnable.isEnable());
mi.setAllowedModes(PamPluginInterface.VIEWERONLY);
}
// }
/*
* ************* End Utilities Group *******************

View File

@ -241,7 +241,7 @@ public class UserFormAnnotationType extends DataAnnotationType<UserFormAnnotatio
// TODO Auto-generated method stub
return new SQLXMLWriter<>(this);
}
@Override
public DataBlockSpeciesManager getDataBlockSpeciesManager() {
if (formsAnnotationSpeciesManager == null) {

View File

@ -13,13 +13,16 @@ import javax.swing.JMenuItem;
import Localiser.LocalisationAlgorithm;
import Localiser.LocalisationAlgorithmInfo;
import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitSettings;
import PamController.PamController;
import PamController.PamControllerInterface;
import PamController.PamSettingManager;
import PamController.PamSettings;
import PamDetection.LocContents;
import PamUtils.SimpleObservable;
import PamguardMVC.PamDataBlock;
import PamguardMVC.PamDataUnit;
import bearinglocaliser.algorithms.BearingAlgorithm;
import bearinglocaliser.algorithms.BearingAlgorithmProvider;
@ -56,8 +59,12 @@ public class BearingLocaliserControl extends PamControlledUnit implements PamSet
private SimpleObservable<PamDataUnit> configObservable = new SimpleObservable<>();
private OLProcessDialog olProcessDialog;
private OfflineTaskGroup bearingTaskGroup;
private BLOfflineTask bearingOfflineTask;
public BearingLocaliserControl(String unitName) {
public BearingLocaliserControl(PamConfiguration pamConfiguration, String unitName) {
super(unitType, unitName);
detectionMonitor = new DetectionMonitor(this);
@ -74,6 +81,11 @@ public class BearingLocaliserControl extends PamControlledUnit implements PamSet
UserDisplayControl.addUserDisplayProvider(bearingDisplayProvider);
PamSettingManager.getInstance().registerSettings(this);
boolean secondConfig = pamConfiguration != PamController.getInstance().getPamConfiguration();
if (isViewer() || secondConfig) {
getOfflineTasks();
}
}
@ -114,13 +126,21 @@ public class BearingLocaliserControl extends PamControlledUnit implements PamSet
return menu;
}
/**
* Create single instance of offline tasks so that it can be created in
* constructor and get's registered for offline batch processing.
* @return
*/
private OfflineTaskGroup getOfflineTasks() {
bearingTaskGroup = new OfflineTaskGroup(this, this.getUnitName());
bearingTaskGroup.addTask(bearingOfflineTask = new BLOfflineTask(this));
return bearingTaskGroup;
}
protected void showOfflineDialog(Frame parentFrame) {
// if (olProcessDialog == null) {
OfflineTaskGroup otg = new OfflineTaskGroup(this, this.getUnitName());
otg.addTask(new BLOfflineTask(this));
otg.setPrimaryDataBlock(detectionMonitor.getParentDataBlock());
olProcessDialog = new OLProcessDialog(parentFrame, otg, getUnitName());
// }
OfflineTaskGroup otg = getOfflineTasks();
bearingTaskGroup.setPrimaryDataBlock(detectionMonitor.getParentDataBlock());
olProcessDialog = new OLProcessDialog(parentFrame, otg, getUnitName());
olProcessDialog.setVisible(true);
}
@ -288,4 +308,14 @@ public class BearingLocaliserControl extends PamControlledUnit implements PamSet
public LocalizationOptionsPanel getLocalizationOptionsPanel(Window parent, LocalizationBuilder locBuilder) {
return null;
}
public void setParentDataBlock(PamDataBlock sourceDataBlock) {
PamDataBlock parentblock = detectionMonitor.getParentDataBlock();
if (bearingTaskGroup != null) {
bearingTaskGroup.setPrimaryDataBlock(detectionMonitor.getParentDataBlock());
}
if (bearingOfflineTask != null) {
bearingOfflineTask.checkDataBlocks();
}
}
}

View File

@ -75,8 +75,10 @@ public class BearingProcess extends PamInstantProcess {
private void setSourceDataBlock() {
BearingLocaliserParams params = bearingLocaliserControl.getBearingLocaliserParams();
sourceDataBlock = PamController.getInstance().getDataBlockByLongName(params.getDataSource());
sourceDataBlock = bearingLocaliserControl.getPamConfiguration().getDataBlockByLongName(params.getDataSource());
setParentDataBlock(sourceDataBlock);
// need to tell offlinetasks in the controller that this has happened.
bearingLocaliserControl.setParentDataBlock(sourceDataBlock);
}

View File

@ -41,7 +41,7 @@ public class DetectionMonitor extends PamInstantProcess {
if (params.detectionSource == null) {
return;
}
PamDataBlock sourceData = PamController.getInstance().getDataBlockByLongName(params.detectionSource);
PamDataBlock sourceData = bearingLocaliserControl.getPamConfiguration().getDataBlockByLongName(params.detectionSource);
setParentDataBlock(sourceData);
if (sourceData != null) {
/*

View File

@ -17,16 +17,26 @@ public class BLOfflineTask extends OfflineTask {
private PamDataBlock detectionBlock, rawOrFFTBlock;
public BLOfflineTask(BearingLocaliserControl bearingLocaliserControl) {
super(bearingLocaliserControl.getDetectionMonitor().getParentDataBlock());
detectionBlock = bearingLocaliserControl.getDetectionMonitor().getParentDataBlock();
super(bearingLocaliserControl, bearingLocaliserControl.getDetectionMonitor().getParentDataBlock());
this.bearingLocaliserControl = bearingLocaliserControl;
bearingProcess = bearingLocaliserControl.getBearingProcess();
this.addRequiredDataBlock(rawOrFFTBlock = bearingProcess.getParentDataBlock());
addAffectedDataBlock(detectionBlock);
checkDataBlocks();
// PamDataBlock detectionSource = bearingLocaliserControl.getDetectionMonitor().getParentDataBlock();
// this.setParentDataBlock(detectionSource);
// setParentDataBlock(bearingProcess.getParentDataBlock());
}
/**
* do checks on the datablocks. Needed when this is running as an offline task since
* if was probably impossible to set these when it was constructed.
*/
public void checkDataBlocks() {
detectionBlock = bearingLocaliserControl.getDetectionMonitor().getParentDataBlock();
this.addRequiredDataBlock(rawOrFFTBlock = bearingProcess.getParentDataBlock());
setParentDataBlock(detectionBlock);
addAffectedDataBlock(detectionBlock);
}
@Override
public String getName() {
@ -103,4 +113,11 @@ public class BLOfflineTask extends OfflineTask {
}
@Override
public boolean canRun() {
// TODO Auto-generated method stub
super.canRun();
return true;
}
}

View File

@ -169,7 +169,7 @@ public class DataMapControl extends PamControlledUnit implements PamSettings {
getDataMapGUI().createDataGraphs();
dataMapPanel.repaintAll();
}
break;
// break;
case PamControllerInterface.OFFLINE_DATA_LOADED:
dataMapPanel.repaintAll();
}

View File

@ -23,6 +23,8 @@ public class FileMapMakingdialog extends PamDialog {
private static FileMapMakingdialog singleInstance;
private OfflineFileServer offlineFileServer;
private static Object synchObject = new Object();
private FileMapMakingdialog(Window parentFrame) {
super(parentFrame, "Map raw sound files", false);
@ -42,19 +44,35 @@ public class FileMapMakingdialog extends PamDialog {
getCancelButton().setVisible(false);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setModalityType(Dialog.ModalityType.MODELESS);
}
public static FileMapMakingdialog showDialog(Window parent, OfflineFileServer fileServer) {
if (singleInstance == null || singleInstance.getOwner() != parent) {
singleInstance = new FileMapMakingdialog(parent);
// copy the reference, just in case it's deleted in a call to setVisible(false)
FileMapMakingdialog anInstance = singleInstance;
synchronized (synchObject) {
if (singleInstance == null || singleInstance.getOwner() != parent) {
anInstance = singleInstance = new FileMapMakingdialog(parent);
}
}
singleInstance.offlineFileServer = fileServer;
singleInstance.progress.setIndeterminate(true);
singleInstance.fileName.setText(" ");
singleInstance.setVisible(true);
return singleInstance;
anInstance.offlineFileServer = fileServer;
anInstance.progress.setIndeterminate(true);
anInstance.fileName.setText(" ");
anInstance.setVisible(true);
return anInstance;
}
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible == false) {
synchronized(synchObject) {
super.dispose();
singleInstance = null;
}
}
}
public void setProgress(FileMapProgress mapProgress) {
switch (mapProgress.countingState) {
case FileMapProgress.STATE_LOADINGMAP:

View File

@ -20,6 +20,8 @@ public class PamConnection {
private Connection connection;
private SQLTypes sqlTypes;
private String databaseName;
/**
* Constructor needs a connection object and an sqlTypes object.
@ -61,4 +63,12 @@ public class PamConnection {
}
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
}

View File

@ -270,7 +270,9 @@ public class SqliteSystem extends DBSystem implements PamSettings {
return null;
}
// System.out.println("------------------------------- OpenedSQLite database " + dbName + " handle " + con);
return new PamConnection(this, con, sqlTypes);
PamConnection connection = new PamConnection(this, con, sqlTypes);
connection.setDatabaseName(dbName);
return connection;
}
@Override

View File

@ -211,6 +211,8 @@
<tocitem text="Detections and Localizations " target="utilities.tethys.docs.detect_localize" image="topic"/>
<tocitem text="Granularity " target="utilities.tethys.docs.tethys_granularity" image="topic"/>
<tocitem text="ITIS Species Codes " target="utilities.tethys.docs.tethys_speciescodes" image="topic"/>
<tocitem text="PAMGuard Mapping " target="utilities.tethys.docs.tethys_mappings" image="topic"/>

View File

@ -9,19 +9,60 @@
<body>
<h1>Analog Array Sensors</h1>
<h2>Displays</h2>
<p>Three different displays can be used to display array sensor
data.</p>
<h3>Table Display</h3>
<p>
A table of values is available which can be added to any <a
href="../../../displays/userDisplayHelp/docs/userDisplayPanel.html">PAMGuard
user display</a> from the <em>User Display / New Analog Array Sensors table</em> menu item.
</p>
<p>This will show the configuration and the latest value read from
each sensor channel in both it's raw and calibrated forms.</p>
<br>
<img alt="Accelerometer side panel" src="images/analogarraydisplay.png" />
<br>
<p>Hover the mouse over any item for additional information.</p>
<br>
<h3>Display Graphic</h3>
<p>
A geometry diagram can be added to any <a
href="../../../displays/userDisplayHelp/docs/userDisplayPanel.html">PAMGuard
user display</a> from the <em>User Display / New Analog Array Sensor graphic</em> menu item.
</p>
<p>This will show the configuration and the latest value read from
each sensor channel in both it's raw and calibrated forms.</p>
<br>
<img alt="Accelerometer side panel" src="images/arraydiagram.png" />
<br>
<p>This will show a moving graphic of the pitch and roll of the array, with the array heading at the top of the display, and
depth on the right.</p>
<h3>Side Panel</h3>
<p>
A side panel can also be added to the main PAMGuard displa by adding an additional
Array Orientation module from the <em>Display / Array Orientation</em> menu item.
This shows similar information to the other displays in numerical and graphical format.
</p>
<p>This will show the configuration and the latest value read from
each sensor channel in both it's raw and calibrated forms.</p>
<br>
<img alt="Accelerometer side panel" src="images/arraysidepanel2.png" height="200"/>
&nbsp
<img alt="Accelerometer side panel" src="images/arraysidepanel.png" height="200"/>
<br>
<br>
<p>For diagnostic purposes, a simple display is available which can be added to any
<a href="../../../displays/userDisplayHelp/docs/userDisplayPanel.html">PAMGuard user display</a>.</p>
<p>This will show the configuration and the latest value read from each sensor channel.</p>
<br>
<img alt="Accelerometer side panel" src="images/analogarraydisplay.png" />
<br>
<p>Hover the mouse over any item for additional information.</p>
<br>
<p CLASS="prevLink"><a href="analogarraycalibration.html">Previous: Calibration</a></p>
<p CLASS="prevLink">
<a href="analogarraycalibration.html">Previous: Calibration</a>
</p>
</body>
</html>

Binary file not shown.

After

(image error) Size: 16 KiB

Binary file not shown.

After

(image error) Size: 6.0 KiB

Binary file not shown.

After

(image error) Size: 4.1 KiB

View File

@ -31,9 +31,8 @@ img {
</div>
<br>
<p>
PAMGuard is compatible
with <a href="https://doi.org/10.5281/zenodo.13626338">Tethys 3.2 beta 2</a> or
later available for download from <a href="https://doi.org/10.5281/zenodo.13626338">Zenodo.</a>
PAMGuard is compatible with Tethys 3.2 beta 2 or
later available for download from <a href="https://tethys.sdsu.edu/install/">https://tethys.sdsu.edu/install/.</a>
</p>
<p>

View File

@ -287,6 +287,9 @@ public abstract class OfflineTask<T extends PamDataUnit> {
* @param dataBlockInfo required data block with pre and post load times.
*/
public void addRequiredDataBlock(RequiredDataBlockInfo dataBlockInfo) {
if (dataBlockInfo == null || dataBlockInfo.getPamDataBlock() == null) {
return;
}
if (requiredDatablocks == null) {
requiredDatablocks = new ArrayList<RequiredDataBlockInfo>();
}
@ -346,6 +349,9 @@ public abstract class OfflineTask<T extends PamDataUnit> {
* @param dataBlock affected data block.
*/
public void addAffectedDataBlock(PamDataBlock dataBlock) {
if (dataBlock == null) {
return;
}
if (affectedDataBlocks == null) {
affectedDataBlocks = new ArrayList<PamDataBlock>();
}
@ -381,7 +387,11 @@ public abstract class OfflineTask<T extends PamDataUnit> {
if (affectedDataBlocks == null || affectedDataBlocks.size() == 0) {
return null;
}
String blocks = affectedDataBlocks.get(0).getDataName();
PamDataBlock block0 = affectedDataBlocks.get(0);
if (block0 == null) {
return null;
}
String blocks = block0.getDataName();
for (int i = 1; i < affectedDataBlocks.size(); i++) {
blocks += "; " + affectedDataBlocks.get(i).getDataName();
}
@ -469,9 +479,43 @@ public abstract class OfflineTask<T extends PamDataUnit> {
}
for (PamDataBlock aBlock:affectedDataBlocks) {
if (isInputBlock(aBlock)) {
System.out.printf("Task %s: Don't delete data from \"%s\" since it input to this task",
this.getName(), aBlock.getLongDataName());
continue;
}
deleteOldData(aBlock, taskGroupParams);
}
}
/**
* See if the input to the task is the same as the output of
* the task. If this is the case, then FFS don't delete the input data.
* @return
*/
private boolean isInputBlock(PamDataBlock aDataBlock) {
if (parentDataBlock == aDataBlock) {
return true;
}
return false;
}
/**
* See if the data block is one of the required datablocks.
* @param aDataBlock
* @return
*/
private boolean isRequiredBlock(PamDataBlock aDataBlock) {
if (requiredDatablocks != null) {
for (int i = 0; i < requiredDatablocks.size(); i++) {
RequiredDataBlockInfo blockInf = requiredDatablocks.get(i);
if (blockInf != null && blockInf.getPamDataBlock() == aDataBlock) {
return true;
}
}
}
return false;
}
/**
* Delete the old data before re-analysis. Any sub detections are removed from the

View File

@ -871,6 +871,9 @@ public class OfflineTaskGroup implements PamSettings {
for (int i = 0; i < requiredDataBlocks.size(); i++) {
RequiredDataBlockInfo blockInfo = requiredDataBlocks.get(i);
PamDataBlock aDataBlock = blockInfo.getPamDataBlock();
if (aDataBlock == null) {
continue;
}
long reqStart = procDataStart - blockInfo.getPreLoadTime();
long reqEnd = procDataEnd + blockInfo.getPostLoadTime();
// if (aDataBlock.getCurrentViewDataStart() > reqStart ||

View File

@ -271,13 +271,15 @@ public class OfflineTaskManager implements TaskMonitor {
groupParams.deleteOld = true;
groupParams.taskNote = "Batch process at " + PamCalendar.formatDBDateTime(System.currentTimeMillis());
int nT = taskGroup.getNTasks();
boolean sameIO = false;
for (int i = 0; i < nT; i++) {
OfflineTask task = taskGroup.getTask(i);
String taskName = task.getLongName();
boolean enable = commandLineTasks.contains(taskName);
groupParams.setTaskSelection(i, enable);
System.out.printf("Set task eneable state for %s : %s in %s\n", taskName, enable, taskGroup.getUnitType());
System.out.printf("Set task enable state for %s : %s in %s\n", taskName, enable, taskGroup.getUnitType());
}
System.out.println("Tasks in group is now " + taskGroup.getNTasks());
}
/*

View File

@ -413,26 +413,31 @@ public class AcousticScrollerFX extends AbstractPamScrollerFX {
//removing the sync lock here was reallt helpful in preventing lock ups - especially because the datagram does not
//load wghen the scroller moves.
//synchronized (acousticScrollerGraphics.getDataBlock().getSynchLock()) {
while (it.hasNext()) {
while (it.hasNext()) {
// if (count%500==0){
// AcousticDataGramGraphics acousticDataGramGraphics=(AcousticDataGramGraphics) acousticScrollerGraphics;
// System.out.println("Hello datagram load: " + count+ " "+ acousticScrollerGraphics.getDataBlock().getUnitsCount() +
// " "+acousticDataGramGraphics.getDataGramStore().currentIndex);
// }
// count++;
currentCount++;
// if (count%500==0){
// AcousticDataGramGraphics acousticDataGramGraphics=(AcousticDataGramGraphics) acousticScrollerGraphics;
// System.out.println("Hello datagram load: " + count+ " "+ acousticScrollerGraphics.getDataBlock().getUnitsCount() +
// " "+acousticDataGramGraphics.getDataGramStore().currentIndex);
// }
// count++;
currentCount++;
try {
acousticScrollerGraphics.addNewData(it.next());
if (this.isCancelled()){
return;
}
Platform.runLater(()->{
repaint(30);
});
}
catch (Exception e) {
System.err.println("Error in AcousticScrollerFX: " + e.getMessage());
}
if (this.isCancelled()){
return;
}
Platform.runLater(()->{
repaint(30);
});
}
//}
}

View File

@ -135,7 +135,6 @@ public class Pamguard {
String InputPsf = "NULL";
// set up the system to output to both a log file and the console window. Also
// set up a monitor to check for the size of the folder every hour - if it gets
// too big, just stop logging the messages

View File

@ -8,12 +8,15 @@ import java.io.Serializable;
import java.util.ArrayList;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import PamController.PamConfiguration;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitSettings;
import PamController.PamController;
import PamController.PamSettingManager;
import PamController.PamSettings;
import generalDatabase.DBControlUnit;
import ravendata.swing.RavenImportDialog;
/**
@ -81,6 +84,18 @@ public class RavenControl extends PamControlledUnit implements PamSettings {
if (ravenData != null) {
ravenProcess.createPAMGuardData(fileReader, ravenData);
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
PamController.getInstance().notifyModelChanged(PamController.EXTERNAL_DATA_IMPORTED);
}
});
DBControlUnit dbControl = DBControlUnit.findDatabaseControl();
if (dbControl != null) {
dbControl.commitChanges();
}
}
/**

View File

@ -90,6 +90,7 @@ public class RavenProcess extends PamProcess {
/**
* Had to add an offset for some messed up Raven data. May or may not have to include
* this as an option in future releases.
* Offset of 2843100 needed for mn23_055a tag data.
*/
long offsetMillis = 0;//2843100;

View File

@ -118,8 +118,17 @@ public class CalibrationsTable extends TethysGUIPanel {
showCalibration(doc);
}
});
popMenu.add(menuItem);
menuItem = new JMenuItem("Export document " + doc.getDocumentName());
menuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exportCalibration(doc);
}
});
popMenu.add(menuItem);
}
popMenu.addSeparator();
if (n > 1) {
menuItem = new JMenuItem("Delete selected documents");
@ -168,6 +177,11 @@ public class CalibrationsTable extends TethysGUIPanel {
}
protected void exportCalibration(DocumentNilusObject<Calibration> doc) {
tethysControl.exportDocument(Collection.Calibrations.toString(), doc.getDocumentName());
}
protected void deleteCalibrations(int[] rows) {
String msg = String.format("Are you sure you want to delete %d calibrations documents ?", rows.length);
int ans = WarnOnce.showNamedWarning("Deletemanycalibrations", PamController.getMainFrame(), "Delete multiple documents", msg, WarnOnce.OK_CANCEL_OPTION);

View File

@ -258,6 +258,7 @@ public class TethysConnectionPanel extends TethysGUIPanel {
TethysExportParams newParams = SelectServerdDialog.showDialog(getTethysControl(), getTethysControl().getGuiFrame(), getTethysControl().getTethysExportParams());
if (newParams != null) {
getTethysControl().checkServer();// sendStateUpdate(new TethysState(TethysState.StateType.UPDATESERVER));
fillServerControl();
}
}