diff -Nru opencpn-plugin-br24radar-2.1.0/CMakeLists.txt opencpn-plugin-br24radar-3.0.1/CMakeLists.txt --- opencpn-plugin-br24radar-2.1.0/CMakeLists.txt 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/CMakeLists.txt 2017-09-24 10:58:54.000000000 +0000 @@ -15,9 +15,11 @@ SET(VERBOSE_NAME BR24Radar) SET(TITLE_NAME BR24Radar) SET(CPACK_PACKAGE_CONTACT "kees@verruijt.net") - -SET(VERSION_MAJOR "2") -SET(VERSION_MINOR "1") +SET(VERSION_MAJOR "3") +#SET(CMAKE_BUILD_TYPE Debug) +SET(VERSION_MINOR "0") +SET(VERSION_PATCH "0") +SET(VERSION_DATE "2017-09-24") INCLUDE("cmake/PluginConfigure.cmake") @@ -42,6 +44,8 @@ src/br24OptionsDialog.cpp src/br24Receive.h src/br24Receive.cpp + src/RadarMarpa.h + src/RadarMarpa.cpp src/br24Transmit.h src/br24Transmit.cpp src/icons.h @@ -50,6 +54,9 @@ src/GuardZone.cpp src/GuardZoneBogey.h src/GuardZoneBogey.cpp + src/Kalman.h + src/Kalman.cpp + src/Matrix.h src/RadarInfo.h src/RadarInfo.cpp src/RadarCanvas.h @@ -91,6 +98,7 @@ INCLUDE_DIRECTORIES(src/wxJSON) INCLUDE_DIRECTORIES(src) + IF(WIN32) SET(wxWidgets_USE_LIBS base core net adv gl aui) SET(BUILD_SHARED_LIBS TRUE) @@ -99,6 +107,17 @@ ADD_LIBRARY(${PACKAGE_NAME} SHARED ${SRC_br24radar} ${SRC_NMEA0183} ${SRC_JSON}) +SET(TEST_KALMAN kalman-test) +SET(SRC_KALMAN + src/Kalman-test.cpp + src/Kalman.h + src/Kalman.cpp + src/Matrix.h + src/RadarMarpa.h +) +ADD_EXECUTABLE(${TEST_KALMAN} ${SRC_KALMAN}) +TARGET_LINK_LIBRARIES(${TEST_KALMAN} ${wxWidgets_LIBRARIES}) + INCLUDE("cmake/PluginInstall.cmake") INCLUDE("cmake/PluginLocalization.cmake") INCLUDE("cmake/PluginPackage.cmake") diff -Nru opencpn-plugin-br24radar-2.1.0/debian/changelog opencpn-plugin-br24radar-3.0.1/debian/changelog --- opencpn-plugin-br24radar-2.1.0/debian/changelog 2016-08-26 12:37:33.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/debian/changelog 2017-09-24 15:46:14.000000000 +0000 @@ -1,3 +1,113 @@ +opencpn-plugin-br24radar (3.0.1-0~precise1) precise; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~trusty1) trusty; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~vivid1) vivid; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~wily1) wily; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~xenial1) xenial; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~yakkety1) yakkety; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~zesty1) zesty; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.1-0~artful1) artful; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:37:04 -0500 +opencpn-plugin-br24radar (3.0.0-0~yakkety1) yakkety; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:34:54 -0500 +opencpn-plugin-br24radar (3.0.0-0~zesty1) zesty; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:34:54 -0500 +opencpn-plugin-br24radar (3.0.0-0~artful1) artful; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:34:54 -0500 +opencpn-plugin-br24radar (3.0.0-0~precise1) precise; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~trusty1) trusty; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~vivid1) vivid; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~wily1) wily; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~xenial1) xenial; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~yakkety1) yakkety; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~zesty1) zesty; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~artful1) artful; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:20:32 -0500 +opencpn-plugin-br24radar (3.0.0-0~xenial1) xenial; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:15:23 -0500 +opencpn-plugin-br24radar (3.0.0-0~yakkety1) yakkety; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:15:23 -0500 +opencpn-plugin-br24radar (3.0.0-0~zesty1) zesty; urgency=low + + * Version 3.0 + + -- Pavel Kalian Sun, 24 Sep 2017 10:15:23 -0500 opencpn-plugin-br24radar (2.1.0-0~precise1) precise; urgency=low * Version 2.1.0 Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/3g.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/3g.pcap.gz differ diff -Nru opencpn-plugin-br24radar-2.1.0/example/3g-report.log opencpn-plugin-br24radar-3.0.1/example/3g-report.log --- opencpn-plugin-br24radar-2.1.0/example/3g-report.log 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/example/3g-report.log 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,42 @@ +18:08:24 CEST: BR24radar_pi: Radar received unknown report 8 bytes: 0D F5 1D 00 02 00 04 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 00 00 07 00 01 00 00 00 00 E7 39 0C 00 00 04 09 00 00 00 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 01 00 06 00 01 00 00 00 00 C6 7A 0A 00 00 85 0A 00 00 00 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 02 00 05 00 01 00 00 00 00 A5 BB 08 00 00 A0 0C 00 00 00 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 03 00 04 00 01 00 00 00 00 EC 57 07 00 00 C7 0F 00 00 01 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 04 00 07 00 02 00 00 00 80 EE 6C 06 00 00 09 12 00 00 01 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 05 00 03 00 01 00 00 00 00 F1 81 05 00 00 0A 15 00 00 01 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 06 00 05 00 02 00 00 00 80 F3 96 04 00 00 3F 19 00 00 01 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 07 00 02 00 01 00 00 00 00 F6 AB 03 00 00 8F 1F 00 00 02 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 08 00 07 00 04 00 00 00 40 77 36 03 00 00 11 24 00 00 02 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 09 00 03 00 02 00 00 00 80 F8 C0 02 00 00 14 2A 00 00 02 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 0A 00 06 00 05 00 00 00 00 FA 33 02 00 00 99 34 00 00 02 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 0B 00 01 00 01 00 00 00 00 99 DD 01 00 00 1E 3F 00 00 03 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 0C 00 06 00 07 00 25 49 92 5E 99 01 00 00 A3 49 00 00 03 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 0D 00 05 00 07 00 49 92 24 24 55 01 00 00 5D 58 00 00 03 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 0E 00 03 00 05 00 00 00 00 8F 1E 01 00 00 32 69 00 00 03 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 0F 00 01 00 02 00 00 00 80 39 FA 00 00 00 3C 7E 00 00 04 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 10 00 03 00 07 00 DB B6 6D 7A D6 00 00 00 46 93 00 00 04 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 11 00 03 00 08 00 00 00 20 AB BB 00 00 00 4F A8 00 00 04 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 12 00 01 00 03 00 00 00 00 D1 A6 00 00 00 59 BD 00 00 04 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 13 00 01 00 04 00 00 00 00 F8 7F 00 00 00 77 FC 00 00 05 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 14 00 02 00 09 00 00 00 00 C0 71 00 00 00 06 1C 01 00 05 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 15 00 02 00 0B 00 17 5D 74 11 5D 00 00 00 24 5B 01 00 05 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 16 00 02 00 0D 00 00 00 00 C0 4E 00 00 00 42 9A 01 00 05 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 17 00 02 00 0F 00 00 00 00 48 46 00 00 00 5F D9 01 00 06 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 18 00 01 00 09 00 55 55 55 91 3A 00 00 00 0C 38 02 00 06 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 19 00 01 00 0B 00 74 D1 45 EB 2F 00 00 00 48 B6 02 00 06 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 1A 00 01 00 0D 00 00 00 00 8C 28 00 00 00 83 34 03 00 06 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 1B 00 01 00 0F 00 00 00 00 65 23 00 00 00 BF B2 03 00 07 00 +18:08:24 CEST: BR24radar_pi: Radar received unknown report 22 bytes: 0C F5 1C 00 01 00 12 00 55 55 D5 7E 1D 00 00 00 18 70 04 00 07 00 +18:08:24 CEST: BR24radar_pi: Radar received BR24 report 16 bytes: 0F F5 A0 CF 5D 00 48 1B 38 00 A0 BA 22 00 02 00 +18:08:25 CEST: BR24radar_pi: Radar received unknown report 780 bytes: 07 C4 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 5A 00 00 00 00 00 00 00 10 00 00 00 80 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF 00 10 00 00 FF FF FF FF 00 60 00 00 00 60 00 00 00 50 00 00 00 80 0C 00 11 A2 FD FF 99 9D 06 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 FF FF FF FF 00 70 00 00 28 00 00 00 00 D0 FF FF 00 B0 00 00 00 00 00 00 99 9D 06 00 F5 10 04 00 7A B4 00 00 28 00 00 00 28 00 00 00 50 00 00 00 14 00 00 00 2A 3A 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 01 00 00 00 00 00 0F 00 00 00 00 80 00 00 F7 11 00 00 39 00 00 00 00 A0 00 00 AB 2A 00 00 87 BA 00 00 00 10 00 00 00 00 00 00 0A 00 00 00 08 00 00 00 00 00 00 00 2B 00 00 00 00 20 00 00 AB 2A 00 00 16 00 00 00 43 00 00 00 6F 00 00 00 6F 00 00 00 6F 00 00 00 6F 00 00 00 6F 00 00 00 AB 2A 00 00 00 20 00 00 55 15 00 00 AB 0A 00 00 AB 0A 00 00 AB 0A 00 00 AB 0A 00 00 AB 0A 00 00 00 60 05 00 00 8C 05 00 40 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 20 00 00 00 00 00 00 80 00 00 00 5A 00 00 00 00 00 00 00 00 00 00 00 C0 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00 0F 00 00 00 00 02 00 00 01 00 00 00 01 00 00 00 0A 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D0 FF FF 00 00 00 00 00 00 00 00 78 0E 00 00 99 34 00 00 00 60 00 00 99 9D 06 00 F5 10 04 00 7A B4 00 00 00 C0 F9 FF A0 0F 00 00 00 90 01 00 33 53 00 00 00 D0 FF FF 28 00 00 00 00 C0 03 00 00 B0 00 00 28 00 00 00 50 00 00 00 00 50 00 00 00 01 00 00 00 C0 03 00 00 00 00 00 14 00 00 00 00 A0 00 00 01 00 00 00 03 00 00 00 00 E0 00 00 00 40 01 00 00 C0 03 00 00 80 0C 00 00 01 00 00 00 C0 03 00 2A 3A 0A 00 00 00 00 00 00 60 00 00 00 70 00 00 00 B8 FF FF 00 40 01 00 00 00 00 00 00 A0 00 00 00 00 00 00 00 40 01 00 00 00 00 00 00 A0 00 00 00 C0 03 00 00 E0 01 00 40 00 00 00 40 00 00 00 00 D0 FF FF 25 00 00 00 00 20 01 00 00 00 00 00 A0 86 01 00 00 E0 01 00 00 18 00 00 43 5C 00 00 0C 00 00 00 10 00 00 00 00 E0 01 00 01 00 00 00 00 44 00 00 3D 5A 00 00 03 00 00 00 04 00 00 00 07 00 00 00 0B 00 00 00 03 00 00 00 0B 00 00 00 01 00 00 00 09 00 00 00 0B 00 00 00 0B 00 00 00 0B 00 00 00 0B 00 00 00 01 10 FF FF 20 A1 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +18:08:25 CEST: BR24radar_pi: Radar received report_08 18 bytes: 08 C4 01 01 00 00 00 00 00 C0 F0 00 00 00 00 00 00 00 +18:08:25 CEST: BR24radar_pi: Radar received unknown report 129 bytes: 03 C4 08 00 5E 66 08 00 5E 66 00 00 01 00 1E 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C 00 00 00 15 00 00 00 E8 03 00 00 40 C8 06 00 02 00 01 00 03 00 00 00 00 00 00 00 4F 00 63 00 74 00 20 00 32 00 35 00 20 00 32 00 30 00 31 00 32 00 00 00 00 00 00 00 00 00 00 00 31 00 32 00 3A 00 30 00 31 00 3A 00 31 00 33 00 20 00 33 00 38 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 +18:08:25 CEST: BR24radar_pi: Radar received report_04 66 bytes: 04 C4 00 00 00 00 64 00 00 00 A0 0F 00 00 98 3A 00 00 00 00 00 00 00 00 00 00 3C 00 00 00 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +18:08:27 CEST: BR24radar_pi: Radar received BR24 report 16 bytes: 0F F5 90 31 5C 00 78 13 38 00 08 80 22 00 14 00 +18:08:28 CEST: BR24radar_pi: Radar range=926, angle=1 hdg=17851 12 bytes: 18 02 13 03 00 44 0D 0E 01 00 BB 45 +18:08:29 CEST: BR24radar_pi: Radar received BR24 report 16 bytes: 0F F5 38 16 5C 00 78 13 38 00 38 78 22 00 14 00 +18:08:30 CEST: BR24radar_pi: Radar received familiar report 46 bytes: 13 F5 94 4D 4C 00 2A 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 2A E1 00 00 FE E0 00 00 2B 00 00 00 60 58 0F 00 B0 01 00 00 +18:08:30 CEST: BR24radar_pi: Radar range=926, angle=1 hdg=17852 12 bytes: 18 02 F0 0A 00 44 0D 0E 01 00 BC 45 +18:08:31 CEST: BR24radar_pi: Radar received report_08 18 bytes: 08 C4 01 01 00 00 00 00 00 C0 F0 00 00 00 00 00 00 00 +18:08:31 CEST: BR24radar_pi: Radar received BR24 report 16 bytes: 0F F5 38 16 5C 00 78 13 38 00 38 78 22 00 14 00 Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/3g-trueheading.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/3g-trueheading.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/4g-heading.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/4g-heading.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/4g-noheading.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/4g-noheading.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/4g-ranges-km.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/4g-ranges-km.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/4g-ranges-nm.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/4g-ranges-nm.pcap.gz differ diff -Nru opencpn-plugin-br24radar-2.1.0/example/4g-report.log opencpn-plugin-br24radar-3.0.1/example/4g-report.log --- opencpn-plugin-br24radar-2.1.0/example/4g-report.log 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/example/4g-report.log 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,4 @@ +18:09:34 CEST: BR24radar_pi: Radar range=780, angle=0 hdg=-32768 12 bytes: 18 02 68 04 00 44 80 00 00 00 00 80 +18:09:36 CEST: BR24radar_pi: Radar received report_08 18 bytes: 08 C4 00 01 00 00 00 00 00 C0 F0 00 00 00 00 00 00 00 +18:09:36 CEST: BR24radar_pi: Radar received report_04 66 bytes: 04 C4 00 00 00 00 0A 00 00 00 58 1B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +18:09:36 CEST: BR24radar_pi: Radar received unknown report 129 bytes: 03 C4 01 00 05 00 54 00 02 00 0E 00 EC 07 00 00 00 00 24 01 00 00 00 00 01 00 00 00 00 00 0D 00 00 00 CE 01 00 00 01 00 00 00 60 2C 0A 00 02 00 02 00 04 00 00 00 01 00 00 00 4F 00 63 00 74 00 20 00 32 00 36 00 20 00 32 00 30 00 31 00 32 00 00 00 00 00 00 00 00 00 00 00 31 00 37 00 3A 00 30 00 32 00 3A 00 33 00 39 00 20 00 35 00 37 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/br24-ranges-km.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/br24-ranges-km.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/br24-ranges-nm.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/br24-ranges-nm.pcap.gz differ diff -Nru opencpn-plugin-br24radar-2.1.0/example/br24-report.log opencpn-plugin-br24radar-3.0.1/example/br24-report.log --- opencpn-plugin-br24radar-2.1.0/example/br24-report.log 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/example/br24-report.log 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,6 @@ +18:10:02 CEST: BR24radar_pi: Radar range=525, angle=1 hdg=-28108 12 bytes: 18 02 80 09 00 44 0D 0E 01 00 34 92 +18:10:02 CEST: BR24radar_pi: Radar received BR24 report 16 bytes: 0F F5 D9 1A 00 00 BD 0F 00 00 CA 09 00 00 14 00 +18:10:05 CEST: BR24radar_pi: Radar range=525, angle=1 hdg=-28108 12 bytes: 18 02 80 01 00 44 0D 0E 01 00 34 92 +18:10:06 CEST: BR24radar_pi: Radar received BR24 report 16 bytes: 0F F5 EC 1A 00 00 C9 0F 00 00 D2 09 00 00 14 00 +18:10:06 CEST: BR24radar_pi: Radar received familiar report 10 bytes: 12 F5 DD AC E2 67 03 00 00 00 +18:10:07 CEST: BR24radar_pi: Radar received familiar report 46 bytes: 13 F5 7C 5B 4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 34 21 00 00 34 21 00 00 00 00 00 00 38 20 0F 00 00 00 00 00 Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/br24-standby-transmit.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/br24-standby-transmit.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/halo_start_transmit_off.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/halo_start_transmit_off.pcap.gz differ diff -Nru opencpn-plugin-br24radar-2.1.0/example/heading-north.txt opencpn-plugin-br24radar-3.0.1/example/heading-north.txt --- opencpn-plugin-br24radar-2.1.0/example/heading-north.txt 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/example/heading-north.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -$AIHDT,000.0,T diff -Nru opencpn-plugin-br24radar-2.1.0/example/heading-rotating.txt opencpn-plugin-br24radar-3.0.1/example/heading-rotating.txt --- opencpn-plugin-br24radar-2.1.0/example/heading-rotating.txt 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/example/heading-rotating.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3600 +0,0 @@ -$AIHDT,0.0,T -$AIHDT,0.1,T -$AIHDT,0.2,T -$AIHDT,0.3,T -$AIHDT,0.4,T -$AIHDT,0.5,T -$AIHDT,0.6,T -$AIHDT,0.7,T -$AIHDT,0.8,T -$AIHDT,0.9,T -$AIHDT,1.0,T -$AIHDT,1.1,T -$AIHDT,1.2,T -$AIHDT,1.3,T -$AIHDT,1.4,T -$AIHDT,1.5,T -$AIHDT,1.6,T -$AIHDT,1.7,T -$AIHDT,1.8,T -$AIHDT,1.9,T -$AIHDT,2.0,T -$AIHDT,2.1,T -$AIHDT,2.2,T -$AIHDT,2.3,T -$AIHDT,2.4,T -$AIHDT,2.5,T -$AIHDT,2.6,T -$AIHDT,2.7,T -$AIHDT,2.8,T -$AIHDT,2.9,T -$AIHDT,3.0,T -$AIHDT,3.1,T -$AIHDT,3.2,T -$AIHDT,3.3,T -$AIHDT,3.4,T -$AIHDT,3.5,T -$AIHDT,3.6,T -$AIHDT,3.7,T -$AIHDT,3.8,T -$AIHDT,3.9,T -$AIHDT,4.0,T -$AIHDT,4.1,T -$AIHDT,4.2,T -$AIHDT,4.3,T -$AIHDT,4.4,T -$AIHDT,4.5,T -$AIHDT,4.6,T -$AIHDT,4.7,T -$AIHDT,4.8,T -$AIHDT,4.9,T -$AIHDT,5.0,T -$AIHDT,5.1,T -$AIHDT,5.2,T -$AIHDT,5.3,T -$AIHDT,5.4,T -$AIHDT,5.5,T -$AIHDT,5.6,T -$AIHDT,5.7,T -$AIHDT,5.8,T -$AIHDT,5.9,T -$AIHDT,6.0,T -$AIHDT,6.1,T -$AIHDT,6.2,T -$AIHDT,6.3,T -$AIHDT,6.4,T -$AIHDT,6.5,T -$AIHDT,6.6,T -$AIHDT,6.7,T -$AIHDT,6.8,T -$AIHDT,6.9,T -$AIHDT,7.0,T -$AIHDT,7.1,T -$AIHDT,7.2,T -$AIHDT,7.3,T -$AIHDT,7.4,T -$AIHDT,7.5,T -$AIHDT,7.6,T -$AIHDT,7.7,T -$AIHDT,7.8,T -$AIHDT,7.9,T -$AIHDT,8.0,T -$AIHDT,8.1,T -$AIHDT,8.2,T -$AIHDT,8.3,T -$AIHDT,8.4,T -$AIHDT,8.5,T -$AIHDT,8.6,T -$AIHDT,8.7,T -$AIHDT,8.8,T -$AIHDT,8.9,T -$AIHDT,9.0,T -$AIHDT,9.1,T -$AIHDT,9.2,T -$AIHDT,9.3,T -$AIHDT,9.4,T -$AIHDT,9.5,T -$AIHDT,9.6,T -$AIHDT,9.7,T -$AIHDT,9.8,T -$AIHDT,9.9,T -$AIHDT,10.0,T -$AIHDT,10.1,T -$AIHDT,10.2,T -$AIHDT,10.3,T -$AIHDT,10.4,T -$AIHDT,10.5,T -$AIHDT,10.6,T -$AIHDT,10.7,T -$AIHDT,10.8,T -$AIHDT,10.9,T -$AIHDT,11.0,T -$AIHDT,11.1,T -$AIHDT,11.2,T -$AIHDT,11.3,T -$AIHDT,11.4,T -$AIHDT,11.5,T -$AIHDT,11.6,T -$AIHDT,11.7,T -$AIHDT,11.8,T -$AIHDT,11.9,T -$AIHDT,12.0,T -$AIHDT,12.1,T -$AIHDT,12.2,T -$AIHDT,12.3,T -$AIHDT,12.4,T -$AIHDT,12.5,T -$AIHDT,12.6,T -$AIHDT,12.7,T -$AIHDT,12.8,T -$AIHDT,12.9,T -$AIHDT,13.0,T -$AIHDT,13.1,T -$AIHDT,13.2,T -$AIHDT,13.3,T -$AIHDT,13.4,T -$AIHDT,13.5,T -$AIHDT,13.6,T -$AIHDT,13.7,T -$AIHDT,13.8,T -$AIHDT,13.9,T -$AIHDT,14.0,T -$AIHDT,14.1,T -$AIHDT,14.2,T -$AIHDT,14.3,T -$AIHDT,14.4,T -$AIHDT,14.5,T -$AIHDT,14.6,T -$AIHDT,14.7,T -$AIHDT,14.8,T -$AIHDT,14.9,T -$AIHDT,15.0,T -$AIHDT,15.1,T -$AIHDT,15.2,T -$AIHDT,15.3,T -$AIHDT,15.4,T -$AIHDT,15.5,T -$AIHDT,15.6,T -$AIHDT,15.7,T -$AIHDT,15.8,T -$AIHDT,15.9,T -$AIHDT,16.0,T -$AIHDT,16.1,T -$AIHDT,16.2,T -$AIHDT,16.3,T -$AIHDT,16.4,T -$AIHDT,16.5,T -$AIHDT,16.6,T -$AIHDT,16.7,T -$AIHDT,16.8,T -$AIHDT,16.9,T -$AIHDT,17.0,T -$AIHDT,17.1,T -$AIHDT,17.2,T -$AIHDT,17.3,T -$AIHDT,17.4,T -$AIHDT,17.5,T -$AIHDT,17.6,T -$AIHDT,17.7,T -$AIHDT,17.8,T -$AIHDT,17.9,T -$AIHDT,18.0,T -$AIHDT,18.1,T -$AIHDT,18.2,T -$AIHDT,18.3,T -$AIHDT,18.4,T -$AIHDT,18.5,T -$AIHDT,18.6,T -$AIHDT,18.7,T -$AIHDT,18.8,T -$AIHDT,18.9,T -$AIHDT,19.0,T -$AIHDT,19.1,T -$AIHDT,19.2,T -$AIHDT,19.3,T -$AIHDT,19.4,T -$AIHDT,19.5,T -$AIHDT,19.6,T -$AIHDT,19.7,T -$AIHDT,19.8,T -$AIHDT,19.9,T -$AIHDT,20.0,T -$AIHDT,20.1,T -$AIHDT,20.2,T -$AIHDT,20.3,T -$AIHDT,20.4,T -$AIHDT,20.5,T -$AIHDT,20.6,T -$AIHDT,20.7,T -$AIHDT,20.8,T -$AIHDT,20.9,T -$AIHDT,21.0,T -$AIHDT,21.1,T -$AIHDT,21.2,T -$AIHDT,21.3,T -$AIHDT,21.4,T -$AIHDT,21.5,T -$AIHDT,21.6,T -$AIHDT,21.7,T -$AIHDT,21.8,T -$AIHDT,21.9,T -$AIHDT,22.0,T -$AIHDT,22.1,T -$AIHDT,22.2,T -$AIHDT,22.3,T -$AIHDT,22.4,T -$AIHDT,22.5,T -$AIHDT,22.6,T -$AIHDT,22.7,T -$AIHDT,22.8,T -$AIHDT,22.9,T -$AIHDT,23.0,T -$AIHDT,23.1,T -$AIHDT,23.2,T -$AIHDT,23.3,T -$AIHDT,23.4,T -$AIHDT,23.5,T -$AIHDT,23.6,T -$AIHDT,23.7,T -$AIHDT,23.8,T -$AIHDT,23.9,T -$AIHDT,24.0,T -$AIHDT,24.1,T -$AIHDT,24.2,T -$AIHDT,24.3,T -$AIHDT,24.4,T -$AIHDT,24.5,T -$AIHDT,24.6,T -$AIHDT,24.7,T -$AIHDT,24.8,T -$AIHDT,24.9,T -$AIHDT,25.0,T -$AIHDT,25.1,T -$AIHDT,25.2,T -$AIHDT,25.3,T -$AIHDT,25.4,T -$AIHDT,25.5,T -$AIHDT,25.6,T -$AIHDT,25.7,T -$AIHDT,25.8,T -$AIHDT,25.9,T -$AIHDT,26.0,T -$AIHDT,26.1,T -$AIHDT,26.2,T -$AIHDT,26.3,T -$AIHDT,26.4,T -$AIHDT,26.5,T -$AIHDT,26.6,T -$AIHDT,26.7,T -$AIHDT,26.8,T -$AIHDT,26.9,T -$AIHDT,27.0,T -$AIHDT,27.1,T -$AIHDT,27.2,T -$AIHDT,27.3,T -$AIHDT,27.4,T -$AIHDT,27.5,T -$AIHDT,27.6,T -$AIHDT,27.7,T -$AIHDT,27.8,T -$AIHDT,27.9,T -$AIHDT,28.0,T -$AIHDT,28.1,T -$AIHDT,28.2,T -$AIHDT,28.3,T -$AIHDT,28.4,T -$AIHDT,28.5,T -$AIHDT,28.6,T -$AIHDT,28.7,T -$AIHDT,28.8,T -$AIHDT,28.9,T -$AIHDT,29.0,T -$AIHDT,29.1,T -$AIHDT,29.2,T -$AIHDT,29.3,T -$AIHDT,29.4,T -$AIHDT,29.5,T -$AIHDT,29.6,T -$AIHDT,29.7,T -$AIHDT,29.8,T -$AIHDT,29.9,T -$AIHDT,30.0,T -$AIHDT,30.1,T -$AIHDT,30.2,T -$AIHDT,30.3,T -$AIHDT,30.4,T -$AIHDT,30.5,T -$AIHDT,30.6,T -$AIHDT,30.7,T -$AIHDT,30.8,T -$AIHDT,30.9,T -$AIHDT,31.0,T -$AIHDT,31.1,T -$AIHDT,31.2,T -$AIHDT,31.3,T -$AIHDT,31.4,T -$AIHDT,31.5,T -$AIHDT,31.6,T -$AIHDT,31.7,T -$AIHDT,31.8,T -$AIHDT,31.9,T -$AIHDT,32.0,T -$AIHDT,32.1,T -$AIHDT,32.2,T -$AIHDT,32.3,T -$AIHDT,32.4,T -$AIHDT,32.5,T -$AIHDT,32.6,T -$AIHDT,32.7,T -$AIHDT,32.8,T -$AIHDT,32.9,T -$AIHDT,33.0,T -$AIHDT,33.1,T -$AIHDT,33.2,T -$AIHDT,33.3,T -$AIHDT,33.4,T -$AIHDT,33.5,T -$AIHDT,33.6,T -$AIHDT,33.7,T -$AIHDT,33.8,T -$AIHDT,33.9,T -$AIHDT,34.0,T -$AIHDT,34.1,T -$AIHDT,34.2,T -$AIHDT,34.3,T -$AIHDT,34.4,T -$AIHDT,34.5,T -$AIHDT,34.6,T -$AIHDT,34.7,T -$AIHDT,34.8,T -$AIHDT,34.9,T -$AIHDT,35.0,T -$AIHDT,35.1,T -$AIHDT,35.2,T -$AIHDT,35.3,T -$AIHDT,35.4,T -$AIHDT,35.5,T -$AIHDT,35.6,T -$AIHDT,35.7,T -$AIHDT,35.8,T -$AIHDT,35.9,T -$AIHDT,36.0,T -$AIHDT,36.1,T -$AIHDT,36.2,T -$AIHDT,36.3,T -$AIHDT,36.4,T -$AIHDT,36.5,T -$AIHDT,36.6,T -$AIHDT,36.7,T -$AIHDT,36.8,T -$AIHDT,36.9,T -$AIHDT,37.0,T -$AIHDT,37.1,T -$AIHDT,37.2,T -$AIHDT,37.3,T -$AIHDT,37.4,T -$AIHDT,37.5,T -$AIHDT,37.6,T -$AIHDT,37.7,T -$AIHDT,37.8,T -$AIHDT,37.9,T -$AIHDT,38.0,T -$AIHDT,38.1,T -$AIHDT,38.2,T -$AIHDT,38.3,T -$AIHDT,38.4,T -$AIHDT,38.5,T -$AIHDT,38.6,T -$AIHDT,38.7,T -$AIHDT,38.8,T -$AIHDT,38.9,T -$AIHDT,39.0,T -$AIHDT,39.1,T -$AIHDT,39.2,T -$AIHDT,39.3,T -$AIHDT,39.4,T -$AIHDT,39.5,T -$AIHDT,39.6,T -$AIHDT,39.7,T -$AIHDT,39.8,T -$AIHDT,39.9,T -$AIHDT,40.0,T -$AIHDT,40.1,T -$AIHDT,40.2,T -$AIHDT,40.3,T -$AIHDT,40.4,T -$AIHDT,40.5,T -$AIHDT,40.6,T -$AIHDT,40.7,T -$AIHDT,40.8,T -$AIHDT,40.9,T -$AIHDT,41.0,T -$AIHDT,41.1,T -$AIHDT,41.2,T -$AIHDT,41.3,T -$AIHDT,41.4,T -$AIHDT,41.5,T -$AIHDT,41.6,T -$AIHDT,41.7,T -$AIHDT,41.8,T -$AIHDT,41.9,T -$AIHDT,42.0,T -$AIHDT,42.1,T -$AIHDT,42.2,T -$AIHDT,42.3,T -$AIHDT,42.4,T -$AIHDT,42.5,T -$AIHDT,42.6,T -$AIHDT,42.7,T -$AIHDT,42.8,T -$AIHDT,42.9,T -$AIHDT,43.0,T -$AIHDT,43.1,T -$AIHDT,43.2,T -$AIHDT,43.3,T -$AIHDT,43.4,T -$AIHDT,43.5,T -$AIHDT,43.6,T -$AIHDT,43.7,T -$AIHDT,43.8,T -$AIHDT,43.9,T -$AIHDT,44.0,T -$AIHDT,44.1,T -$AIHDT,44.2,T -$AIHDT,44.3,T -$AIHDT,44.4,T -$AIHDT,44.5,T -$AIHDT,44.6,T -$AIHDT,44.7,T -$AIHDT,44.8,T -$AIHDT,44.9,T -$AIHDT,45.0,T -$AIHDT,45.1,T -$AIHDT,45.2,T -$AIHDT,45.3,T -$AIHDT,45.4,T -$AIHDT,45.5,T -$AIHDT,45.6,T -$AIHDT,45.7,T -$AIHDT,45.8,T -$AIHDT,45.9,T -$AIHDT,46.0,T -$AIHDT,46.1,T -$AIHDT,46.2,T -$AIHDT,46.3,T -$AIHDT,46.4,T -$AIHDT,46.5,T -$AIHDT,46.6,T -$AIHDT,46.7,T -$AIHDT,46.8,T -$AIHDT,46.9,T -$AIHDT,47.0,T -$AIHDT,47.1,T -$AIHDT,47.2,T -$AIHDT,47.3,T -$AIHDT,47.4,T -$AIHDT,47.5,T -$AIHDT,47.6,T -$AIHDT,47.7,T -$AIHDT,47.8,T -$AIHDT,47.9,T -$AIHDT,48.0,T -$AIHDT,48.1,T -$AIHDT,48.2,T -$AIHDT,48.3,T -$AIHDT,48.4,T -$AIHDT,48.5,T -$AIHDT,48.6,T -$AIHDT,48.7,T -$AIHDT,48.8,T -$AIHDT,48.9,T -$AIHDT,49.0,T -$AIHDT,49.1,T -$AIHDT,49.2,T -$AIHDT,49.3,T -$AIHDT,49.4,T -$AIHDT,49.5,T -$AIHDT,49.6,T -$AIHDT,49.7,T -$AIHDT,49.8,T -$AIHDT,49.9,T -$AIHDT,50.0,T -$AIHDT,50.1,T -$AIHDT,50.2,T -$AIHDT,50.3,T -$AIHDT,50.4,T -$AIHDT,50.5,T -$AIHDT,50.6,T -$AIHDT,50.7,T -$AIHDT,50.8,T -$AIHDT,50.9,T -$AIHDT,51.0,T -$AIHDT,51.1,T -$AIHDT,51.2,T -$AIHDT,51.3,T -$AIHDT,51.4,T -$AIHDT,51.5,T -$AIHDT,51.6,T -$AIHDT,51.7,T -$AIHDT,51.8,T -$AIHDT,51.9,T -$AIHDT,52.0,T -$AIHDT,52.1,T -$AIHDT,52.2,T -$AIHDT,52.3,T -$AIHDT,52.4,T -$AIHDT,52.5,T -$AIHDT,52.6,T -$AIHDT,52.7,T -$AIHDT,52.8,T -$AIHDT,52.9,T -$AIHDT,53.0,T -$AIHDT,53.1,T -$AIHDT,53.2,T -$AIHDT,53.3,T -$AIHDT,53.4,T -$AIHDT,53.5,T -$AIHDT,53.6,T -$AIHDT,53.7,T -$AIHDT,53.8,T -$AIHDT,53.9,T -$AIHDT,54.0,T -$AIHDT,54.1,T -$AIHDT,54.2,T -$AIHDT,54.3,T -$AIHDT,54.4,T -$AIHDT,54.5,T -$AIHDT,54.6,T -$AIHDT,54.7,T -$AIHDT,54.8,T -$AIHDT,54.9,T -$AIHDT,55.0,T -$AIHDT,55.1,T -$AIHDT,55.2,T -$AIHDT,55.3,T -$AIHDT,55.4,T -$AIHDT,55.5,T -$AIHDT,55.6,T -$AIHDT,55.7,T -$AIHDT,55.8,T -$AIHDT,55.9,T -$AIHDT,56.0,T -$AIHDT,56.1,T -$AIHDT,56.2,T -$AIHDT,56.3,T -$AIHDT,56.4,T -$AIHDT,56.5,T -$AIHDT,56.6,T -$AIHDT,56.7,T -$AIHDT,56.8,T -$AIHDT,56.9,T -$AIHDT,57.0,T -$AIHDT,57.1,T -$AIHDT,57.2,T -$AIHDT,57.3,T -$AIHDT,57.4,T -$AIHDT,57.5,T -$AIHDT,57.6,T -$AIHDT,57.7,T -$AIHDT,57.8,T -$AIHDT,57.9,T -$AIHDT,58.0,T -$AIHDT,58.1,T -$AIHDT,58.2,T -$AIHDT,58.3,T -$AIHDT,58.4,T -$AIHDT,58.5,T -$AIHDT,58.6,T -$AIHDT,58.7,T -$AIHDT,58.8,T -$AIHDT,58.9,T -$AIHDT,59.0,T -$AIHDT,59.1,T -$AIHDT,59.2,T -$AIHDT,59.3,T -$AIHDT,59.4,T -$AIHDT,59.5,T -$AIHDT,59.6,T -$AIHDT,59.7,T -$AIHDT,59.8,T -$AIHDT,59.9,T -$AIHDT,60.0,T -$AIHDT,60.1,T -$AIHDT,60.2,T -$AIHDT,60.3,T -$AIHDT,60.4,T -$AIHDT,60.5,T -$AIHDT,60.6,T -$AIHDT,60.7,T -$AIHDT,60.8,T -$AIHDT,60.9,T -$AIHDT,61.0,T -$AIHDT,61.1,T -$AIHDT,61.2,T -$AIHDT,61.3,T -$AIHDT,61.4,T -$AIHDT,61.5,T -$AIHDT,61.6,T -$AIHDT,61.7,T -$AIHDT,61.8,T -$AIHDT,61.9,T -$AIHDT,62.0,T -$AIHDT,62.1,T -$AIHDT,62.2,T -$AIHDT,62.3,T -$AIHDT,62.4,T -$AIHDT,62.5,T -$AIHDT,62.6,T -$AIHDT,62.7,T -$AIHDT,62.8,T -$AIHDT,62.9,T -$AIHDT,63.0,T -$AIHDT,63.1,T -$AIHDT,63.2,T -$AIHDT,63.3,T -$AIHDT,63.4,T -$AIHDT,63.5,T -$AIHDT,63.6,T -$AIHDT,63.7,T -$AIHDT,63.8,T -$AIHDT,63.9,T -$AIHDT,64.0,T -$AIHDT,64.1,T -$AIHDT,64.2,T -$AIHDT,64.3,T -$AIHDT,64.4,T -$AIHDT,64.5,T -$AIHDT,64.6,T -$AIHDT,64.7,T -$AIHDT,64.8,T -$AIHDT,64.9,T -$AIHDT,65.0,T -$AIHDT,65.1,T -$AIHDT,65.2,T -$AIHDT,65.3,T -$AIHDT,65.4,T -$AIHDT,65.5,T -$AIHDT,65.6,T -$AIHDT,65.7,T -$AIHDT,65.8,T -$AIHDT,65.9,T -$AIHDT,66.0,T -$AIHDT,66.1,T -$AIHDT,66.2,T -$AIHDT,66.3,T -$AIHDT,66.4,T -$AIHDT,66.5,T -$AIHDT,66.6,T -$AIHDT,66.7,T -$AIHDT,66.8,T -$AIHDT,66.9,T -$AIHDT,67.0,T -$AIHDT,67.1,T -$AIHDT,67.2,T -$AIHDT,67.3,T -$AIHDT,67.4,T -$AIHDT,67.5,T -$AIHDT,67.6,T -$AIHDT,67.7,T -$AIHDT,67.8,T -$AIHDT,67.9,T -$AIHDT,68.0,T -$AIHDT,68.1,T -$AIHDT,68.2,T -$AIHDT,68.3,T -$AIHDT,68.4,T -$AIHDT,68.5,T -$AIHDT,68.6,T -$AIHDT,68.7,T -$AIHDT,68.8,T -$AIHDT,68.9,T -$AIHDT,69.0,T -$AIHDT,69.1,T -$AIHDT,69.2,T -$AIHDT,69.3,T -$AIHDT,69.4,T -$AIHDT,69.5,T -$AIHDT,69.6,T -$AIHDT,69.7,T -$AIHDT,69.8,T -$AIHDT,69.9,T -$AIHDT,70.0,T -$AIHDT,70.1,T -$AIHDT,70.2,T -$AIHDT,70.3,T -$AIHDT,70.4,T -$AIHDT,70.5,T -$AIHDT,70.6,T -$AIHDT,70.7,T -$AIHDT,70.8,T -$AIHDT,70.9,T -$AIHDT,71.0,T -$AIHDT,71.1,T -$AIHDT,71.2,T -$AIHDT,71.3,T -$AIHDT,71.4,T -$AIHDT,71.5,T -$AIHDT,71.6,T -$AIHDT,71.7,T -$AIHDT,71.8,T -$AIHDT,71.9,T -$AIHDT,72.0,T -$AIHDT,72.1,T -$AIHDT,72.2,T -$AIHDT,72.3,T -$AIHDT,72.4,T -$AIHDT,72.5,T -$AIHDT,72.6,T -$AIHDT,72.7,T -$AIHDT,72.8,T -$AIHDT,72.9,T -$AIHDT,73.0,T -$AIHDT,73.1,T -$AIHDT,73.2,T -$AIHDT,73.3,T -$AIHDT,73.4,T -$AIHDT,73.5,T -$AIHDT,73.6,T -$AIHDT,73.7,T -$AIHDT,73.8,T -$AIHDT,73.9,T -$AIHDT,74.0,T -$AIHDT,74.1,T -$AIHDT,74.2,T -$AIHDT,74.3,T -$AIHDT,74.4,T -$AIHDT,74.5,T -$AIHDT,74.6,T -$AIHDT,74.7,T -$AIHDT,74.8,T -$AIHDT,74.9,T -$AIHDT,75.0,T -$AIHDT,75.1,T -$AIHDT,75.2,T -$AIHDT,75.3,T -$AIHDT,75.4,T -$AIHDT,75.5,T -$AIHDT,75.6,T -$AIHDT,75.7,T -$AIHDT,75.8,T -$AIHDT,75.9,T -$AIHDT,76.0,T -$AIHDT,76.1,T -$AIHDT,76.2,T -$AIHDT,76.3,T -$AIHDT,76.4,T -$AIHDT,76.5,T -$AIHDT,76.6,T -$AIHDT,76.7,T -$AIHDT,76.8,T -$AIHDT,76.9,T -$AIHDT,77.0,T -$AIHDT,77.1,T -$AIHDT,77.2,T -$AIHDT,77.3,T -$AIHDT,77.4,T -$AIHDT,77.5,T -$AIHDT,77.6,T -$AIHDT,77.7,T -$AIHDT,77.8,T -$AIHDT,77.9,T -$AIHDT,78.0,T -$AIHDT,78.1,T -$AIHDT,78.2,T -$AIHDT,78.3,T -$AIHDT,78.4,T -$AIHDT,78.5,T -$AIHDT,78.6,T -$AIHDT,78.7,T -$AIHDT,78.8,T -$AIHDT,78.9,T -$AIHDT,79.0,T -$AIHDT,79.1,T -$AIHDT,79.2,T -$AIHDT,79.3,T -$AIHDT,79.4,T -$AIHDT,79.5,T -$AIHDT,79.6,T -$AIHDT,79.7,T -$AIHDT,79.8,T -$AIHDT,79.9,T -$AIHDT,80.0,T -$AIHDT,80.1,T -$AIHDT,80.2,T -$AIHDT,80.3,T -$AIHDT,80.4,T -$AIHDT,80.5,T -$AIHDT,80.6,T -$AIHDT,80.7,T -$AIHDT,80.8,T -$AIHDT,80.9,T -$AIHDT,81.0,T -$AIHDT,81.1,T -$AIHDT,81.2,T -$AIHDT,81.3,T -$AIHDT,81.4,T -$AIHDT,81.5,T -$AIHDT,81.6,T -$AIHDT,81.7,T -$AIHDT,81.8,T -$AIHDT,81.9,T -$AIHDT,82.0,T -$AIHDT,82.1,T -$AIHDT,82.2,T -$AIHDT,82.3,T -$AIHDT,82.4,T -$AIHDT,82.5,T -$AIHDT,82.6,T -$AIHDT,82.7,T -$AIHDT,82.8,T -$AIHDT,82.9,T -$AIHDT,83.0,T -$AIHDT,83.1,T -$AIHDT,83.2,T -$AIHDT,83.3,T -$AIHDT,83.4,T -$AIHDT,83.5,T -$AIHDT,83.6,T -$AIHDT,83.7,T -$AIHDT,83.8,T -$AIHDT,83.9,T -$AIHDT,84.0,T -$AIHDT,84.1,T -$AIHDT,84.2,T -$AIHDT,84.3,T -$AIHDT,84.4,T -$AIHDT,84.5,T -$AIHDT,84.6,T -$AIHDT,84.7,T -$AIHDT,84.8,T -$AIHDT,84.9,T -$AIHDT,85.0,T -$AIHDT,85.1,T -$AIHDT,85.2,T -$AIHDT,85.3,T -$AIHDT,85.4,T -$AIHDT,85.5,T -$AIHDT,85.6,T -$AIHDT,85.7,T -$AIHDT,85.8,T -$AIHDT,85.9,T -$AIHDT,86.0,T -$AIHDT,86.1,T -$AIHDT,86.2,T -$AIHDT,86.3,T -$AIHDT,86.4,T -$AIHDT,86.5,T -$AIHDT,86.6,T -$AIHDT,86.7,T -$AIHDT,86.8,T -$AIHDT,86.9,T -$AIHDT,87.0,T -$AIHDT,87.1,T -$AIHDT,87.2,T -$AIHDT,87.3,T -$AIHDT,87.4,T -$AIHDT,87.5,T -$AIHDT,87.6,T -$AIHDT,87.7,T -$AIHDT,87.8,T -$AIHDT,87.9,T -$AIHDT,88.0,T -$AIHDT,88.1,T -$AIHDT,88.2,T -$AIHDT,88.3,T -$AIHDT,88.4,T -$AIHDT,88.5,T -$AIHDT,88.6,T -$AIHDT,88.7,T -$AIHDT,88.8,T -$AIHDT,88.9,T -$AIHDT,89.0,T -$AIHDT,89.1,T -$AIHDT,89.2,T -$AIHDT,89.3,T -$AIHDT,89.4,T -$AIHDT,89.5,T -$AIHDT,89.6,T -$AIHDT,89.7,T -$AIHDT,89.8,T -$AIHDT,89.9,T -$AIHDT,90.0,T -$AIHDT,90.1,T -$AIHDT,90.2,T -$AIHDT,90.3,T -$AIHDT,90.4,T -$AIHDT,90.5,T -$AIHDT,90.6,T -$AIHDT,90.7,T -$AIHDT,90.8,T -$AIHDT,90.9,T -$AIHDT,91.0,T -$AIHDT,91.1,T -$AIHDT,91.2,T -$AIHDT,91.3,T -$AIHDT,91.4,T -$AIHDT,91.5,T -$AIHDT,91.6,T -$AIHDT,91.7,T -$AIHDT,91.8,T -$AIHDT,91.9,T -$AIHDT,92.0,T -$AIHDT,92.1,T -$AIHDT,92.2,T -$AIHDT,92.3,T -$AIHDT,92.4,T -$AIHDT,92.5,T -$AIHDT,92.6,T -$AIHDT,92.7,T -$AIHDT,92.8,T -$AIHDT,92.9,T -$AIHDT,93.0,T -$AIHDT,93.1,T -$AIHDT,93.2,T -$AIHDT,93.3,T -$AIHDT,93.4,T -$AIHDT,93.5,T -$AIHDT,93.6,T -$AIHDT,93.7,T -$AIHDT,93.8,T -$AIHDT,93.9,T -$AIHDT,94.0,T -$AIHDT,94.1,T -$AIHDT,94.2,T -$AIHDT,94.3,T -$AIHDT,94.4,T -$AIHDT,94.5,T -$AIHDT,94.6,T -$AIHDT,94.7,T -$AIHDT,94.8,T -$AIHDT,94.9,T -$AIHDT,95.0,T -$AIHDT,95.1,T -$AIHDT,95.2,T -$AIHDT,95.3,T -$AIHDT,95.4,T -$AIHDT,95.5,T -$AIHDT,95.6,T -$AIHDT,95.7,T -$AIHDT,95.8,T -$AIHDT,95.9,T -$AIHDT,96.0,T -$AIHDT,96.1,T -$AIHDT,96.2,T -$AIHDT,96.3,T -$AIHDT,96.4,T -$AIHDT,96.5,T -$AIHDT,96.6,T -$AIHDT,96.7,T -$AIHDT,96.8,T -$AIHDT,96.9,T -$AIHDT,97.0,T -$AIHDT,97.1,T -$AIHDT,97.2,T -$AIHDT,97.3,T -$AIHDT,97.4,T -$AIHDT,97.5,T -$AIHDT,97.6,T -$AIHDT,97.7,T -$AIHDT,97.8,T -$AIHDT,97.9,T -$AIHDT,98.0,T -$AIHDT,98.1,T -$AIHDT,98.2,T -$AIHDT,98.3,T -$AIHDT,98.4,T -$AIHDT,98.5,T -$AIHDT,98.6,T -$AIHDT,98.7,T -$AIHDT,98.8,T -$AIHDT,98.9,T -$AIHDT,99.0,T -$AIHDT,99.1,T -$AIHDT,99.2,T -$AIHDT,99.3,T -$AIHDT,99.4,T -$AIHDT,99.5,T -$AIHDT,99.6,T -$AIHDT,99.7,T -$AIHDT,99.8,T -$AIHDT,99.9,T -$AIHDT,100.0,T -$AIHDT,100.1,T -$AIHDT,100.2,T -$AIHDT,100.3,T -$AIHDT,100.4,T -$AIHDT,100.5,T -$AIHDT,100.6,T -$AIHDT,100.7,T -$AIHDT,100.8,T -$AIHDT,100.9,T -$AIHDT,101.0,T -$AIHDT,101.1,T -$AIHDT,101.2,T -$AIHDT,101.3,T -$AIHDT,101.4,T -$AIHDT,101.5,T -$AIHDT,101.6,T -$AIHDT,101.7,T -$AIHDT,101.8,T -$AIHDT,101.9,T -$AIHDT,102.0,T -$AIHDT,102.1,T -$AIHDT,102.2,T -$AIHDT,102.3,T -$AIHDT,102.4,T -$AIHDT,102.5,T -$AIHDT,102.6,T -$AIHDT,102.7,T -$AIHDT,102.8,T -$AIHDT,102.9,T -$AIHDT,103.0,T -$AIHDT,103.1,T -$AIHDT,103.2,T -$AIHDT,103.3,T -$AIHDT,103.4,T -$AIHDT,103.5,T -$AIHDT,103.6,T -$AIHDT,103.7,T -$AIHDT,103.8,T -$AIHDT,103.9,T -$AIHDT,104.0,T -$AIHDT,104.1,T -$AIHDT,104.2,T -$AIHDT,104.3,T -$AIHDT,104.4,T -$AIHDT,104.5,T -$AIHDT,104.6,T -$AIHDT,104.7,T -$AIHDT,104.8,T -$AIHDT,104.9,T -$AIHDT,105.0,T -$AIHDT,105.1,T -$AIHDT,105.2,T -$AIHDT,105.3,T -$AIHDT,105.4,T -$AIHDT,105.5,T -$AIHDT,105.6,T -$AIHDT,105.7,T -$AIHDT,105.8,T -$AIHDT,105.9,T -$AIHDT,106.0,T -$AIHDT,106.1,T -$AIHDT,106.2,T -$AIHDT,106.3,T -$AIHDT,106.4,T -$AIHDT,106.5,T -$AIHDT,106.6,T -$AIHDT,106.7,T -$AIHDT,106.8,T -$AIHDT,106.9,T -$AIHDT,107.0,T -$AIHDT,107.1,T -$AIHDT,107.2,T -$AIHDT,107.3,T -$AIHDT,107.4,T -$AIHDT,107.5,T -$AIHDT,107.6,T -$AIHDT,107.7,T -$AIHDT,107.8,T -$AIHDT,107.9,T -$AIHDT,108.0,T -$AIHDT,108.1,T -$AIHDT,108.2,T -$AIHDT,108.3,T -$AIHDT,108.4,T -$AIHDT,108.5,T -$AIHDT,108.6,T -$AIHDT,108.7,T -$AIHDT,108.8,T -$AIHDT,108.9,T -$AIHDT,109.0,T -$AIHDT,109.1,T -$AIHDT,109.2,T -$AIHDT,109.3,T -$AIHDT,109.4,T -$AIHDT,109.5,T -$AIHDT,109.6,T -$AIHDT,109.7,T -$AIHDT,109.8,T -$AIHDT,109.9,T -$AIHDT,110.0,T -$AIHDT,110.1,T -$AIHDT,110.2,T -$AIHDT,110.3,T -$AIHDT,110.4,T -$AIHDT,110.5,T -$AIHDT,110.6,T -$AIHDT,110.7,T -$AIHDT,110.8,T -$AIHDT,110.9,T -$AIHDT,111.0,T -$AIHDT,111.1,T -$AIHDT,111.2,T -$AIHDT,111.3,T -$AIHDT,111.4,T -$AIHDT,111.5,T -$AIHDT,111.6,T -$AIHDT,111.7,T -$AIHDT,111.8,T -$AIHDT,111.9,T -$AIHDT,112.0,T -$AIHDT,112.1,T -$AIHDT,112.2,T -$AIHDT,112.3,T -$AIHDT,112.4,T -$AIHDT,112.5,T -$AIHDT,112.6,T -$AIHDT,112.7,T -$AIHDT,112.8,T -$AIHDT,112.9,T -$AIHDT,113.0,T -$AIHDT,113.1,T -$AIHDT,113.2,T -$AIHDT,113.3,T -$AIHDT,113.4,T -$AIHDT,113.5,T -$AIHDT,113.6,T -$AIHDT,113.7,T -$AIHDT,113.8,T -$AIHDT,113.9,T -$AIHDT,114.0,T -$AIHDT,114.1,T -$AIHDT,114.2,T -$AIHDT,114.3,T -$AIHDT,114.4,T -$AIHDT,114.5,T -$AIHDT,114.6,T -$AIHDT,114.7,T -$AIHDT,114.8,T -$AIHDT,114.9,T -$AIHDT,115.0,T -$AIHDT,115.1,T -$AIHDT,115.2,T -$AIHDT,115.3,T -$AIHDT,115.4,T -$AIHDT,115.5,T -$AIHDT,115.6,T -$AIHDT,115.7,T -$AIHDT,115.8,T -$AIHDT,115.9,T -$AIHDT,116.0,T -$AIHDT,116.1,T -$AIHDT,116.2,T -$AIHDT,116.3,T -$AIHDT,116.4,T -$AIHDT,116.5,T -$AIHDT,116.6,T -$AIHDT,116.7,T -$AIHDT,116.8,T -$AIHDT,116.9,T -$AIHDT,117.0,T -$AIHDT,117.1,T -$AIHDT,117.2,T -$AIHDT,117.3,T -$AIHDT,117.4,T -$AIHDT,117.5,T -$AIHDT,117.6,T -$AIHDT,117.7,T -$AIHDT,117.8,T -$AIHDT,117.9,T -$AIHDT,118.0,T -$AIHDT,118.1,T -$AIHDT,118.2,T -$AIHDT,118.3,T -$AIHDT,118.4,T -$AIHDT,118.5,T -$AIHDT,118.6,T -$AIHDT,118.7,T -$AIHDT,118.8,T -$AIHDT,118.9,T -$AIHDT,119.0,T -$AIHDT,119.1,T -$AIHDT,119.2,T -$AIHDT,119.3,T -$AIHDT,119.4,T -$AIHDT,119.5,T -$AIHDT,119.6,T -$AIHDT,119.7,T -$AIHDT,119.8,T -$AIHDT,119.9,T -$AIHDT,120.0,T -$AIHDT,120.1,T -$AIHDT,120.2,T -$AIHDT,120.3,T -$AIHDT,120.4,T -$AIHDT,120.5,T -$AIHDT,120.6,T -$AIHDT,120.7,T -$AIHDT,120.8,T -$AIHDT,120.9,T -$AIHDT,121.0,T -$AIHDT,121.1,T -$AIHDT,121.2,T -$AIHDT,121.3,T -$AIHDT,121.4,T -$AIHDT,121.5,T -$AIHDT,121.6,T -$AIHDT,121.7,T -$AIHDT,121.8,T -$AIHDT,121.9,T -$AIHDT,122.0,T -$AIHDT,122.1,T -$AIHDT,122.2,T -$AIHDT,122.3,T -$AIHDT,122.4,T -$AIHDT,122.5,T -$AIHDT,122.6,T -$AIHDT,122.7,T -$AIHDT,122.8,T -$AIHDT,122.9,T -$AIHDT,123.0,T -$AIHDT,123.1,T -$AIHDT,123.2,T -$AIHDT,123.3,T -$AIHDT,123.4,T -$AIHDT,123.5,T -$AIHDT,123.6,T -$AIHDT,123.7,T -$AIHDT,123.8,T -$AIHDT,123.9,T -$AIHDT,124.0,T -$AIHDT,124.1,T -$AIHDT,124.2,T -$AIHDT,124.3,T -$AIHDT,124.4,T -$AIHDT,124.5,T -$AIHDT,124.6,T -$AIHDT,124.7,T -$AIHDT,124.8,T -$AIHDT,124.9,T -$AIHDT,125.0,T -$AIHDT,125.1,T -$AIHDT,125.2,T -$AIHDT,125.3,T -$AIHDT,125.4,T -$AIHDT,125.5,T -$AIHDT,125.6,T -$AIHDT,125.7,T -$AIHDT,125.8,T -$AIHDT,125.9,T -$AIHDT,126.0,T -$AIHDT,126.1,T -$AIHDT,126.2,T -$AIHDT,126.3,T -$AIHDT,126.4,T -$AIHDT,126.5,T -$AIHDT,126.6,T -$AIHDT,126.7,T -$AIHDT,126.8,T -$AIHDT,126.9,T -$AIHDT,127.0,T -$AIHDT,127.1,T -$AIHDT,127.2,T -$AIHDT,127.3,T -$AIHDT,127.4,T -$AIHDT,127.5,T -$AIHDT,127.6,T -$AIHDT,127.7,T -$AIHDT,127.8,T -$AIHDT,127.9,T -$AIHDT,128.0,T -$AIHDT,128.1,T -$AIHDT,128.2,T -$AIHDT,128.3,T -$AIHDT,128.4,T -$AIHDT,128.5,T -$AIHDT,128.6,T -$AIHDT,128.7,T -$AIHDT,128.8,T -$AIHDT,128.9,T -$AIHDT,129.0,T -$AIHDT,129.1,T -$AIHDT,129.2,T -$AIHDT,129.3,T -$AIHDT,129.4,T -$AIHDT,129.5,T -$AIHDT,129.6,T -$AIHDT,129.7,T -$AIHDT,129.8,T -$AIHDT,129.9,T -$AIHDT,130.0,T -$AIHDT,130.1,T -$AIHDT,130.2,T -$AIHDT,130.3,T -$AIHDT,130.4,T -$AIHDT,130.5,T -$AIHDT,130.6,T -$AIHDT,130.7,T -$AIHDT,130.8,T -$AIHDT,130.9,T -$AIHDT,131.0,T -$AIHDT,131.1,T -$AIHDT,131.2,T -$AIHDT,131.3,T -$AIHDT,131.4,T -$AIHDT,131.5,T -$AIHDT,131.6,T -$AIHDT,131.7,T -$AIHDT,131.8,T -$AIHDT,131.9,T -$AIHDT,132.0,T -$AIHDT,132.1,T -$AIHDT,132.2,T -$AIHDT,132.3,T -$AIHDT,132.4,T -$AIHDT,132.5,T -$AIHDT,132.6,T -$AIHDT,132.7,T -$AIHDT,132.8,T -$AIHDT,132.9,T -$AIHDT,133.0,T -$AIHDT,133.1,T -$AIHDT,133.2,T -$AIHDT,133.3,T -$AIHDT,133.4,T -$AIHDT,133.5,T -$AIHDT,133.6,T -$AIHDT,133.7,T -$AIHDT,133.8,T -$AIHDT,133.9,T -$AIHDT,134.0,T -$AIHDT,134.1,T -$AIHDT,134.2,T -$AIHDT,134.3,T -$AIHDT,134.4,T -$AIHDT,134.5,T -$AIHDT,134.6,T -$AIHDT,134.7,T -$AIHDT,134.8,T -$AIHDT,134.9,T -$AIHDT,135.0,T -$AIHDT,135.1,T -$AIHDT,135.2,T -$AIHDT,135.3,T -$AIHDT,135.4,T -$AIHDT,135.5,T -$AIHDT,135.6,T -$AIHDT,135.7,T -$AIHDT,135.8,T -$AIHDT,135.9,T -$AIHDT,136.0,T -$AIHDT,136.1,T -$AIHDT,136.2,T -$AIHDT,136.3,T -$AIHDT,136.4,T -$AIHDT,136.5,T -$AIHDT,136.6,T -$AIHDT,136.7,T -$AIHDT,136.8,T -$AIHDT,136.9,T -$AIHDT,137.0,T -$AIHDT,137.1,T -$AIHDT,137.2,T -$AIHDT,137.3,T -$AIHDT,137.4,T -$AIHDT,137.5,T -$AIHDT,137.6,T -$AIHDT,137.7,T -$AIHDT,137.8,T -$AIHDT,137.9,T -$AIHDT,138.0,T -$AIHDT,138.1,T -$AIHDT,138.2,T -$AIHDT,138.3,T -$AIHDT,138.4,T -$AIHDT,138.5,T -$AIHDT,138.6,T -$AIHDT,138.7,T -$AIHDT,138.8,T -$AIHDT,138.9,T -$AIHDT,139.0,T -$AIHDT,139.1,T -$AIHDT,139.2,T -$AIHDT,139.3,T -$AIHDT,139.4,T -$AIHDT,139.5,T -$AIHDT,139.6,T -$AIHDT,139.7,T -$AIHDT,139.8,T -$AIHDT,139.9,T -$AIHDT,140.0,T -$AIHDT,140.1,T -$AIHDT,140.2,T -$AIHDT,140.3,T -$AIHDT,140.4,T -$AIHDT,140.5,T -$AIHDT,140.6,T -$AIHDT,140.7,T -$AIHDT,140.8,T -$AIHDT,140.9,T -$AIHDT,141.0,T -$AIHDT,141.1,T -$AIHDT,141.2,T -$AIHDT,141.3,T -$AIHDT,141.4,T -$AIHDT,141.5,T -$AIHDT,141.6,T -$AIHDT,141.7,T -$AIHDT,141.8,T -$AIHDT,141.9,T -$AIHDT,142.0,T -$AIHDT,142.1,T -$AIHDT,142.2,T -$AIHDT,142.3,T -$AIHDT,142.4,T -$AIHDT,142.5,T -$AIHDT,142.6,T -$AIHDT,142.7,T -$AIHDT,142.8,T -$AIHDT,142.9,T -$AIHDT,143.0,T -$AIHDT,143.1,T -$AIHDT,143.2,T -$AIHDT,143.3,T -$AIHDT,143.4,T -$AIHDT,143.5,T -$AIHDT,143.6,T -$AIHDT,143.7,T -$AIHDT,143.8,T -$AIHDT,143.9,T -$AIHDT,144.0,T -$AIHDT,144.1,T -$AIHDT,144.2,T -$AIHDT,144.3,T -$AIHDT,144.4,T -$AIHDT,144.5,T -$AIHDT,144.6,T -$AIHDT,144.7,T -$AIHDT,144.8,T -$AIHDT,144.9,T -$AIHDT,145.0,T -$AIHDT,145.1,T -$AIHDT,145.2,T -$AIHDT,145.3,T -$AIHDT,145.4,T -$AIHDT,145.5,T -$AIHDT,145.6,T -$AIHDT,145.7,T -$AIHDT,145.8,T -$AIHDT,145.9,T -$AIHDT,146.0,T -$AIHDT,146.1,T -$AIHDT,146.2,T -$AIHDT,146.3,T -$AIHDT,146.4,T -$AIHDT,146.5,T -$AIHDT,146.6,T -$AIHDT,146.7,T -$AIHDT,146.8,T -$AIHDT,146.9,T -$AIHDT,147.0,T -$AIHDT,147.1,T -$AIHDT,147.2,T -$AIHDT,147.3,T -$AIHDT,147.4,T -$AIHDT,147.5,T -$AIHDT,147.6,T -$AIHDT,147.7,T -$AIHDT,147.8,T -$AIHDT,147.9,T -$AIHDT,148.0,T -$AIHDT,148.1,T -$AIHDT,148.2,T -$AIHDT,148.3,T -$AIHDT,148.4,T -$AIHDT,148.5,T -$AIHDT,148.6,T -$AIHDT,148.7,T -$AIHDT,148.8,T -$AIHDT,148.9,T -$AIHDT,149.0,T -$AIHDT,149.1,T -$AIHDT,149.2,T -$AIHDT,149.3,T -$AIHDT,149.4,T -$AIHDT,149.5,T -$AIHDT,149.6,T -$AIHDT,149.7,T -$AIHDT,149.8,T -$AIHDT,149.9,T -$AIHDT,150.0,T -$AIHDT,150.1,T -$AIHDT,150.2,T -$AIHDT,150.3,T -$AIHDT,150.4,T -$AIHDT,150.5,T -$AIHDT,150.6,T -$AIHDT,150.7,T -$AIHDT,150.8,T -$AIHDT,150.9,T -$AIHDT,151.0,T -$AIHDT,151.1,T -$AIHDT,151.2,T -$AIHDT,151.3,T -$AIHDT,151.4,T -$AIHDT,151.5,T -$AIHDT,151.6,T -$AIHDT,151.7,T -$AIHDT,151.8,T -$AIHDT,151.9,T -$AIHDT,152.0,T -$AIHDT,152.1,T -$AIHDT,152.2,T -$AIHDT,152.3,T -$AIHDT,152.4,T -$AIHDT,152.5,T -$AIHDT,152.6,T -$AIHDT,152.7,T -$AIHDT,152.8,T -$AIHDT,152.9,T -$AIHDT,153.0,T -$AIHDT,153.1,T -$AIHDT,153.2,T -$AIHDT,153.3,T -$AIHDT,153.4,T -$AIHDT,153.5,T -$AIHDT,153.6,T -$AIHDT,153.7,T -$AIHDT,153.8,T -$AIHDT,153.9,T -$AIHDT,154.0,T -$AIHDT,154.1,T -$AIHDT,154.2,T -$AIHDT,154.3,T -$AIHDT,154.4,T -$AIHDT,154.5,T -$AIHDT,154.6,T -$AIHDT,154.7,T -$AIHDT,154.8,T -$AIHDT,154.9,T -$AIHDT,155.0,T -$AIHDT,155.1,T -$AIHDT,155.2,T -$AIHDT,155.3,T -$AIHDT,155.4,T -$AIHDT,155.5,T -$AIHDT,155.6,T -$AIHDT,155.7,T -$AIHDT,155.8,T -$AIHDT,155.9,T -$AIHDT,156.0,T -$AIHDT,156.1,T -$AIHDT,156.2,T -$AIHDT,156.3,T -$AIHDT,156.4,T -$AIHDT,156.5,T -$AIHDT,156.6,T -$AIHDT,156.7,T -$AIHDT,156.8,T -$AIHDT,156.9,T -$AIHDT,157.0,T -$AIHDT,157.1,T -$AIHDT,157.2,T -$AIHDT,157.3,T -$AIHDT,157.4,T -$AIHDT,157.5,T -$AIHDT,157.6,T -$AIHDT,157.7,T -$AIHDT,157.8,T -$AIHDT,157.9,T -$AIHDT,158.0,T -$AIHDT,158.1,T -$AIHDT,158.2,T -$AIHDT,158.3,T -$AIHDT,158.4,T -$AIHDT,158.5,T -$AIHDT,158.6,T -$AIHDT,158.7,T -$AIHDT,158.8,T -$AIHDT,158.9,T -$AIHDT,159.0,T -$AIHDT,159.1,T -$AIHDT,159.2,T -$AIHDT,159.3,T -$AIHDT,159.4,T -$AIHDT,159.5,T -$AIHDT,159.6,T -$AIHDT,159.7,T -$AIHDT,159.8,T -$AIHDT,159.9,T -$AIHDT,160.0,T -$AIHDT,160.1,T -$AIHDT,160.2,T -$AIHDT,160.3,T -$AIHDT,160.4,T -$AIHDT,160.5,T -$AIHDT,160.6,T -$AIHDT,160.7,T -$AIHDT,160.8,T -$AIHDT,160.9,T -$AIHDT,161.0,T -$AIHDT,161.1,T -$AIHDT,161.2,T -$AIHDT,161.3,T -$AIHDT,161.4,T -$AIHDT,161.5,T -$AIHDT,161.6,T -$AIHDT,161.7,T -$AIHDT,161.8,T -$AIHDT,161.9,T -$AIHDT,162.0,T -$AIHDT,162.1,T -$AIHDT,162.2,T -$AIHDT,162.3,T -$AIHDT,162.4,T -$AIHDT,162.5,T -$AIHDT,162.6,T -$AIHDT,162.7,T -$AIHDT,162.8,T -$AIHDT,162.9,T -$AIHDT,163.0,T -$AIHDT,163.1,T -$AIHDT,163.2,T -$AIHDT,163.3,T -$AIHDT,163.4,T -$AIHDT,163.5,T -$AIHDT,163.6,T -$AIHDT,163.7,T -$AIHDT,163.8,T -$AIHDT,163.9,T -$AIHDT,164.0,T -$AIHDT,164.1,T -$AIHDT,164.2,T -$AIHDT,164.3,T -$AIHDT,164.4,T -$AIHDT,164.5,T -$AIHDT,164.6,T -$AIHDT,164.7,T -$AIHDT,164.8,T -$AIHDT,164.9,T -$AIHDT,165.0,T -$AIHDT,165.1,T -$AIHDT,165.2,T -$AIHDT,165.3,T -$AIHDT,165.4,T -$AIHDT,165.5,T -$AIHDT,165.6,T -$AIHDT,165.7,T -$AIHDT,165.8,T -$AIHDT,165.9,T -$AIHDT,166.0,T -$AIHDT,166.1,T -$AIHDT,166.2,T -$AIHDT,166.3,T -$AIHDT,166.4,T -$AIHDT,166.5,T -$AIHDT,166.6,T -$AIHDT,166.7,T -$AIHDT,166.8,T -$AIHDT,166.9,T -$AIHDT,167.0,T -$AIHDT,167.1,T -$AIHDT,167.2,T -$AIHDT,167.3,T -$AIHDT,167.4,T -$AIHDT,167.5,T -$AIHDT,167.6,T -$AIHDT,167.7,T -$AIHDT,167.8,T -$AIHDT,167.9,T -$AIHDT,168.0,T -$AIHDT,168.1,T -$AIHDT,168.2,T -$AIHDT,168.3,T -$AIHDT,168.4,T -$AIHDT,168.5,T -$AIHDT,168.6,T -$AIHDT,168.7,T -$AIHDT,168.8,T -$AIHDT,168.9,T -$AIHDT,169.0,T -$AIHDT,169.1,T -$AIHDT,169.2,T -$AIHDT,169.3,T -$AIHDT,169.4,T -$AIHDT,169.5,T -$AIHDT,169.6,T -$AIHDT,169.7,T -$AIHDT,169.8,T -$AIHDT,169.9,T -$AIHDT,170.0,T -$AIHDT,170.1,T -$AIHDT,170.2,T -$AIHDT,170.3,T -$AIHDT,170.4,T -$AIHDT,170.5,T -$AIHDT,170.6,T -$AIHDT,170.7,T -$AIHDT,170.8,T -$AIHDT,170.9,T -$AIHDT,171.0,T -$AIHDT,171.1,T -$AIHDT,171.2,T -$AIHDT,171.3,T -$AIHDT,171.4,T -$AIHDT,171.5,T -$AIHDT,171.6,T -$AIHDT,171.7,T -$AIHDT,171.8,T -$AIHDT,171.9,T -$AIHDT,172.0,T -$AIHDT,172.1,T -$AIHDT,172.2,T -$AIHDT,172.3,T -$AIHDT,172.4,T -$AIHDT,172.5,T -$AIHDT,172.6,T -$AIHDT,172.7,T -$AIHDT,172.8,T -$AIHDT,172.9,T -$AIHDT,173.0,T -$AIHDT,173.1,T -$AIHDT,173.2,T -$AIHDT,173.3,T -$AIHDT,173.4,T -$AIHDT,173.5,T -$AIHDT,173.6,T -$AIHDT,173.7,T -$AIHDT,173.8,T -$AIHDT,173.9,T -$AIHDT,174.0,T -$AIHDT,174.1,T -$AIHDT,174.2,T -$AIHDT,174.3,T -$AIHDT,174.4,T -$AIHDT,174.5,T -$AIHDT,174.6,T -$AIHDT,174.7,T -$AIHDT,174.8,T -$AIHDT,174.9,T -$AIHDT,175.0,T -$AIHDT,175.1,T -$AIHDT,175.2,T -$AIHDT,175.3,T -$AIHDT,175.4,T -$AIHDT,175.5,T -$AIHDT,175.6,T -$AIHDT,175.7,T -$AIHDT,175.8,T -$AIHDT,175.9,T -$AIHDT,176.0,T -$AIHDT,176.1,T -$AIHDT,176.2,T -$AIHDT,176.3,T -$AIHDT,176.4,T -$AIHDT,176.5,T -$AIHDT,176.6,T -$AIHDT,176.7,T -$AIHDT,176.8,T -$AIHDT,176.9,T -$AIHDT,177.0,T -$AIHDT,177.1,T -$AIHDT,177.2,T -$AIHDT,177.3,T -$AIHDT,177.4,T -$AIHDT,177.5,T -$AIHDT,177.6,T -$AIHDT,177.7,T -$AIHDT,177.8,T -$AIHDT,177.9,T -$AIHDT,178.0,T -$AIHDT,178.1,T -$AIHDT,178.2,T -$AIHDT,178.3,T -$AIHDT,178.4,T -$AIHDT,178.5,T -$AIHDT,178.6,T -$AIHDT,178.7,T -$AIHDT,178.8,T -$AIHDT,178.9,T -$AIHDT,179.0,T -$AIHDT,179.1,T -$AIHDT,179.2,T -$AIHDT,179.3,T -$AIHDT,179.4,T -$AIHDT,179.5,T -$AIHDT,179.6,T -$AIHDT,179.7,T -$AIHDT,179.8,T -$AIHDT,179.9,T -$AIHDT,180.0,T -$AIHDT,180.1,T -$AIHDT,180.2,T -$AIHDT,180.3,T -$AIHDT,180.4,T -$AIHDT,180.5,T -$AIHDT,180.6,T -$AIHDT,180.7,T -$AIHDT,180.8,T -$AIHDT,180.9,T -$AIHDT,181.0,T -$AIHDT,181.1,T -$AIHDT,181.2,T -$AIHDT,181.3,T -$AIHDT,181.4,T -$AIHDT,181.5,T -$AIHDT,181.6,T -$AIHDT,181.7,T -$AIHDT,181.8,T -$AIHDT,181.9,T -$AIHDT,182.0,T -$AIHDT,182.1,T -$AIHDT,182.2,T -$AIHDT,182.3,T -$AIHDT,182.4,T -$AIHDT,182.5,T -$AIHDT,182.6,T -$AIHDT,182.7,T -$AIHDT,182.8,T -$AIHDT,182.9,T -$AIHDT,183.0,T -$AIHDT,183.1,T -$AIHDT,183.2,T -$AIHDT,183.3,T -$AIHDT,183.4,T -$AIHDT,183.5,T -$AIHDT,183.6,T -$AIHDT,183.7,T -$AIHDT,183.8,T -$AIHDT,183.9,T -$AIHDT,184.0,T -$AIHDT,184.1,T -$AIHDT,184.2,T -$AIHDT,184.3,T -$AIHDT,184.4,T -$AIHDT,184.5,T -$AIHDT,184.6,T -$AIHDT,184.7,T -$AIHDT,184.8,T -$AIHDT,184.9,T -$AIHDT,185.0,T -$AIHDT,185.1,T -$AIHDT,185.2,T -$AIHDT,185.3,T -$AIHDT,185.4,T -$AIHDT,185.5,T -$AIHDT,185.6,T -$AIHDT,185.7,T -$AIHDT,185.8,T -$AIHDT,185.9,T -$AIHDT,186.0,T -$AIHDT,186.1,T -$AIHDT,186.2,T -$AIHDT,186.3,T -$AIHDT,186.4,T -$AIHDT,186.5,T -$AIHDT,186.6,T -$AIHDT,186.7,T -$AIHDT,186.8,T -$AIHDT,186.9,T -$AIHDT,187.0,T -$AIHDT,187.1,T -$AIHDT,187.2,T -$AIHDT,187.3,T -$AIHDT,187.4,T -$AIHDT,187.5,T -$AIHDT,187.6,T -$AIHDT,187.7,T -$AIHDT,187.8,T -$AIHDT,187.9,T -$AIHDT,188.0,T -$AIHDT,188.1,T -$AIHDT,188.2,T -$AIHDT,188.3,T -$AIHDT,188.4,T -$AIHDT,188.5,T -$AIHDT,188.6,T -$AIHDT,188.7,T -$AIHDT,188.8,T -$AIHDT,188.9,T -$AIHDT,189.0,T -$AIHDT,189.1,T -$AIHDT,189.2,T -$AIHDT,189.3,T -$AIHDT,189.4,T -$AIHDT,189.5,T -$AIHDT,189.6,T -$AIHDT,189.7,T -$AIHDT,189.8,T -$AIHDT,189.9,T -$AIHDT,190.0,T -$AIHDT,190.1,T -$AIHDT,190.2,T -$AIHDT,190.3,T -$AIHDT,190.4,T -$AIHDT,190.5,T -$AIHDT,190.6,T -$AIHDT,190.7,T -$AIHDT,190.8,T -$AIHDT,190.9,T -$AIHDT,191.0,T -$AIHDT,191.1,T -$AIHDT,191.2,T -$AIHDT,191.3,T -$AIHDT,191.4,T -$AIHDT,191.5,T -$AIHDT,191.6,T -$AIHDT,191.7,T -$AIHDT,191.8,T -$AIHDT,191.9,T -$AIHDT,192.0,T -$AIHDT,192.1,T -$AIHDT,192.2,T -$AIHDT,192.3,T -$AIHDT,192.4,T -$AIHDT,192.5,T -$AIHDT,192.6,T -$AIHDT,192.7,T -$AIHDT,192.8,T -$AIHDT,192.9,T -$AIHDT,193.0,T -$AIHDT,193.1,T -$AIHDT,193.2,T -$AIHDT,193.3,T -$AIHDT,193.4,T -$AIHDT,193.5,T -$AIHDT,193.6,T -$AIHDT,193.7,T -$AIHDT,193.8,T -$AIHDT,193.9,T -$AIHDT,194.0,T -$AIHDT,194.1,T -$AIHDT,194.2,T -$AIHDT,194.3,T -$AIHDT,194.4,T -$AIHDT,194.5,T -$AIHDT,194.6,T -$AIHDT,194.7,T -$AIHDT,194.8,T -$AIHDT,194.9,T -$AIHDT,195.0,T -$AIHDT,195.1,T -$AIHDT,195.2,T -$AIHDT,195.3,T -$AIHDT,195.4,T -$AIHDT,195.5,T -$AIHDT,195.6,T -$AIHDT,195.7,T -$AIHDT,195.8,T -$AIHDT,195.9,T -$AIHDT,196.0,T -$AIHDT,196.1,T -$AIHDT,196.2,T -$AIHDT,196.3,T -$AIHDT,196.4,T -$AIHDT,196.5,T -$AIHDT,196.6,T -$AIHDT,196.7,T -$AIHDT,196.8,T -$AIHDT,196.9,T -$AIHDT,197.0,T -$AIHDT,197.1,T -$AIHDT,197.2,T -$AIHDT,197.3,T -$AIHDT,197.4,T -$AIHDT,197.5,T -$AIHDT,197.6,T -$AIHDT,197.7,T -$AIHDT,197.8,T -$AIHDT,197.9,T -$AIHDT,198.0,T -$AIHDT,198.1,T -$AIHDT,198.2,T -$AIHDT,198.3,T -$AIHDT,198.4,T -$AIHDT,198.5,T -$AIHDT,198.6,T -$AIHDT,198.7,T -$AIHDT,198.8,T -$AIHDT,198.9,T -$AIHDT,199.0,T -$AIHDT,199.1,T -$AIHDT,199.2,T -$AIHDT,199.3,T -$AIHDT,199.4,T -$AIHDT,199.5,T -$AIHDT,199.6,T -$AIHDT,199.7,T -$AIHDT,199.8,T -$AIHDT,199.9,T -$AIHDT,200.0,T -$AIHDT,200.1,T -$AIHDT,200.2,T -$AIHDT,200.3,T -$AIHDT,200.4,T -$AIHDT,200.5,T -$AIHDT,200.6,T -$AIHDT,200.7,T -$AIHDT,200.8,T -$AIHDT,200.9,T -$AIHDT,201.0,T -$AIHDT,201.1,T -$AIHDT,201.2,T -$AIHDT,201.3,T -$AIHDT,201.4,T -$AIHDT,201.5,T -$AIHDT,201.6,T -$AIHDT,201.7,T -$AIHDT,201.8,T -$AIHDT,201.9,T -$AIHDT,202.0,T -$AIHDT,202.1,T -$AIHDT,202.2,T -$AIHDT,202.3,T -$AIHDT,202.4,T -$AIHDT,202.5,T -$AIHDT,202.6,T -$AIHDT,202.7,T -$AIHDT,202.8,T -$AIHDT,202.9,T -$AIHDT,203.0,T -$AIHDT,203.1,T -$AIHDT,203.2,T -$AIHDT,203.3,T -$AIHDT,203.4,T -$AIHDT,203.5,T -$AIHDT,203.6,T -$AIHDT,203.7,T -$AIHDT,203.8,T -$AIHDT,203.9,T -$AIHDT,204.0,T -$AIHDT,204.1,T -$AIHDT,204.2,T -$AIHDT,204.3,T -$AIHDT,204.4,T -$AIHDT,204.5,T -$AIHDT,204.6,T -$AIHDT,204.7,T -$AIHDT,204.8,T -$AIHDT,204.9,T -$AIHDT,205.0,T -$AIHDT,205.1,T -$AIHDT,205.2,T -$AIHDT,205.3,T -$AIHDT,205.4,T -$AIHDT,205.5,T -$AIHDT,205.6,T -$AIHDT,205.7,T -$AIHDT,205.8,T -$AIHDT,205.9,T -$AIHDT,206.0,T -$AIHDT,206.1,T -$AIHDT,206.2,T -$AIHDT,206.3,T -$AIHDT,206.4,T -$AIHDT,206.5,T -$AIHDT,206.6,T -$AIHDT,206.7,T -$AIHDT,206.8,T -$AIHDT,206.9,T -$AIHDT,207.0,T -$AIHDT,207.1,T -$AIHDT,207.2,T -$AIHDT,207.3,T -$AIHDT,207.4,T -$AIHDT,207.5,T -$AIHDT,207.6,T -$AIHDT,207.7,T -$AIHDT,207.8,T -$AIHDT,207.9,T -$AIHDT,208.0,T -$AIHDT,208.1,T -$AIHDT,208.2,T -$AIHDT,208.3,T -$AIHDT,208.4,T -$AIHDT,208.5,T -$AIHDT,208.6,T -$AIHDT,208.7,T -$AIHDT,208.8,T -$AIHDT,208.9,T -$AIHDT,209.0,T -$AIHDT,209.1,T -$AIHDT,209.2,T -$AIHDT,209.3,T -$AIHDT,209.4,T -$AIHDT,209.5,T -$AIHDT,209.6,T -$AIHDT,209.7,T -$AIHDT,209.8,T -$AIHDT,209.9,T -$AIHDT,210.0,T -$AIHDT,210.1,T -$AIHDT,210.2,T -$AIHDT,210.3,T -$AIHDT,210.4,T -$AIHDT,210.5,T -$AIHDT,210.6,T -$AIHDT,210.7,T -$AIHDT,210.8,T -$AIHDT,210.9,T -$AIHDT,211.0,T -$AIHDT,211.1,T -$AIHDT,211.2,T -$AIHDT,211.3,T -$AIHDT,211.4,T -$AIHDT,211.5,T -$AIHDT,211.6,T -$AIHDT,211.7,T -$AIHDT,211.8,T -$AIHDT,211.9,T -$AIHDT,212.0,T -$AIHDT,212.1,T -$AIHDT,212.2,T -$AIHDT,212.3,T -$AIHDT,212.4,T -$AIHDT,212.5,T -$AIHDT,212.6,T -$AIHDT,212.7,T -$AIHDT,212.8,T -$AIHDT,212.9,T -$AIHDT,213.0,T -$AIHDT,213.1,T -$AIHDT,213.2,T -$AIHDT,213.3,T -$AIHDT,213.4,T -$AIHDT,213.5,T -$AIHDT,213.6,T -$AIHDT,213.7,T -$AIHDT,213.8,T -$AIHDT,213.9,T -$AIHDT,214.0,T -$AIHDT,214.1,T -$AIHDT,214.2,T -$AIHDT,214.3,T -$AIHDT,214.4,T -$AIHDT,214.5,T -$AIHDT,214.6,T -$AIHDT,214.7,T -$AIHDT,214.8,T -$AIHDT,214.9,T -$AIHDT,215.0,T -$AIHDT,215.1,T -$AIHDT,215.2,T -$AIHDT,215.3,T -$AIHDT,215.4,T -$AIHDT,215.5,T -$AIHDT,215.6,T -$AIHDT,215.7,T -$AIHDT,215.8,T -$AIHDT,215.9,T -$AIHDT,216.0,T -$AIHDT,216.1,T -$AIHDT,216.2,T -$AIHDT,216.3,T -$AIHDT,216.4,T -$AIHDT,216.5,T -$AIHDT,216.6,T -$AIHDT,216.7,T -$AIHDT,216.8,T -$AIHDT,216.9,T -$AIHDT,217.0,T -$AIHDT,217.1,T -$AIHDT,217.2,T -$AIHDT,217.3,T -$AIHDT,217.4,T -$AIHDT,217.5,T -$AIHDT,217.6,T -$AIHDT,217.7,T -$AIHDT,217.8,T -$AIHDT,217.9,T -$AIHDT,218.0,T -$AIHDT,218.1,T -$AIHDT,218.2,T -$AIHDT,218.3,T -$AIHDT,218.4,T -$AIHDT,218.5,T -$AIHDT,218.6,T -$AIHDT,218.7,T -$AIHDT,218.8,T -$AIHDT,218.9,T -$AIHDT,219.0,T -$AIHDT,219.1,T -$AIHDT,219.2,T -$AIHDT,219.3,T -$AIHDT,219.4,T -$AIHDT,219.5,T -$AIHDT,219.6,T -$AIHDT,219.7,T -$AIHDT,219.8,T -$AIHDT,219.9,T -$AIHDT,220.0,T -$AIHDT,220.1,T -$AIHDT,220.2,T -$AIHDT,220.3,T -$AIHDT,220.4,T -$AIHDT,220.5,T -$AIHDT,220.6,T -$AIHDT,220.7,T -$AIHDT,220.8,T -$AIHDT,220.9,T -$AIHDT,221.0,T -$AIHDT,221.1,T -$AIHDT,221.2,T -$AIHDT,221.3,T -$AIHDT,221.4,T -$AIHDT,221.5,T -$AIHDT,221.6,T -$AIHDT,221.7,T -$AIHDT,221.8,T -$AIHDT,221.9,T -$AIHDT,222.0,T -$AIHDT,222.1,T -$AIHDT,222.2,T -$AIHDT,222.3,T -$AIHDT,222.4,T -$AIHDT,222.5,T -$AIHDT,222.6,T -$AIHDT,222.7,T -$AIHDT,222.8,T -$AIHDT,222.9,T -$AIHDT,223.0,T -$AIHDT,223.1,T -$AIHDT,223.2,T -$AIHDT,223.3,T -$AIHDT,223.4,T -$AIHDT,223.5,T -$AIHDT,223.6,T -$AIHDT,223.7,T -$AIHDT,223.8,T -$AIHDT,223.9,T -$AIHDT,224.0,T -$AIHDT,224.1,T -$AIHDT,224.2,T -$AIHDT,224.3,T -$AIHDT,224.4,T -$AIHDT,224.5,T -$AIHDT,224.6,T -$AIHDT,224.7,T -$AIHDT,224.8,T -$AIHDT,224.9,T -$AIHDT,225.0,T -$AIHDT,225.1,T -$AIHDT,225.2,T -$AIHDT,225.3,T -$AIHDT,225.4,T -$AIHDT,225.5,T -$AIHDT,225.6,T -$AIHDT,225.7,T -$AIHDT,225.8,T -$AIHDT,225.9,T -$AIHDT,226.0,T -$AIHDT,226.1,T -$AIHDT,226.2,T -$AIHDT,226.3,T -$AIHDT,226.4,T -$AIHDT,226.5,T -$AIHDT,226.6,T -$AIHDT,226.7,T -$AIHDT,226.8,T -$AIHDT,226.9,T -$AIHDT,227.0,T -$AIHDT,227.1,T -$AIHDT,227.2,T -$AIHDT,227.3,T -$AIHDT,227.4,T -$AIHDT,227.5,T -$AIHDT,227.6,T -$AIHDT,227.7,T -$AIHDT,227.8,T -$AIHDT,227.9,T -$AIHDT,228.0,T -$AIHDT,228.1,T -$AIHDT,228.2,T -$AIHDT,228.3,T -$AIHDT,228.4,T -$AIHDT,228.5,T -$AIHDT,228.6,T -$AIHDT,228.7,T -$AIHDT,228.8,T -$AIHDT,228.9,T -$AIHDT,229.0,T -$AIHDT,229.1,T -$AIHDT,229.2,T -$AIHDT,229.3,T -$AIHDT,229.4,T -$AIHDT,229.5,T -$AIHDT,229.6,T -$AIHDT,229.7,T -$AIHDT,229.8,T -$AIHDT,229.9,T -$AIHDT,230.0,T -$AIHDT,230.1,T -$AIHDT,230.2,T -$AIHDT,230.3,T -$AIHDT,230.4,T -$AIHDT,230.5,T -$AIHDT,230.6,T -$AIHDT,230.7,T -$AIHDT,230.8,T -$AIHDT,230.9,T -$AIHDT,231.0,T -$AIHDT,231.1,T -$AIHDT,231.2,T -$AIHDT,231.3,T -$AIHDT,231.4,T -$AIHDT,231.5,T -$AIHDT,231.6,T -$AIHDT,231.7,T -$AIHDT,231.8,T -$AIHDT,231.9,T -$AIHDT,232.0,T -$AIHDT,232.1,T -$AIHDT,232.2,T -$AIHDT,232.3,T -$AIHDT,232.4,T -$AIHDT,232.5,T -$AIHDT,232.6,T -$AIHDT,232.7,T -$AIHDT,232.8,T -$AIHDT,232.9,T -$AIHDT,233.0,T -$AIHDT,233.1,T -$AIHDT,233.2,T -$AIHDT,233.3,T -$AIHDT,233.4,T -$AIHDT,233.5,T -$AIHDT,233.6,T -$AIHDT,233.7,T -$AIHDT,233.8,T -$AIHDT,233.9,T -$AIHDT,234.0,T -$AIHDT,234.1,T -$AIHDT,234.2,T -$AIHDT,234.3,T -$AIHDT,234.4,T -$AIHDT,234.5,T -$AIHDT,234.6,T -$AIHDT,234.7,T -$AIHDT,234.8,T -$AIHDT,234.9,T -$AIHDT,235.0,T -$AIHDT,235.1,T -$AIHDT,235.2,T -$AIHDT,235.3,T -$AIHDT,235.4,T -$AIHDT,235.5,T -$AIHDT,235.6,T -$AIHDT,235.7,T -$AIHDT,235.8,T -$AIHDT,235.9,T -$AIHDT,236.0,T -$AIHDT,236.1,T -$AIHDT,236.2,T -$AIHDT,236.3,T -$AIHDT,236.4,T -$AIHDT,236.5,T -$AIHDT,236.6,T -$AIHDT,236.7,T -$AIHDT,236.8,T -$AIHDT,236.9,T -$AIHDT,237.0,T -$AIHDT,237.1,T -$AIHDT,237.2,T -$AIHDT,237.3,T -$AIHDT,237.4,T -$AIHDT,237.5,T -$AIHDT,237.6,T -$AIHDT,237.7,T -$AIHDT,237.8,T -$AIHDT,237.9,T -$AIHDT,238.0,T -$AIHDT,238.1,T -$AIHDT,238.2,T -$AIHDT,238.3,T -$AIHDT,238.4,T -$AIHDT,238.5,T -$AIHDT,238.6,T -$AIHDT,238.7,T -$AIHDT,238.8,T -$AIHDT,238.9,T -$AIHDT,239.0,T -$AIHDT,239.1,T -$AIHDT,239.2,T -$AIHDT,239.3,T -$AIHDT,239.4,T -$AIHDT,239.5,T -$AIHDT,239.6,T -$AIHDT,239.7,T -$AIHDT,239.8,T -$AIHDT,239.9,T -$AIHDT,240.0,T -$AIHDT,240.1,T -$AIHDT,240.2,T -$AIHDT,240.3,T -$AIHDT,240.4,T -$AIHDT,240.5,T -$AIHDT,240.6,T -$AIHDT,240.7,T -$AIHDT,240.8,T -$AIHDT,240.9,T -$AIHDT,241.0,T -$AIHDT,241.1,T -$AIHDT,241.2,T -$AIHDT,241.3,T -$AIHDT,241.4,T -$AIHDT,241.5,T -$AIHDT,241.6,T -$AIHDT,241.7,T -$AIHDT,241.8,T -$AIHDT,241.9,T -$AIHDT,242.0,T -$AIHDT,242.1,T -$AIHDT,242.2,T -$AIHDT,242.3,T -$AIHDT,242.4,T -$AIHDT,242.5,T -$AIHDT,242.6,T -$AIHDT,242.7,T -$AIHDT,242.8,T -$AIHDT,242.9,T -$AIHDT,243.0,T -$AIHDT,243.1,T -$AIHDT,243.2,T -$AIHDT,243.3,T -$AIHDT,243.4,T -$AIHDT,243.5,T -$AIHDT,243.6,T -$AIHDT,243.7,T -$AIHDT,243.8,T -$AIHDT,243.9,T -$AIHDT,244.0,T -$AIHDT,244.1,T -$AIHDT,244.2,T -$AIHDT,244.3,T -$AIHDT,244.4,T -$AIHDT,244.5,T -$AIHDT,244.6,T -$AIHDT,244.7,T -$AIHDT,244.8,T -$AIHDT,244.9,T -$AIHDT,245.0,T -$AIHDT,245.1,T -$AIHDT,245.2,T -$AIHDT,245.3,T -$AIHDT,245.4,T -$AIHDT,245.5,T -$AIHDT,245.6,T -$AIHDT,245.7,T -$AIHDT,245.8,T -$AIHDT,245.9,T -$AIHDT,246.0,T -$AIHDT,246.1,T -$AIHDT,246.2,T -$AIHDT,246.3,T -$AIHDT,246.4,T -$AIHDT,246.5,T -$AIHDT,246.6,T -$AIHDT,246.7,T -$AIHDT,246.8,T -$AIHDT,246.9,T -$AIHDT,247.0,T -$AIHDT,247.1,T -$AIHDT,247.2,T -$AIHDT,247.3,T -$AIHDT,247.4,T -$AIHDT,247.5,T -$AIHDT,247.6,T -$AIHDT,247.7,T -$AIHDT,247.8,T -$AIHDT,247.9,T -$AIHDT,248.0,T -$AIHDT,248.1,T -$AIHDT,248.2,T -$AIHDT,248.3,T -$AIHDT,248.4,T -$AIHDT,248.5,T -$AIHDT,248.6,T -$AIHDT,248.7,T -$AIHDT,248.8,T -$AIHDT,248.9,T -$AIHDT,249.0,T -$AIHDT,249.1,T -$AIHDT,249.2,T -$AIHDT,249.3,T -$AIHDT,249.4,T -$AIHDT,249.5,T -$AIHDT,249.6,T -$AIHDT,249.7,T -$AIHDT,249.8,T -$AIHDT,249.9,T -$AIHDT,250.0,T -$AIHDT,250.1,T -$AIHDT,250.2,T -$AIHDT,250.3,T -$AIHDT,250.4,T -$AIHDT,250.5,T -$AIHDT,250.6,T -$AIHDT,250.7,T -$AIHDT,250.8,T -$AIHDT,250.9,T -$AIHDT,251.0,T -$AIHDT,251.1,T -$AIHDT,251.2,T -$AIHDT,251.3,T -$AIHDT,251.4,T -$AIHDT,251.5,T -$AIHDT,251.6,T -$AIHDT,251.7,T -$AIHDT,251.8,T -$AIHDT,251.9,T -$AIHDT,252.0,T -$AIHDT,252.1,T -$AIHDT,252.2,T -$AIHDT,252.3,T -$AIHDT,252.4,T -$AIHDT,252.5,T -$AIHDT,252.6,T -$AIHDT,252.7,T -$AIHDT,252.8,T -$AIHDT,252.9,T -$AIHDT,253.0,T -$AIHDT,253.1,T -$AIHDT,253.2,T -$AIHDT,253.3,T -$AIHDT,253.4,T -$AIHDT,253.5,T -$AIHDT,253.6,T -$AIHDT,253.7,T -$AIHDT,253.8,T -$AIHDT,253.9,T -$AIHDT,254.0,T -$AIHDT,254.1,T -$AIHDT,254.2,T -$AIHDT,254.3,T -$AIHDT,254.4,T -$AIHDT,254.5,T -$AIHDT,254.6,T -$AIHDT,254.7,T -$AIHDT,254.8,T -$AIHDT,254.9,T -$AIHDT,255.0,T -$AIHDT,255.1,T -$AIHDT,255.2,T -$AIHDT,255.3,T -$AIHDT,255.4,T -$AIHDT,255.5,T -$AIHDT,255.6,T -$AIHDT,255.7,T -$AIHDT,255.8,T -$AIHDT,255.9,T -$AIHDT,256.0,T -$AIHDT,256.1,T -$AIHDT,256.2,T -$AIHDT,256.3,T -$AIHDT,256.4,T -$AIHDT,256.5,T -$AIHDT,256.6,T -$AIHDT,256.7,T -$AIHDT,256.8,T -$AIHDT,256.9,T -$AIHDT,257.0,T -$AIHDT,257.1,T -$AIHDT,257.2,T -$AIHDT,257.3,T -$AIHDT,257.4,T -$AIHDT,257.5,T -$AIHDT,257.6,T -$AIHDT,257.7,T -$AIHDT,257.8,T -$AIHDT,257.9,T -$AIHDT,258.0,T -$AIHDT,258.1,T -$AIHDT,258.2,T -$AIHDT,258.3,T -$AIHDT,258.4,T -$AIHDT,258.5,T -$AIHDT,258.6,T -$AIHDT,258.7,T -$AIHDT,258.8,T -$AIHDT,258.9,T -$AIHDT,259.0,T -$AIHDT,259.1,T -$AIHDT,259.2,T -$AIHDT,259.3,T -$AIHDT,259.4,T -$AIHDT,259.5,T -$AIHDT,259.6,T -$AIHDT,259.7,T -$AIHDT,259.8,T -$AIHDT,259.9,T -$AIHDT,260.0,T -$AIHDT,260.1,T -$AIHDT,260.2,T -$AIHDT,260.3,T -$AIHDT,260.4,T -$AIHDT,260.5,T -$AIHDT,260.6,T -$AIHDT,260.7,T -$AIHDT,260.8,T -$AIHDT,260.9,T -$AIHDT,261.0,T -$AIHDT,261.1,T -$AIHDT,261.2,T -$AIHDT,261.3,T -$AIHDT,261.4,T -$AIHDT,261.5,T -$AIHDT,261.6,T -$AIHDT,261.7,T -$AIHDT,261.8,T -$AIHDT,261.9,T -$AIHDT,262.0,T -$AIHDT,262.1,T -$AIHDT,262.2,T -$AIHDT,262.3,T -$AIHDT,262.4,T -$AIHDT,262.5,T -$AIHDT,262.6,T -$AIHDT,262.7,T -$AIHDT,262.8,T -$AIHDT,262.9,T -$AIHDT,263.0,T -$AIHDT,263.1,T -$AIHDT,263.2,T -$AIHDT,263.3,T -$AIHDT,263.4,T -$AIHDT,263.5,T -$AIHDT,263.6,T -$AIHDT,263.7,T -$AIHDT,263.8,T -$AIHDT,263.9,T -$AIHDT,264.0,T -$AIHDT,264.1,T -$AIHDT,264.2,T -$AIHDT,264.3,T -$AIHDT,264.4,T -$AIHDT,264.5,T -$AIHDT,264.6,T -$AIHDT,264.7,T -$AIHDT,264.8,T -$AIHDT,264.9,T -$AIHDT,265.0,T -$AIHDT,265.1,T -$AIHDT,265.2,T -$AIHDT,265.3,T -$AIHDT,265.4,T -$AIHDT,265.5,T -$AIHDT,265.6,T -$AIHDT,265.7,T -$AIHDT,265.8,T -$AIHDT,265.9,T -$AIHDT,266.0,T -$AIHDT,266.1,T -$AIHDT,266.2,T -$AIHDT,266.3,T -$AIHDT,266.4,T -$AIHDT,266.5,T -$AIHDT,266.6,T -$AIHDT,266.7,T -$AIHDT,266.8,T -$AIHDT,266.9,T -$AIHDT,267.0,T -$AIHDT,267.1,T -$AIHDT,267.2,T -$AIHDT,267.3,T -$AIHDT,267.4,T -$AIHDT,267.5,T -$AIHDT,267.6,T -$AIHDT,267.7,T -$AIHDT,267.8,T -$AIHDT,267.9,T -$AIHDT,268.0,T -$AIHDT,268.1,T -$AIHDT,268.2,T -$AIHDT,268.3,T -$AIHDT,268.4,T -$AIHDT,268.5,T -$AIHDT,268.6,T -$AIHDT,268.7,T -$AIHDT,268.8,T -$AIHDT,268.9,T -$AIHDT,269.0,T -$AIHDT,269.1,T -$AIHDT,269.2,T -$AIHDT,269.3,T -$AIHDT,269.4,T -$AIHDT,269.5,T -$AIHDT,269.6,T -$AIHDT,269.7,T -$AIHDT,269.8,T -$AIHDT,269.9,T -$AIHDT,270.0,T -$AIHDT,270.1,T -$AIHDT,270.2,T -$AIHDT,270.3,T -$AIHDT,270.4,T -$AIHDT,270.5,T -$AIHDT,270.6,T -$AIHDT,270.7,T -$AIHDT,270.8,T -$AIHDT,270.9,T -$AIHDT,271.0,T -$AIHDT,271.1,T -$AIHDT,271.2,T -$AIHDT,271.3,T -$AIHDT,271.4,T -$AIHDT,271.5,T -$AIHDT,271.6,T -$AIHDT,271.7,T -$AIHDT,271.8,T -$AIHDT,271.9,T -$AIHDT,272.0,T -$AIHDT,272.1,T -$AIHDT,272.2,T -$AIHDT,272.3,T -$AIHDT,272.4,T -$AIHDT,272.5,T -$AIHDT,272.6,T -$AIHDT,272.7,T -$AIHDT,272.8,T -$AIHDT,272.9,T -$AIHDT,273.0,T -$AIHDT,273.1,T -$AIHDT,273.2,T -$AIHDT,273.3,T -$AIHDT,273.4,T -$AIHDT,273.5,T -$AIHDT,273.6,T -$AIHDT,273.7,T -$AIHDT,273.8,T -$AIHDT,273.9,T -$AIHDT,274.0,T -$AIHDT,274.1,T -$AIHDT,274.2,T -$AIHDT,274.3,T -$AIHDT,274.4,T -$AIHDT,274.5,T -$AIHDT,274.6,T -$AIHDT,274.7,T -$AIHDT,274.8,T -$AIHDT,274.9,T -$AIHDT,275.0,T -$AIHDT,275.1,T -$AIHDT,275.2,T -$AIHDT,275.3,T -$AIHDT,275.4,T -$AIHDT,275.5,T -$AIHDT,275.6,T -$AIHDT,275.7,T -$AIHDT,275.8,T -$AIHDT,275.9,T -$AIHDT,276.0,T -$AIHDT,276.1,T -$AIHDT,276.2,T -$AIHDT,276.3,T -$AIHDT,276.4,T -$AIHDT,276.5,T -$AIHDT,276.6,T -$AIHDT,276.7,T -$AIHDT,276.8,T -$AIHDT,276.9,T -$AIHDT,277.0,T -$AIHDT,277.1,T -$AIHDT,277.2,T -$AIHDT,277.3,T -$AIHDT,277.4,T -$AIHDT,277.5,T -$AIHDT,277.6,T -$AIHDT,277.7,T -$AIHDT,277.8,T -$AIHDT,277.9,T -$AIHDT,278.0,T -$AIHDT,278.1,T -$AIHDT,278.2,T -$AIHDT,278.3,T -$AIHDT,278.4,T -$AIHDT,278.5,T -$AIHDT,278.6,T -$AIHDT,278.7,T -$AIHDT,278.8,T -$AIHDT,278.9,T -$AIHDT,279.0,T -$AIHDT,279.1,T -$AIHDT,279.2,T -$AIHDT,279.3,T -$AIHDT,279.4,T -$AIHDT,279.5,T -$AIHDT,279.6,T -$AIHDT,279.7,T -$AIHDT,279.8,T -$AIHDT,279.9,T -$AIHDT,280.0,T -$AIHDT,280.1,T -$AIHDT,280.2,T -$AIHDT,280.3,T -$AIHDT,280.4,T -$AIHDT,280.5,T -$AIHDT,280.6,T -$AIHDT,280.7,T -$AIHDT,280.8,T -$AIHDT,280.9,T -$AIHDT,281.0,T -$AIHDT,281.1,T -$AIHDT,281.2,T -$AIHDT,281.3,T -$AIHDT,281.4,T -$AIHDT,281.5,T -$AIHDT,281.6,T -$AIHDT,281.7,T -$AIHDT,281.8,T -$AIHDT,281.9,T -$AIHDT,282.0,T -$AIHDT,282.1,T -$AIHDT,282.2,T -$AIHDT,282.3,T -$AIHDT,282.4,T -$AIHDT,282.5,T -$AIHDT,282.6,T -$AIHDT,282.7,T -$AIHDT,282.8,T -$AIHDT,282.9,T -$AIHDT,283.0,T -$AIHDT,283.1,T -$AIHDT,283.2,T -$AIHDT,283.3,T -$AIHDT,283.4,T -$AIHDT,283.5,T -$AIHDT,283.6,T -$AIHDT,283.7,T -$AIHDT,283.8,T -$AIHDT,283.9,T -$AIHDT,284.0,T -$AIHDT,284.1,T -$AIHDT,284.2,T -$AIHDT,284.3,T -$AIHDT,284.4,T -$AIHDT,284.5,T -$AIHDT,284.6,T -$AIHDT,284.7,T -$AIHDT,284.8,T -$AIHDT,284.9,T -$AIHDT,285.0,T -$AIHDT,285.1,T -$AIHDT,285.2,T -$AIHDT,285.3,T -$AIHDT,285.4,T -$AIHDT,285.5,T -$AIHDT,285.6,T -$AIHDT,285.7,T -$AIHDT,285.8,T -$AIHDT,285.9,T -$AIHDT,286.0,T -$AIHDT,286.1,T -$AIHDT,286.2,T -$AIHDT,286.3,T -$AIHDT,286.4,T -$AIHDT,286.5,T -$AIHDT,286.6,T -$AIHDT,286.7,T -$AIHDT,286.8,T -$AIHDT,286.9,T -$AIHDT,287.0,T -$AIHDT,287.1,T -$AIHDT,287.2,T -$AIHDT,287.3,T -$AIHDT,287.4,T -$AIHDT,287.5,T -$AIHDT,287.6,T -$AIHDT,287.7,T -$AIHDT,287.8,T -$AIHDT,287.9,T -$AIHDT,288.0,T -$AIHDT,288.1,T -$AIHDT,288.2,T -$AIHDT,288.3,T -$AIHDT,288.4,T -$AIHDT,288.5,T -$AIHDT,288.6,T -$AIHDT,288.7,T -$AIHDT,288.8,T -$AIHDT,288.9,T -$AIHDT,289.0,T -$AIHDT,289.1,T -$AIHDT,289.2,T -$AIHDT,289.3,T -$AIHDT,289.4,T -$AIHDT,289.5,T -$AIHDT,289.6,T -$AIHDT,289.7,T -$AIHDT,289.8,T -$AIHDT,289.9,T -$AIHDT,290.0,T -$AIHDT,290.1,T -$AIHDT,290.2,T -$AIHDT,290.3,T -$AIHDT,290.4,T -$AIHDT,290.5,T -$AIHDT,290.6,T -$AIHDT,290.7,T -$AIHDT,290.8,T -$AIHDT,290.9,T -$AIHDT,291.0,T -$AIHDT,291.1,T -$AIHDT,291.2,T -$AIHDT,291.3,T -$AIHDT,291.4,T -$AIHDT,291.5,T -$AIHDT,291.6,T -$AIHDT,291.7,T -$AIHDT,291.8,T -$AIHDT,291.9,T -$AIHDT,292.0,T -$AIHDT,292.1,T -$AIHDT,292.2,T -$AIHDT,292.3,T -$AIHDT,292.4,T -$AIHDT,292.5,T -$AIHDT,292.6,T -$AIHDT,292.7,T -$AIHDT,292.8,T -$AIHDT,292.9,T -$AIHDT,293.0,T -$AIHDT,293.1,T -$AIHDT,293.2,T -$AIHDT,293.3,T -$AIHDT,293.4,T -$AIHDT,293.5,T -$AIHDT,293.6,T -$AIHDT,293.7,T -$AIHDT,293.8,T -$AIHDT,293.9,T -$AIHDT,294.0,T -$AIHDT,294.1,T -$AIHDT,294.2,T -$AIHDT,294.3,T -$AIHDT,294.4,T -$AIHDT,294.5,T -$AIHDT,294.6,T -$AIHDT,294.7,T -$AIHDT,294.8,T -$AIHDT,294.9,T -$AIHDT,295.0,T -$AIHDT,295.1,T -$AIHDT,295.2,T -$AIHDT,295.3,T -$AIHDT,295.4,T -$AIHDT,295.5,T -$AIHDT,295.6,T -$AIHDT,295.7,T -$AIHDT,295.8,T -$AIHDT,295.9,T -$AIHDT,296.0,T -$AIHDT,296.1,T -$AIHDT,296.2,T -$AIHDT,296.3,T -$AIHDT,296.4,T -$AIHDT,296.5,T -$AIHDT,296.6,T -$AIHDT,296.7,T -$AIHDT,296.8,T -$AIHDT,296.9,T -$AIHDT,297.0,T -$AIHDT,297.1,T -$AIHDT,297.2,T -$AIHDT,297.3,T -$AIHDT,297.4,T -$AIHDT,297.5,T -$AIHDT,297.6,T -$AIHDT,297.7,T -$AIHDT,297.8,T -$AIHDT,297.9,T -$AIHDT,298.0,T -$AIHDT,298.1,T -$AIHDT,298.2,T -$AIHDT,298.3,T -$AIHDT,298.4,T -$AIHDT,298.5,T -$AIHDT,298.6,T -$AIHDT,298.7,T -$AIHDT,298.8,T -$AIHDT,298.9,T -$AIHDT,299.0,T -$AIHDT,299.1,T -$AIHDT,299.2,T -$AIHDT,299.3,T -$AIHDT,299.4,T -$AIHDT,299.5,T -$AIHDT,299.6,T -$AIHDT,299.7,T -$AIHDT,299.8,T -$AIHDT,299.9,T -$AIHDT,300.0,T -$AIHDT,300.1,T -$AIHDT,300.2,T -$AIHDT,300.3,T -$AIHDT,300.4,T -$AIHDT,300.5,T -$AIHDT,300.6,T -$AIHDT,300.7,T -$AIHDT,300.8,T -$AIHDT,300.9,T -$AIHDT,301.0,T -$AIHDT,301.1,T -$AIHDT,301.2,T -$AIHDT,301.3,T -$AIHDT,301.4,T -$AIHDT,301.5,T -$AIHDT,301.6,T -$AIHDT,301.7,T -$AIHDT,301.8,T -$AIHDT,301.9,T -$AIHDT,302.0,T -$AIHDT,302.1,T -$AIHDT,302.2,T -$AIHDT,302.3,T -$AIHDT,302.4,T -$AIHDT,302.5,T -$AIHDT,302.6,T -$AIHDT,302.7,T -$AIHDT,302.8,T -$AIHDT,302.9,T -$AIHDT,303.0,T -$AIHDT,303.1,T -$AIHDT,303.2,T -$AIHDT,303.3,T -$AIHDT,303.4,T -$AIHDT,303.5,T -$AIHDT,303.6,T -$AIHDT,303.7,T -$AIHDT,303.8,T -$AIHDT,303.9,T -$AIHDT,304.0,T -$AIHDT,304.1,T -$AIHDT,304.2,T -$AIHDT,304.3,T -$AIHDT,304.4,T -$AIHDT,304.5,T -$AIHDT,304.6,T -$AIHDT,304.7,T -$AIHDT,304.8,T -$AIHDT,304.9,T -$AIHDT,305.0,T -$AIHDT,305.1,T -$AIHDT,305.2,T -$AIHDT,305.3,T -$AIHDT,305.4,T -$AIHDT,305.5,T -$AIHDT,305.6,T -$AIHDT,305.7,T -$AIHDT,305.8,T -$AIHDT,305.9,T -$AIHDT,306.0,T -$AIHDT,306.1,T -$AIHDT,306.2,T -$AIHDT,306.3,T -$AIHDT,306.4,T -$AIHDT,306.5,T -$AIHDT,306.6,T -$AIHDT,306.7,T -$AIHDT,306.8,T -$AIHDT,306.9,T -$AIHDT,307.0,T -$AIHDT,307.1,T -$AIHDT,307.2,T -$AIHDT,307.3,T -$AIHDT,307.4,T -$AIHDT,307.5,T -$AIHDT,307.6,T -$AIHDT,307.7,T -$AIHDT,307.8,T -$AIHDT,307.9,T -$AIHDT,308.0,T -$AIHDT,308.1,T -$AIHDT,308.2,T -$AIHDT,308.3,T -$AIHDT,308.4,T -$AIHDT,308.5,T -$AIHDT,308.6,T -$AIHDT,308.7,T -$AIHDT,308.8,T -$AIHDT,308.9,T -$AIHDT,309.0,T -$AIHDT,309.1,T -$AIHDT,309.2,T -$AIHDT,309.3,T -$AIHDT,309.4,T -$AIHDT,309.5,T -$AIHDT,309.6,T -$AIHDT,309.7,T -$AIHDT,309.8,T -$AIHDT,309.9,T -$AIHDT,310.0,T -$AIHDT,310.1,T -$AIHDT,310.2,T -$AIHDT,310.3,T -$AIHDT,310.4,T -$AIHDT,310.5,T -$AIHDT,310.6,T -$AIHDT,310.7,T -$AIHDT,310.8,T -$AIHDT,310.9,T -$AIHDT,311.0,T -$AIHDT,311.1,T -$AIHDT,311.2,T -$AIHDT,311.3,T -$AIHDT,311.4,T -$AIHDT,311.5,T -$AIHDT,311.6,T -$AIHDT,311.7,T -$AIHDT,311.8,T -$AIHDT,311.9,T -$AIHDT,312.0,T -$AIHDT,312.1,T -$AIHDT,312.2,T -$AIHDT,312.3,T -$AIHDT,312.4,T -$AIHDT,312.5,T -$AIHDT,312.6,T -$AIHDT,312.7,T -$AIHDT,312.8,T -$AIHDT,312.9,T -$AIHDT,313.0,T -$AIHDT,313.1,T -$AIHDT,313.2,T -$AIHDT,313.3,T -$AIHDT,313.4,T -$AIHDT,313.5,T -$AIHDT,313.6,T -$AIHDT,313.7,T -$AIHDT,313.8,T -$AIHDT,313.9,T -$AIHDT,314.0,T -$AIHDT,314.1,T -$AIHDT,314.2,T -$AIHDT,314.3,T -$AIHDT,314.4,T -$AIHDT,314.5,T -$AIHDT,314.6,T -$AIHDT,314.7,T -$AIHDT,314.8,T -$AIHDT,314.9,T -$AIHDT,315.0,T -$AIHDT,315.1,T -$AIHDT,315.2,T -$AIHDT,315.3,T -$AIHDT,315.4,T -$AIHDT,315.5,T -$AIHDT,315.6,T -$AIHDT,315.7,T -$AIHDT,315.8,T -$AIHDT,315.9,T -$AIHDT,316.0,T -$AIHDT,316.1,T -$AIHDT,316.2,T -$AIHDT,316.3,T -$AIHDT,316.4,T -$AIHDT,316.5,T -$AIHDT,316.6,T -$AIHDT,316.7,T -$AIHDT,316.8,T -$AIHDT,316.9,T -$AIHDT,317.0,T -$AIHDT,317.1,T -$AIHDT,317.2,T -$AIHDT,317.3,T -$AIHDT,317.4,T -$AIHDT,317.5,T -$AIHDT,317.6,T -$AIHDT,317.7,T -$AIHDT,317.8,T -$AIHDT,317.9,T -$AIHDT,318.0,T -$AIHDT,318.1,T -$AIHDT,318.2,T -$AIHDT,318.3,T -$AIHDT,318.4,T -$AIHDT,318.5,T -$AIHDT,318.6,T -$AIHDT,318.7,T -$AIHDT,318.8,T -$AIHDT,318.9,T -$AIHDT,319.0,T -$AIHDT,319.1,T -$AIHDT,319.2,T -$AIHDT,319.3,T -$AIHDT,319.4,T -$AIHDT,319.5,T -$AIHDT,319.6,T -$AIHDT,319.7,T -$AIHDT,319.8,T -$AIHDT,319.9,T -$AIHDT,320.0,T -$AIHDT,320.1,T -$AIHDT,320.2,T -$AIHDT,320.3,T -$AIHDT,320.4,T -$AIHDT,320.5,T -$AIHDT,320.6,T -$AIHDT,320.7,T -$AIHDT,320.8,T -$AIHDT,320.9,T -$AIHDT,321.0,T -$AIHDT,321.1,T -$AIHDT,321.2,T -$AIHDT,321.3,T -$AIHDT,321.4,T -$AIHDT,321.5,T -$AIHDT,321.6,T -$AIHDT,321.7,T -$AIHDT,321.8,T -$AIHDT,321.9,T -$AIHDT,322.0,T -$AIHDT,322.1,T -$AIHDT,322.2,T -$AIHDT,322.3,T -$AIHDT,322.4,T -$AIHDT,322.5,T -$AIHDT,322.6,T -$AIHDT,322.7,T -$AIHDT,322.8,T -$AIHDT,322.9,T -$AIHDT,323.0,T -$AIHDT,323.1,T -$AIHDT,323.2,T -$AIHDT,323.3,T -$AIHDT,323.4,T -$AIHDT,323.5,T -$AIHDT,323.6,T -$AIHDT,323.7,T -$AIHDT,323.8,T -$AIHDT,323.9,T -$AIHDT,324.0,T -$AIHDT,324.1,T -$AIHDT,324.2,T -$AIHDT,324.3,T -$AIHDT,324.4,T -$AIHDT,324.5,T -$AIHDT,324.6,T -$AIHDT,324.7,T -$AIHDT,324.8,T -$AIHDT,324.9,T -$AIHDT,325.0,T -$AIHDT,325.1,T -$AIHDT,325.2,T -$AIHDT,325.3,T -$AIHDT,325.4,T -$AIHDT,325.5,T -$AIHDT,325.6,T -$AIHDT,325.7,T -$AIHDT,325.8,T -$AIHDT,325.9,T -$AIHDT,326.0,T -$AIHDT,326.1,T -$AIHDT,326.2,T -$AIHDT,326.3,T -$AIHDT,326.4,T -$AIHDT,326.5,T -$AIHDT,326.6,T -$AIHDT,326.7,T -$AIHDT,326.8,T -$AIHDT,326.9,T -$AIHDT,327.0,T -$AIHDT,327.1,T -$AIHDT,327.2,T -$AIHDT,327.3,T -$AIHDT,327.4,T -$AIHDT,327.5,T -$AIHDT,327.6,T -$AIHDT,327.7,T -$AIHDT,327.8,T -$AIHDT,327.9,T -$AIHDT,328.0,T -$AIHDT,328.1,T -$AIHDT,328.2,T -$AIHDT,328.3,T -$AIHDT,328.4,T -$AIHDT,328.5,T -$AIHDT,328.6,T -$AIHDT,328.7,T -$AIHDT,328.8,T -$AIHDT,328.9,T -$AIHDT,329.0,T -$AIHDT,329.1,T -$AIHDT,329.2,T -$AIHDT,329.3,T -$AIHDT,329.4,T -$AIHDT,329.5,T -$AIHDT,329.6,T -$AIHDT,329.7,T -$AIHDT,329.8,T -$AIHDT,329.9,T -$AIHDT,330.0,T -$AIHDT,330.1,T -$AIHDT,330.2,T -$AIHDT,330.3,T -$AIHDT,330.4,T -$AIHDT,330.5,T -$AIHDT,330.6,T -$AIHDT,330.7,T -$AIHDT,330.8,T -$AIHDT,330.9,T -$AIHDT,331.0,T -$AIHDT,331.1,T -$AIHDT,331.2,T -$AIHDT,331.3,T -$AIHDT,331.4,T -$AIHDT,331.5,T -$AIHDT,331.6,T -$AIHDT,331.7,T -$AIHDT,331.8,T -$AIHDT,331.9,T -$AIHDT,332.0,T -$AIHDT,332.1,T -$AIHDT,332.2,T -$AIHDT,332.3,T -$AIHDT,332.4,T -$AIHDT,332.5,T -$AIHDT,332.6,T -$AIHDT,332.7,T -$AIHDT,332.8,T -$AIHDT,332.9,T -$AIHDT,333.0,T -$AIHDT,333.1,T -$AIHDT,333.2,T -$AIHDT,333.3,T -$AIHDT,333.4,T -$AIHDT,333.5,T -$AIHDT,333.6,T -$AIHDT,333.7,T -$AIHDT,333.8,T -$AIHDT,333.9,T -$AIHDT,334.0,T -$AIHDT,334.1,T -$AIHDT,334.2,T -$AIHDT,334.3,T -$AIHDT,334.4,T -$AIHDT,334.5,T -$AIHDT,334.6,T -$AIHDT,334.7,T -$AIHDT,334.8,T -$AIHDT,334.9,T -$AIHDT,335.0,T -$AIHDT,335.1,T -$AIHDT,335.2,T -$AIHDT,335.3,T -$AIHDT,335.4,T -$AIHDT,335.5,T -$AIHDT,335.6,T -$AIHDT,335.7,T -$AIHDT,335.8,T -$AIHDT,335.9,T -$AIHDT,336.0,T -$AIHDT,336.1,T -$AIHDT,336.2,T -$AIHDT,336.3,T -$AIHDT,336.4,T -$AIHDT,336.5,T -$AIHDT,336.6,T -$AIHDT,336.7,T -$AIHDT,336.8,T -$AIHDT,336.9,T -$AIHDT,337.0,T -$AIHDT,337.1,T -$AIHDT,337.2,T -$AIHDT,337.3,T -$AIHDT,337.4,T -$AIHDT,337.5,T -$AIHDT,337.6,T -$AIHDT,337.7,T -$AIHDT,337.8,T -$AIHDT,337.9,T -$AIHDT,338.0,T -$AIHDT,338.1,T -$AIHDT,338.2,T -$AIHDT,338.3,T -$AIHDT,338.4,T -$AIHDT,338.5,T -$AIHDT,338.6,T -$AIHDT,338.7,T -$AIHDT,338.8,T -$AIHDT,338.9,T -$AIHDT,339.0,T -$AIHDT,339.1,T -$AIHDT,339.2,T -$AIHDT,339.3,T -$AIHDT,339.4,T -$AIHDT,339.5,T -$AIHDT,339.6,T -$AIHDT,339.7,T -$AIHDT,339.8,T -$AIHDT,339.9,T -$AIHDT,340.0,T -$AIHDT,340.1,T -$AIHDT,340.2,T -$AIHDT,340.3,T -$AIHDT,340.4,T -$AIHDT,340.5,T -$AIHDT,340.6,T -$AIHDT,340.7,T -$AIHDT,340.8,T -$AIHDT,340.9,T -$AIHDT,341.0,T -$AIHDT,341.1,T -$AIHDT,341.2,T -$AIHDT,341.3,T -$AIHDT,341.4,T -$AIHDT,341.5,T -$AIHDT,341.6,T -$AIHDT,341.7,T -$AIHDT,341.8,T -$AIHDT,341.9,T -$AIHDT,342.0,T -$AIHDT,342.1,T -$AIHDT,342.2,T -$AIHDT,342.3,T -$AIHDT,342.4,T -$AIHDT,342.5,T -$AIHDT,342.6,T -$AIHDT,342.7,T -$AIHDT,342.8,T -$AIHDT,342.9,T -$AIHDT,343.0,T -$AIHDT,343.1,T -$AIHDT,343.2,T -$AIHDT,343.3,T -$AIHDT,343.4,T -$AIHDT,343.5,T -$AIHDT,343.6,T -$AIHDT,343.7,T -$AIHDT,343.8,T -$AIHDT,343.9,T -$AIHDT,344.0,T -$AIHDT,344.1,T -$AIHDT,344.2,T -$AIHDT,344.3,T -$AIHDT,344.4,T -$AIHDT,344.5,T -$AIHDT,344.6,T -$AIHDT,344.7,T -$AIHDT,344.8,T -$AIHDT,344.9,T -$AIHDT,345.0,T -$AIHDT,345.1,T -$AIHDT,345.2,T -$AIHDT,345.3,T -$AIHDT,345.4,T -$AIHDT,345.5,T -$AIHDT,345.6,T -$AIHDT,345.7,T -$AIHDT,345.8,T -$AIHDT,345.9,T -$AIHDT,346.0,T -$AIHDT,346.1,T -$AIHDT,346.2,T -$AIHDT,346.3,T -$AIHDT,346.4,T -$AIHDT,346.5,T -$AIHDT,346.6,T -$AIHDT,346.7,T -$AIHDT,346.8,T -$AIHDT,346.9,T -$AIHDT,347.0,T -$AIHDT,347.1,T -$AIHDT,347.2,T -$AIHDT,347.3,T -$AIHDT,347.4,T -$AIHDT,347.5,T -$AIHDT,347.6,T -$AIHDT,347.7,T -$AIHDT,347.8,T -$AIHDT,347.9,T -$AIHDT,348.0,T -$AIHDT,348.1,T -$AIHDT,348.2,T -$AIHDT,348.3,T -$AIHDT,348.4,T -$AIHDT,348.5,T -$AIHDT,348.6,T -$AIHDT,348.7,T -$AIHDT,348.8,T -$AIHDT,348.9,T -$AIHDT,349.0,T -$AIHDT,349.1,T -$AIHDT,349.2,T -$AIHDT,349.3,T -$AIHDT,349.4,T -$AIHDT,349.5,T -$AIHDT,349.6,T -$AIHDT,349.7,T -$AIHDT,349.8,T -$AIHDT,349.9,T -$AIHDT,350.0,T -$AIHDT,350.1,T -$AIHDT,350.2,T -$AIHDT,350.3,T -$AIHDT,350.4,T -$AIHDT,350.5,T -$AIHDT,350.6,T -$AIHDT,350.7,T -$AIHDT,350.8,T -$AIHDT,350.9,T -$AIHDT,351.0,T -$AIHDT,351.1,T -$AIHDT,351.2,T -$AIHDT,351.3,T -$AIHDT,351.4,T -$AIHDT,351.5,T -$AIHDT,351.6,T -$AIHDT,351.7,T -$AIHDT,351.8,T -$AIHDT,351.9,T -$AIHDT,352.0,T -$AIHDT,352.1,T -$AIHDT,352.2,T -$AIHDT,352.3,T -$AIHDT,352.4,T -$AIHDT,352.5,T -$AIHDT,352.6,T -$AIHDT,352.7,T -$AIHDT,352.8,T -$AIHDT,352.9,T -$AIHDT,353.0,T -$AIHDT,353.1,T -$AIHDT,353.2,T -$AIHDT,353.3,T -$AIHDT,353.4,T -$AIHDT,353.5,T -$AIHDT,353.6,T -$AIHDT,353.7,T -$AIHDT,353.8,T -$AIHDT,353.9,T -$AIHDT,354.0,T -$AIHDT,354.1,T -$AIHDT,354.2,T -$AIHDT,354.3,T -$AIHDT,354.4,T -$AIHDT,354.5,T -$AIHDT,354.6,T -$AIHDT,354.7,T -$AIHDT,354.8,T -$AIHDT,354.9,T -$AIHDT,355.0,T -$AIHDT,355.1,T -$AIHDT,355.2,T -$AIHDT,355.3,T -$AIHDT,355.4,T -$AIHDT,355.5,T -$AIHDT,355.6,T -$AIHDT,355.7,T -$AIHDT,355.8,T -$AIHDT,355.9,T -$AIHDT,356.0,T -$AIHDT,356.1,T -$AIHDT,356.2,T -$AIHDT,356.3,T -$AIHDT,356.4,T -$AIHDT,356.5,T -$AIHDT,356.6,T -$AIHDT,356.7,T -$AIHDT,356.8,T -$AIHDT,356.9,T -$AIHDT,357.0,T -$AIHDT,357.1,T -$AIHDT,357.2,T -$AIHDT,357.3,T -$AIHDT,357.4,T -$AIHDT,357.5,T -$AIHDT,357.6,T -$AIHDT,357.7,T -$AIHDT,357.8,T -$AIHDT,357.9,T -$AIHDT,358.0,T -$AIHDT,358.1,T -$AIHDT,358.2,T -$AIHDT,358.3,T -$AIHDT,358.4,T -$AIHDT,358.5,T -$AIHDT,358.6,T -$AIHDT,358.7,T -$AIHDT,358.8,T -$AIHDT,358.9,T -$AIHDT,359.0,T -$AIHDT,359.1,T -$AIHDT,359.2,T -$AIHDT,359.3,T -$AIHDT,359.4,T -$AIHDT,359.5,T -$AIHDT,359.6,T -$AIHDT,359.7,T -$AIHDT,359.8,T -$AIHDT,359.9,T Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/merrimac.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/merrimac.pcap.gz differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/example/navico_3g_dump.pcap.gz and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/example/navico_3g_dump.pcap.gz differ diff -Nru opencpn-plugin-br24radar-2.1.0/po/ar_SA.po opencpn-plugin-br24radar-3.0.1/po/ar_SA.po --- opencpn-plugin-br24radar-2.1.0/po/ar_SA.po 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/ar_SA.po 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,938 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" +"Last-Translator: nohal \n" +"Language-Team: Arabic\n" +"Language: ar_SA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Language: ar\n" +"X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" + +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 +msgid "Auto" +msgstr "" + +#: src\br24ControlsDialog.cpp:479 +msgid "Back" +msgstr "" + +#: src\br24ControlsDialog.cpp:498 +msgid "Standby / Transmit" +msgstr "" + +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 +msgid "Noise rejection" +msgstr "" + +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 +msgid "Target expansion" +msgstr "" + +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 +msgid "Interference rejection" +msgstr "" + +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 +msgid "Target separation" +msgstr "" + +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 +msgid "Scan speed" +msgstr "" + +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 +msgid "Target boost" +msgstr "" + +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 +msgid "Installation" +msgstr "" + +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 +msgid "Bearing alignment" +msgstr "" + +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 +msgid "Antenna height" +msgstr "" + +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 +msgid "Local interference rej." +msgstr "" + +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 +msgid "Side lobe suppression" +msgstr "" + +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 +msgid "Main bang size" +msgstr "" + +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 +msgid "Guard zones" +msgstr "" + +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 +msgid "Zone type" +msgstr "" + +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 +msgid "Inner range" +msgstr "" + +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 +msgid "Outer range" +msgstr "" + +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 +msgid "Start bearing" +msgstr "" + +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 +msgid "End bearing" +msgstr "" + +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 +msgid "Range" +msgstr "" + +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 +msgid "Gain" +msgstr "" + +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 +msgid "Sea clutter" +msgstr "" + +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 +msgid "Rain clutter" +msgstr "" + +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 +msgid "Clear cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 +msgid "Place EBL/VRM" +msgstr "" + +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 +#: src\br24OptionsDialog.cpp:129 +msgid "Target trails" +msgstr "" + +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "" + +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 +msgid "Clear trails" +msgstr "" + +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 +msgid "Orientation" +msgstr "" + +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 +msgid "Refresh rate" +msgstr "" + +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 +msgid "Transparency" +msgstr "" + +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 +msgid "Overlay" +msgstr "" + +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 +msgid "Adjust" +msgstr "" + +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 +msgid "Advanced" +msgstr "" + +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 +msgid "View" +msgstr "" + +#: src\br24ControlsDialog.cpp:536 +msgid "EBL/VRM" +msgstr "" + +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 +msgid "Timed Transmit" +msgstr "" + +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 +msgid "Info" +msgstr "" + +#: src\br24ControlsDialog.cpp:599 +msgid "+10" +msgstr "" + +#: src\br24ControlsDialog.cpp:603 +msgid "+" +msgstr "" + +#: src\br24ControlsDialog.cpp:608 +msgid "Value" +msgstr "" + +#: src\br24ControlsDialog.cpp:619 +msgid "-" +msgstr "" + +#: src\br24ControlsDialog.cpp:623 +msgid "-10" +msgstr "" + +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 +msgid "Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 +msgid "Low" +msgstr "" + +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 +msgid "High" +msgstr "" + +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 +msgid "On" +msgstr "" + +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 +msgid "Medium" +msgstr "" + +#: src\br24ControlsDialog.cpp:700 +msgid "Normal" +msgstr "" + +#: src\br24ControlsDialog.cpp:701 +msgid "Fast" +msgstr "" + +#: src\br24ControlsDialog.cpp:725 +msgid "Preferences" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 +msgid "Arc" +msgstr "" + +#: src\br24ControlsDialog.cpp:815 +msgid "Circle" +msgstr "" + +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 +msgid "15 sec" +msgstr "" + +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 +msgid "30 sec" +msgstr "" + +#: src\br24ControlsDialog.cpp:956 +msgid "1 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:957 +msgid "3 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 +msgid "10 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:960 +msgid "Continuous" +msgstr "" + +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "" + +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "" + +#: src\br24ControlsDialog.cpp:1018 +msgid "15 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:1019 +msgid "20 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:1020 +msgid "25 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:1021 +msgid "30 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:1022 +msgid "35 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 +msgid "Guard zone" +msgstr "" + +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" + +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 +msgid "Standby in" +msgstr "" + +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 +msgid "Transmit in" +msgstr "" + +#: src\br24ControlsDialog.cpp:1557 +msgid "Hide both windows" +msgstr "" + +#: src\br24ControlsDialog.cpp:1559 +msgid "Show other window" +msgstr "" + +#: src\br24ControlsDialog.cpp:1563 +msgid "Show this window" +msgstr "" + +#: src\br24ControlsDialog.cpp:1565 +msgid "Show both windows" +msgstr "" + +#: src\br24ControlsDialog.cpp:1569 +msgid "Hide window" +msgstr "" + +#: src\br24ControlsDialog.cpp:1569 +msgid "Show window" +msgstr "" + +#: src\br24ControlsDialog.cpp:1575 +msgid "Clear EBL/VRM" +msgstr "" + +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 +msgid "True" +msgstr "" + +#: src\br24ControlsDialog.cpp:1601 +msgid "Relative" +msgstr "" + +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 +msgid "North up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" + +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 +msgid "Radar" +msgstr "" + +#: src\br24MessageBox.cpp:125 +msgid "Cannot switch radar on as\n" +"it is not connected or off" +msgstr "" + +#: src\br24MessageBox.cpp:132 +msgid "OpenCPN options" +msgstr "" + +#: src\br24MessageBox.cpp:137 +msgid "Accelerated Graphics (OpenGL)" +msgstr "" + +#: src\br24MessageBox.cpp:143 +msgid "ZeroConf via Ethernet" +msgstr "" + +#: src\br24MessageBox.cpp:149 +msgid "Radar present" +msgstr "" + +#: src\br24MessageBox.cpp:155 +msgid "Radar sending data" +msgstr "" + +#: src\br24MessageBox.cpp:160 +msgid "For radar overlay also required" +msgstr "" + +#: src\br24MessageBox.cpp:168 +msgid "Boat position" +msgstr "" + +#: src\br24MessageBox.cpp:174 +msgid "and" +msgstr "" + +#: src\br24MessageBox.cpp:179 +msgid "True Heading" +msgstr "" + +#: src\br24MessageBox.cpp:184 +msgid "or" +msgstr "" + +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 +msgid "Magnetic heading" +msgstr "" + +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 +msgid "Variation" +msgstr "" + +#: src\br24MessageBox.cpp:200 src\br24MessageBox.cpp:205 +msgid "Statistics" +msgstr "" + +#: src\br24MessageBox.cpp:210 +msgid "&Close" +msgstr "" + +#: src\br24MessageBox.cpp:216 +msgid "&Hide Radar" +msgstr "" + +#: src\br24MessageBox.cpp:342 +msgid "Radar type" +msgstr "" + +#: src\br24MessageBox.cpp:346 +msgid "Radar IP" +msgstr "" + +#: src\br24MessageBox.cpp:366 +msgid "Radar requirements OK:" +msgstr "" + +#: src\br24MessageBox.cpp:368 +msgid "Radar requires the following" +msgstr "" + +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 +msgid "Emulator" +msgstr "" + +#: src\br24MessageBox.cpp:458 +msgid "Ethernet card" +msgstr "" + +#: src\br24MessageBox.cpp:465 +msgid "True heading" +msgstr "" + +#: src\br24OptionsDialog.cpp:38 +msgid "BR24 Display Preferences" +msgstr "" + +#: src\br24OptionsDialog.cpp:58 +msgid "Nautical Miles" +msgstr "" + +#: src\br24OptionsDialog.cpp:58 +msgid "Kilometers" +msgstr "" + +#: src\br24OptionsDialog.cpp:62 +msgid "Range Units" +msgstr "" + +#: src\br24OptionsDialog.cpp:69 +msgid "Shading" +msgstr "" + +#: src\br24OptionsDialog.cpp:69 +msgid "Outline" +msgstr "" + +#: src\br24OptionsDialog.cpp:69 +msgid "Shading + Outline" +msgstr "" + +#: src\br24OptionsDialog.cpp:71 +msgid "Guard Zone Styling" +msgstr "" + +#: src\br24OptionsDialog.cpp:80 +msgid "Guard Zone Sound" +msgstr "" + +#: src\br24OptionsDialog.cpp:83 +msgid "Select Alert Sound" +msgstr "" + +#: src\br24OptionsDialog.cpp:87 +msgid "Test Alert Sound" +msgstr "" + +#: src\br24OptionsDialog.cpp:92 +msgid "Repeat alarm after (sec)" +msgstr "" + +#: src\br24OptionsDialog.cpp:103 +msgid "GPU drawing method" +msgstr "" + +#: src\br24OptionsDialog.cpp:109 +msgid "Drawing Method" +msgstr "" + +#: src\br24OptionsDialog.cpp:116 +msgid "Control Menu Auto Hide" +msgstr "" + +#: src\br24OptionsDialog.cpp:119 +msgid "Never" +msgstr "" + +#: src\br24OptionsDialog.cpp:119 +msgid "10 sec" +msgstr "" + +#: src\br24OptionsDialog.cpp:122 +msgid "Auto hide after" +msgstr "" + +#: src\br24OptionsDialog.cpp:132 +msgid "Trail start color" +msgstr "" + +#: src\br24OptionsDialog.cpp:139 +msgid "Trail end color" +msgstr "" + +#: src\br24OptionsDialog.cpp:148 +msgid "Target colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:151 +msgid "Weak return color" +msgstr "" + +#: src\br24OptionsDialog.cpp:157 +msgid "Intermediate return color" +msgstr "" + +#: src\br24OptionsDialog.cpp:164 +msgid "Strong return color" +msgstr "" + +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 +msgid "Options" +msgstr "" + +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 +msgid "Show Guard Zone on overlay" +msgstr "" + +#: src\br24OptionsDialog.cpp:221 +msgid "Show Target trails on overlay" +msgstr "" + +#: src\br24OptionsDialog.cpp:227 +msgid "Enable dual radar, 4G only" +msgstr "" + +#: src\br24OptionsDialog.cpp:239 +msgid "Ignore radar heading" +msgstr "" + +#: src\br24OptionsDialog.cpp:246 +msgid "Pass radar heading to OpenCPN" +msgstr "" + +#: src\br24OptionsDialog.cpp:252 +msgid "Enable COG as heading" +msgstr "" + +#: src\br24OptionsDialog.cpp:260 +msgid "Emulator mode" +msgstr "" + +#: src\br24OptionsDialog.cpp:265 +msgid "Reverse mouse wheel zoom direction" +msgstr "" + +#: src\br24OptionsDialog.cpp:332 +msgid "Select Sound File" +msgstr "" + +#: src\br24OptionsDialog.cpp:333 +msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" +msgstr "" + +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 +msgid "Radar A" +msgstr "" + +#: src\br24radar_pi.cpp:250 +msgid "Radar B" +msgstr "" + +#: src\br24radar_pi.cpp:258 +msgid "Navico BR24, 3G and 4G RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:267 +msgid "Show radar" +msgstr "" + +#: src\br24radar_pi.cpp:268 +msgid "Hide radar" +msgstr "" + +#: src\br24radar_pi.cpp:269 +msgid "Radar Control..." +msgstr "" + +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 +msgid "Menu" +msgstr "" + +#: src\br24radar_pi.cpp:360 +msgid "Navico Radar PlugIn for OpenCPN" +msgstr "" + +#: src\br24radar_pi.cpp:362 +msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" +msgstr "" + +#: src\br24radar_pi.cpp:643 +msgid "Zone" +msgstr "" + +#: src\br24radar_pi.cpp:645 +msgid "(Confirmed)" +msgstr "" + +#: src\br24radar_pi.cpp:677 +msgid " Zone" +msgstr "" + +#: src\br24radar_pi.cpp:721 +msgid "Next alarm in" +msgstr "" + +#: src\br24radar_pi.cpp:950 +msgid "COG" +msgstr "" + +#: src\br24radar_pi.cpp:954 +msgid "HDT" +msgstr "" + +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "" + +#: src\br24radar_pi.cpp:1375 +msgid "GPS" +msgstr "" + +#: src\br24radar_pi.cpp:1496 +msgid "WMM" +msgstr "" + +#: src\br24radar_pi.cpp:1729 +msgid "NMEA" +msgstr "" + +#: src\GuardZoneBogey.cpp:94 +msgid "Confirm" +msgstr "" + +#: src\GuardZoneBogey.cpp:97 +msgid "Close" +msgstr "" + +#: src\GuardZoneBogey.h:53 +msgid "Alarm" +msgstr "" + +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + +#: src\RadarDraw.cpp:54 +msgid "Vertex Array" +msgstr "" + +#: src\RadarDraw.cpp:54 +msgid "Shader" +msgstr "" + +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" +msgstr "" + +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 +msgid "No radar" +msgstr "" + +#: src\RadarInfo.cpp:1382 +msgid "Radar is in Standby" +msgstr "" + +#: src\RadarInfo.cpp:1385 +msgid "Radar is waking up" +msgstr "" + +#: src\RadarInfo.cpp:1391 +msgid "Radar not transmitting" +msgstr "" + +#: src\RadarPanel.cpp:156 +msgid "OpenGL mode required" +msgstr "" + +#: src\RadarPanel.cpp:167 +msgid "Unable to create OpenGL canvas" +msgstr "" + +#: src\socketutil.cpp:179 +msgid "Cannot create UDP socket" +msgstr "" + +#: src\socketutil.cpp:183 +msgid "Cannot set reuse address option on socket" +msgstr "" + +#: src\socketutil.cpp:188 +msgid "Cannot bind UDP socket to port " +msgstr "" + +#: src\socketutil.cpp:197 +msgid "Invalid multicast address" +msgstr "" + +#: src\socketutil.cpp:202 +msgid "Invalid IP address for UDP multicast" +msgstr "" + diff -Nru opencpn-plugin-br24radar-2.1.0/po/br24radar_pi.pot opencpn-plugin-br24radar-3.0.1/po/br24radar_pi.pot --- opencpn-plugin-br24radar-2.1.0/po/br24radar_pi.pot 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/br24radar_pi.pot 2017-09-24 10:58:54.000000000 +0000 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: br24radar_pi 2.0\n" +"Project-Id-Version: br24radar_pi 3.913\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" +"POT-Creation-Date: 2017-09-16 12:32+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,381 +17,494 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1386 msgid "Auto" msgstr "" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 -msgid "Guard zone" +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" msgstr "" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" msgstr "" -#: src\br24ControlsDialog.cpp:1280 -msgid "Waking up" +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1208 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" msgstr "" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 +msgid "Guard zone" +msgstr "" + +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" + +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:638 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:643 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:255 msgid "Radar" msgstr "" @@ -441,12 +554,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -462,31 +574,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1212 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -586,123 +698,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:255 src\br24radar_pi.cpp:395 msgid "Radar A" msgstr "" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:256 msgid "Radar B" msgstr "" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:264 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:273 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:274 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:275 msgid "Radar Control..." msgstr "" -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:276 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:277 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:278 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:281 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:373 msgid "Navico Radar PlugIn for OpenCPN" msgstr "" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:375 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:656 msgid "Zone" msgstr "" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:658 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:690 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:734 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:1008 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:1012 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:1015 src\br24radar_pi.cpp:1035 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:1032 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1434 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1555 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1788 msgid "NMEA" msgstr "" @@ -718,6 +866,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -726,35 +878,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1196 src\RadarInfo.cpp:1199 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1199 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1202 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1205 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1339 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1342 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1345 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1351 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/ca_ES.po opencpn-plugin-br24radar-3.0.1/po/ca_ES.po --- opencpn-plugin-br24radar-2.1.0/po/ca_ES.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/ca_ES.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 12:59-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" "Last-Translator: nohal \n" "Language-Team: Catalan\n" "Language: ca_ES\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: ca\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Automàtic" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Endarrere" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Eliminar soroll" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Rebuig de la interferència" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Separar ecos, objectius" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Velocitat d'escaneig" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Impuls de destinació" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instal·lació" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Alineació de rumb" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Supressió del lòbul lateral" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Zones de vigilància" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Rang interior" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Rang exterior" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Iniciar rumb" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Acabar rumb" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Distància" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Guany" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Soroll de mar" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Soroll de pluja" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Índex d'actualització" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparència" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Transmissió a intervals" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Valor" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Apagat" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Baix" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Alt" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Mitjà" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Ràpid" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Sector" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Cercle" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Filtre multi-escombrat" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Zona de Vigilància" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Zona de vigilància" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opcions" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Activar radar doble, només 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Enviar el rumb del radar al OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Mode d'emulador" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Selecciona fitxer de so" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Arxius WAV (*.wav)|*.wav|Tots els fitxers (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Control de Radar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Connector de Radar Navico per a OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Connector de radar Navico BR32/3G/4G per a OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zona" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/cs_CZ.po opencpn-plugin-br24radar-3.0.1/po/cs_CZ.po --- opencpn-plugin-br24radar-2.1.0/po/cs_CZ.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/cs_CZ.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" "Last-Translator: nohal \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: cs\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Zpět" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Úsporný režim / vysílání" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Potlačení šumu" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Expanze cílů" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Potlačení rušení" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Oddělení cílů" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Rychlost skenování" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Zvýraznění cílů" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instalace" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Srovnání náměru" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Výška antény" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Potlačení lokálního rušení" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Potlačení bočního laloku" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Velikost mrtvé zóny" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Strážní zóny" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Typ zóny" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Vnitřní hranice" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Vnější hranice" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Počáteční směr" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Konečný směr" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Víceodrazový filtr" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Dosah" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Zisk" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Rušení mořem" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Rušení deštěm" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Zrušit kurzor" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Umístit EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Stopy cílů" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Skutečné/Relativní stopy" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Smazat stopy" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientace" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Obnovovací frekvence" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Průhlednost" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Překryv" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Upravit" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Pokočilé" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Zobrazení" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Časované vysílání" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Hodnota" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Vyp" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Nízký" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Vysoký" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Zap" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Střední" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normální" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rychlé" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Předvolby" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Sektor" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Kruh" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Víceodrazový filtr" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sek" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sek" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Kontinuální" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Neznámý" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Vyslat" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Úsporný režim" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Neznámý" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Strážní zóna" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Úsporný režim" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Probouzení" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Vyslat" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Úsporný režim za" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Vysílání za" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Skrytí obou oken" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Zobrazit druhé okno" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Zobrazit toto okno" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Zobrazit obě okna" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Skrýt okno" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Zobrazit okno" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Vymazat EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Skutečný" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relativní" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Směr nahoru" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Sever nahoře" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "Směr nahoru" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Strážní zóna" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -440,12 +553,11 @@ msgid "or" msgstr "nebo" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Magnetický směr" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variace" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "&Skrýt Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "IP radaru" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Požadavky radaru OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radar vyžaduje následující" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulátor" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Síťová karta" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Skutečný směr" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "Barva silného odrazu" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Nastavení" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Povolit duální radar, jen 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Ignorovat směr z radaru" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Předávat směr z radaru do OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Povolit COG jako směr" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Režim emulátoru" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Obrátit směr přiblížení kolečkem myši" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Vybrat zvukový soubor" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Soubory WAV(*.wav)|*.wav|Všechny soubory(*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "Navico BR24, 3G a 4G RADAR" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Zobrazit radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Skrýt radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Ovládání radaru..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Nabídka" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radar PlugIn pro OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico Broadband BR24 / 3G / 4G Radar PlugIn pro OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Oblast" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Potvrzeno)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Oblast" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Další alarm za" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Alarm" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Vertex pole" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Shader" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Sever nahoře" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Směr nahoru" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Sever nahoře" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Bez radaru" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar je v pohotovostním režimu" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Radar se probouzí" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Radar nevysílá" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "Je nutný OpenGL režim" diff -Nru opencpn-plugin-br24radar-2.1.0/po/da_DK.po opencpn-plugin-br24radar-3.0.1/po/da_DK.po --- opencpn-plugin-br24radar-2.1.0/po/da_DK.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/da_DK.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" "Last-Translator: nohal \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: da\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Tilbage" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Støjundertrykkelse" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Interferens afvisning" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Target adskillelse" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Skan hastighed" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Target boost" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Vagt zoner" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Indre område" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Ydre område" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Start pejling" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Slut pejling" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Afstand" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Forstærkning" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Clutter" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Regn clutter" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Gennemsigtighed" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Værdi" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "FRA" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Lav" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Høj" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Medium" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Hurtig" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Bue" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "cirkel" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Guard zone" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Vælg lydfil" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAV filer (WAV) | *. wav|Alle filer (*. *) | *. *" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Radar Kontrol..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radar PlugIn for OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico bredbånd BR24 / 3G / 4G Radar PlugIn til OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zone" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:954 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/de_DE.po opencpn-plugin-br24radar-3.0.1/po/de_DE.po --- opencpn-plugin-br24radar-2.1.0/po/de_DE.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/de_DE.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:22-0400\n" "Last-Translator: nohal \n" "Language-Team: German\n" "Language: de_DE\n" @@ -16,767 +16,925 @@ "X-Crowdin-Language: de\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" -msgstr "" +msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" -msgstr "" +msgstr "Zurück" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" -msgstr "" +msgstr "Standby / Übertragen" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" -msgstr "" +msgstr "Rauschunterdrückung" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" -msgstr "" +msgstr "Zielverstärkung" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" -msgstr "" +msgstr "Störungsdämpfung" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" -msgstr "" +msgstr "Zielunterscheidung" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" -msgstr "" +msgstr "Geschwindigkeit Scanner" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Zielverbesserung" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" -msgstr "" +msgstr "Installation" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" -msgstr "" +msgstr "Peilung ausrichten" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" -msgstr "" +msgstr "Antennen Höhe" + +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "Antenne vor GPS" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "Antenne Steuerbord von GPS" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." -msgstr "" +msgstr "Lokale Störungen unterdrücken" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" -msgstr "" +msgstr "Nebenkeulenunterdrückung" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Mindestabstand Ziel" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Überwachungszone" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" -msgstr "" +msgstr "Typ der Zone" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" -msgstr "" +msgstr "Innerer Bereich" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" -msgstr "" +msgstr "Äusserer Bereich" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Startpeilung" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Endpeilung" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" -msgstr "Entfernung" +msgstr "Bereich" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" -msgstr "" +msgstr "Verstärkung" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Seegangsenttrübung" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Regenenttrübung" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" -msgstr "" +msgstr "Cursor löschen" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" -msgstr "" +msgstr "EBL/VRM setzen" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" -msgstr "" +msgstr "Ziel Spur" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Aus/Relative/Wahre Spur" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" -msgstr "" +msgstr "Spuren löschen" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" -msgstr "" +msgstr "Orientation" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" -msgstr "" +msgstr "Aktualisierungsrate" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" -msgstr "" +msgstr "Transparenz" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" -msgstr "" +msgstr "Kartenüberlagerung" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" -msgstr "" +msgstr "Anpassen" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" -msgstr "" +msgstr "Erweitert" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" -msgstr "" +msgstr "Ansicht" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" -msgstr "" +msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" -msgstr "" +msgstr "Periodisches Senden" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" -msgstr "" +msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" -msgstr "" +msgstr "+ 10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" -msgstr "" +msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Wert" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" -msgstr "" +msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" -msgstr "" +msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" -msgstr "" +msgstr "Aus" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" -msgstr "" +msgstr "Gering" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" -msgstr "" +msgstr "Hoch" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" -msgstr "" +msgstr "An" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" -msgstr "" +msgstr "Mittel" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" -msgstr "" +msgstr "Schnell" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" -msgstr "" +msgstr "Einstellungen" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "Grad" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "bezogen auf Bug" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "über Wasserspiegel" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Antennen vor" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "bezogen auf GPS" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "negativ = hinter" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "Antenne Steuerbord" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "negativ = Backbord" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" -msgstr "" +msgstr "Kreissegment" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" -msgstr "" +msgstr "Kreis" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA Ein" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Alarm An" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Hafen" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Offshore" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Ziel erfassen" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Ziel Löschen" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Alle Ziel Löschen" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "AIS/ARPA zeigen" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" -msgstr "" +msgstr "15 Sek" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" -msgstr "" +msgstr "30 Sek" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" -msgstr "" +msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" -msgstr "" +msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" -msgstr "" +msgstr "10 Min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" -msgstr "" +msgstr "Kontinuierlich" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Übertragen" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Standby" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" -msgstr "" +msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" -msgstr "" +msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" -msgstr "" +msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" -msgstr "" +msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" -msgstr "" +msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Laufzeit" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Cursor" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Unbekannt" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " +Alarm" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " +ARPA" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "Aus" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Überwachungszone" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Status Energieversorgung" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" -msgstr "" - -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" +msgstr "Am Aufwachen" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" -msgstr "" +msgstr "Standby in" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" -msgstr "" +msgstr "Übertragen in" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" -msgstr "" +msgstr "Beide Fenster ausblenden" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" -msgstr "" +msgstr "Anderes Fenster anzeigen" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" -msgstr "" +msgstr "Dieses Fenster anzeigen" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" -msgstr "" +msgstr "Beide Fenster anzeigen" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" -msgstr "" +msgstr "Fenster ausblenden" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" -msgstr "" +msgstr "Fenster anzeigen" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" -msgstr "" +msgstr "EBL/VRM löschen" + +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "AIS/ARPA nicht zeigen" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1599 msgid "True" -msgstr "" +msgstr "Wahr" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" -msgstr "" +msgstr "Relativ" + +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Kurs Oben" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Stabilisiert)" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" -msgstr "" +msgstr "Norden oben" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "Kurs oben" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Überwachungsbereich 1 Grün" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Überwachungsbereich 2 Blau" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" -msgstr "" +msgstr "Radar" #: src\br24MessageBox.cpp:125 msgid "Cannot switch radar on as\n" "it is not connected or off" -msgstr "" +msgstr "Kann Radar nicht aktivieren \n" +"\n" +"Nicht verbunden oder ausgeschaltet" #: src\br24MessageBox.cpp:132 msgid "OpenCPN options" -msgstr "" +msgstr "OpenCPN Einstellungen" #: src\br24MessageBox.cpp:137 msgid "Accelerated Graphics (OpenGL)" -msgstr "" +msgstr "Verwende beschleunigte Grafik (OpenGL)" #: src\br24MessageBox.cpp:143 msgid "ZeroConf via Ethernet" -msgstr "" +msgstr "ZeroConf über Ethernet" #: src\br24MessageBox.cpp:149 msgid "Radar present" -msgstr "" +msgstr "Radar vorhanden" #: src\br24MessageBox.cpp:155 msgid "Radar sending data" -msgstr "" +msgstr "Radar überträgt Daten" #: src\br24MessageBox.cpp:160 msgid "For radar overlay also required" -msgstr "" +msgstr "Für Radar-Overlay auch erforderlich" #: src\br24MessageBox.cpp:168 msgid "Boat position" -msgstr "" +msgstr "Boot Position" #: src\br24MessageBox.cpp:174 msgid "and" -msgstr "" +msgstr "UND" #: src\br24MessageBox.cpp:179 msgid "True Heading" -msgstr "" +msgstr "Wahrer Kurs" #: src\br24MessageBox.cpp:184 msgid "or" -msgstr "" +msgstr "ODER" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" -msgstr "" +msgstr "Magnetische Peilung" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" -msgstr "" +msgstr "Schwankung" #: src\br24MessageBox.cpp:200 src\br24MessageBox.cpp:205 msgid "Statistics" -msgstr "" +msgstr "Statistik" #: src\br24MessageBox.cpp:210 msgid "&Close" -msgstr "" +msgstr "&Schließen" #: src\br24MessageBox.cpp:216 msgid "&Hide Radar" -msgstr "" +msgstr "Radar ausblenden" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" -msgstr "" +msgstr "Radar Typ" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" -msgstr "" +msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" -msgstr "" +msgstr "Radar-Anforderungen \"OK\":" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" -msgstr "" +msgstr "Das Radar erfordert" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" -msgstr "" +msgstr "Emulator" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" -msgstr "" +msgstr "Ethernet-Karte" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" -msgstr "" +msgstr "Wahrer Kurs" #: src\br24OptionsDialog.cpp:38 msgid "BR24 Display Preferences" -msgstr "" +msgstr "BR24 Anzeige-Einstellungen" #: src\br24OptionsDialog.cpp:58 msgid "Nautical Miles" -msgstr "" +msgstr "Seemeilen" #: src\br24OptionsDialog.cpp:58 msgid "Kilometers" -msgstr "" +msgstr "Kilometer" #: src\br24OptionsDialog.cpp:62 msgid "Range Units" -msgstr "" +msgstr "Einheiten Reichweite" #: src\br24OptionsDialog.cpp:69 msgid "Shading" -msgstr "" +msgstr "Schattierung" #: src\br24OptionsDialog.cpp:69 msgid "Outline" -msgstr "" +msgstr "Umriss" #: src\br24OptionsDialog.cpp:69 msgid "Shading + Outline" -msgstr "" +msgstr "Schattierung und Umriss" #: src\br24OptionsDialog.cpp:71 msgid "Guard Zone Styling" -msgstr "" +msgstr "Wachzone Stil" #: src\br24OptionsDialog.cpp:80 msgid "Guard Zone Sound" -msgstr "" +msgstr "Wachzone Ton" #: src\br24OptionsDialog.cpp:83 msgid "Select Alert Sound" -msgstr "" +msgstr "Wachzone Alarmton" #: src\br24OptionsDialog.cpp:87 msgid "Test Alert Sound" -msgstr "" +msgstr "Alarmton testen" #: src\br24OptionsDialog.cpp:92 msgid "Repeat alarm after (sec)" -msgstr "" +msgstr "Wiederhole Alarm nach (Sek.)" #: src\br24OptionsDialog.cpp:103 msgid "GPU drawing method" -msgstr "" +msgstr "GPU-Zeichentechnik" #: src\br24OptionsDialog.cpp:109 msgid "Drawing Method" -msgstr "" +msgstr "Zeichentechnik" #: src\br24OptionsDialog.cpp:116 msgid "Control Menu Auto Hide" -msgstr "" +msgstr "Kontroll Menü automatisch ausblenden" #: src\br24OptionsDialog.cpp:119 msgid "Never" -msgstr "" +msgstr "Nie" #: src\br24OptionsDialog.cpp:119 msgid "10 sec" -msgstr "" +msgstr "10 Sek" #: src\br24OptionsDialog.cpp:122 msgid "Auto hide after" -msgstr "" +msgstr "Automatisch ausblenden nach" #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Spur Anfangsfarbe" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Spur Endfarbe" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" -msgstr "" +msgstr "Ziele-Farbe" #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Farbe schwaches Signal" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Farbe mittleres Signal" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" -msgstr "" +msgstr "Farbe starkes Signal" + +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "ARPA Kantenfarbe" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Farben Radarfenster" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Hintergrundfarbe" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS Schriftfarbe" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:205 msgid "Options" -msgstr "" +msgstr "Einstellungen" + +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "Ring auf max. Reichweite anzeigen" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" -msgstr "" +msgstr "Wachzone auf Overlay zeigen" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" -msgstr "" +msgstr "Spuren der Ziele auf Overlay zeigen" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" -msgstr "" +msgstr "Dual-Radar aktivieren, nur 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" -msgstr "" +msgstr "Kursinformation des Radars ignorieren" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" -msgstr "" +msgstr "Kursinformation des Radars an OCPN durchreichen" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" -msgstr "" +msgstr "COG/KüG als Kurs benutzen" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" -msgstr "" +msgstr "Emulationsmodus" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" -msgstr "" +msgstr "Richtung Mausrad für Zoom invertieren" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" -msgstr "" +msgstr "Tondatei auswählen" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" -msgstr "" +msgstr "WAV Dateien (*.wav)|*.wav|Alle Dateien (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" -msgstr "" +msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" -msgstr "" +msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" -msgstr "" +msgstr "Navico BR24, 3G und 4G RADAR" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" -msgstr "" +msgstr "Radar anzeigen" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" -msgstr "" +msgstr "Radar ausblenden" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." -msgstr "" +msgstr "Radar Kontrolle..." + +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Radar Ziel erfassen" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Radar Ziel löschen" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Alle Radar Ziele Löschen" -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" -msgstr "" +msgstr "Menü" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" -msgstr "" +msgstr "Navico Radar PlugIn für OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" -msgstr "" +msgstr "Navico Broadband Radar BR24 / 3G / 4G PlugIn für OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" -msgstr "" +msgstr "Zone" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" -msgstr "" +msgstr "(bestätigt)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" -msgstr "" +msgstr " Zone" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" -msgstr "" +msgstr "Nächster Alarm in" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" -msgstr "" - -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "" +msgstr "COG" -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" -msgstr "" +msgstr "HDT" + +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" -msgstr "" +msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" -msgstr "" +msgstr "NMEA" #: src\GuardZoneBogey.cpp:94 msgid "Confirm" -msgstr "" +msgstr "Bestätigen" #: src\GuardZoneBogey.cpp:97 msgid "Close" -msgstr "" +msgstr "Schließen" #: src\GuardZoneBogey.h:53 msgid "Alarm" -msgstr "" +msgstr "Alarm" + +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "AIS Zielname" #: src\RadarDraw.cpp:54 msgid "Vertex Array" -msgstr "" +msgstr "Vertex Arrays" #: src\RadarDraw.cpp:54 msgid "Shader" -msgstr "" +msgstr "Shader" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" -msgstr "" +msgstr "Kurs oben" + +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Stabilisiert" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Kurs oben" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Norden oben" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1379 msgid "No radar" -msgstr "" +msgstr "Kein Radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" -msgstr "" +msgstr "Radar ist im Standby-Modus" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" -msgstr "" +msgstr "Das Radar wacht auf.." -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" -msgstr "" - -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" +msgstr "Radar sendet nicht" -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" -msgstr "" +msgstr "OpenGL-Modus erforderlich" #: src\RadarPanel.cpp:167 msgid "Unable to create OpenGL canvas" -msgstr "" +msgstr "OpenGL Canvas kann nicht erstellt werden" #: src\socketutil.cpp:179 msgid "Cannot create UDP socket" -msgstr "" +msgstr "UDP-Socket kann nicht erstellt werden" #: src\socketutil.cpp:183 msgid "Cannot set reuse address option on socket" -msgstr "" +msgstr "Die \"reuse address\" Option kann für den Socket nicht gesetzt werden" #: src\socketutil.cpp:188 msgid "Cannot bind UDP socket to port " -msgstr "" +msgstr "Kann UDP socket nicht an Port binden " #: src\socketutil.cpp:197 msgid "Invalid multicast address" -msgstr "" +msgstr "Ungültige Multicast Adresse" #: src\socketutil.cpp:202 msgid "Invalid IP address for UDP multicast" -msgstr "" +msgstr "Ungültige IP-Adresse für UDP Multicast" diff -Nru opencpn-plugin-br24radar-2.1.0/po/el_GR.po opencpn-plugin-br24radar-3.0.1/po/el_GR.po --- opencpn-plugin-br24radar-2.1.0/po/el_GR.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/el_GR.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:22-0400\n" "Last-Translator: nohal \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -16,441 +16,554 @@ "X-Crowdin-Language: el\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" -msgstr "" +msgstr "Αυτόματα" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" -msgstr "" +msgstr "Πίσω" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" -msgstr "" +msgstr "Περίμενε/Στείλε" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" -msgstr "" +msgstr "Απόρριψη θορύβου" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" -msgstr "" +msgstr "Επέκταση στόχου" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" -msgstr "" +msgstr "Απόρριψη παρεμβολών" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" -msgstr "" +msgstr "Διαχωρισμός στόχου" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" -msgstr "" +msgstr "Ταχύτητα σάρωσης" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" -msgstr "" +msgstr "Ενίσχυση στόχου" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" -msgstr "" +msgstr "Εγκατάσταση" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" -msgstr "" +msgstr "Ευθυγράμμιση κατεύθυνσης" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" -msgstr "" +msgstr "Ύψος κεραίας" + +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "Κεραία μπροστά από το GPS" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "Κεραία δεξιά από το GPS" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." -msgstr "" +msgstr "Απορ. τοπικών παρεμβολών" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" -msgstr "" +msgstr "Καταστολή πλάγιου λοβού" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Νεκρή ζώνη χωρίς ανακλάσεις" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Ζώνες επιφυλακής" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" -msgstr "" +msgstr "Τύπος Ζώνης" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Εσωτερική περιοχή" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Εξωτερική περιοχή" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Αρχή μέτρησης" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Τέλος μέτρησης" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" -msgstr "" +msgstr "Εύρος" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" -msgstr "" +msgstr "Ενίσχυση" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" -msgstr "" +msgstr "«Θόρυβος» στη θάλασσα" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" -msgstr "" +msgstr "«Θόρυβος» λόγω βροχής" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" -msgstr "" +msgstr "Καθαρισμός δρομέα" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" -msgstr "" +msgstr "Τοποθέτηση EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" -msgstr "" +msgstr "Ίχνη στόχου" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Ίχνη: Off/Σχετικά/Αληθή" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" -msgstr "" +msgstr "Καθαρισμός ιχνών" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" -msgstr "" +msgstr "Προσανατολισμός" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" -msgstr "" +msgstr "Ανανέωση ρυθμού" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" -msgstr "" +msgstr "Διαφάνεια" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" -msgstr "" +msgstr "Επικάλυψη" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" -msgstr "" +msgstr "Προσαρμογή" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" -msgstr "" +msgstr "Για προχωρημένους" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" -msgstr "" +msgstr "Προβολή" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" -msgstr "" +msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" -msgstr "" +msgstr "Χρονομετρημένη μετάδοση" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" -msgstr "" +msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" -msgstr "" +msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" -msgstr "" +msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" -msgstr "" +msgstr "Τιμή" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" -msgstr "" +msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" -msgstr "" +msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Οff" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" -msgstr "" +msgstr "Χαμηλό" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" -msgstr "" +msgstr "Υψηλό" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" -msgstr "" +msgstr "ON" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" -msgstr "" +msgstr "Μεσαίο" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" -msgstr "" +msgstr "Κανονικό" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" -msgstr "" +msgstr "Γρήγορο" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" -msgstr "" +msgstr "Προτιμήσεις" + +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "μοίρες" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "σε σχέση με την πλώρη" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "πάνω από τα ίσαλα" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Κεραία μπροστά" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "ως προς το GPS" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "αρνητικό = πίσω" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "Κεραία δεξιά" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "αρνητικό = αριστερά" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Τόξο" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Κύκλος" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA On" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Συναγερμός On" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Λιμάνι" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Ανοικτή θαλάσσα" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Απόκτηση στόχου" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Διαγραφή του στόχου" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Διαγραφή όλων των στόχων" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" -msgstr "" +msgstr "15 δευτ" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" -msgstr "" +msgstr "30 δευτ" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" -msgstr "" +msgstr "1 λεπτό" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" -msgstr "" +msgstr "3 λεπτά" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 λεπτά" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" -msgstr "" +msgstr "10 λεπτά" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" -msgstr "" +msgstr "Συνεχής" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Μετάδοση" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Κατάσταση αναμονής" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" -msgstr "" +msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" -msgstr "" +msgstr "20 λεπτά" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" -msgstr "" +msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" -msgstr "" +msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" -msgstr "" +msgstr "35 min" + +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Διάρκεια" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Δρομέας" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Άγνωστο" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Συναγερμός" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " OFF" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" -msgstr "" +msgstr "Ζώνη επιφυλακής" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Κατάσταση ενέργειας" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" -msgstr "" +msgstr "Ξύπνημα" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" -msgstr "" +msgstr "Σε κατάσταση αναμονής" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" -msgstr "" +msgstr "Μετάδοση" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" -msgstr "" +msgstr "Απόκρυψη δύο παραθύρων" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" -msgstr "" +msgstr "Εμφάνιση άλλου παραθύρου" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" -msgstr "" +msgstr "Εμφάνιση αυτού του παραθύρου" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" -msgstr "" +msgstr "Εμφάνιση δύο παράθυρων" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" -msgstr "" +msgstr "Απόκρυψη παραθύρου" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" -msgstr "" +msgstr "Εμφάνιση παραθύρου" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" +msgstr "Εκκαθάριση EBL/VRM" + +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1599 msgid "True" -msgstr "" +msgstr "Αληθής" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" -msgstr "" +msgstr "Σχετική" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Προς τα μπρος" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(σταθεροποιημένο)" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" -msgstr "" +msgstr "Προς το Βορρά" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "Προς την πορεία" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Ζώνη επιφυλακής 1 πράσινη" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Ζώνν επιφυλακής" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Ζώνη επιφυλακής 2 μπλε" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" -msgstr "" +msgstr "Ραντάρ" #: src\br24MessageBox.cpp:125 msgid "Cannot switch radar on as\n" "it is not connected or off" -msgstr "" +msgstr "Δεν μπορώ να γυρίσω στο ραντάρ\n" +" γιατί δεν είναι συνδεδεμένο ή OFF" #: src\br24MessageBox.cpp:132 msgid "OpenCPN options" -msgstr "" +msgstr "Επιλογές OpenCPN" #: src\br24MessageBox.cpp:137 msgid "Accelerated Graphics (OpenGL)" -msgstr "" +msgstr "Γραφικά OpenGL" #: src\br24MessageBox.cpp:143 msgid "ZeroConf via Ethernet" -msgstr "" +msgstr "ZeroConf μέσω Ethernet" #: src\br24MessageBox.cpp:149 msgid "Radar present" -msgstr "" +msgstr "Υπάρχει ραντάρ" #: src\br24MessageBox.cpp:155 msgid "Radar sending data" -msgstr "" +msgstr "Το ραντάρ στέλνει δεδομένα" #: src\br24MessageBox.cpp:160 msgid "For radar overlay also required" -msgstr "" +msgstr "Για την προσθήκη του ραντάρ απαιτείται επίσης" #: src\br24MessageBox.cpp:168 msgid "Boat position" -msgstr "" +msgstr "Θέση πλοίου" #: src\br24MessageBox.cpp:174 msgid "and" -msgstr "" +msgstr "και" #: src\br24MessageBox.cpp:179 msgid "True Heading" -msgstr "" +msgstr "Πραγματική πορεία" #: src\br24MessageBox.cpp:184 msgid "or" -msgstr "" +msgstr "η" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" -msgstr "" +msgstr "Μαγνητική πορεία" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" -msgstr "" +msgstr "Παραλλαγή" #: src\br24MessageBox.cpp:200 src\br24MessageBox.cpp:205 msgid "Statistics" -msgstr "" +msgstr "Στατιστικά" #: src\br24MessageBox.cpp:210 msgid "&Close" @@ -458,325 +571,369 @@ #: src\br24MessageBox.cpp:216 msgid "&Hide Radar" -msgstr "" +msgstr "& Απόκρυψη ραντάρ" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" -msgstr "" +msgstr "Τύπος ραντάρ" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" -msgstr "" +msgstr "Ραντάρ IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" -msgstr "" +msgstr "Απαιτήσεις ραντάρ OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" -msgstr "" +msgstr "Το ραντάρ απαιτεί τα ακόλουθα" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" -msgstr "" +msgstr "Εξομοιωτής" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" -msgstr "" +msgstr "Κάρτα Ethernet" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" -msgstr "" +msgstr "Πραγματική πορεία" #: src\br24OptionsDialog.cpp:38 msgid "BR24 Display Preferences" -msgstr "" +msgstr "Προτιμήσεις παρουσίασης BR24" #: src\br24OptionsDialog.cpp:58 msgid "Nautical Miles" -msgstr "" +msgstr "Ναυτικά μίλια" #: src\br24OptionsDialog.cpp:58 msgid "Kilometers" -msgstr "" +msgstr "Χιλιόμετρα" #: src\br24OptionsDialog.cpp:62 msgid "Range Units" -msgstr "" +msgstr "Μονάδες" #: src\br24OptionsDialog.cpp:69 msgid "Shading" -msgstr "" +msgstr "Σκίαση" #: src\br24OptionsDialog.cpp:69 msgid "Outline" -msgstr "" +msgstr "Περίγραμμα" #: src\br24OptionsDialog.cpp:69 msgid "Shading + Outline" -msgstr "" +msgstr "Σκίαση + περίγραμμα" #: src\br24OptionsDialog.cpp:71 msgid "Guard Zone Styling" -msgstr "" +msgstr "Στιλ ζώνης επιφυλακής" #: src\br24OptionsDialog.cpp:80 msgid "Guard Zone Sound" -msgstr "" +msgstr "Ήχος ζώνης επιφυλακής" #: src\br24OptionsDialog.cpp:83 msgid "Select Alert Sound" -msgstr "" +msgstr "Επιλογή ήχου συναγερμού" #: src\br24OptionsDialog.cpp:87 msgid "Test Alert Sound" -msgstr "" +msgstr "Δοκιμή ήχου συναγερμού" #: src\br24OptionsDialog.cpp:92 msgid "Repeat alarm after (sec)" -msgstr "" +msgstr "Επανάληψη συναγερμού μετά από (δευτ.)" #: src\br24OptionsDialog.cpp:103 msgid "GPU drawing method" -msgstr "" +msgstr "Μέθοδος σχεδίασης GPU" #: src\br24OptionsDialog.cpp:109 msgid "Drawing Method" -msgstr "" +msgstr "Mέθοδος σχεδίασης" #: src\br24OptionsDialog.cpp:116 msgid "Control Menu Auto Hide" -msgstr "" +msgstr "Aυτόματη απόκρυψη μενού ελέγχου" #: src\br24OptionsDialog.cpp:119 msgid "Never" -msgstr "" +msgstr "Ποτέ" #: src\br24OptionsDialog.cpp:119 msgid "10 sec" -msgstr "" +msgstr "10 s" #: src\br24OptionsDialog.cpp:122 msgid "Auto hide after" -msgstr "" +msgstr "Αυτόματη απόκρυψη μετά από" #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Χρώμα έναρξης ίχνους" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Χρώμα τέλους ίχνους" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" -msgstr "" +msgstr "Χρώματα στόχων" #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Χρώμα ασθενούς σήματος" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Χρώμα μεσαίου σήματος" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" -msgstr "" +msgstr "Χρώμα ισχυρού σήματος" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "Χρώμα ορίου ARPA" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Χρώματα παραθύρων ραντάρ" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Χρώμα φόντου" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "Χρώμα κειμένου AIS" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" -msgstr "" +msgstr "Επιλογές" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "Δακτυλίδι στο άκρο της περιοχής" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" -msgstr "" +msgstr "Εμφάνιση ζώνης επιφυλακής στην επικάλυψη" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" -msgstr "" +msgstr "Ενεργοποίηση διπλού ραντάρ, 4G μόνο" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" -msgstr "" +msgstr "Αγνόησε την κατεύθυνση πορείας του ραντάρ" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" -msgstr "" +msgstr "Στείλε την κατεύθυνση πορείας του ραντάρ στο OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" -msgstr "" +msgstr "Ενεργοποίηση του COG ως πορεία ραντάρ" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" -msgstr "" +msgstr "Λειτουργία εξομοιωτή" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" -msgstr "" +msgstr "Αντιστροφή της κατεύθυνσης zoom του τροχού του δρομέα" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" -msgstr "" +msgstr "Επιλογή αρχείου ήχου" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" -msgstr "" +msgstr "WAV αρχεία (*.wav)|*.wav|Όλα τα αρχεία (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" -msgstr "" +msgstr "Ραντάρ A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" -msgstr "" +msgstr "Ραντάρ B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" -msgstr "" +msgstr "Navico BR24, 3G και 4G ΡΑΝΤAΡ" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" -msgstr "" +msgstr "Εμφάνιση ραντάρ" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" -msgstr "" +msgstr "Απόκρυψη ραντάρ" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Έλεγχος ραντάρ..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Λήψη στόχου ραντάρ" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Διαγραφή στόχου ραντάρ" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Διαγραφή όλων των στόχων ραντάρ" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" -msgstr "Menu" +msgstr "Μενού" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Πρόσθετο Ραντάρ Navico για το OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Πρόσθετο Ραντάρ Navico Broadband BR24/3G/4G για το OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Ζώνη" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" -msgstr "" +msgstr "(Επιβεβαίωση)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" -msgstr "" +msgstr " Ζώνη" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" -msgstr "" +msgstr "Επόμενος συναγερμός σε" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" -msgstr "" - -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "" +msgstr "COG" -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" -msgstr "" +msgstr "HDT" + +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "ΡΑΝΤΑΡ" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" -msgstr "" +msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" -msgstr "" +msgstr "NMEA" #: src\GuardZoneBogey.cpp:94 msgid "Confirm" -msgstr "" +msgstr "Επιβεβαίωση" #: src\GuardZoneBogey.cpp:97 msgid "Close" -msgstr "" +msgstr "Κλείσιμο" #: src\GuardZoneBogey.h:53 msgid "Alarm" -msgstr "" +msgstr "Συναγερμός" + +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "Όνομα στόχου AIS" #: src\RadarDraw.cpp:54 msgid "Vertex Array" -msgstr "" +msgstr "Πίνακας Vertex" #: src\RadarDraw.cpp:54 msgid "Shader" -msgstr "" - -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "" +msgstr "Σκίαση" -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" -msgstr "" +msgstr "Προς τα μπρος" + +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Σταθεροποιημένο" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Πορεία προς τα πάνω" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Βορράς προς τα πάνω" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1379 msgid "No radar" -msgstr "" +msgstr "Όχι ραντάρ" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" -msgstr "" +msgstr "Το ραντάρ είναι σε κατάσταση αναμονής" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" -msgstr "" +msgstr "Το ραντάρ έχει αφυπνίζεται" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" -msgstr "" - -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" +msgstr "Το ραντάρ δεν μεταδίδει" -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" -msgstr "" +msgstr "Απαιτείται λειτουργία OpenGL" #: src\RadarPanel.cpp:167 msgid "Unable to create OpenGL canvas" -msgstr "" +msgstr "Δεν είναι δυνατή η δημιουργία καμβά OpenGL" #: src\socketutil.cpp:179 msgid "Cannot create UDP socket" -msgstr "" +msgstr "Δεν είναι δυνατό να δημιουργηθεί υποδοχή UDP" #: src\socketutil.cpp:183 msgid "Cannot set reuse address option on socket" -msgstr "" +msgstr "Δεν είναι δυνατό να ορισθεί επιλογή διεύθυνσης επαναχρησιμοποίησης στην υποδοχή" #: src\socketutil.cpp:188 msgid "Cannot bind UDP socket to port " -msgstr "" +msgstr "Δεν είναι δυνατό να συνδεθεί η υποδοχή UDP στη θύρα " #: src\socketutil.cpp:197 msgid "Invalid multicast address" -msgstr "" +msgstr "Μη έγκυρη διεύθυνση multicast" #: src\socketutil.cpp:202 msgid "Invalid IP address for UDP multicast" -msgstr "" +msgstr "Μη έγκυρη διεύθυνση IP για UDP multicast" diff -Nru opencpn-plugin-br24radar-2.1.0/po/es_ES.po opencpn-plugin-br24radar-3.0.1/po/es_ES.po --- opencpn-plugin-br24radar-2.1.0/po/es_ES.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/es_ES.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:02-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Atras" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Modo de espera / transmitir" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Rechazo de ruido" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Expansión blanco" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Rechazo de interferencias" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Separación del blanco" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Velocidad de escaneo" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Ampliar blanco" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instalación" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Alineación del rumbo" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Altura de antena" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Rechazo de interferencias locales." -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Supresión de lóbulo lateral" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Tamaño de zona muerta" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Zonas Vigiladas" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Tipo de zona" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Rango interior" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Rango exterior" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Inicio marcación" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Fin marcación" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Filtro multi barrido" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Distancia" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Ganancia" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Perturbación de mar" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Perturbación por lluvia" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Limpiar el cursor" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Coloque el EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Derrotas blancos" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Derrotas Verdaderas/relativas" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Borrar derrotas" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientación" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Frecuencia de refresco" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparencia" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Superponer" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Ajustar" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Avanzado" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Vista" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Transmisión sincronizada" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Valor" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Apagado" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Bajo" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Alto" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Encendido" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Medio" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rápida" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Preferencias" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Arc" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Círculo" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Filtro multi barrido" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 seg" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 seg" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Continuo" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Desconocido" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Transmitir" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "En espera" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Desconocido" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Zona vigilada" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "En espera" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Despertar" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Transmitir" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "En espera" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Transmitir" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Ocultar ambas ventanas" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Mostrar otra ventana" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Mostrar esta ventana" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Mostrar ambas ventanas" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Ocultar ventana" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Mostrar ventana" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Borrar EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Real" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relativo" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Rumbo arriba" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Norte Arriba" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "Rumbo arriba" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Zona vigilada" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -440,12 +553,11 @@ msgid "or" msgstr "o" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Rumbo magético" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Declinación magnética" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "& Ocultar Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Tipo de radar" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Requisitos de Radar OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radar requiere lo que sigue" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulador" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Tarjeta Ethernet" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Rumbo verdadero" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "Color de retorno furrte" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opciones" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "Mostrar Zona de guardia en superposición" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "Mostrar derrotas de blancos en superposición" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Activar el radar dual, 4G sólo" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Ignorar rumbo radar" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Pasar rumbo radar a OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Activar COG como rumbo" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Modo emulador" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Invierte la dirección del zoom de la rueda del ratón" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Seleccionar archivo de sonido" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Archivos WAV (*.wav)|*.wav|Todos los archivos (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "RADAR Navico BR24, 3G y 4G" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Mostrar radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Ocultar radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Control de radar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menú" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radar PlugIn para OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico Broadband BR24 / 3G / 4G Radar PlugIn para OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zona" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Confirmado)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Zona" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Siguiente alarma en" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Alarma" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Matriz de vértice" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Sombreador" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Norte Arriba" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Rumbo arriba" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Norte Arriba" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Sin radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar está en modo de espera" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Radar está despertando" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Radar sin transmitir" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "Modo OpenGL requerido" diff -Nru opencpn-plugin-br24radar-2.1.0/po/et_EE.po opencpn-plugin-br24radar-3.0.1/po/et_EE.po --- opencpn-plugin-br24radar-2.1.0/po/et_EE.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/et_EE.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" "Last-Translator: nohal \n" "Language-Team: Estonian\n" "Language: et_EE\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: et\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Automaatne" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Tagasi" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Ootel / Kiirga" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Müra tagasilükkamine" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Märgi laiendamine" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Häiringute tagasilükkamine" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Märgi eraldamine" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Skaneerimise kiirus" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Märgi suurendamine" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Paigaldamine" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Kursi joondamine" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Antenni kõrgus" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "Antenn eespool GPS'i" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "Antenn GPS'st tüürpoordis" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Kohalike häirete tagasilükk." -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Külgsagara summutamine" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Põhikiirguse surnud ala suurus" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Valvetsoonid" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Tsooni liik" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Sisemine ulatus" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Välimine ulatus" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Alguspeiling" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Lõpp-peiling" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Multilaotuse filter" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Ulatus" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Võimendus" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Meresäri" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Sademesäri" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Kursor tühjaks" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Pane EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Märgi jäljed" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Päris/suhtelised jäljed" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Väljas/suhtelised/tegelikud jäljed" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Kõrvalda jäljed" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientatsioon" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Värskenduse kiirus" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Läbipaistvus" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Ülekate" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Kohanda" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Lisavalikud" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Vaade" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Ajastatud kiirgamine" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+ 10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Väärtus" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Väljas" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Madal" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Kõrge" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Sees" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Keskmine" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Tavaline" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Kiire" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" -msgstr "" +msgstr "Eelistused" + +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "kraadi" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "vööri suhtes" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "üle merepinna" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Antenn eespool" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "GPS'i suhtes" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "negatiivne = tagapool" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "Antenn tüürpoordis" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "negatiivne = pakpoordis" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Kaar" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Ring" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Multilaotuse filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA sees" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Häire sees" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Sadam" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Avameri" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Haara märk" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Kustuta märk" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Kustuta kõik märgid" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "Näita AIS/ARPA" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sec" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sec" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Pidev" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Tundmatu" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Kiirga" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Ootel" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Käitusaeg" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Kursor" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Tundmatu" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + häire" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Väljas" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Valvetsoon" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Ootel" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Toite olek" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" -msgstr "" +msgstr "Soojenemine" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Kiirga" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Ootel" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Kiirga" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Peida mõlemad aknad" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Kuva teine aken" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Kuva see aken" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Kuva mõlemad aknad" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Peida aken" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Kuva aken" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Puhasta EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "Peida AIS/ARPA" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Tõene" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Suhteline" -#: src\br24ControlsDialog.cpp:1372 -msgid "North up" -msgstr "N-üleval" - -#: src\br24ControlsDialog.cpp:1375 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 msgid "Head up" msgstr "Vöör üleval" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Stabiliseeritud)" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Valvetsoon" +#: src\br24ControlsDialog.cpp:1623 +msgid "North up" +msgstr "N-üleval" + +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "kurss üleval" + +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Valvetsoon 1 roheline" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Valvetsoon 2 sinine" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -430,22 +543,21 @@ #: src\br24MessageBox.cpp:174 msgid "and" -msgstr "" +msgstr "ja" #: src\br24MessageBox.cpp:179 msgid "True Heading" -msgstr "" +msgstr "Tegelik kurss" #: src\br24MessageBox.cpp:184 msgid "or" -msgstr "" +msgstr "või" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" -msgstr "" +msgstr "Magnetkurss" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variatsioon" @@ -461,33 +573,33 @@ msgid "&Hide Radar" msgstr "&Peida radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" -msgstr "" +msgstr "Radari tüüp" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radari IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Radari nõuded on OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radar nõuab järgmist" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulaator" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Võrgukaart" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" -msgstr "" +msgstr "Tegelik kurss" #: src\br24OptionsDialog.cpp:38 msgid "BR24 Display Preferences" @@ -563,145 +675,181 @@ #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Jälje alguse värv" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Jälje lõpu värv" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" -msgstr "" +msgstr "Märgi värvid" #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Nõrga tagastuse värv" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Keskmise tagastuse värv" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" -msgstr "" +msgstr "Tugeva tagastuse värv" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "ARPA serva värv" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Radari akna värvid" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Taustavärv" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS-teksti värv" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Valikud" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "Näita ringi ülikaugel" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" -msgstr "" +msgstr "Kuva valvetsooni ülekattel" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" -msgstr "" +msgstr "Kuva märgi jälgi ülekattel" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Topelt-radari võimaldamine, 4G ainult" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Ignoreeri radari kurssi" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Saada radari kurss edasi OpenCPN'i" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Võimalda COG kursina" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Emulaatorrežiim" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Pööra hiireratta suumisuund ümber" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Vali helifail" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAV-failid (*.wav)|*.wav|Kõik failid (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "Navico BR24, 3G ja 4G radar" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Näita radarit" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Peida radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Radari kontroll..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Haara radari märk" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Kustuta radari märk" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Kustuta kõik radari märgid" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menüü" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico radari plugIn OpenCPN'i jaoks" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico BR24/3G/4G lairibaradari plugin OpenCPN'i jaoks\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Tsoon" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Kinnitatud)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Tsoon" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Järgmine häire" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "GPS" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Häire" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "AIS-märgi nimi" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Tipp-massiiv" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Varjutaja" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "N-üleval" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Vöör üleval" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Stabiliseeritud" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "kurss üleval" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "N-üleval" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Radarit pole" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar on ooterežiimil" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" -msgstr "" +msgstr "Radar on soojenemas" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" -msgstr "" - -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" +msgstr "Radar ei kiirga" -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "OpenGL-režiim on nõutav" diff -Nru opencpn-plugin-br24radar-2.1.0/po/fi_FI.po opencpn-plugin-br24radar-3.0.1/po/fi_FI.po --- opencpn-plugin-br24radar-2.1.0/po/fi_FI.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/fi_FI.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:22-0400\n" "Last-Translator: nohal \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: fi\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Takaisin" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" -msgstr "" +msgstr "Valmiustila / Välitys" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Häiriön hylkääminen" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Kohteen laajentaminen" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Häiriöiden hylkääminen" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Kohteen erottaminen" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Skannaus nopeus" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Kohteen tarkennus" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Asennus" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Suuntiman sijoitus" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Antennin korkeus" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 -msgid "Local interference rej." +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 +msgid "Local interference rej." +msgstr "Paikallishäiriöiden hylk." + +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Sivukaistan häivytys" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Merkittävin kantavuus" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Suoja-alueet" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Alueen tyyppi" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Sisempi alue" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Ulompi alue" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Alkusuunta" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Loppusuunta" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Kantama" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Vahvistus" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Merivälke" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Sade välke" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Tyhjennä osoittimen valinta" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Sijoita EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Kohteen tiet" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Pois/suhteellinen/Tosi polkuja" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Poista tiet" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Suunta" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Virkistystaajuus" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Läpinäkyvyys" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Kerros" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Säädä" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Edistynyt" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Näytä" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Ajastettu lähetys" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Tietoa" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+ 10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Arvo" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Pois päältä" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Alhainen" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Korkea" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Päällä" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Keskitaso" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Tavallinen" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Nopea" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" +msgstr "Ominaisuudet" + +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "astetta" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Antenni eteenpäin" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "suhteessa GPSään" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "negatiivinen = takana" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "negatiivinen = vasemmalle" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Kaari" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Ympyrä" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Monipyyhkäisysuodatin" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA päällä" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Hälytys päällä" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Satama" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Avomeri" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Etsi kohde" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Poista kohde" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Poista kaikki kohteet" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sek" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sek" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Jatkuva" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Tuntematon" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Välitä" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Valmiustila" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Ajonaika" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Kohdistin" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Tuntematon" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Hälytys" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Pois" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Suojavyöhyke" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Valmiustila" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Virran tila" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" -msgstr "" +msgstr "Herättäminen" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Välitä" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Valmiustila" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Välitä" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Piilota molemmat ikkunat" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Näytä muu ikkuna" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Näytä tämä ikkuna" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Näytä molemmat ikkunat" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Piilota ikkuna" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Näytä ikkuna" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Tyhjennä EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 -msgid "True" +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:1362 -msgid "Relative" -msgstr "" +#: src\br24ControlsDialog.cpp:1599 +msgid "True" +msgstr "Tosi" -#: src\br24ControlsDialog.cpp:1372 -msgid "North up" -msgstr "Pohj ylös" +#: src\br24ControlsDialog.cpp:1601 +msgid "Relative" +msgstr "Suhteellinen" -#: src\br24ControlsDialog.cpp:1375 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 msgid "Head up" msgstr "Suunta ylös" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Stabiloitu)" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Suojavyöhyke" +#: src\br24ControlsDialog.cpp:1623 +msgid "North up" +msgstr "Pohj ylös" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "Kurssi ylös" + +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Suoja vyöhyke 1 vihreä" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Suoja vyöhyke 2 sininen" + +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Tutka" @@ -430,22 +543,21 @@ #: src\br24MessageBox.cpp:174 msgid "and" -msgstr "" +msgstr "ja" #: src\br24MessageBox.cpp:179 msgid "True Heading" -msgstr "" +msgstr "Tosisuunta" #: src\br24MessageBox.cpp:184 msgid "or" -msgstr "" +msgstr "tai" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" -msgstr "" +msgstr "Mangneettinen suunta" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Vaihtelu" @@ -461,33 +573,33 @@ msgid "&Hide Radar" msgstr "&Piilota tutka" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" -msgstr "" +msgstr "Tutka tyyppi" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Tutkan IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Tutkan vaatimukset OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Tutka edellyttää seuraavia" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulaattori" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Ethernet-kortti" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" -msgstr "" +msgstr "Tosisuunta" #: src\br24OptionsDialog.cpp:38 msgid "BR24 Display Preferences" @@ -535,7 +647,7 @@ #: src\br24OptionsDialog.cpp:92 msgid "Repeat alarm after (sec)" -msgstr "" +msgstr "Toista hälytys (sek.) kuluttua" #: src\br24OptionsDialog.cpp:103 msgid "GPU drawing method" @@ -563,159 +675,199 @@ #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Uran aloitusväri" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Uran lopetusväri" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" -msgstr "" +msgstr "Kohteiden värit" #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Heikko palautusväri" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Keskimääräinen palautusväri" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" -msgstr "" +msgstr "Vahva palautusväri" + +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "ARPA reunaväri" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Tutka ikkunan värit" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Taustan väri" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS tekstiväri" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Vaihtoehdot" -#: src\br24OptionsDialog.cpp:183 -msgid "Show Guard Zone on overlay" +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:215 +msgid "Show Guard Zone on overlay" +msgstr "Näytä suojavyöhyke peittokuvassa" + +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" -msgstr "" +msgstr "Näytä kohdeuria peittokuvassa" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Käytä kaksoistutkaa, vain 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" -msgstr "" +msgstr "Ohita tutkasuunta" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Siirrä tutkaotsikko OpenCPNään" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" -msgstr "" +msgstr "Käytä COG suuntana" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Emulaattori tila" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Käänteinen hiiren zoom rullaus" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Valitse äänitiedosto" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAV tiedostot (*.wav)|*.wav|Kaikki tiedostot (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "A tutka" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "B tutka" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "Navico BR24, 3G ja 4G TUTKA" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Näytä tutka" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Piilota tutka" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Tutkan ohjain..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Etsi tutkakohde" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Poista tutka kohde" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Poista kaikki tutka kohteet" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Valikkko" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico tutka lisäosa OpenCPN:ään" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico laajakaista BR24 / 3G / 4G tutkalisäosa OpenCPN:ään\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Vyöhyke" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Vahvistettu)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" -msgstr "" +msgstr " Vyöhyke" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Seuraava hälytys" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "TUTKA" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" #: src\GuardZoneBogey.cpp:94 msgid "Confirm" -msgstr "" +msgstr "Vahvista" #: src\GuardZoneBogey.cpp:97 msgid "Close" -msgstr "" +msgstr "Sulje" #: src\GuardZoneBogey.h:53 msgid "Alarm" -msgstr "" +msgstr "Hälytys" + +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "AIS kohteen nimi" #: src\RadarDraw.cpp:54 msgid "Vertex Array" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Varjostin" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Pohj ylös" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Suunta ylös" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Stabiloitu" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Kurssi ylös" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Pohj ylös" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Ei tutkaa" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Tutka on valmiustilassa" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" -msgstr "" +msgstr "Tutka on käynnistymässä" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" -msgstr "" - -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "TUTKA" +msgstr "Tutka ei lähetä" -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "OpenGL tila suositeltu" diff -Nru opencpn-plugin-br24radar-2.1.0/po/fr_FR.po opencpn-plugin-br24radar-3.0.1/po/fr_FR.po --- opencpn-plugin-br24radar-2.1.0/po/fr_FR.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/fr_FR.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:22-0400\n" "Last-Translator: nohal \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -16,388 +16,502 @@ "X-Crowdin-Language: fr\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Retour" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Veille / transmettre" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Rejet du bruit" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Extension de la cible" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Rejet des interférences" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Séparation de cible" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Vitesse de scan" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Renforcer les cibles" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Installation" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Alignement de gisements" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Hauteur de l'antenne" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "Antenne avant du GPS" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "Antenne tribord du GPS" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Interférences locales rej." -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Suppression des lobes secondaires" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Zone morte sans écho" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Zones de garde" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Type de zone" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Rayon intérieur" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Rayon extérieur" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Gisement initial" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Gisement final" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Filtre de balayage multi" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Portée" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Gain" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Atténuation retour vagues" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Atténuation pluie" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Libérer le curseur" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Placer EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Traces des cibles" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Off/Relatif/Trace réelle" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Effacer les traces" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientation" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Taux de rafraîchissement" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparence" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Superposition" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Régler" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Avancé" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Voir" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Transmission chronométrée" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Valeur" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "OFF" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Bas" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Élevé" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "On" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Moyen" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rapide" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Préférences" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "degrés" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "relatif à l'avant" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "au dessus du niveau de la mer" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Antenne avant" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "relatif au GPS" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "négatif = derrière" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "Antenne tribord du GPS" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "négatif = babord" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Arc" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Cercle" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Filtre de balayages multiples" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA Activé" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Alarme activée" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Port" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Offshore" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Acquisition de cible" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Supprimer la cible" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Supprimer toutes les cibles" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "Voir les cibles AIS/ARPA" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sec" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sec" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Continuellement" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Inconnu" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Transmettre" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Mise en veille" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Durée" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Curseur" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Inconnu" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Alarme" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Off" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Zone de garde" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Mise en veille" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "État de l’alimentation" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Mise en route" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Transmettre" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Système en veille" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "En cours de transfert..." -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Masquer la fenêtre" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Afficher les autres fenêtres" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Montrer cette fenêtre" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Afficher cette fenêtre" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Masquer la fenêtre" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Afficher la fenêtre" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Effacer EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "Masquer les cibles AIS/ARPA" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Vrai" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relatif" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "COG vers le haut" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Stabilisé)" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Nord vers le haut" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "COG vers le haut" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" - -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Zone de garde" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Zone de garde 1 vert" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Zone de garde 2 bleu" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" #: src\br24MessageBox.cpp:125 msgid "Cannot switch radar on as\n" "it is not connected or off" -msgstr "" +msgstr "Impossible à allumer as\n" +"Le radar n’est pas connecté ou off" #: src\br24MessageBox.cpp:132 msgid "OpenCPN options" @@ -439,12 +553,11 @@ msgid "or" msgstr "ou" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Cap magnétique" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variation" @@ -460,31 +573,31 @@ msgid "&Hide Radar" msgstr " Cacher Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Type de radar" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "IP du radar" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Exigences en matière de radar OK :" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Le radar requiert les informations suivantes :" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulateur" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Carte Ethernet" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Cap vrai" @@ -546,7 +659,7 @@ #: src\br24OptionsDialog.cpp:116 msgid "Control Menu Auto Hide" -msgstr "" +msgstr "Masquer automatiquement le menu de réglage" #: src\br24OptionsDialog.cpp:119 msgid "Never" @@ -584,123 +697,159 @@ msgid "Strong return color" msgstr "Fort retour des couleurs" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "Couleur de contour ARPA" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Couleurs de fenêtre radar" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Couleur d'arrière-plan" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS : Couleur du texte" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Options" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "Voir le cercle à la distance maximale" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "Montrer la zone à protéger en sur-impression" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "Montrer la trace des cibles en sur-impression" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Activer le radar double, 4G seulement" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Impossible de creer la trame d'OpenGL" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Passer la rubrique radar à OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Activer COG pour cap" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Mode de l'émulateur" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Inverser le sens des actions faites avec la souris" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Sélectionner le fichier sonore" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Fichiers WAV (*.Wav); All Files (*.*); *.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "RADARS NAVICO BR24, 3G et 4G" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Voir le radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Cacher le radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Commandes radar ..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Acquérir la cible radar" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Supprimer la cible" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Supprimer toutes les cibles" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Plugin pour radar Navico" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Plugin pour radar Navico Broadband BR24/3G/4G\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zone" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(confirmé)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Zone" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Prochaine alarme dans" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "GPS" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -716,43 +865,51 @@ msgid "Alarm" msgstr "Alarme" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "Nom de la cible AIS" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" -msgstr "" +msgstr "Vertex Array" #: src\RadarDraw.cpp:54 msgid "Shader" -msgstr "Nuanceur" - -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Nord vers le haut" +msgstr "Shader" -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "COG vers le haut" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Stabilisé" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "COG vers le haut" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Nord vers le haut" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Aucun radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Le radar est en mode veille" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Le radar se met en route" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Le radar ne transmet rien" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "Mode OpenGL requis" diff -Nru opencpn-plugin-br24radar-2.1.0/po/gl_ES.po opencpn-plugin-br24radar-3.0.1/po/gl_ES.po --- opencpn-plugin-br24radar-2.1.0/po/gl_ES.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/gl_ES.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:22-0400\n" "Last-Translator: nohal \n" "Language-Team: Galician\n" "Language: gl_ES\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: gl\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Atrás" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Rexeitamento de ruído" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Rexeitamento de interferencias" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Separación do branco" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Velocidade de escaneo" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instalación" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Alcance" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Ganancia" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Frecuencia de actualización" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparencia" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Valor" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Apagado" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Baixo" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Alto" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Medio" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rápido" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Círculo" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 -msgid "Guard zone" +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" msgstr "" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" msgstr "" -#: src\br24ControlsDialog.cpp:1280 -msgid "Waking up" +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" msgstr "" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 +msgid "Guard zone" +msgstr "" + +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" + +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opcións" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Modo emulador" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Seleccionar ficheiro de son" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Ficheiros WAV (*.wav)|*.wav|Todos os ficheiros (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Control do Radar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menú" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zona" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/hu_HU.po opencpn-plugin-br24radar-3.0.1/po/hu_HU.po --- opencpn-plugin-br24radar-2.1.0/po/hu_HU.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/hu_HU.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: hu\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 -msgid "Guard zone" +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" msgstr "" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" msgstr "" -#: src\br24ControlsDialog.cpp:1280 -msgid "Waking up" +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" msgstr "" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 +msgid "Guard zone" +msgstr "" + +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" + +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "" -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:954 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/it_IT.po opencpn-plugin-br24radar-3.0.1/po/it_IT.po --- opencpn-plugin-br24radar-2.1.0/po/it_IT.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/it_IT.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: it\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Allineamento rilevamento" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Soppressione del lobo laterale" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Zone di guardia" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Distanza interna" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Distanza esterna" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Rilevamento iniziale" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Rilevamento finale" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Distanza" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Spento" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Arco" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Cerchio" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Zona di Guardia" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Zona di guardia" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opzioni" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Abilitare dual radar (solo 4G)" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Passare prua radar a OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Modalità emulazione" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Seleziona il File suono" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "File WAV (*. wav) | *. wav|Tutti i file (*. *) |*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Controllo radar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Plugin radar Navico per OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Plugin radar Banda larga Navico BR24/3G/4G per OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zona" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:954 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/ja_JP.po opencpn-plugin-br24radar-3.0.1/po/ja_JP.po --- opencpn-plugin-br24radar-2.1.0/po/ja_JP.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/ja_JP.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: ja\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "自動" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "戻る" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "スタンバイ/転送" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "ノイズ除去" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "ターゲット拡張" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "干渉除去" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "ターゲットの分離" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "スキャン スピード" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "ターゲット ブースト" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "インストール" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "方位合わせ" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "アンテナの高さ" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "ローカル干渉除去" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "サイドローブ抑圧" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "ガード ゾーン" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "ゾーンタイプ" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "範囲内" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "範囲外" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "開始方位" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "終了方位" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "マルチ スイープ フィルター" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "範囲" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "ゲイン" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "海面反射" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "雨の反射" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "カーソルのクリア" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "EBL/VRM を配置" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "ターゲット航跡" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "航跡クリア" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "配置方向" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "リフレッシュ レート" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "透明度" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "オーバーレイ" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "調整" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "高度な設定" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "表示" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "時間指定送信" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "情報" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "値" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "オフ" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Low" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "High" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "On" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Medium" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "普通" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "速い" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "設定" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "円弧" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "円" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "マルチ 掃引 フィルター" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15秒" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30秒" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1分" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 分" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5分" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10分" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "継続的" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "不明" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "送信" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5分" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "スタンバイ" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15分" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20分" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25分" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30分" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35分" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "不明" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "ガード ゾーン" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "スタンバイ" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "送信" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "スタンバイ中" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "送信中" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "両方のウィンドウを表示しない。" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "他のウィンドウを表示" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "このウィンドウを表示" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "両方のウィンドウを表示" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "ウィンドウを表示しない" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "ウィンドウを表示" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "EBL/VRM をクリア" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "真" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "相対" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "ヘッドアップ" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "ノースアップ" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "ヘッドアップ" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "ガード ゾーン" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "レーダー" @@ -440,12 +553,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "磁気方位" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "偏差" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "レーダー非表示(&H)" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "レーダーの種類" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "レーダー IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "レーダーの要件 [ok]:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "レーダーは、以下のものが必要です" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "エミュレーター" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "イーサネット カード" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "真の ヘディング" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "強い戻りの色" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "オプション" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "デュアル レーダー有効、4 G のみ" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "レーダー ヘディングを無視します。" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "レーダーヘディングを OpenCPN に渡す" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "ヘディングとして対地コースを有効" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "エミュレーター モード" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "マウス ホイールのズーム方向を反転" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "サウンドファイルの選択" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAVファイル (*.wav)|*.wav|すべてのファイル (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "レーダー A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "レーダー B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "Navico BR24、3 G および 4 G のレーダー" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "レーダーを表示" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "レーダーを表示しない" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "レーダーコントロール..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "メニュー" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "OpenCPN 用 Navico レーダープラグイン" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "OpenCPN用 Navico ブロード バンド BR24/3 G/4 G レーダー プラグイン\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "ゾーン" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(確認)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " ゾーン" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "次のアラーム" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "レーダー" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "アラーム" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "頂点配列" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "シェーダー" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "ノースアップ" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "ヘッドアップ" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "ノースアップ" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "レーダー無し" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "レーダー待機中" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "レーダー" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "OpenGL が必要" diff -Nru opencpn-plugin-br24radar-2.1.0/po/nb_NO.po opencpn-plugin-br24radar-3.0.1/po/nb_NO.po --- opencpn-plugin-br24radar-2.1.0/po/nb_NO.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/nb_NO.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:01-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Norwegian Bokmal\n" "Language: nb_NO\n" @@ -16,388 +16,502 @@ "X-Crowdin-Language: nb\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Tilbake" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" -msgstr "" +msgstr "Standby / Sending" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Støyfilter" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" -msgstr "" +msgstr "Målforsterkning" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "IR filter" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Ekko separasjon" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Skanner hastighet" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Ekkoforsterkning" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Installasjon" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Kursjustering" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" +msgstr "Antennehøyde" + +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 -msgid "Local interference rej." +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 +msgid "Local interference rej." +msgstr "Lokal forstyrrelses kansellering" + +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Side-lobe undertrykkelse" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Main bang størrelse" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Vaktsoner" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" -msgstr "" +msgstr "Sonetype" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Indre rekkevidde" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Ytre rekkevidde" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Startkurs" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Sluttkurs" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Rekkevidde" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Styrke" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Sjøfilter" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Regnfilter" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" -msgstr "" +msgstr "Fjern markør" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" -msgstr "" +msgstr "Plasser EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" -msgstr "" +msgstr "Slepestrek etter mål" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Av/Relativ/Sanne slepestrek" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" -msgstr "" +msgstr "Tøm slepestrekene" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" -msgstr "" +msgstr "Retning" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Oppdateringsfrekvens" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Gjennomsiktighet" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" -msgstr "" +msgstr "Overlegg" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" -msgstr "" +msgstr "Juster" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" -msgstr "" +msgstr "Avansert" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" -msgstr "" +msgstr "Vis" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" -msgstr "" +msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Tidsbestemt sending" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Verdi" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Av" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Lav" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Høy" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" -msgstr "" +msgstr "På" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Middels" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rask" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" +msgstr "Alternativer" + +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Bue" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Sirkel" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Multisveip-filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" -#: src\br24ControlsDialog.cpp:828 -msgid "15 sec" +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 -msgid "30 sec" +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Havn" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Offshore" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" msgstr "" -#: src\br24ControlsDialog.cpp:830 -msgid "1 min" +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" msgstr "" -#: src\br24ControlsDialog.cpp:831 -msgid "3 min" +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:954 +msgid "15 sec" +msgstr "15 sek" + +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 +msgid "30 sec" +msgstr "30 sek" + +#: src\br24ControlsDialog.cpp:956 +msgid "1 min" +msgstr "1 min" + +#: src\br24ControlsDialog.cpp:957 +msgid "3 min" +msgstr "3 min" + +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" -msgstr "" +msgstr "Kontinuerlig" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Send" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Ventemodus" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Driftstid" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Kursor" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Ukjent" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Alarm" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Av" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Vaktsone" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Strømstatus" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" -msgstr "" +msgstr "Våkner opp" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" -msgstr "" +msgstr "Ventemodus om" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" -msgstr "" +msgstr "Sending om" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" -msgstr "" +msgstr "Skjul begge vinduene" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" -msgstr "" +msgstr "Vis andre vinduer" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" -msgstr "" +msgstr "Vis dette vindu" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" -msgstr "" +msgstr "Vis begge vinduene" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" -msgstr "" +msgstr "Skjul vindu" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" -msgstr "" +msgstr "Vis vindu" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" +msgstr "Tøm EBL/VRM" + +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1599 msgid "True" -msgstr "" +msgstr "Sann" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" -msgstr "" +msgstr "Relativ" + +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Retning opp" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Stabilisert)" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1623 msgid "North up" -msgstr "" +msgstr "Nord opp" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "Kurs opp" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Vaktsone 1 Grønn" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Vaktsone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Vaktsone 2 Blå" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" #: src\br24MessageBox.cpp:125 msgid "Cannot switch radar on as\n" "it is not connected or off" -msgstr "" +msgstr "Kan ikke slå på radar da\n" +"den ikke er tilkoblet eller er avslått" #: src\br24MessageBox.cpp:132 msgid "OpenCPN options" @@ -429,22 +543,21 @@ #: src\br24MessageBox.cpp:174 msgid "and" -msgstr "" +msgstr "og" #: src\br24MessageBox.cpp:179 msgid "True Heading" -msgstr "" +msgstr "Sann kurs" #: src\br24MessageBox.cpp:184 msgid "or" -msgstr "" +msgstr "eller" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" -msgstr "" +msgstr "Magnetisk retning" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variasjon" @@ -458,39 +571,39 @@ #: src\br24MessageBox.cpp:216 msgid "&Hide Radar" -msgstr "" +msgstr "&Skjul Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" -msgstr "" +msgstr "Radartype" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" -msgstr "" +msgstr "Radarkrav OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radar krever følgende" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" -msgstr "" +msgstr "Emulator" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" -msgstr "" +msgstr "Nettverkskort" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" -msgstr "" +msgstr "Sann kurs" #: src\br24OptionsDialog.cpp:38 msgid "BR24 Display Preferences" -msgstr "" +msgstr "BR24 visnings-innstillinger" #: src\br24OptionsDialog.cpp:58 msgid "Nautical Miles" @@ -534,231 +647,275 @@ #: src\br24OptionsDialog.cpp:92 msgid "Repeat alarm after (sec)" -msgstr "" +msgstr "Gjenta alarm etter (sek)" #: src\br24OptionsDialog.cpp:103 msgid "GPU drawing method" -msgstr "" +msgstr "GPU tegnemetode" #: src\br24OptionsDialog.cpp:109 msgid "Drawing Method" -msgstr "" +msgstr "Tegnemetode" #: src\br24OptionsDialog.cpp:116 msgid "Control Menu Auto Hide" -msgstr "" +msgstr "Kontrollmeny Auto-skjul" #: src\br24OptionsDialog.cpp:119 msgid "Never" -msgstr "" +msgstr "Aldri" #: src\br24OptionsDialog.cpp:119 msgid "10 sec" -msgstr "" +msgstr "10 sek" #: src\br24OptionsDialog.cpp:122 msgid "Auto hide after" -msgstr "" +msgstr "Skjul automatisk etter" #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Startfarge for etterslep" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Sluttfarge for etterslep" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" -msgstr "" +msgstr "Farger for mål" #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Farge for svakt ekko" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Farge for middels sterkt ekko" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" -msgstr "" +msgstr "Farge for sterkt ekko" + +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "Farge for ARPA-kant" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Radar vindusfarger" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Bakgrunnsfarge" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS tekstfarge" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Alternativer" -#: src\br24OptionsDialog.cpp:183 -msgid "Show Guard Zone on overlay" +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:215 +msgid "Show Guard Zone on overlay" +msgstr "Vis vaktsone på overlegg" + +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" -msgstr "" +msgstr "Vis slep etter mål på overlegg" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Aktiver dobbelradar, kun 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" -msgstr "" +msgstr "Ignorer radar-kurs" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Send radarkurs til OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" -msgstr "" +msgstr "Aktiver COG som kurs" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Emulator modus" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" -msgstr "" +msgstr "Reverser musens hjul zoomretning" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Velg lydfil" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAV filer (*.wav)|*.wav|Alle filer (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" -msgstr "" +msgstr "Navico BR24, 3G og 4G RADAR" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" -msgstr "" +msgstr "Vis radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" -msgstr "" +msgstr "Skjul radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Radarkontroll..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Meny" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radarutvidelse for OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico Bredbånds BR24/3G/4G Radar utvidelse for OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Sone" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" -msgstr "" +msgstr "(Bekreftet)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" -msgstr "" +msgstr " Sone" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" -msgstr "" +msgstr "Neste alarm om" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "GPS" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" -msgstr "" +msgstr "NMEA" #: src\GuardZoneBogey.cpp:94 msgid "Confirm" -msgstr "" +msgstr "Bekreft" #: src\GuardZoneBogey.cpp:97 msgid "Close" -msgstr "" +msgstr "Lukk" #: src\GuardZoneBogey.h:53 msgid "Alarm" -msgstr "" +msgstr "Alarm" + +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "Navn på AIS-mål" #: src\RadarDraw.cpp:54 msgid "Vertex Array" -msgstr "" +msgstr "Toppunkt matrise" #: src\RadarDraw.cpp:54 msgid "Shader" -msgstr "" +msgstr "Skyggelegger" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" -msgstr "" +msgstr "Retning opp" + +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Stabilisert" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Kurs opp" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Nord opp" + +#: src\RadarInfo.cpp:1379 msgid "No radar" -msgstr "" +msgstr "Ingen radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" -msgstr "" +msgstr "Radar er i ventemodus" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" -msgstr "" +msgstr "Radar våkner opp" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" -msgstr "" +msgstr "Radar sender ikke" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" -msgstr "" +msgstr "OpenGL modus er påkrevd" #: src\RadarPanel.cpp:167 msgid "Unable to create OpenGL canvas" -msgstr "" +msgstr "Kunne ikke opprette OpenGL lerret" #: src\socketutil.cpp:179 msgid "Cannot create UDP socket" diff -Nru opencpn-plugin-br24radar-2.1.0/po/nl_NL.po opencpn-plugin-br24radar-3.0.1/po/nl_NL.po --- opencpn-plugin-br24radar-2.1.0/po/nl_NL.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/nl_NL.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" "Last-Translator: nohal \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: nl\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Terug" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Stand-by / Zenden" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Ruisonderdrukking" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Echovergroting" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Storingsdemping" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Echoscheiding" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Rotatiesnelheid" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Echoversterking" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Installatie" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Richting oplijnen" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Antennehoogte" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "Antenne voor tov GPS" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "Antenne sb tov GPS" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Onderdruk plaatselijke storing" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Zijbundelonderdrukking" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Min. detectieafstand" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Bewakingszones" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Zonetype" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Minste afstand" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Grootste afstand" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Startpeiling" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Eindpeiling" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Multi-sweepfilter" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Bereik" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Versterking" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Zee clutter" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Regen clutter" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Verberg cursor" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Toon EBL en VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Echosporen" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Ware/Relatieve echosporen" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Tracks: Uit/Relatief/Waar" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Verberg echosporen" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Oriëntatie" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Vernieuwingsfrequentie" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparantie" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Op kaart tonen" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Aanpassen" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Uitgebreid" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Weergave" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Periodiek zenden" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Waarde" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "uit" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Laag" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Hoog" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Aan" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Middel" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normaal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Hoog" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Voorkeuren" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "graden" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "gemeten vanaf boeg" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "boven zeespiegel" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Antenne voorwaarts" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "ten opzichte van GPS" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "negatief = achter" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "Antenne zijwaarts" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "negatief = bakboord" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "sector" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "cirkel" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Multi-sweepfilter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA Aan" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Alarm Aan" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Haven" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Offshore" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Verkrijg target" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Verwijder object" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Alle objecten verwijderen" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "Toon AIS/ARPA" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sec" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sec" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Continu" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Onbekend" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Zenden" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Stand-by" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Looptijd" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Cursor" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Onbekend" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Alarm" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + ARPA" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Uit" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Bewakingszone" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Stand-by" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Zendstatus" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Ontwaken" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Zenden" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Stand-by over" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Zenden over" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Verberg beide vensters" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Toon andere venster" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Toon dit venster" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Toon beide vensters" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Verberg venster" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Toon venster" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Verberg EBL en VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "Verberg AIS/ARPA" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Waar" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relatief" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Koers-Boven" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Gestabiliseerd)" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Noord-Boven" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "Koers-Boven" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" - -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Bewakingszone" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Bewakingszone 1 Groen" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Bewakingszone 2 Blauw" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -440,12 +553,11 @@ msgid "or" msgstr "of" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Koers (M)" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variatie" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "&Verberg Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Radartype" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Radarvereisten OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "BR24 Radar vereist het volgende:" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulator" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Ethernetkaart" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Koers (W)" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "Sterke echo kleur" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "ARPA rand kleur" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Radar vensterkleuren" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Achtergrondkleur" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS tekstkleur" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opties" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "Toon ring op extreme range" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "Toon Guard Zone op kaart" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "Toon echosporen op kaart" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Dubbele radar inschakelen, alleen 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Negeer koers afkomstig van radar" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Koers vanaf radar doorgeven aan OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" -msgstr "Gebruik COG als koers" +msgstr "Gebruik GrK als koers" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Emulatiemodus" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Zoomrichting van muiswiel omkeren" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Selecteer geluidbestand" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAV bestanden (*.wav)|*.wav|Alle bestanden (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "Navico BR24, 3G en 4G RADAR" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Toon radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Verberg radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Radarbesturing ..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Verkrijg radar target" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Verwijder radar target" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Verwijder alle radar targets" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radar PlugIn voor OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico breedband BR24/3G/4G Radar PlugIn voor OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zone" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Bevestigd)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Zone" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Volgend alarm over" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" -msgstr "COG" - -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" +msgstr "GrK" -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Alarm" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "AIS objectnaam" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Vertex" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Shader" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Noord-Boven" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Koers-Boven" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Gestabiliseerd" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Koers-Boven" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Noord-Boven" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Geen radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar is stand-by" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Radar ontwaakt" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Radar zendt niet" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "OpenGL modus is vereist" diff -Nru opencpn-plugin-br24radar-2.1.0/po/pl_PL.po opencpn-plugin-br24radar-3.0.1/po/pl_PL.po --- opencpn-plugin-br24radar-2.1.0/po/pl_PL.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/pl_PL.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:02-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: pl\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Powrót" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" -msgstr "" +msgstr "Pogotowie/ Nadawanie" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Redukcja zakłóceń" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Powiekszenie obiektu" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Tłumienie zakóceń" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Oddzielenie obiektu" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Prędkość skanowania" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Wzmocnienie obiektu" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instalacja" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Ustawienie namiaru" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Wysokość anteny" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 -msgid "Local interference rej." +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 +msgid "Local interference rej." +msgstr "Usuń lokalne zakłócenia." + +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Tłumienie jednostronne" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Zasięg głównej wiązki" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Strefy ochronne" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Typ strefy" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Zakres wewnętrzny" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Zakres zewnętrzny" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Poczatek namiaru" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Koniec namiaru" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Zakres" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Wzmocnienie" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Zakłocenia od fal" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Zakłocenia od deszczu" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Usun kursor" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Umiesc EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Slady obiektu" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Usun slady" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientacja" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Częstotliwość odświeżania" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Przezroczystość" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Nakładka" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Dostosuj" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Zaawansowane" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Widok" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Czas nadawania" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Wartość" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Wył" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Niski" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Wysoki" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Włącz" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Średni" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normalne" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Szybkie" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" +msgstr "Ustawienia" + +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "nad poziomem morza" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Łuk" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Koło" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sek" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sek" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Ciągły" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Nieznany" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Nadawanie" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Tryb gotowości" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Nieznany" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Strefa ochronna" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Tryb gotowości" - -#: src\br24ControlsDialog.cpp:1280 -msgid "Waking up" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Nadawanie" +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "Rozgrzewanie" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Tryb gotowości w" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Nadawanie w" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Ukryj oba okna" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Pokaż inne okno" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Pokaż to okno" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Pokaż oba okna" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Ukryj okno" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Pokaż okno" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Usun EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 -msgid "True" +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1599 +msgid "True" +msgstr "Rzeczywisty" + +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" +msgstr "Względny" + +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Dziob na gorze" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Północ na górze" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" -msgstr "Dziob na gorze" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Strefa ochronna" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -430,22 +543,21 @@ #: src\br24MessageBox.cpp:174 msgid "and" -msgstr "" +msgstr "i" #: src\br24MessageBox.cpp:179 msgid "True Heading" -msgstr "" +msgstr "Kurs rzeczywisty" #: src\br24MessageBox.cpp:184 msgid "or" -msgstr "" +msgstr "lub" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" -msgstr "" +msgstr "Kurs magnetyczny" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Deklinacja" @@ -461,33 +573,33 @@ msgid "&Hide Radar" msgstr "&Ukryj Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" -msgstr "" +msgstr "Typ radaru" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "IP radaru" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Radar wymagania OK:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" -msgstr "Radar wymaga nastepujacych" +msgstr "Radar wymaga następujących" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulator" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Karta Ethernet" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" -msgstr "" +msgstr "Kurs rzeczywisty" #: src\br24OptionsDialog.cpp:38 msgid "BR24 Display Preferences" @@ -535,7 +647,7 @@ #: src\br24OptionsDialog.cpp:92 msgid "Repeat alarm after (sec)" -msgstr "" +msgstr "Powtórz alarm po (s)" #: src\br24OptionsDialog.cpp:103 msgid "GPU drawing method" @@ -563,159 +675,199 @@ #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Kolor początku śladu" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Kolor końca śladu" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" -msgstr "" +msgstr "Kolory celu" #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Słaby odbiór, kolor" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Średni odbiór, kolor" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" +msgstr "Dobry odbiór, kolor" + +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Kolor tła" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opcje" -#: src\br24OptionsDialog.cpp:183 -msgid "Show Guard Zone on overlay" +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:215 +msgid "Show Guard Zone on overlay" +msgstr "Pokaż strefę ochronną (GZ) na nakładce" + +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" -msgstr "" +msgstr "Pokaż ślad obiektu na nakładce" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Włączyć podwójny radar, tylko 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" -msgstr "" +msgstr "Zignorować kurs radar" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Przekazać kieunek radaru do OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" -msgstr "" +msgstr "Użyj COG jako kurs" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Tryb Emulatora" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Odwróć kierunek powiększania kółkiem myszy" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Wybierz plik dźwiękowy" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Pliki WAV (*.wav)|*.wav|Wszystkie pliki (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "RADAR Navico BR24, 3G i 4G" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Pokaz radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Ukryj radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Ustawienia Radaru..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radar PlugIn dla OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Wtyczka szerokopasmowego Radaru Navicco BR24/3G/4G dla OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Strefa" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Potwierdzone)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" -msgstr "" +msgstr " Strefa" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Kolejny alarm za" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" #: src\GuardZoneBogey.cpp:94 msgid "Confirm" -msgstr "" +msgstr "Potwierdź" #: src\GuardZoneBogey.cpp:97 msgid "Close" -msgstr "" +msgstr "Zamknij" #: src\GuardZoneBogey.h:53 msgid "Alarm" -msgstr "" +msgstr "Alarm" + +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "nazwa obiektu AIS" #: src\RadarDraw.cpp:54 msgid "Vertex Array" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Kontur" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Północ na górze" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Dziob na gorze" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Kurs do góry" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Północ na górze" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Brak radaru" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar jest w trybie gotowości" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" -msgstr "" +msgstr "Radar rozgrzewa sie" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" -msgstr "" - -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" +msgstr "Radar nie nadaje" -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "Wymagany tryb OpenGL" diff -Nru opencpn-plugin-br24radar-2.1.0/po/pt_BR.po opencpn-plugin-br24radar-3.0.1/po/pt_BR.po --- opencpn-plugin-br24radar-2.1.0/po/pt_BR.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/pt_BR.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:02-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Automático" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Voltar atrás" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Modo de espera / transmitir" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Rejeição de ruido" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Expansão do Alvo" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Rejeição de interferência" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Separação de alvos" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Velocidade de digitalização" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Reforço de alvos" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instalação" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Alinhamento do rumo" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Altura da antena" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Interferência local rej." -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Supressão de lóbulo lateral" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Tamanho da Zona Morta" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Zona de vigilancia" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Tipo de zona" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Alcance interno" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Alcance Externo" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Rumo inicial" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Rumo final" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Filtro multi varrimento" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Escala" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Ganho" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Ruído do mar" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Ruído da chuva" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Limpar cursor" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Coloque EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Trilhas dos Alvos" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Verdadeiro/Trilhas relativas" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Desligado/Relativo/trilhas Verdadeiro" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Limpar Trilhas" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientação" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Taxa de atualização" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparência" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Sobrepor" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Ajustar" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Avançado" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Vista" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Transmissão agendada" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Informação" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Valor" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Fora" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Baixa" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Alta" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Ligado" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Média" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rápido" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Preferências" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Arco" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Círculo" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Filtro multi varrimento" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 seg" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 seg" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Continuar" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Desconhecido" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Transmitir" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Modo de espera" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Desconhecido" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Alarme" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Desligado" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Zonas de vigia" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Modo de espera" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Acordar" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Transmitir" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Modo de espera" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Transmitir" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Esconder as duas janelas" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Mostrar outra janela" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Mostrar esta janela" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Mostrar ambas as janelas" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Ocultar janela" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Mostrar janela" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Limpar EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Verdadeiro" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relativo" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Rumo acima" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Norte acima" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "Rumo acima" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" - -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Zona de vigilancia" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Zona de guarda 1 verde" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Zona de guarda 2 azul" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -440,12 +553,11 @@ msgid "or" msgstr "ou" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Rumo magnético" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variação" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "& Esconder Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Tipo de radar" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Requisitos de radar Ok:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radar requer o seguinte" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulador" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Placa Ethernet" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Rumo verdadeiro" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "Cor de retorno forte" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opções" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" -msgstr "Mostrar a zona de vigilância na sobreposição" +msgstr "Mostrar zona de vigilância na sobreposição" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "Mostrar rastos dos alvos na sobreposição" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Habilitar dual radar, 4G somente" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Ignorar a posição do radar" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Passar a posição do radar para OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Habilitar COG como rumo" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Modo de emulador" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Inverter a direção de zoom da roda do mouse" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Selecionar Som do Alerta" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Arquivos WAV (*.wav)|*.wav|Todos os Arquivos (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "RADAR Navico BR24, 3G e 4G" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Mostrar radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Ocultar radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Controle de radar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Radar Navico PlugIn para OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Banda larga Navico BR24/3G/4G Radar PlugIn para OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zona" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Confirmado)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Área" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Próximo alarme em" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Alarme" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Matriz de vértice" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Sombreador" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Norte acima" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Rumo acima" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Rumo acima" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Norte acima" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Sem radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar em modo de espera" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Radar esta acordado" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Radar não transmitindo" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "OpenGL modo exigido" diff -Nru opencpn-plugin-br24radar-2.1.0/po/pt_PT.po opencpn-plugin-br24radar-3.0.1/po/pt_PT.po --- opencpn-plugin-br24radar-2.1.0/po/pt_PT.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/pt_PT.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:02-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: pt-PT\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Anterior" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Modo de espera / transmitir" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Rejeição de ruido" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Alvo de expansão" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Rejeição de interferência" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Separação de alvos" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Velocidade de digitalização" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Reforço de alvos" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Instalação" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Alinhamento do rumo" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Altura da antena" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Rejeição de interferência local." -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Supressão de lobo lateral" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Tamanho da Zona Morta" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" -msgstr "Zonas de vigia" +msgstr "Zonas de Resguardo" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Tipo de zona" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Alcance próximo" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Alcance Externo" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Rumo inicial" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Rumo final" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Filtro multi varrimento" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Alcance" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Ganho" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Ruído do mar" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Ruído da chuva" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Limpar cursor" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Coloque EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Rastos dos Alvos" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Rastos Verdadeiros/Relativos" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Desligado/Relativo/Rasto Verdadeiro" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Limpar Rastos" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientação" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Taxa de atualização" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparência" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Sobrepor" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Ajustar" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Avançado" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Vista" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Transmissão temporizada" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Valor" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Apagar" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Baixo" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Alto" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Ligado" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Médio" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Rápido" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Preferências" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Arc" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Círculo" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Filtro multi varrimento" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 seg" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 seg" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Continuo" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Desconhecido" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Transmitir" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Modo de espera" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Desconhecido" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Alarme" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + Arpa" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Desligado" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Zona de vigilância" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Modo de espera" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Acordar" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Transmitir" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Modo de espera" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Transmitir" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Esconder as duas janelas" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Mostrar outra janela" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Mostrar esta janela" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Mostrar ambas as janelas" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Ocultar janela" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Mostrar janela" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Limpar EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Verdadeiro" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relativo" -#: src\br24ControlsDialog.cpp:1372 -msgid "North up" -msgstr "Norte acima" - -#: src\br24ControlsDialog.cpp:1375 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 msgid "Head up" msgstr "Rumo acima" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Zona de vigilância" +#: src\br24ControlsDialog.cpp:1623 +msgid "North up" +msgstr "Norte acima" + +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "Rumo para cima" + +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Zona de Resguardo 1 Verde" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Zona de Resguardo 2 Azul" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -440,12 +553,11 @@ msgid "or" msgstr "ou" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Rumo magnético" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Variação" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "&Esconder Radar" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Tipo de radar" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Requisitos de radar Ok:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radar requer o seguinte" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulador" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Placa Ethernet" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Rumo verdadeiro" @@ -519,11 +631,11 @@ #: src\br24OptionsDialog.cpp:71 msgid "Guard Zone Styling" -msgstr "Estilo da zona de vigilancia" +msgstr "Estilo da Zona de Resguardo" #: src\br24OptionsDialog.cpp:80 msgid "Guard Zone Sound" -msgstr "Som da Zona de vigilancia" +msgstr "Som da Zona de Resguardo" #: src\br24OptionsDialog.cpp:83 msgid "Select Alert Sound" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "Cor de retorno forte" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Opções" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" -msgstr "Mostrar a zona de vigilância na sobreposição" +msgstr "Mostrar a Zona de Resguardo na sobreposição" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "Mostrar rastos dos alvos na sobreposição" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Ativar dual radar, 4G apenas" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Ignorar direção do radar" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Passar rumo do radar para OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Habilitar COG como rumo" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Modo emulação" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Invierter a direção de zoom da roda do rato" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Seleccionar som alarme" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Ficheiros WAV (*.wav)|*.wav|All files (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "RADAR Navico BR24, 3G e 4G" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Mostrar radar" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Ocultar radar" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Controlo de Radar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menu" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Extensão de Radar Navico para OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Extensão Navico Broadband BR24/3G/4G Radar para OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zona" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Confirmado)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Zona" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Próximo alarme em" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Alarme" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Vertex Array" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Sombreador" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Norte para cima" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Rumo para cima" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Rumo para cima" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Norte para cima" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Sem radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radar em modo de espera" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Radar a acordar" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Radar não trsansmite" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "Modo OpenGL obrigtório" diff -Nru opencpn-plugin-br24radar-2.1.0/po/ru_RU.po opencpn-plugin-br24radar-3.0.1/po/ru_RU.po --- opencpn-plugin-br24radar-2.1.0/po/ru_RU.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/ru_RU.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:02-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: ru\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Авто" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Назад" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "Режим ожидания / Передача" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Шумоподавление" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Разделение целей" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Подавление помех" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Разделение целей" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Скорость вращения антенны" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Увеличение цели" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Установки" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Выравнивание Пеленга" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Высота антенны" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Подавление помех." -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Подавление боковых искажений" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" -msgstr "" +msgstr "Размер импульса локатора" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Охранные зоны" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Тип зоны" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Внутренний круг" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Внешний круг" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Начало пеленга" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Конец пеленга" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Фильтр мульти развертки " - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Дальность" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Усиление" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Помехи от волны" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Помехи от дождя" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Очистить курсор" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Место EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "След цели" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "След Истинный/Относительный" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Выкл/Относит/Истинй следы" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Очистить следы" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Ориентация" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Период обновления" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Прозрачность" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Наложение" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Регулировка" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Дополнительно" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Вид" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Тайминг передачи" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Статус радара" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+ 10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Значение" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Выкл" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Низко" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Высоко" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "Вкл" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Средний" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "По умолчанию" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Быстро" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Настройки" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Дуга" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Круг" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Фильтр мульти развертки" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 сек" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 сек" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 мин" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 мин" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 мин" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 минут" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" -msgstr "" +msgstr "Непрерывно" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Неизвестно" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "ПЕРЕДАЧА" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 мин" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "РЕЖИМ ОЖИДАНИЯ" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 мин" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 мин" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 мин" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 мин" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 мин" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Неизвестно" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Сигнал" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + САРП" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Выкл" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Охранная Зона" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "РЕЖИМ ОЖИДАНИЯ" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Пробуждение" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "ПЕРЕДАЧА" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Режим ожидания" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Передача" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Скрыть оба окна" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Показать другое окно" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Показать это окно" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Показать оба окна" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Скрыть окно" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Показать окно" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Очистить EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Истинный" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Относительный" -#: src\br24ControlsDialog.cpp:1372 -msgid "North up" -msgstr "Север вверх" - -#: src\br24ControlsDialog.cpp:1375 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 msgid "Head up" msgstr "Курс вверх" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Охранная Зона" +#: src\br24ControlsDialog.cpp:1623 +msgid "North up" +msgstr "Север вверх" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" +msgstr "По курсу" + +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Зона РЛ налюдения 1 Зеленая" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Зона РЛ налюдения 2 Синяя" + +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Радар" @@ -439,12 +552,11 @@ msgid "or" msgstr "или" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Магнитное Напрвление" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Склонение" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "& Скрыть Радар" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Тип Радара" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Радар IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Требования радар ОК:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Радар требует следующих" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Симулятор" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Ethernet-карта" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Истинное Напрвление" @@ -562,11 +674,11 @@ #: src\br24OptionsDialog.cpp:132 msgid "Trail start color" -msgstr "" +msgstr "Цвет начала следа" #: src\br24OptionsDialog.cpp:139 msgid "Trail end color" -msgstr "" +msgstr "Цвет конца следа" #: src\br24OptionsDialog.cpp:148 msgid "Target colors" @@ -574,133 +686,169 @@ #: src\br24OptionsDialog.cpp:151 msgid "Weak return color" -msgstr "" +msgstr "Цвет слабого эха" #: src\br24OptionsDialog.cpp:157 msgid "Intermediate return color" -msgstr "" +msgstr "Цвет среднего эха" #: src\br24OptionsDialog.cpp:164 msgid "Strong return color" +msgstr "Цвет сильного эха" + +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Настройки" -#: src\br24OptionsDialog.cpp:183 -msgid "Show Guard Zone on overlay" +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:215 +msgid "Show Guard Zone on overlay" +msgstr "Показ зоны РЛ наблюдения на оверлее" + +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" -msgstr "" +msgstr "Показ РЛ следов на оверлее" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Включить двойной радар, (только 4G)" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Игнорировать направление радара" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Передавать направление радара в OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Включите COG в качестве направления" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Режим эмуляции" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Реверс масштабирования колеса мыши" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Выберите звуковой файл" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "Файл WAV (*.wav)|*.wav|Все файлы (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Радар A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Радар B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "NAVICO BR24, 3G и 4G РЛС" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Показать радар" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Скрыть радар" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Управление Радаром..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Меню" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Модуль «Радар NAVICO» для OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Широкополосный NAVICO BR24/3G/4G Радар плагин для OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Зона" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Подтверждено)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Зона" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Следующий сигнал в" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "РАДАР" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "Тревога" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Вершины массива" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "Шейдер" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Север вверх" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Курс вверх" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "По курсу" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Север вверх" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Нет Радара" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Радар находится в режиме ожидания" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Пробуждение радара" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Радар не передает" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "РАДАР" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "Требуется Режим OpenGL" diff -Nru opencpn-plugin-br24radar-2.1.0/po/sv_SE.po opencpn-plugin-br24radar-3.0.1/po/sv_SE.po --- opencpn-plugin-br24radar-2.1.0/po/sv_SE.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/sv_SE.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:03-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: sv-SE\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Auto" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Bakåt" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" -msgstr "Standby / Aktiv" +msgstr "Paus / Aktiv" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Brusfilter" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "Målförstärkning" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Egenavstörning" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Målseparation" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Scanhastighet" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Målförstärkning" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "Installation" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "Justering av riktning" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "Antennens höjd" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "Antennen framför GPS" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "Antennen styrbord om GPS" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "Hindra Interferens" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "Undertryck sidolober" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "Dämpa eget spår" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Larmzoner" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "Zontyp" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "Inre gräns" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Yttre gräns" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Från bäring" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Till bäring" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "Filter: Enkelsvepmål" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Räckvidd" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Förstärkning" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Sjöfilter" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Regnfilter" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "Rensa pekare" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "Placera EBL/VRM" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "Målspår" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" -msgstr "Verkligt/Relativt -Spår" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" +msgstr "Spår-Av/Relativ/Sann" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "Rensa spår" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "Orientering" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "Uppdatering - Frekvens" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Transparent" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "Visa över sjökortet" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "Justera" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "Avancerat" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "Visning" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "EBL/VRM" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "Tidsstyrd paus" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "Info" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+ 10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Värde" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Av" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Låg" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Hög" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "På" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Medium" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Snabb" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "Inställningar" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "grader" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "relativt fören" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "m" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "över havet" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "Antennen framför" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "relativt GPS" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "negativ = bakom" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "Antenn styrbord om" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "negativ = babord" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Sektor" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Cirkel" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" -msgstr "Flersvepsfilter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "ARPA på" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" +msgstr "Larm på" + +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "Auto inomskärs" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "Auto utomskärs" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "Koppla radarmål" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "Ta bort radarmål" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "Ta bort alla radarmål" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "Visa AIS/ARPA" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "15 sek" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "30 sec" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "1 min" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "3 min" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "5 min" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "10 min" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "Kontinuerlig" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" -msgstr "Okänd" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" +msgstr "Aktiv" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" -msgstr "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" +msgstr "Standby" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "15 min" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "20 min" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "25 min" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "30 min" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "35 min" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "10 s" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "20 s" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "30 s" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "Drifttid" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "Markör" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "Okänd" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr " + Larm" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr " + ARPA" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr " Av" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Larmzon" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" -msgstr "Standby" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "Driftstatus" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "Startar" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "Sänder" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "Standby om" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "Startar om" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "Dölja båda skärmarna" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "Visa andra skärmen" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "Visa denna skärm" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "Visa båda skärmarna" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "Dölj radarskärmen" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "Visa radarskärm" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "Rensa EBL/VRM" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "Dölj AIS/ARPA" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "Verklig" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "Relativ" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "Kurs upp" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "(Stabiliserad)" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "Norr upp" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "Kurs upp" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" -msgstr "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" +msgstr "Bevakningszon 1 grön" + +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" +msgstr "Bevakningszon 2 Blå" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" -msgstr "Larmzon" - -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -440,12 +553,11 @@ msgid "or" msgstr "eller" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "Magnetisk kurs" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "Missvisning" @@ -461,31 +573,31 @@ msgid "&Hide Radar" msgstr "&Dölj Radarinfo" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "Radartyp:" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "Radar IP" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "Allt är uppfyllt:" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "Radarn behöver följande för att starta" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "Emulator" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "Ethernet-kort" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "Sann kurs" @@ -585,123 +697,159 @@ msgid "Strong return color" msgstr "Starka mål" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "ARPA markeringsfärg" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "Radarfönstrets färger" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "Bakgrundsfärg" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "AIS textfärg" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "Inställningar" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "Visa ring vid max räckvidd" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "Visa larmzoner på överlagrat sjökort" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "Visa målspår på överlagrat sjökort" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "Aktivera dubbla radar, endast 4G" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "Kompasskurs från OCPN" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "Skicka radarns kursdata till OpenCPN" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "Tillåt COG som alternativ för kompasskurs" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "Emulatorläge" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "Omvänd zoomriktning för mushjulet" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "Välj ljudfil" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "WAV filer (*.wav)|*.wav|Alla filer (*.*)|*.*" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "Radar A" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "Radar B" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "Navico BR24, 3G och 4G RADAR" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "Visa radarinfo" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "Dölj Radarinfo" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Radar Inställningar..." -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "Koppla radarmål" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "Ta bort radarmål" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "Ta bort alla radarmål" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Meny" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "Navico Radarmodul för OpenCPN" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "Navico Broadband BR24/3G/4G Radarmodul för OpenCPN\n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Zon" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "(Bekräftad)" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr " Zon" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "Nästa larm om" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "COG" -#: src\br24radar_pi.cpp:768 -msgid "HDM" -msgstr "HDM" - -#: src\br24radar_pi.cpp:771 +#: src\br24radar_pi.cpp:954 msgid "HDT" msgstr "HDT" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "RADAR" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" +msgstr "HDM" + +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "GPS" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "WMM" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "NMEA" @@ -717,6 +865,10 @@ msgid "Alarm" msgstr "Larm" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "AIS Målnamn" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "Vertex Array" @@ -725,35 +877,39 @@ msgid "Shader" msgstr "Shader" -#: src\RadarInfo.cpp:908 -msgid "North Up" -msgstr "Norr upp" - -#: src\RadarInfo.cpp:910 +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 msgid "Head Up" msgstr "Kurs upp" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" +msgstr "Stabiliserad" + +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "Kurs upp" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "Norr upp" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "Ingen radar" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "Radarn är i standby" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "Radarn startar" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "Radarn sänder inte" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "RADAR" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "OpenGL-läge är ett krav" diff -Nru opencpn-plugin-br24radar-2.1.0/po/tr_TR.po opencpn-plugin-br24radar-3.0.1/po/tr_TR.po --- opencpn-plugin-br24radar-2.1.0/po/tr_TR.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/tr_TR.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,395 +2,508 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:03-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "Otomatik" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "Arka" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "Gürültü durdur" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "Arayüz kullanma" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "Hedef Ayırımı" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "Taranma Hızı" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "Hedef yükseltme" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "Koruma alanı" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "İç Menzil" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "Dış Menzil" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "Kerterize BAşla" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "Kerterizi Sonlandır" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "Menzil" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "Kazanç" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "Deniz serpintisi" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "Yağmur serpintisi" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "Şeffaflık" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "+10" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "+" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "Değer" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "-" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "-10" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "Kapalı" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "Düşük" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "Yüksek" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "Orta" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "Normal" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "Hızlı" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "Yay" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "Daire" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" +msgstr "" + +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" +msgstr "" + +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 msgid "Guard zone" msgstr "Koruma Bölgesi" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" msgstr "" -#: src\br24ControlsDialog.cpp:1280 +#: src\br24ControlsDialog.cpp:1509 msgid "Waking up" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" -msgstr "" - -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "Radar" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "Radar Kontrolü" -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "Menü" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "OpenCPN için Navico Radar Eklentisi" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "OpenCPN için Navico Genişband BR24/3G/4G Radar Eklentis \n" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "Bölge" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:954 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/vi_VN.po opencpn-plugin-br24radar-3.0.1/po/vi_VN.po --- opencpn-plugin-br24radar-2.1.0/po/vi_VN.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/vi_VN.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:03-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:23-0400\n" "Last-Translator: nohal \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: vi\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" -msgstr "" +msgstr "Tự động" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 -msgid "Guard zone" +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" msgstr "" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" msgstr "" -#: src\br24ControlsDialog.cpp:1280 -msgid "Waking up" +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" msgstr "" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 +msgid "Guard zone" +msgstr "" + +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" + +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "" -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:954 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/po/zh_TW.po opencpn-plugin-br24radar-3.0.1/po/zh_TW.po --- opencpn-plugin-br24radar-2.1.0/po/zh_TW.po 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/po/zh_TW.po 2017-09-24 10:58:54.000000000 +0000 @@ -2,8 +2,8 @@ msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-08-18 09:48+0200\n" -"PO-Revision-Date: 2016-08-24 13:00-0400\n" +"POT-Creation-Date: 2017-09-11 17:48+0200\n" +"PO-Revision-Date: 2017-09-16 06:21-0400\n" "Last-Translator: nohal \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -16,381 +16,494 @@ "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: /plugins/BR24radar_pi/po/br24radar_pi.pot\n" -#: src\br24ControlsDialog.cpp:305 src\br24ControlsDialog.cpp:531 -#: src\RadarInfo.cpp:1068 +#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:627 +#: src\RadarInfo.cpp:1426 msgid "Auto" msgstr "" -#: src\br24ControlsDialog.cpp:380 +#: src\br24ControlsDialog.cpp:479 msgid "Back" msgstr "" -#: src\br24ControlsDialog.cpp:399 src\br24ControlsDialog.cpp:1269 +#: src\br24ControlsDialog.cpp:498 msgid "Standby / Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:400 src\br24ControlsDialog.cpp:553 +#: src\br24ControlsDialog.cpp:499 src\br24ControlsDialog.cpp:648 msgid "Noise rejection" msgstr "" -#: src\br24ControlsDialog.cpp:401 src\br24ControlsDialog.cpp:567 +#: src\br24ControlsDialog.cpp:500 src\br24ControlsDialog.cpp:662 msgid "Target expansion" msgstr "" -#: src\br24ControlsDialog.cpp:402 src\br24ControlsDialog.cpp:583 +#: src\br24ControlsDialog.cpp:501 src\br24ControlsDialog.cpp:677 msgid "Interference rejection" msgstr "" -#: src\br24ControlsDialog.cpp:403 src\br24ControlsDialog.cpp:598 +#: src\br24ControlsDialog.cpp:502 src\br24ControlsDialog.cpp:692 msgid "Target separation" msgstr "" -#: src\br24ControlsDialog.cpp:404 src\br24ControlsDialog.cpp:610 +#: src\br24ControlsDialog.cpp:503 src\br24ControlsDialog.cpp:702 msgid "Scan speed" msgstr "" -#: src\br24ControlsDialog.cpp:405 src\br24ControlsDialog.cpp:622 +#: src\br24ControlsDialog.cpp:504 src\br24ControlsDialog.cpp:713 msgid "Target boost" msgstr "" -#: src\br24ControlsDialog.cpp:406 src\br24ControlsDialog.cpp:630 +#: src\br24ControlsDialog.cpp:505 src\br24ControlsDialog.cpp:721 msgid "Installation" msgstr "" -#: src\br24ControlsDialog.cpp:407 src\br24ControlsDialog.cpp:653 +#: src\br24ControlsDialog.cpp:506 src\br24ControlsDialog.cpp:742 msgid "Bearing alignment" msgstr "" -#: src\br24ControlsDialog.cpp:408 src\br24ControlsDialog.cpp:661 +#: src\br24ControlsDialog.cpp:507 src\br24ControlsDialog.cpp:749 msgid "Antenna height" msgstr "" -#: src\br24ControlsDialog.cpp:409 src\br24ControlsDialog.cpp:669 +#: src\br24ControlsDialog.cpp:508 +msgid "Antenna forward of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:509 +msgid "Antenna starboard of GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:510 src\br24ControlsDialog.cpp:773 msgid "Local interference rej." msgstr "" -#: src\br24ControlsDialog.cpp:410 src\br24ControlsDialog.cpp:679 +#: src\br24ControlsDialog.cpp:511 src\br24ControlsDialog.cpp:782 msgid "Side lobe suppression" msgstr "" -#: src\br24ControlsDialog.cpp:411 src\br24ControlsDialog.cpp:687 +#: src\br24ControlsDialog.cpp:512 src\br24ControlsDialog.cpp:790 msgid "Main bang size" msgstr "" -#: src\br24ControlsDialog.cpp:412 src\br24ControlsDialog.cpp:414 -#: src\br24ControlsDialog.cpp:705 +#: src\br24ControlsDialog.cpp:513 src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:807 msgid "Guard zones" msgstr "" -#: src\br24ControlsDialog.cpp:413 src\br24ControlsDialog.cpp:708 +#: src\br24ControlsDialog.cpp:514 src\br24ControlsDialog.cpp:810 msgid "Zone type" msgstr "" -#: src\br24ControlsDialog.cpp:415 src\br24ControlsDialog.cpp:722 +#: src\br24ControlsDialog.cpp:516 src\br24ControlsDialog.cpp:825 msgid "Inner range" msgstr "" -#: src\br24ControlsDialog.cpp:416 src\br24ControlsDialog.cpp:729 +#: src\br24ControlsDialog.cpp:517 src\br24ControlsDialog.cpp:832 msgid "Outer range" msgstr "" -#: src\br24ControlsDialog.cpp:417 src\br24ControlsDialog.cpp:736 +#: src\br24ControlsDialog.cpp:518 src\br24ControlsDialog.cpp:839 msgid "Start bearing" msgstr "" -#: src\br24ControlsDialog.cpp:418 src\br24ControlsDialog.cpp:744 +#: src\br24ControlsDialog.cpp:519 src\br24ControlsDialog.cpp:847 msgid "End bearing" msgstr "" -#: src\br24ControlsDialog.cpp:419 -msgid "Multi sweep filter" -msgstr "" - -#: src\br24ControlsDialog.cpp:420 src\br24ControlsDialog.cpp:770 +#: src\br24ControlsDialog.cpp:520 src\br24ControlsDialog.cpp:876 msgid "Range" msgstr "" -#: src\br24ControlsDialog.cpp:421 src\br24ControlsDialog.cpp:774 +#: src\br24ControlsDialog.cpp:521 src\br24ControlsDialog.cpp:880 msgid "Gain" msgstr "" -#: src\br24ControlsDialog.cpp:422 src\br24ControlsDialog.cpp:778 +#: src\br24ControlsDialog.cpp:522 src\br24ControlsDialog.cpp:886 msgid "Sea clutter" msgstr "" -#: src\br24ControlsDialog.cpp:423 src\br24ControlsDialog.cpp:782 +#: src\br24ControlsDialog.cpp:523 src\br24ControlsDialog.cpp:893 msgid "Rain clutter" msgstr "" -#: src\br24ControlsDialog.cpp:424 src\br24ControlsDialog.cpp:798 +#: src\br24ControlsDialog.cpp:524 src\br24ControlsDialog.cpp:908 msgid "Clear cursor" msgstr "" -#: src\br24ControlsDialog.cpp:425 src\br24ControlsDialog.cpp:804 -#: src\br24ControlsDialog.cpp:1346 +#: src\br24ControlsDialog.cpp:525 src\br24ControlsDialog.cpp:925 +#: src\br24ControlsDialog.cpp:1578 msgid "Place EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:426 src\br24ControlsDialog.cpp:836 +#: src\br24ControlsDialog.cpp:526 src\br24ControlsDialog.cpp:962 #: src\br24OptionsDialog.cpp:129 msgid "Target trails" msgstr "" -#: src\br24ControlsDialog.cpp:427 src\br24ControlsDialog.cpp:844 -#: src\br24ControlsDialog.cpp:1357 -msgid "True/Relative trails" +#: src\br24ControlsDialog.cpp:527 src\br24ControlsDialog.cpp:950 +#: src\br24ControlsDialog.cpp:1596 +msgid "Off/Relative/True trails" msgstr "" -#: src\br24ControlsDialog.cpp:428 src\br24ControlsDialog.cpp:849 +#: src\br24ControlsDialog.cpp:528 src\br24ControlsDialog.cpp:971 msgid "Clear trails" msgstr "" -#: src\br24ControlsDialog.cpp:429 src\br24ControlsDialog.cpp:861 -#: src\br24ControlsDialog.cpp:1368 +#: src\br24ControlsDialog.cpp:529 src\br24ControlsDialog.cpp:976 +#: src\br24ControlsDialog.cpp:1611 msgid "Orientation" msgstr "" -#: src\br24ControlsDialog.cpp:430 src\br24ControlsDialog.cpp:868 +#: src\br24ControlsDialog.cpp:530 src\br24ControlsDialog.cpp:982 msgid "Refresh rate" msgstr "" -#: src\br24ControlsDialog.cpp:431 src\br24ControlsDialog.cpp:874 +#: src\br24ControlsDialog.cpp:531 src\br24ControlsDialog.cpp:988 msgid "Transparency" msgstr "" -#: src\br24ControlsDialog.cpp:432 src\br24ControlsDialog.cpp:901 -#: src\br24ControlsDialog.cpp:1384 +#: src\br24ControlsDialog.cpp:532 src\br24ControlsDialog.cpp:1093 +#: src\br24ControlsDialog.cpp:1642 msgid "Overlay" msgstr "" -#: src\br24ControlsDialog.cpp:433 src\br24ControlsDialog.cpp:912 +#: src\br24ControlsDialog.cpp:533 src\br24ControlsDialog.cpp:1063 msgid "Adjust" msgstr "" -#: src\br24ControlsDialog.cpp:434 src\br24ControlsDialog.cpp:917 +#: src\br24ControlsDialog.cpp:534 src\br24ControlsDialog.cpp:1067 msgid "Advanced" msgstr "" -#: src\br24ControlsDialog.cpp:435 src\br24ControlsDialog.cpp:922 +#: src\br24ControlsDialog.cpp:535 src\br24ControlsDialog.cpp:1071 msgid "View" msgstr "" -#: src\br24ControlsDialog.cpp:436 src\br24ControlsDialog.cpp:927 +#: src\br24ControlsDialog.cpp:536 msgid "EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:437 src\br24ControlsDialog.cpp:952 +#: src\br24ControlsDialog.cpp:537 src\br24ControlsDialog.cpp:1025 msgid "Timed Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:438 src\br24ControlsDialog.cpp:960 +#: src\br24ControlsDialog.cpp:538 src\br24ControlsDialog.cpp:1045 msgid "Info" msgstr "" -#: src\br24ControlsDialog.cpp:504 +#: src\br24ControlsDialog.cpp:599 msgid "+10" msgstr "" -#: src\br24ControlsDialog.cpp:509 +#: src\br24ControlsDialog.cpp:603 msgid "+" msgstr "" -#: src\br24ControlsDialog.cpp:515 +#: src\br24ControlsDialog.cpp:608 msgid "Value" msgstr "" -#: src\br24ControlsDialog.cpp:521 +#: src\br24ControlsDialog.cpp:619 msgid "-" msgstr "" -#: src\br24ControlsDialog.cpp:526 +#: src\br24ControlsDialog.cpp:623 msgid "-10" msgstr "" -#: src\br24ControlsDialog.cpp:549 src\br24ControlsDialog.cpp:565 -#: src\br24ControlsDialog.cpp:577 src\br24ControlsDialog.cpp:593 -#: src\br24ControlsDialog.cpp:618 src\br24ControlsDialog.cpp:711 -#: src\br24ControlsDialog.cpp:827 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:942 src\br24ControlsDialog.cpp:1073 -#: src\br24ControlsDialog.cpp:1274 src\br24ControlsDialog.cpp:1387 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:643 src\br24ControlsDialog.cpp:659 +#: src\br24ControlsDialog.cpp:671 src\br24ControlsDialog.cpp:686 +#: src\br24ControlsDialog.cpp:710 src\br24ControlsDialog.cpp:1015 +#: src\br24ControlsDialog.cpp:1503 src\br24ControlsDialog.cpp:1603 +#: src\br24ControlsDialog.cpp:1645 src\br24ControlsDialog.cpp:1647 msgid "Off" msgstr "" -#: src\br24ControlsDialog.cpp:550 src\br24ControlsDialog.cpp:578 -#: src\br24ControlsDialog.cpp:594 src\br24ControlsDialog.cpp:619 +#: src\br24ControlsDialog.cpp:644 src\br24ControlsDialog.cpp:672 +#: src\br24ControlsDialog.cpp:687 src\br24ControlsDialog.cpp:711 msgid "Low" msgstr "" -#: src\br24ControlsDialog.cpp:551 src\br24ControlsDialog.cpp:580 -#: src\br24ControlsDialog.cpp:596 src\br24ControlsDialog.cpp:620 +#: src\br24ControlsDialog.cpp:645 src\br24ControlsDialog.cpp:674 +#: src\br24ControlsDialog.cpp:689 src\br24ControlsDialog.cpp:712 msgid "High" msgstr "" -#: src\br24ControlsDialog.cpp:566 src\br24ControlsDialog.cpp:1070 -#: src\br24ControlsDialog.cpp:1389 +#: src\br24ControlsDialog.cpp:660 src\br24ControlsDialog.cpp:1647 msgid "On" msgstr "" -#: src\br24ControlsDialog.cpp:579 src\br24ControlsDialog.cpp:595 +#: src\br24ControlsDialog.cpp:673 src\br24ControlsDialog.cpp:688 msgid "Medium" msgstr "" -#: src\br24ControlsDialog.cpp:607 +#: src\br24ControlsDialog.cpp:700 msgid "Normal" msgstr "" -#: src\br24ControlsDialog.cpp:608 +#: src\br24ControlsDialog.cpp:701 msgid "Fast" msgstr "" -#: src\br24ControlsDialog.cpp:635 +#: src\br24ControlsDialog.cpp:725 msgid "Preferences" msgstr "" -#: src\br24ControlsDialog.cpp:712 +#: src\br24ControlsDialog.cpp:743 +msgid "degrees" +msgstr "" + +#: src\br24ControlsDialog.cpp:743 +msgid "relative to bow" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 src\br24ControlsDialog.cpp:757 +#: src\br24ControlsDialog.cpp:765 +msgid "m" +msgstr "" + +#: src\br24ControlsDialog.cpp:750 +msgid "above sealevel" +msgstr "" + +#: src\br24ControlsDialog.cpp:756 +msgid "Antenna forward" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 src\br24ControlsDialog.cpp:766 +msgid "relative to GPS" +msgstr "" + +#: src\br24ControlsDialog.cpp:758 +msgid "negative = behind" +msgstr "" + +#: src\br24ControlsDialog.cpp:764 +msgid "Antenna starboard" +msgstr "" + +#: src\br24ControlsDialog.cpp:766 +msgid "negative = port" +msgstr "" + +#: src\br24ControlsDialog.cpp:814 msgid "Arc" msgstr "" -#: src\br24ControlsDialog.cpp:713 +#: src\br24ControlsDialog.cpp:815 msgid "Circle" msgstr "" -#: src\br24ControlsDialog.cpp:752 src\br24ControlsDialog.cpp:855 -#: src\br24ControlsDialog.cpp:1070 src\br24ControlsDialog.cpp:1073 -msgid "Multi Sweep Filter" +#: src\br24ControlsDialog.cpp:855 +msgid "ARPA On" +msgstr "" + +#: src\br24ControlsDialog.cpp:860 +msgid "Alarm On" msgstr "" -#: src\br24ControlsDialog.cpp:828 +#: src\br24ControlsDialog.cpp:884 +msgid "Harbour" +msgstr "" + +#: src\br24ControlsDialog.cpp:885 +msgid "Offshore" +msgstr "" + +#: src\br24ControlsDialog.cpp:912 +msgid "Acquire Target" +msgstr "" + +#: src\br24ControlsDialog.cpp:916 +msgid "Delete target" +msgstr "" + +#: src\br24ControlsDialog.cpp:920 +msgid "Delete all targets" +msgstr "" + +#: src\br24ControlsDialog.cpp:946 src\br24ControlsDialog.cpp:1587 +msgid "Show AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:954 msgid "15 sec" msgstr "" -#: src\br24ControlsDialog.cpp:829 src\br24OptionsDialog.cpp:119 +#: src\br24ControlsDialog.cpp:955 src\br24OptionsDialog.cpp:119 msgid "30 sec" msgstr "" -#: src\br24ControlsDialog.cpp:830 +#: src\br24ControlsDialog.cpp:956 msgid "1 min" msgstr "" -#: src\br24ControlsDialog.cpp:831 +#: src\br24ControlsDialog.cpp:957 msgid "3 min" msgstr "" -#: src\br24ControlsDialog.cpp:832 src\br24ControlsDialog.cpp:944 +#: src\br24ControlsDialog.cpp:958 src\br24ControlsDialog.cpp:1016 +msgid "5 min" +msgstr "" + +#: src\br24ControlsDialog.cpp:959 src\br24ControlsDialog.cpp:1017 msgid "10 min" msgstr "" -#: src\br24ControlsDialog.cpp:833 +#: src\br24ControlsDialog.cpp:960 msgid "Continuous" msgstr "" -#: src\br24ControlsDialog.cpp:890 -msgid "Unknown" +#: src\br24ControlsDialog.cpp:1008 src\br24ControlsDialog.cpp:1512 +msgid "Transmit" msgstr "" -#: src\br24ControlsDialog.cpp:943 -msgid "5 min" +#: src\br24ControlsDialog.cpp:1011 src\br24ControlsDialog.cpp:1506 +msgid "Standby" msgstr "" -#: src\br24ControlsDialog.cpp:945 +#: src\br24ControlsDialog.cpp:1018 msgid "15 min" msgstr "" -#: src\br24ControlsDialog.cpp:946 +#: src\br24ControlsDialog.cpp:1019 msgid "20 min" msgstr "" -#: src\br24ControlsDialog.cpp:947 +#: src\br24ControlsDialog.cpp:1020 msgid "25 min" msgstr "" -#: src\br24ControlsDialog.cpp:948 +#: src\br24ControlsDialog.cpp:1021 msgid "30 min" msgstr "" -#: src\br24ControlsDialog.cpp:949 +#: src\br24ControlsDialog.cpp:1022 msgid "35 min" msgstr "" -#: src\br24ControlsDialog.cpp:1009 src\br24ControlsDialog.cpp:1012 -msgid "Guard zone" +#: src\br24ControlsDialog.cpp:1033 +msgid "10 s" msgstr "" -#: src\br24ControlsDialog.cpp:1277 -msgid "Standby" +#: src\br24ControlsDialog.cpp:1034 +msgid "20 s" msgstr "" -#: src\br24ControlsDialog.cpp:1280 -msgid "Waking up" +#: src\br24ControlsDialog.cpp:1035 +msgid "30 s" msgstr "" -#: src\br24ControlsDialog.cpp:1283 -msgid "Transmit" +#: src\br24ControlsDialog.cpp:1037 +msgid "Runtime" +msgstr "" + +#: src\br24ControlsDialog.cpp:1075 +msgid "Cursor" +msgstr "" + +#: src\br24ControlsDialog.cpp:1098 src\br24ControlsDialog.cpp:1629 +#: src\RadarInfo.cpp:1248 +msgid "Unknown" +msgstr "" + +#: src\br24ControlsDialog.cpp:1165 src\br24ControlsDialog.cpp:1175 +msgid " + Alarm" msgstr "" -#: src\br24ControlsDialog.cpp:1291 src\br24radar_pi.cpp:522 +#: src\br24ControlsDialog.cpp:1168 src\br24ControlsDialog.cpp:1178 +msgid " + Arpa" +msgstr "" + +#: src\br24ControlsDialog.cpp:1171 src\br24ControlsDialog.cpp:1181 +msgid " Off" +msgstr "" + +#: src\br24ControlsDialog.cpp:1184 src\br24ControlsDialog.cpp:1187 +msgid "Guard zone" +msgstr "" + +#: src\br24ControlsDialog.cpp:1498 +msgid "Power Status" +msgstr "" + +#: src\br24ControlsDialog.cpp:1509 +msgid "Waking up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1520 src\br24radar_pi.cpp:625 msgid "Standby in" msgstr "" -#: src\br24ControlsDialog.cpp:1296 src\br24radar_pi.cpp:527 +#: src\br24ControlsDialog.cpp:1525 src\br24radar_pi.cpp:630 msgid "Transmit in" msgstr "" -#: src\br24ControlsDialog.cpp:1325 +#: src\br24ControlsDialog.cpp:1557 msgid "Hide both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1327 +#: src\br24ControlsDialog.cpp:1559 msgid "Show other window" msgstr "" -#: src\br24ControlsDialog.cpp:1331 +#: src\br24ControlsDialog.cpp:1563 msgid "Show this window" msgstr "" -#: src\br24ControlsDialog.cpp:1333 +#: src\br24ControlsDialog.cpp:1565 msgid "Show both windows" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Hide window" msgstr "" -#: src\br24ControlsDialog.cpp:1337 +#: src\br24ControlsDialog.cpp:1569 msgid "Show window" msgstr "" -#: src\br24ControlsDialog.cpp:1343 +#: src\br24ControlsDialog.cpp:1575 msgid "Clear EBL/VRM" msgstr "" -#: src\br24ControlsDialog.cpp:1360 +#: src\br24ControlsDialog.cpp:1585 +msgid "Hide AIS/ARPA" +msgstr "" + +#: src\br24ControlsDialog.cpp:1599 msgid "True" msgstr "" -#: src\br24ControlsDialog.cpp:1362 +#: src\br24ControlsDialog.cpp:1601 msgid "Relative" msgstr "" -#: src\br24ControlsDialog.cpp:1372 +#: src\br24ControlsDialog.cpp:1615 src\br24ControlsDialog.cpp:1618 +msgid "Head up" +msgstr "" + +#: src\br24ControlsDialog.cpp:1620 +msgid "(Stabilized)" +msgstr "" + +#: src\br24ControlsDialog.cpp:1623 msgid "North up" msgstr "" -#: src\br24ControlsDialog.cpp:1375 -msgid "Head up" +#: src\br24ControlsDialog.cpp:1626 +msgid "Course up" msgstr "" -#: src\br24ControlsDialog.cpp:1378 -msgid "???" +#: src\br24ControlsDialog.cpp:1932 +msgid "Guard Zone 1 Green" msgstr "" -#: src\br24ControlsDialog.cpp:1663 -msgid "Guard Zone" +#: src\br24ControlsDialog.cpp:1935 +msgid "Guard Zone 2 Blue" msgstr "" -#: src\br24ControlsDialog.h:60 src\br24MessageBox.h:86 src\br24radar_pi.cpp:233 -#: src\br24radar_pi.cpp:774 +#: src\br24ControlsDialog.h:62 src\br24MessageBox.h:86 src\br24radar_pi.cpp:249 msgid "Radar" msgstr "" @@ -439,12 +552,11 @@ msgid "or" msgstr "" -#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:470 +#: src\br24MessageBox.cpp:188 src\br24MessageBox.cpp:472 msgid "Magnetic heading" msgstr "" -#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:477 -#: src\br24radar_pi.cpp:768 +#: src\br24MessageBox.cpp:195 src\br24MessageBox.cpp:479 msgid "Variation" msgstr "" @@ -460,31 +572,31 @@ msgid "&Hide Radar" msgstr "" -#: src\br24MessageBox.cpp:340 +#: src\br24MessageBox.cpp:342 msgid "Radar type" msgstr "" -#: src\br24MessageBox.cpp:344 +#: src\br24MessageBox.cpp:346 msgid "Radar IP" msgstr "" -#: src\br24MessageBox.cpp:364 +#: src\br24MessageBox.cpp:366 msgid "Radar requirements OK:" msgstr "" -#: src\br24MessageBox.cpp:366 +#: src\br24MessageBox.cpp:368 msgid "Radar requires the following" msgstr "" -#: src\br24MessageBox.cpp:448 src\RadarInfo.cpp:913 +#: src\br24MessageBox.cpp:450 src\RadarInfo.cpp:1252 msgid "Emulator" msgstr "" -#: src\br24MessageBox.cpp:456 +#: src\br24MessageBox.cpp:458 msgid "Ethernet card" msgstr "" -#: src\br24MessageBox.cpp:463 +#: src\br24MessageBox.cpp:465 msgid "True heading" msgstr "" @@ -584,123 +696,159 @@ msgid "Strong return color" msgstr "" -#: src\br24OptionsDialog.cpp:179 +#: src\br24OptionsDialog.cpp:170 +msgid "ARPA edge color" +msgstr "" + +#: src\br24OptionsDialog.cpp:178 +msgid "Radar window colors" +msgstr "" + +#: src\br24OptionsDialog.cpp:181 +msgid "Background color" +msgstr "" + +#: src\br24OptionsDialog.cpp:189 +msgid "AIS text color" +msgstr "" + +#: src\br24OptionsDialog.cpp:205 msgid "Options" msgstr "" -#: src\br24OptionsDialog.cpp:183 +#: src\br24OptionsDialog.cpp:209 +msgid "Show ring at extreme range" +msgstr "" + +#: src\br24OptionsDialog.cpp:215 msgid "Show Guard Zone on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:189 +#: src\br24OptionsDialog.cpp:221 msgid "Show Target trails on overlay" msgstr "" -#: src\br24OptionsDialog.cpp:195 +#: src\br24OptionsDialog.cpp:227 msgid "Enable dual radar, 4G only" msgstr "" -#: src\br24OptionsDialog.cpp:207 +#: src\br24OptionsDialog.cpp:239 msgid "Ignore radar heading" msgstr "" -#: src\br24OptionsDialog.cpp:214 +#: src\br24OptionsDialog.cpp:246 msgid "Pass radar heading to OpenCPN" msgstr "" -#: src\br24OptionsDialog.cpp:220 +#: src\br24OptionsDialog.cpp:252 msgid "Enable COG as heading" msgstr "" -#: src\br24OptionsDialog.cpp:228 +#: src\br24OptionsDialog.cpp:260 msgid "Emulator mode" msgstr "" -#: src\br24OptionsDialog.cpp:233 +#: src\br24OptionsDialog.cpp:265 msgid "Reverse mouse wheel zoom direction" msgstr "" -#: src\br24OptionsDialog.cpp:288 +#: src\br24OptionsDialog.cpp:332 msgid "Select Sound File" msgstr "" -#: src\br24OptionsDialog.cpp:289 +#: src\br24OptionsDialog.cpp:333 msgid "WAV files (*.wav)|*.wav|All files (*.*)|*.*" msgstr "" -#: src\br24radar_pi.cpp:233 src\br24radar_pi.cpp:352 +#: src\br24radar_pi.cpp:249 src\br24radar_pi.cpp:382 msgid "Radar A" msgstr "" -#: src\br24radar_pi.cpp:234 +#: src\br24radar_pi.cpp:250 msgid "Radar B" msgstr "" -#: src\br24radar_pi.cpp:242 +#: src\br24radar_pi.cpp:258 msgid "Navico BR24, 3G and 4G RADAR" msgstr "" -#: src\br24radar_pi.cpp:251 +#: src\br24radar_pi.cpp:267 msgid "Show radar" msgstr "" -#: src\br24radar_pi.cpp:252 +#: src\br24radar_pi.cpp:268 msgid "Hide radar" msgstr "" -#: src\br24radar_pi.cpp:253 +#: src\br24radar_pi.cpp:269 msgid "Radar Control..." msgstr "" -#: src\br24radar_pi.cpp:255 src\RadarCanvas.cpp:98 +#: src\br24radar_pi.cpp:270 +msgid "Acquire radar target" +msgstr "" + +#: src\br24radar_pi.cpp:271 +msgid "Delete radar target" +msgstr "" + +#: src\br24radar_pi.cpp:272 +msgid "Delete all radar targets" +msgstr "" + +#: src\br24radar_pi.cpp:275 src\RadarCanvas.cpp:98 msgid "Menu" msgstr "" -#: src\br24radar_pi.cpp:330 +#: src\br24radar_pi.cpp:360 msgid "Navico Radar PlugIn for OpenCPN" msgstr "" -#: src\br24radar_pi.cpp:332 +#: src\br24radar_pi.cpp:362 msgid "Navico Broadband BR24/3G/4G Radar PlugIn for OpenCPN\n" msgstr "" -#: src\br24radar_pi.cpp:540 +#: src\br24radar_pi.cpp:643 msgid "Zone" msgstr "" -#: src\br24radar_pi.cpp:542 +#: src\br24radar_pi.cpp:645 msgid "(Confirmed)" msgstr "" -#: src\br24radar_pi.cpp:574 +#: src\br24radar_pi.cpp:677 msgid " Zone" msgstr "" -#: src\br24radar_pi.cpp:618 +#: src\br24radar_pi.cpp:721 msgid "Next alarm in" msgstr "" -#: src\br24radar_pi.cpp:765 +#: src\br24radar_pi.cpp:950 msgid "COG" msgstr "" -#: src\br24radar_pi.cpp:768 -msgid "HDM" +#: src\br24radar_pi.cpp:954 +msgid "HDT" msgstr "" -#: src\br24radar_pi.cpp:771 -msgid "HDT" +#: src\br24radar_pi.cpp:957 src\br24radar_pi.cpp:977 src\RadarPanel.cpp:38 +msgid "RADAR" +msgstr "" + +#: src\br24radar_pi.cpp:974 +msgid "HDM" msgstr "" -#: src\br24radar_pi.cpp:1131 +#: src\br24radar_pi.cpp:1375 msgid "GPS" msgstr "" -#: src\br24radar_pi.cpp:1217 +#: src\br24radar_pi.cpp:1496 msgid "WMM" msgstr "" -#: src\br24radar_pi.cpp:1336 +#: src\br24radar_pi.cpp:1729 msgid "NMEA" msgstr "" @@ -716,6 +864,10 @@ msgid "Alarm" msgstr "" +#: src\RadarCanvas.cpp:471 +msgid "AIS Target Name" +msgstr "" + #: src\RadarDraw.cpp:54 msgid "Vertex Array" msgstr "" @@ -724,35 +876,39 @@ msgid "Shader" msgstr "" -#: src\RadarInfo.cpp:908 -msgid "North Up" +#: src\RadarInfo.cpp:1236 src\RadarInfo.cpp:1239 +msgid "Head Up" msgstr "" -#: src\RadarInfo.cpp:910 -msgid "Head Up" +#: src\RadarInfo.cpp:1239 +msgid "Stabilized" msgstr "" -#: src\RadarInfo.cpp:1021 +#: src\RadarInfo.cpp:1242 +msgid "Course Up" +msgstr "" + +#: src\RadarInfo.cpp:1245 +msgid "North Up" +msgstr "" + +#: src\RadarInfo.cpp:1379 msgid "No radar" msgstr "" -#: src\RadarInfo.cpp:1024 +#: src\RadarInfo.cpp:1382 msgid "Radar is in Standby" msgstr "" -#: src\RadarInfo.cpp:1027 +#: src\RadarInfo.cpp:1385 msgid "Radar is waking up" msgstr "" -#: src\RadarInfo.cpp:1033 +#: src\RadarInfo.cpp:1391 msgid "Radar not transmitting" msgstr "" -#: src\RadarPanel.cpp:38 -msgid "RADAR" -msgstr "" - -#: src\RadarPanel.cpp:61 src\RadarPanel.cpp:156 +#: src\RadarPanel.cpp:156 msgid "OpenGL mode required" msgstr "" diff -Nru opencpn-plugin-br24radar-2.1.0/README.md opencpn-plugin-br24radar-3.0.1/README.md --- opencpn-plugin-br24radar-2.1.0/README.md 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/README.md 2017-09-24 10:58:54.000000000 +0000 @@ -2,14 +2,16 @@ BR24radar_pi - Navico Broadband Radar Plugin for OpenCPN ======================================================== -WORK IN PROGRESS ----------------- -This is the 'radarwindow' branch. I'm reworking most of the plugin to be more modular. - Downloads --------- -The latest binary version for Microsoft Windows, Linux x86 and x86_64 and OS X can be downloaded at http://opencpn-navico-radar-plugin.github.io . +The latest binary version for Microsoft Windows and OS X can be downloaded at https://github.com/canboat/BR24radar_pi/releases . +Ubuntu/Debian can install the standard opencpn PPA and install 'opencpn-plugin-br24radar'. + +Manual +------ + +There is now a manual on this site, see https://github.com/canboat/BR24radar_pi/wiki . Compiling --------- @@ -21,13 +23,13 @@ The following command line snippets show how to build the entire package separately from the OpenCPN source. In order to build multiple platforms you can build in separate `build-${platform}` directories. -###Obtain the source code +### Obtain the source code ``` git clone https://github.com/canboat/BR24radar_pi.git ``` -###Build on Microsoft Windows +### Build on Microsoft Windows ``` mkdir BR24radar_pi/build-win32 @@ -37,14 +39,14 @@ ``` Windows note: You must place opencpn.lib into your build directory to be able to link the plugin DLL. You can get this file from your local OpenCPN build, or alternatively download from http://sourceforge.net/projects/opencpnplugins/files/opencpn_lib/ -###Creating a package on Microsoft Windows +### Creating a package on Microsoft Windows Windows ``` cmake --build . --config release --target package ``` -###Build on Linux +### Build on Linux Example on 64 bit Intel/AMD64 system: @@ -56,13 +58,13 @@ ``` -###Creating a package on Linux +### Creating a package on Linux ``` make package ``` -###Build on Mac OS X: +### Build on Mac OS X: XCode can be downloaded from the App Store. @@ -76,7 +78,7 @@ To target older OS X versions than the one you are running, you need the respective SDKs installed. Official releases target 10.7. The easiest way to achieve that is using https://github.com/devernay/xcodelegacy -####Building wxWidgets +#### Building wxWidgets (do not use wxmac from Homebrew, it is not compatible with OpenCPN) Get wxWidgets 3.0.x source from http://wxwidgets.org Configure, build and install @@ -87,7 +89,7 @@ sudo make install ``` -####Building the plugin +#### Building the plugin Before running cmake, you must set the deployment target to OS X 10.7 to be compatible with the libraries used by core OpenCPN ``` export MACOSX_DEPLOYMENT_TARGET=10.7 @@ -97,7 +99,7 @@ make ``` -####Packaging on OS X +#### Packaging on OS X Get and install the Packages application from http://s.sudre.free.fr/Software/Packages/about.html ``` make create-pkg @@ -114,12 +116,12 @@ The plugin was started by @cowelld, who took @bdbcat's Garmin radar plugin and the reverse engineered data from http://www.roboat.at/technologie/radar/ and created the first working version in 2012. -@canboat started helping Dave. Soon he implemented most of the 4G specific functionality, rewrote the control dialogs, implemented the guard zones and cleaned the code considerably. +@canboat started helping Dave. Soon he implemented most of the 4G specific functionality, refactored the code, rewrote the control dialogs, implemented the guard zones, target trails, PPI windows, EBL/VRM and mouse cursor functionality. @nohal contributed the packaging installers, without which this would still be a set of sources instead of deliverable packages for various platforms. @Hakansv did a lot of testing and contributed the idle timer, and contributed work on the translations. -@douwefokkema implemented the heading on radar functionality, optimised the OpenGL drawing and implemented the refresh rate code. +@douwefokkema also tested a lot and implemented the heading on radar functionality, optimised the OpenGL drawing, implemented the refresh rate code and optimised the target trails code. -@seandepagnier shader support and some optimizations +@seandepagnier shader support and some optimizations. diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24ControlsDialog.cpp opencpn-plugin-br24radar-3.0.1/src/br24ControlsDialog.cpp --- opencpn-plugin-br24radar-2.1.0/src/br24ControlsDialog.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24ControlsDialog.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -29,6 +29,7 @@ */ #include "br24ControlsDialog.h" +#include "RadarMarpa.h" #include "RadarPanel.h" PLUGIN_BEGIN_NAMESPACE @@ -42,7 +43,6 @@ ID_MINUS, ID_MINUS_TEN, ID_AUTO, - ID_MULTISWEEP, ID_TRAILS_MOTION, ID_TRANSPARENCY, @@ -55,10 +55,11 @@ ID_SCAN_SPEED, ID_INSTALLATION, ID_PREFERENCES, - ID_TIMED_IDLE, ID_BEARING_ALIGNMENT, ID_ANTENNA_HEIGHT, + ID_ANTENNA_FORWARD, + ID_ANTENNA_STARBOARD, ID_LOCAL_INTERFERENCE_REJECTION, ID_SIDE_LOBE_SUPPRESSION, ID_MAIN_BANG_SIZE, @@ -69,12 +70,20 @@ ID_RAIN, ID_CLEAR_CURSOR, + ID_ACQUIRE_TARGET, + ID_DELETE_TARGET, + ID_DELETE_ALL_TARGETS, + ID_TARGETS, ID_TARGET_TRAILS, ID_CLEAR_TRAILS, ID_ORIENTATION, - ID_RADAR_STATE, + ID_TRANSMIT, + ID_STANDBY, + ID_TIMED_IDLE, + ID_TIMED_RUN, + ID_SHOW_RADAR, ID_RADAR_OVERLAY, ID_ADJUST, @@ -83,6 +92,7 @@ ID_BEARING, ID_ZONE1, ID_ZONE2, + ID_POWER, ID_CONFIRM_BOGEY, @@ -111,7 +121,6 @@ EVT_BUTTON(ID_MINUS, br24ControlsDialog::OnMinusClick) EVT_BUTTON(ID_MINUS_TEN, br24ControlsDialog::OnMinusTenClick) EVT_BUTTON(ID_AUTO, br24ControlsDialog::OnAutoClick) -EVT_BUTTON(ID_MULTISWEEP, br24ControlsDialog::OnMultiSweepClick) EVT_BUTTON(ID_TRAILS_MOTION, br24ControlsDialog::OnTrailsMotionClick) EVT_BUTTON(ID_TRANSPARENCY, br24ControlsDialog::OnRadarControlButtonClick) @@ -124,15 +133,16 @@ EVT_BUTTON(ID_SCAN_SPEED, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_INSTALLATION, br24ControlsDialog::OnInstallationButtonClick) EVT_BUTTON(ID_PREFERENCES, br24ControlsDialog::OnPreferencesButtonClick) -EVT_BUTTON(ID_TIMED_IDLE, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_BEARING_ALIGNMENT, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_ANTENNA_HEIGHT, br24ControlsDialog::OnRadarControlButtonClick) +EVT_BUTTON(ID_ANTENNA_FORWARD, br24ControlsDialog::OnRadarControlButtonClick) +EVT_BUTTON(ID_ANTENNA_STARBOARD, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_LOCAL_INTERFERENCE_REJECTION, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_SIDE_LOBE_SUPPRESSION, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_MAIN_BANG_SIZE, br24ControlsDialog::OnRadarControlButtonClick) -EVT_BUTTON(ID_RADAR_STATE, br24ControlsDialog::OnRadarStateButtonClick) +EVT_BUTTON(ID_POWER, br24ControlsDialog::OnPowerButtonClick) EVT_BUTTON(ID_SHOW_RADAR, br24ControlsDialog::OnRadarShowButtonClick) EVT_BUTTON(ID_RADAR_OVERLAY, br24ControlsDialog::OnRadarOverlayButtonClick) EVT_BUTTON(ID_RANGE, br24ControlsDialog::OnRadarControlButtonClick) @@ -140,6 +150,7 @@ EVT_BUTTON(ID_SEA, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_RAIN, br24ControlsDialog::OnRadarControlButtonClick) +EVT_BUTTON(ID_TARGETS, br24ControlsDialog::OnTargetsButtonClick) EVT_BUTTON(ID_TARGET_TRAILS, br24ControlsDialog::OnRadarControlButtonClick) EVT_BUTTON(ID_CLEAR_TRAILS, br24ControlsDialog::OnClearTrailsButtonClick) EVT_BUTTON(ID_ORIENTATION, br24ControlsDialog::OnOrientationButtonClick) @@ -156,6 +167,14 @@ EVT_BUTTON(ID_BEARING_SET, br24ControlsDialog::OnBearingSetButtonClick) EVT_BUTTON(ID_CLEAR_CURSOR, br24ControlsDialog::OnClearCursorButtonClick) +EVT_BUTTON(ID_ACQUIRE_TARGET, br24ControlsDialog::OnAcquireTargetButtonClick) +EVT_BUTTON(ID_DELETE_TARGET, br24ControlsDialog::OnDeleteTargetButtonClick) +EVT_BUTTON(ID_DELETE_ALL_TARGETS, br24ControlsDialog::OnDeleteAllTargetsButtonClick) + +EVT_BUTTON(ID_TRANSMIT, br24ControlsDialog::OnTransmitButtonClick) +EVT_BUTTON(ID_STANDBY, br24ControlsDialog::OnStandbyButtonClick) +EVT_BUTTON(ID_TIMED_IDLE, br24ControlsDialog::OnRadarControlButtonClick) +EVT_BUTTON(ID_TIMED_RUN, br24ControlsDialog::OnRadarControlButtonClick) EVT_MOVE(br24ControlsDialog::OnMove) EVT_CLOSE(br24ControlsDialog::OnClose) @@ -163,7 +182,53 @@ END_EVENT_TABLE() static wxSize g_buttonSize; -static wxSize g_smallButtonSize; + +class br24RadarButton : public wxButton { + public: + br24RadarButton(){ + + }; + + br24RadarButton(br24ControlsDialog* parent, wxWindowID id, const wxString& label) { + Create(parent, id, label, wxDefaultPosition, g_buttonSize, 0, wxDefaultValidator, label); + + m_parent = parent; + m_pi = m_parent->m_pi; + SetFont(m_parent->m_pi->m_font); + SetLabel(label); // Use the \n on Mac to enforce double height button + } + + br24ControlsDialog* m_parent; + br24radar_pi* m_pi; + + void SetLabel(const wxString& label) { + wxString newLabel; + +#ifdef __WXOSX__ + newLabel << wxT("\n"); +#endif + newLabel << label; +#ifdef __WXOSX__ + newLabel << wxT("\n"); +#endif + wxButton::SetLabel(newLabel); + } +}; + +class DynamicStaticText : public wxStaticText { + public: + DynamicStaticText() {} + + DynamicStaticText(wxWindow* parent, wxWindowID id, const wxString& label, const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxStaticTextNameStr) { + Create(parent, id, label, pos, size, style, name); + } + + void SetLabel(const wxString& label) { + wxStaticText::SetLabel(label); + SetSize(GetTextExtent(label)); + } +}; class br24RadarControlButton : public wxButton { public: @@ -172,7 +237,7 @@ }; br24RadarControlButton(br24ControlsDialog* parent, wxWindowID id, const wxString& label, ControlType ct, bool newHasAuto, - int newValue) { + int newValue, const wxString& newUnit = wxT(""), const wxString& newComment = wxT("")) { Create(parent, id, label + wxT("\n"), wxDefaultPosition, g_buttonSize, 0, wxDefaultValidator, label); m_parent = parent; @@ -183,13 +248,16 @@ if (ct == CT_GAIN) { value = 50; } - hasAuto = newHasAuto; - isAuto = false; + autoValue = 0; + autoValues = newHasAuto ? 1 : 0; + autoNames = 0; firstLine = label; + unit = newUnit; + comment = newComment; names = 0; controlType = ct; - if (hasAuto) { - SetLocalAuto(); + if (autoValues > 0) { + SetLocalAuto(AUTO_RANGE - 1); // Not sent to radar, radar will update state } else { SetLocalValue(newValue); } @@ -198,10 +266,13 @@ } virtual void AdjustValue(int adjustment); - virtual void SetAuto(); + virtual void SetAuto(int newValue); virtual void SetLocalValue(int newValue); - virtual void SetLocalAuto(); + virtual void SetLocalAuto(int newValue); const wxString* names; + const wxString* autoNames; + wxString unit; + wxString comment; wxString firstLine; @@ -209,11 +280,11 @@ br24radar_pi* m_pi; int value; + int autoValue; // 0 = not auto mode, 1 = normal auto value, 2... etc special, auto_names is set + int autoValues; // 0 = none, 1 = normal auto value, 2.. etc special, auto_names is set int minValue; int maxValue; - bool hasAuto; - bool isAuto; ControlType controlType; }; @@ -228,8 +299,10 @@ minValue = 0; maxValue = 0; value = -1; // means: never set - hasAuto = true; - isAuto = false; + autoValue = 0; + autoValues = 1; + autoNames = 0; + unit = wxT(""); firstLine = label; names = 0; controlType = CT_RANGE; @@ -238,7 +311,7 @@ } virtual void AdjustValue(int adjustment); - virtual void SetAuto(); + virtual void SetAuto(int newValue); void SetRangeLabel(); private: @@ -252,12 +325,16 @@ wxString target_expansion_names[2]; wxString scan_speed_names[2]; wxString timed_idle_times[8]; -wxString guard_zone_names[3]; +wxString timed_run_times[3]; +wxString guard_zone_names[2]; wxString target_trail_names[TRAIL_ARRAY_SIZE]; +wxString sea_clutter_names[2]; void br24RadarControlButton::AdjustValue(int adjustment) { int newValue = value + adjustment; + autoValue = 0; // Disable Auto + if (newValue < minValue) { newValue = minValue; } else if (newValue > maxValue) { @@ -265,13 +342,21 @@ } if (newValue != value) { LOG_VERBOSE(wxT("%s Adjusting %s by %d from %d to %d"), m_parent->m_log_name.c_str(), GetName(), adjustment, value, newValue); - if (m_pi->SetControlValue(m_parent->m_ri->m_radar, controlType, newValue)) { + if (m_pi->SetControlValue(m_parent->m_ri->m_radar, controlType, newValue, 0)) { SetLocalValue(newValue); } } } void br24RadarControlButton::SetLocalValue(int newValue) { // sets value in the button without sending new value to the radar + if (newValue <= AUTO_RANGE) { + SetLocalAuto(AUTO_RANGE - newValue); + return; + } + if (newValue != value) { + LOG_VERBOSE(wxT("%s Set %s value %d -> %d, range=%d..%d"), m_parent->m_log_name.c_str(), ControlTypeNames[controlType], value, + newValue, minValue, maxValue); + } if (newValue < minValue) { value = minValue; } else if (newValue > maxValue) { @@ -279,7 +364,7 @@ } else { value = newValue; } - isAuto = false; + autoValue = 0; wxString label; @@ -288,21 +373,35 @@ } else { label.Printf(wxT("%s\n%d"), firstLine.c_str(), value); } + if (unit.length() > 0) { + label << wxT(" ") << unit; + } this->SetLabel(label); } -void br24RadarControlButton::SetAuto() { - SetLocalAuto(); - m_parent->m_ri->SetControlValue(controlType, -1); +void br24RadarControlButton::SetAuto(int newAutoValue) { + SetLocalAuto(newAutoValue); + m_parent->m_ri->SetControlValue(controlType, value, newAutoValue); } -void br24RadarControlButton::SetLocalAuto() { // sets auto in the button without sending new value - // to the radar +void br24RadarControlButton::SetLocalAuto(int newValue) { // sets auto in the button without sending new value + // to the radar wxString label; - isAuto = true; - label << firstLine << wxT("\n") << _("Auto"); + autoValue = newValue; + LOG_VERBOSE(wxT("%s Set %s to auto value %d, max=%d"), m_parent->m_log_name.c_str(), ControlTypeNames[controlType], autoValue, + autoValues); + if (autoValue == 0) { + SetLocalValue(value); // To update label to old non-auto value + return; + } + label << firstLine << wxT("\n"); + if (autoNames && autoValue > 0 && autoValue <= autoValues) { + label << autoNames[autoValue - 1]; + } else { + label << _("Auto"); + } this->SetLabel(label); } @@ -313,12 +412,12 @@ void br24RadarRangeControlButton::AdjustValue(int adjustment) { LOG_VERBOSE(wxT("%s Adjusting %s by %d"), m_parent->m_log_name.c_str(), GetName(), adjustment); - isAuto = false; + autoValue = 0; m_parent->m_ri->AdjustRange(adjustment); // send new value to the radar } -void br24RadarRangeControlButton::SetAuto() { - isAuto = true; +void br24RadarRangeControlButton::SetAuto(int newValue) { + autoValue = newValue; m_parent->m_ri->m_auto_range_mode = true; } @@ -406,6 +505,8 @@ label << _("Installation") << wxT("\n"); label << _("Bearing alignment") << wxT("\n"); label << _("Antenna height") << wxT("\n"); + label << _("Antenna forward of GPS") << wxT("\n"); + label << _("Antenna starboard of GPS") << wxT("\n"); label << _("Local interference rej.") << wxT("\n"); label << _("Side lobe suppression") << wxT("\n"); label << _("Main bang size") << wxT("\n"); @@ -416,7 +517,6 @@ label << _("Outer range") << wxT("\n"); label << _("Start bearing") << wxT("\n"); label << _("End bearing") << wxT("\n"); - label << _("Multi sweep filter") << wxT("\n"); label << _("Range") << wxT("\n"); label << _("Gain") << wxT("\n"); label << _("Sea clutter") << wxT("\n"); @@ -424,7 +524,7 @@ label << _("Clear cursor") << wxT("\n"); label << _("Place EBL/VRM") << wxT("\n"); label << _("Target trails") << wxT("\n"); - label << _("True/Relative trails") << wxT("\n"); + label << _("Off/Relative/True trails") << wxT("\n"); label << _("Clear trails") << wxT("\n"); label << _("Orientation") << wxT("\n"); label << _("Refresh rate") << wxT("\n"); @@ -474,12 +574,8 @@ #define BUTTON_HEIGTH_FUDGE 1 + 2 * BUTTON_BORDER #endif - g_smallButtonSize = wxSize(width, testButtonText->GetBestSize().y + BUTTON_BORDER); g_buttonSize = wxSize(width, testButton2Text->GetBestSize().y * BUTTON_HEIGTH_FUDGE); - // g_smallButtonSize = g_buttonSize; nicer ?? - - LOG_DIALOG(wxT("%s Dynamic button width = %d height = %d, %d"), m_log_name.c_str(), g_buttonSize.x, g_buttonSize.y, - g_smallButtonSize.y); + LOG_DIALOG(wxT("%s Dynamic button width = %d height = %d"), m_log_name.c_str(), g_buttonSize.x, g_buttonSize.y); m_top_sizer->Hide(testBox); m_top_sizer->Remove(testBox); @@ -496,41 +592,40 @@ m_top_sizer->Add(m_edit_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The <Add(back_button, 0, wxALL, BORDER); - back_button->SetFont(m_pi->m_font); // The +10 button - m_plus_ten_button = new wxButton(this, ID_PLUS_TEN, _("+10"), wxDefaultPosition, g_buttonSize, 0); + m_plus_ten_button = new br24RadarButton(this, ID_PLUS_TEN, _("+10")); m_edit_sizer->Add(m_plus_ten_button, 0, wxALL, BORDER); - m_plus_ten_button->SetFont(m_pi->m_font); // The + button - m_plus_button = new wxButton(this, ID_PLUS, _("+"), wxDefaultPosition, g_buttonSize, 0); + m_plus_button = new br24RadarButton(this, ID_PLUS, _("+")); m_edit_sizer->Add(m_plus_button, 0, wxALL, BORDER); - m_plus_button->SetFont(m_pi->m_font); - // The VALUE button - wxSize valueSize = wxSize(g_buttonSize.x, g_buttonSize.y + 20); - m_value_text = new wxStaticText(this, ID_VALUE, _("Value"), wxDefaultPosition, valueSize, wxALIGN_CENTRE | wxST_NO_AUTORESIZE); + // The VALUE text + wxSize valueSize = wxSize(g_buttonSize.x, g_buttonSize.y); + m_value_text = new wxStaticText(this, ID_VALUE, _("Value"), wxDefaultPosition, valueSize, wxALIGN_CENTRE_HORIZONTAL); m_edit_sizer->Add(m_value_text, 0, wxALL, BORDER); m_value_text->SetFont(m_pi->m_fat_font); m_value_text->SetBackgroundColour(*wxLIGHT_GREY); + // The COMMENT text + m_comment_text = new DynamicStaticText(this, ID_VALUE, wxT(""), wxDefaultPosition, g_buttonSize, wxALIGN_CENTRE_HORIZONTAL); + m_edit_sizer->Add(m_comment_text, 0, wxALL, BORDER); + m_comment_text->SetBackgroundColour(*wxLIGHT_GREY); + // The - button - m_minus_button = new wxButton(this, ID_MINUS, _("-"), wxDefaultPosition, g_buttonSize, 0); + m_minus_button = new br24RadarButton(this, ID_MINUS, _("-")); m_edit_sizer->Add(m_minus_button, 0, wxALL, BORDER); - m_minus_button->SetFont(m_pi->m_font); // The -10 button - m_minus_ten_button = new wxButton(this, ID_MINUS_TEN, _("-10"), wxDefaultPosition, g_buttonSize, 0); + m_minus_ten_button = new br24RadarButton(this, ID_MINUS_TEN, _("-10")); m_edit_sizer->Add(m_minus_ten_button, 0, wxALL, BORDER); - m_minus_ten_button->SetFont(m_pi->m_font); // The Auto button - m_auto_button = new wxButton(this, ID_AUTO, _("Auto"), wxDefaultPosition, g_buttonSize, 0); + m_auto_button = new br24RadarButton(this, ID_AUTO, _("Auto")); m_edit_sizer->Add(m_auto_button, 0, wxALL, BORDER); - m_auto_button->SetFont(m_pi->m_font); m_top_sizer->Hide(m_edit_sizer); @@ -541,22 +636,21 @@ m_top_sizer->Add(m_advanced_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The Back button - wxButton* bAdvancedBack = new wxButton(this, ID_BACK, backButtonStr, wxDefaultPosition, g_buttonSize, 0); + br24RadarButton* bAdvancedBack = new br24RadarButton(this, ID_BACK, backButtonStr); m_advanced_sizer->Add(bAdvancedBack, 0, wxALL, BORDER); - bAdvancedBack->SetFont(m_pi->m_font); // The NOISE REJECTION button noise_rejection_names[0] = _("Off"); noise_rejection_names[1] = _("Low"); noise_rejection_names[2] = _("High"); - m_noise_rejection_button = new br24RadarControlButton(this, ID_NOISE_REJECTION, _("Noise rejection"), CT_NOISE_REJECTION, false, - m_ri->m_noise_rejection.button); + m_noise_rejection_button = + new br24RadarControlButton(this, ID_NOISE_REJECTION, _("Noise rejection"), CT_NOISE_REJECTION, false, 0); m_advanced_sizer->Add(m_noise_rejection_button, 0, wxALL, BORDER); m_noise_rejection_button->minValue = 0; m_noise_rejection_button->maxValue = ARRAY_SIZE(noise_rejection_names) - 1; m_noise_rejection_button->names = noise_rejection_names; - m_noise_rejection_button->SetLocalValue(m_ri->m_noise_rejection.button); // redraw after adding names + m_noise_rejection_button->SetLocalValue(m_ri->m_noise_rejection.GetButton()); // redraw after adding names m_advanced_4G_sizer = new wxBoxSizer(wxVERTICAL); m_advanced_sizer->Add(m_advanced_4G_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 0); @@ -564,13 +658,13 @@ // The TARGET EXPANSION button target_expansion_names[0] = _("Off"); target_expansion_names[1] = _("On"); - m_target_expansion_button = new br24RadarControlButton(this, ID_TARGET_EXPANSION, _("Target expansion"), CT_TARGET_EXPANSION, - false, m_ri->m_target_expansion.button); + m_target_expansion_button = + new br24RadarControlButton(this, ID_TARGET_EXPANSION, _("Target expansion"), CT_TARGET_EXPANSION, false, 0); m_advanced_sizer->Add(m_target_expansion_button, 0, wxALL, BORDER); m_target_expansion_button->minValue = 0; m_target_expansion_button->maxValue = ARRAY_SIZE(target_expansion_names) - 1; m_target_expansion_button->names = target_expansion_names; - m_target_expansion_button->SetLocalValue(m_ri->m_target_expansion.button); // redraw after adding names + m_target_expansion_button->SetLocalValue(m_ri->m_target_expansion.GetButton()); // redraw after adding names // The REJECTION button @@ -580,13 +674,12 @@ interference_rejection_names[3] = _("High"); m_interference_rejection_button = - new br24RadarControlButton(this, ID_INTERFERENCE_REJECTION, _("Interference rejection"), CT_INTERFERENCE_REJECTION, false, - m_ri->m_interference_rejection.button); + new br24RadarControlButton(this, ID_INTERFERENCE_REJECTION, _("Interference rejection"), CT_INTERFERENCE_REJECTION, false, 0); m_advanced_sizer->Add(m_interference_rejection_button, 0, wxALL, BORDER); m_interference_rejection_button->minValue = 0; m_interference_rejection_button->maxValue = ARRAY_SIZE(interference_rejection_names) - 1; m_interference_rejection_button->names = interference_rejection_names; - m_interference_rejection_button->SetLocalValue(m_ri->m_interference_rejection.button); // redraw after adding names + m_interference_rejection_button->SetLocalValue(m_ri->m_interference_rejection.GetButton()); // redraw after adding names // The TARGET SEPARATION button @@ -595,46 +688,42 @@ target_separation_names[2] = _("Medium"); target_separation_names[3] = _("High"); - m_target_separation_button = new br24RadarControlButton(this, ID_TARGET_SEPARATION, _("Target separation"), CT_TARGET_SEPARATION, - false, m_ri->m_target_separation.button); + m_target_separation_button = + new br24RadarControlButton(this, ID_TARGET_SEPARATION, _("Target separation"), CT_TARGET_SEPARATION, false, 0); m_advanced_4G_sizer->Add(m_target_separation_button, 0, wxALL, BORDER); m_target_separation_button->minValue = 0; m_target_separation_button->maxValue = ARRAY_SIZE(target_separation_names) - 1; m_target_separation_button->names = target_separation_names; - m_target_separation_button->SetLocalValue(m_ri->m_target_separation.button); // redraw after adding names + m_target_separation_button->SetLocalValue(m_ri->m_target_separation.GetButton()); // redraw after adding names // The SCAN SPEED button scan_speed_names[0] = _("Normal"); scan_speed_names[1] = _("Fast"); - m_scan_speed_button = - new br24RadarControlButton(this, ID_SCAN_SPEED, _("Scan speed"), CT_SCAN_SPEED, false, m_ri->m_scan_speed.button); + m_scan_speed_button = new br24RadarControlButton(this, ID_SCAN_SPEED, _("Scan speed"), CT_SCAN_SPEED, false, 0); m_advanced_sizer->Add(m_scan_speed_button, 0, wxALL, BORDER); m_scan_speed_button->minValue = 0; m_scan_speed_button->maxValue = ARRAY_SIZE(scan_speed_names) - 1; m_scan_speed_button->names = scan_speed_names; - m_scan_speed_button->SetLocalValue(m_ri->m_scan_speed.button); // redraw after adding names + m_scan_speed_button->SetLocalValue(m_ri->m_scan_speed.GetButton()); // redraw after adding names // The TARGET BOOST button target_boost_names[0] = _("Off"); target_boost_names[1] = _("Low"); target_boost_names[2] = _("High"); - m_target_boost_button = - new br24RadarControlButton(this, ID_TARGET_BOOST, _("Target boost"), CT_TARGET_BOOST, false, m_ri->m_target_boost.button); + m_target_boost_button = new br24RadarControlButton(this, ID_TARGET_BOOST, _("Target boost"), CT_TARGET_BOOST, false, 0); m_advanced_sizer->Add(m_target_boost_button, 0, wxALL, BORDER); m_target_boost_button->minValue = 0; m_target_boost_button->maxValue = ARRAY_SIZE(target_boost_names) - 1; m_target_boost_button->names = target_boost_names; - m_target_boost_button->SetLocalValue(m_ri->m_target_boost.button); // redraw after adding names + m_target_boost_button->SetLocalValue(m_ri->m_target_boost.GetButton()); // redraw after adding names // The INSTALLATION button - wxButton* bInstallation = new wxButton(this, ID_INSTALLATION, _("Installation"), wxDefaultPosition, g_smallButtonSize, 0); + br24RadarButton* bInstallation = new br24RadarButton(this, ID_INSTALLATION, _("Installation")); m_advanced_sizer->Add(bInstallation, 0, wxALL, BORDER); - bInstallation->SetFont(m_pi->m_font); // The PREFERENCES button - wxButton* bPreferences = new wxButton(this, ID_PREFERENCES, _("Preferences"), wxDefaultPosition, g_smallButtonSize, 0); + br24RadarButton* bPreferences = new br24RadarButton(this, ID_PREFERENCES, _("Preferences")); m_advanced_sizer->Add(bPreferences, 0, wxALL, BORDER); - bPreferences->SetFont(m_pi->m_font); m_top_sizer->Hide(m_advanced_sizer); @@ -645,43 +734,57 @@ m_top_sizer->Add(m_installation_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The Back button - wxButton* bInstallationBack = new wxButton(this, ID_BACK, backButtonStr, wxDefaultPosition, g_buttonSize, 0); + br24RadarButton* bInstallationBack = new br24RadarButton(this, ID_BACK, backButtonStr); m_installation_sizer->Add(bInstallationBack, 0, wxALL, BORDER); - bInstallationBack->SetFont(m_pi->m_font); // The BEARING ALIGNMENT button - m_bearing_alignment_button = new br24RadarControlButton(this, ID_BEARING_ALIGNMENT, _("Bearing alignment"), CT_BEARING_ALIGNMENT, - false, m_ri->m_bearing_alignment.button); + m_bearing_alignment_button = + new br24RadarControlButton(this, ID_BEARING_ALIGNMENT, _("Bearing alignment"), CT_BEARING_ALIGNMENT, false, + m_ri->m_bearing_alignment.GetButton(), _("degrees"), _("relative to bow")); m_installation_sizer->Add(m_bearing_alignment_button, 0, wxALL, BORDER); - m_bearing_alignment_button->SetFont(m_pi->m_font); // this bearing alignment work opposite to the one defined in the pi! m_bearing_alignment_button->minValue = -179; m_bearing_alignment_button->maxValue = 180; // The ANTENNA HEIGHT button m_antenna_height_button = new br24RadarControlButton(this, ID_ANTENNA_HEIGHT, _("Antenna height"), CT_ANTENNA_HEIGHT, false, - m_ri->m_antenna_height.button); + m_ri->m_antenna_height.GetButton(), _("m"), _("above sealevel")); m_installation_sizer->Add(m_antenna_height_button, 0, wxALL, BORDER); m_antenna_height_button->minValue = 0; m_antenna_height_button->maxValue = 30; + // The ANTENNA FORWARD button + m_antenna_forward_button = new br24RadarControlButton(this, ID_ANTENNA_FORWARD, _("Antenna forward"), CT_ANTENNA_FORWARD, false, + m_pi->m_settings.antenna_forward, _("m"), + _("relative to GPS") + wxT("\n") + _("negative = behind")); + m_installation_sizer->Add(m_antenna_forward_button, 0, wxALL, BORDER); + m_antenna_forward_button->minValue = -200; + m_antenna_forward_button->maxValue = 200; + + // The ANTENNA STARBOARD button + m_antenna_starboard_button = new br24RadarControlButton(this, ID_ANTENNA_STARBOARD, _("Antenna starboard"), CT_ANTENNA_STARBOARD, + false, m_pi->m_settings.antenna_starboard, _("m"), + _("relative to GPS") + wxT("\n") + _("negative = port")); + m_installation_sizer->Add(m_antenna_starboard_button, 0, wxALL, BORDER); + m_antenna_starboard_button->minValue = -50; + m_antenna_starboard_button->maxValue = 50; + // The LOCAL INTERFERENCE REJECTION button - m_local_interference_rejection_button = - new br24RadarControlButton(this, ID_LOCAL_INTERFERENCE_REJECTION, _("Local interference rej."), - CT_LOCAL_INTERFERENCE_REJECTION, false, m_ri->m_local_interference_rejection.button); + m_local_interference_rejection_button = new br24RadarControlButton( + this, ID_LOCAL_INTERFERENCE_REJECTION, _("Local interference rej."), CT_LOCAL_INTERFERENCE_REJECTION, false, 0); m_installation_sizer->Add(m_local_interference_rejection_button, 0, wxALL, BORDER); m_local_interference_rejection_button->minValue = 0; m_local_interference_rejection_button->maxValue = ARRAY_SIZE(target_separation_names) - 1; // off, low, medium, high, same as target separation m_local_interference_rejection_button->names = target_separation_names; - m_local_interference_rejection_button->SetLocalValue(m_ri->m_local_interference_rejection.button); + m_local_interference_rejection_button->SetLocalValue(m_ri->m_local_interference_rejection.GetButton()); // The SIDE LOBE SUPPRESSION button m_side_lobe_suppression_button = new br24RadarControlButton(this, ID_SIDE_LOBE_SUPPRESSION, _("Side lobe suppression"), - CT_SIDE_LOBE_SUPPRESSION, true, m_ri->m_side_lobe_suppression.button); + CT_SIDE_LOBE_SUPPRESSION, true, 0, wxT("%")); m_installation_sizer->Add(m_side_lobe_suppression_button, 0, wxALL, BORDER); m_side_lobe_suppression_button->minValue = 0; m_side_lobe_suppression_button->maxValue = 100; - m_side_lobe_suppression_button->SetLocalValue(m_ri->m_side_lobe_suppression.button); // redraw after adding names + m_side_lobe_suppression_button->SetLocalValue(m_ri->m_side_lobe_suppression.GetButton()); // redraw after adding names // The MAIN BANG SIZE button m_main_bang_size_button = new br24RadarControlButton(this, ID_MAIN_BANG_SIZE, _("Main bang size"), CT_MAIN_BANG_SIZE, false, @@ -698,9 +801,8 @@ m_top_sizer->Add(m_guard_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The <Add(guard_back_button, 0, wxALL, BORDER); - guard_back_button->SetFont(m_pi->m_font); m_guard_zone_text = new wxStaticText(this, wxID_ANY, _("Guard zones")); m_guard_sizer->Add(m_guard_zone_text, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5); @@ -708,9 +810,10 @@ wxStaticText* type_Text = new wxStaticText(this, wxID_ANY, _("Zone type"), wxDefaultPosition, wxDefaultSize, 0); m_guard_sizer->Add(type_Text, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); - guard_zone_names[0] = _("Off"); - guard_zone_names[1] = _("Arc"); - guard_zone_names[2] = _("Circle"); + /*guard_zone_names[0] = _("Off");*/ + guard_zone_names[0] = _("Arc"); + guard_zone_names[1] = _("Circle"); + m_guard_zone_type = new wxRadioBox(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, ARRAY_SIZE(guard_zone_names), guard_zone_names, 1, wxRA_SPECIFY_COLS); m_guard_sizer->Add(m_guard_zone_type, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); @@ -748,11 +851,15 @@ m_guard_sizer->Add(m_end_bearing, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); m_end_bearing->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(br24ControlsDialog::OnEnd_Bearing_Value), NULL, this); - // added check box to control multi swep filtering - m_filter = new wxCheckBox(this, wxID_ANY, _("Multi Sweep Filter"), wxDefaultPosition, wxDefaultSize, - wxALIGN_CENTER_HORIZONTAL | wxST_NO_AUTORESIZE); - m_guard_sizer->Add(m_filter, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5); - m_filter->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(br24ControlsDialog::OnFilterClick), NULL, this); + // checkbox for ARPA + m_arpa_box = new wxCheckBox(this, wxID_ANY, _("ARPA On"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_NO_AUTORESIZE); + m_guard_sizer->Add(m_arpa_box, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5); + m_arpa_box->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(br24ControlsDialog::OnARPAClick), NULL, this); + + // checkbox for blob alarm + m_alarm = new wxCheckBox(this, wxID_ANY, _("Alarm On"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_NO_AUTORESIZE); + m_guard_sizer->Add(m_alarm, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5); + m_alarm->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(br24ControlsDialog::OnAlarmClick), NULL, this); m_top_sizer->Hide(m_guard_sizer); @@ -762,55 +869,68 @@ m_top_sizer->Add(m_adjust_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The Back button - wxButton* bAdjustBack = new wxButton(this, ID_BACK, backButtonStr, wxDefaultPosition, g_buttonSize, 0); + br24RadarButton* bAdjustBack = new br24RadarButton(this, ID_BACK, backButtonStr); m_adjust_sizer->Add(bAdjustBack, 0, wxALL, BORDER); - bAdjustBack->SetFont(m_pi->m_font); // The RANGE button m_range_button = new br24RadarRangeControlButton(this, m_ri, ID_RANGE, _("Range")); m_adjust_sizer->Add(m_range_button, 0, wxALL, BORDER); // The GAIN button - m_gain_button = new br24RadarControlButton(this, ID_GAIN, _("Gain"), CT_GAIN, true, m_ri->m_gain.button); + m_gain_button = new br24RadarControlButton(this, ID_GAIN, _("Gain"), CT_GAIN, true, m_ri->m_gain.GetButton()); m_adjust_sizer->Add(m_gain_button, 0, wxALL, BORDER); // The SEA button - m_sea_button = new br24RadarControlButton(this, ID_SEA, _("Sea clutter"), CT_SEA, true, m_ri->m_sea.button); + sea_clutter_names[0] = _("Harbour"); + sea_clutter_names[1] = _("Offshore"); + m_sea_button = new br24RadarControlButton(this, ID_SEA, _("Sea clutter"), CT_SEA, false, 0); + m_sea_button->autoNames = sea_clutter_names; + m_sea_button->autoValues = 2; + m_sea_button->SetLocalValue(m_ri->m_sea.GetButton()); m_adjust_sizer->Add(m_sea_button, 0, wxALL, BORDER); // The RAIN button - m_rain_button = new br24RadarControlButton(this, ID_RAIN, _("Rain clutter"), CT_RAIN, false, m_ri->m_rain.button); + m_rain_button = new br24RadarControlButton(this, ID_RAIN, _("Rain clutter"), CT_RAIN, false, m_ri->m_rain.GetButton()); m_adjust_sizer->Add(m_rain_button, 0, wxALL, BORDER); m_top_sizer->Hide(m_adjust_sizer); - //**************** BEARING BOX ******************// + //**************** CURSOR BOX ******************// - m_bearing_sizer = new wxBoxSizer(wxVERTICAL); - m_top_sizer->Add(m_bearing_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); + m_cursor_sizer = new wxBoxSizer(wxVERTICAL); + m_top_sizer->Add(m_cursor_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The Back button - wxButton* bBearingBack = new wxButton(this, ID_BACK, backButtonStr, wxDefaultPosition, g_buttonSize, 0); - m_bearing_sizer->Add(bBearingBack, 0, wxALL, BORDER); - bBearingBack->SetFont(m_pi->m_font); + br24RadarButton* bCursorBack = new br24RadarButton(this, ID_BACK, backButtonStr); + m_cursor_sizer->Add(bCursorBack, 0, wxALL, BORDER); // The CLEAR CURSOR button - m_clear_cursor = new wxButton(this, ID_CLEAR_CURSOR, _("Clear cursor"), wxDefaultPosition, g_smallButtonSize, 0); - m_bearing_sizer->Add(m_clear_cursor, 0, wxALL, BORDER); - m_clear_cursor->SetFont(m_pi->m_font); + m_clear_cursor = new br24RadarButton(this, ID_CLEAR_CURSOR, _("Clear cursor")); + m_cursor_sizer->Add(m_clear_cursor, 0, wxALL, BORDER); + + // The ACQUIRE TARGET button + m_acquire_target = new br24RadarButton(this, ID_ACQUIRE_TARGET, _("Acquire Target")); + m_cursor_sizer->Add(m_acquire_target, 0, wxALL, BORDER); + + // The DELETE TARGET button + m_delete_target = new br24RadarButton(this, ID_DELETE_TARGET, _("Delete target")); + m_cursor_sizer->Add(m_delete_target, 0, wxALL, BORDER); + + // The DELETE ALL button + m_delete_all = new br24RadarButton(this, ID_DELETE_ALL_TARGETS, _("Delete all targets")); + m_cursor_sizer->Add(m_delete_all, 0, wxALL, BORDER); for (int b = 0; b < BEARING_LINES; b++) { // The BEARING button wxString label = _("Place EBL/VRM"); label << wxString::Format(wxT("%d"), b + 1); - m_bearing_buttons[b] = new wxButton(this, ID_BEARING_SET + b, label, wxDefaultPosition, g_smallButtonSize, 0); - m_bearing_buttons[b]->SetFont(m_pi->m_font); - m_bearing_sizer->Add(m_bearing_buttons[b], 0, wxALL, BORDER); + m_bearing_buttons[b] = new br24RadarButton(this, ID_BEARING_SET + b, label); + m_cursor_sizer->Add(m_bearing_buttons[b], 0, wxALL, BORDER); m_bearing_buttons[b]->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(br24ControlsDialog::OnBearingSetButtonClick), 0, this); } - m_top_sizer->Hide(m_bearing_sizer); + m_top_sizer->Hide(m_cursor_sizer); //**************** VIEW BOX ******************// // These are the controls that the users sees when the View button is selected @@ -819,48 +939,42 @@ m_top_sizer->Add(m_view_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The Back button - wxButton* bMenuBack = new wxButton(this, ID_BACK, backButtonStr, wxDefaultPosition, g_buttonSize, 0); + br24RadarButton* bMenuBack = new br24RadarButton(this, ID_BACK, backButtonStr); m_view_sizer->Add(bMenuBack, 0, wxALL, BORDER); - bMenuBack->SetFont(m_pi->m_font); + + // The Show Targets button + m_targets_button = new br24RadarButton(this, ID_TARGETS, _("Show AIS/ARPA")); + m_view_sizer->Add(m_targets_button, 0, wxALL, BORDER); + + // The Trails Motion button + m_trails_motion_button = new br24RadarButton(this, ID_TRAILS_MOTION, _("Off/Relative/True trails")); + m_view_sizer->Add(m_trails_motion_button, 0, wxALL, BORDER); // The TARGET_TRAIL button - target_trail_names[TRAIL_OFF] = _("Off"); target_trail_names[TRAIL_15SEC] = _("15 sec"); target_trail_names[TRAIL_30SEC] = _("30 sec"); target_trail_names[TRAIL_1MIN] = _("1 min"); target_trail_names[TRAIL_3MIN] = _("3 min"); + target_trail_names[TRAIL_5MIN] = _("5 min"); target_trail_names[TRAIL_10MIN] = _("10 min"); target_trail_names[TRAIL_CONTINUOUS] = _("Continuous"); - m_target_trails_button = - new br24RadarControlButton(this, ID_TARGET_TRAILS, _("Target trails"), CT_TARGET_TRAILS, false, m_ri->m_target_trails.button); + m_target_trails_button = new br24RadarControlButton(this, ID_TARGET_TRAILS, _("Target trails"), CT_TARGET_TRAILS, false, 0); m_view_sizer->Add(m_target_trails_button, 0, wxALL, BORDER); m_target_trails_button->minValue = 0; m_target_trails_button->maxValue = ARRAY_SIZE(target_trail_names) - 1; m_target_trails_button->names = target_trail_names; - m_target_trails_button->SetLocalValue(m_ri->m_target_trails.button); // redraw after adding names - - // The Trails Motion button - m_trails_motion_button = new wxButton(this, ID_TRAILS_MOTION, _("True/Relative trails"), wxDefaultPosition, g_buttonSize, 0); - m_view_sizer->Add(m_trails_motion_button, 0, wxALL, BORDER); - m_trails_motion_button->SetFont(m_pi->m_font); + m_target_trails_button->SetLocalValue(m_ri->m_target_trails.GetButton()); // redraw after adding names + m_target_trails_button->Hide(); // The Clear Trails button - m_clear_trails_button = new wxButton(this, ID_CLEAR_TRAILS, _("Clear trails"), wxDefaultPosition, g_smallButtonSize, 0); + m_clear_trails_button = new br24RadarButton(this, ID_CLEAR_TRAILS, _("Clear trails")); m_view_sizer->Add(m_clear_trails_button, 0, wxALL, BORDER); - m_clear_trails_button->SetFont(m_pi->m_font); - - // The Multi Sweep Filter button - wxString labelSweep; - labelSweep << _("Multi Sweep Filter") << wxT("\n") << (m_ri->m_multi_sweep_filter ? _("On") : _("Off")); - m_multi_sweep_button = new wxButton(this, ID_MULTISWEEP, labelSweep, wxDefaultPosition, g_buttonSize, 0); - m_view_sizer->Add(m_multi_sweep_button, 0, wxALL, BORDER); - m_multi_sweep_button->SetFont(m_pi->m_font); + m_clear_trails_button->Hide(); // The Rotation button - m_orientation_button = new wxButton(this, ID_ORIENTATION, _("Orientation"), wxDefaultPosition, g_buttonSize, 0); + m_orientation_button = new br24RadarButton(this, ID_ORIENTATION, _("Orientation")); m_view_sizer->Add(m_orientation_button, 0, wxALL, BORDER); - m_orientation_button->SetFont(m_pi->m_font); // Updated when we receive data // The REFRESHRATE button @@ -879,6 +993,60 @@ m_top_sizer->Hide(m_view_sizer); + //***************** POWER BOX *************// + + m_power_sizer = new wxBoxSizer(wxVERTICAL); + m_top_sizer->Add(m_power_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); + + // The <Add(power_back_button, 0, wxALL, BORDER); + + m_power_text = new wxStaticText(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, 0); + m_power_sizer->Add(m_power_text, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); + + m_transmit_button = new br24RadarButton(this, ID_TRANSMIT, _("Transmit")); + m_power_sizer->Add(m_transmit_button, 0, wxALL, BORDER); + + m_standby_button = new br24RadarButton(this, ID_STANDBY, _("Standby")); + m_power_sizer->Add(m_standby_button, 0, wxALL, BORDER); + + // The TIMED TRANSMIT button + timed_idle_times[0] = _("Off"); + timed_idle_times[1] = _("5 min"); + timed_idle_times[2] = _("10 min"); + timed_idle_times[3] = _("15 min"); + timed_idle_times[4] = _("20 min"); + timed_idle_times[5] = _("25 min"); + timed_idle_times[6] = _("30 min"); + timed_idle_times[7] = _("35 min"); + + m_timed_idle_button = + new br24RadarControlButton(this, ID_TIMED_IDLE, _("Timed Transmit"), CT_TIMED_IDLE, false, m_pi->m_settings.timed_idle); + m_power_sizer->Add(m_timed_idle_button, 0, wxALL, BORDER); + m_timed_idle_button->minValue = 0; + m_timed_idle_button->maxValue = ARRAY_SIZE(timed_idle_times) - 1; + m_timed_idle_button->names = timed_idle_times; + m_timed_idle_button->SetLocalValue(m_pi->m_settings.timed_idle); + + // The TIMED RUNTIME button + timed_run_times[0] = _("10 s"); + timed_run_times[1] = _("20 s"); + timed_run_times[2] = _("30 s"); + + m_timed_run_button = new br24RadarControlButton(this, ID_TIMED_RUN, _("Runtime"), CT_TIMED_RUN, false, 0); + m_power_sizer->Add(m_timed_run_button, 0, wxALL, BORDER); + m_timed_run_button->minValue = 0; + m_timed_run_button->maxValue = ARRAY_SIZE(timed_run_times) - 1; + m_timed_run_button->names = timed_run_times; + m_timed_run_button->SetLocalValue(m_pi->m_settings.idle_run_time); + + // The INFO button + br24RadarButton* bMessage = new br24RadarButton(this, ID_MESSAGE, _("Info")); + m_power_sizer->Add(bMessage, 0, wxALL, BORDER); + + m_top_sizer->Hide(m_power_sizer); + //**************** CONTROL BOX ******************// // These are the controls that the users sees when the dialog is started @@ -886,80 +1054,50 @@ m_control_sizer = new wxBoxSizer(wxVERTICAL); m_top_sizer->Add(m_control_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); - // The Transmit button - m_radar_state = new wxButton(this, ID_RADAR_STATE, _("Unknown"), wxDefaultPosition, g_buttonSize, 0); - m_control_sizer->Add(m_radar_state, 0, wxALL, BORDER); - m_radar_state->SetFont(m_pi->m_font); - // Updated when we receive data - - // The SHOW / HIDE RADAR button - m_window_button = new wxButton(this, ID_SHOW_RADAR, wxT(""), wxDefaultPosition, g_smallButtonSize, 0); - m_control_sizer->Add(m_window_button, 0, wxALL, BORDER); - m_window_button->SetFont(m_pi->m_font); - - // The RADAR ONLY / OVERLAY button - wxString overlay = _("Overlay"); - m_overlay_button = new wxButton(this, ID_RADAR_OVERLAY, overlay, wxDefaultPosition, g_buttonSize, 0); - m_control_sizer->Add(m_overlay_button, 0, wxALL, BORDER); - m_overlay_button->SetFont(m_pi->m_font); - //***************** TRANSMIT SIZER, items hidden when not transmitting ****************// m_transmit_sizer = new wxBoxSizer(wxVERTICAL); m_control_sizer->Add(m_transmit_sizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, BORDER); // The ADJUST button - m_adjust_button = new wxButton(this, ID_ADJUST, _("Adjust"), wxDefaultPosition, g_smallButtonSize, 0); + m_adjust_button = new br24RadarButton(this, ID_ADJUST, _("Adjust")); m_transmit_sizer->Add(m_adjust_button, 0, wxALL, BORDER); - m_adjust_button->SetFont(m_pi->m_font); // The ADVANCED button - wxButton* bAdvanced = new wxButton(this, ID_ADVANCED, _("Advanced"), wxDefaultPosition, g_smallButtonSize, 0); + br24RadarButton* bAdvanced = new br24RadarButton(this, ID_ADVANCED, _("Advanced")); m_transmit_sizer->Add(bAdvanced, 0, wxALL, BORDER); - bAdvanced->SetFont(m_pi->m_font); // The VIEW menu - wxButton* bView = new wxButton(this, ID_VIEW, _("View"), wxDefaultPosition, g_smallButtonSize, 0); + br24RadarButton* bView = new br24RadarButton(this, ID_VIEW, _("View")); m_transmit_sizer->Add(bView, 0, wxALL, BORDER); - bView->SetFont(m_pi->m_font); // The BEARING button - m_bearing_button = new wxButton(this, ID_BEARING, _("EBL/VRM"), wxDefaultPosition, g_smallButtonSize, 0); + m_bearing_button = new br24RadarButton(this, ID_BEARING, _("Cursor")); m_transmit_sizer->Add(m_bearing_button, 0, wxALL, BORDER); - m_bearing_button->SetFont(m_pi->m_font); // The GUARD ZONE 1 button - m_guard_1_button = new wxButton(this, ID_ZONE1, wxT(""), wxDefaultPosition, g_buttonSize, 0); + m_guard_1_button = new br24RadarButton(this, ID_ZONE1, wxT("")); m_transmit_sizer->Add(m_guard_1_button, 0, wxALL, BORDER); - m_guard_1_button->SetFont(m_pi->m_font); // The GUARD ZONE 2 button - m_guard_2_button = new wxButton(this, ID_ZONE2, wxT(""), wxDefaultPosition, g_buttonSize, 0); + m_guard_2_button = new br24RadarButton(this, ID_ZONE2, wxT("")); m_transmit_sizer->Add(m_guard_2_button, 0, wxALL, BORDER); - m_guard_2_button->SetFont(m_pi->m_font); - // The TIMED TRANSMIT button - timed_idle_times[0] = _("Off"); - timed_idle_times[1] = _("5 min"); - timed_idle_times[2] = _("10 min"); - timed_idle_times[3] = _("15 min"); - timed_idle_times[4] = _("20 min"); - timed_idle_times[5] = _("25 min"); - timed_idle_times[6] = _("30 min"); - timed_idle_times[7] = _("35 min"); + ///// Following three are shown even when radar is not transmitting - m_timed_idle_button = - new br24RadarControlButton(this, ID_TIMED_IDLE, _("Timed Transmit"), CT_TIMED_IDLE, false, m_pi->m_settings.timed_idle); - m_control_sizer->Add(m_timed_idle_button, 0, wxALL, BORDER); - m_timed_idle_button->minValue = 0; - m_timed_idle_button->maxValue = ARRAY_SIZE(timed_idle_times) - 1; - m_timed_idle_button->names = timed_idle_times; - m_timed_idle_button->SetLocalValue(m_pi->m_settings.timed_idle); + // The SHOW / HIDE RADAR button + m_window_button = new br24RadarButton(this, ID_SHOW_RADAR, wxT("")); + m_control_sizer->Add(m_window_button, 0, wxALL, BORDER); - // The INFO button - wxButton* bMessage = new wxButton(this, ID_MESSAGE, _("Info"), wxDefaultPosition, g_smallButtonSize, 0); - m_control_sizer->Add(bMessage, 0, wxALL, BORDER); - bMessage->SetFont(m_pi->m_font); + // The RADAR ONLY / OVERLAY button + wxString overlay = _("Overlay"); + m_overlay_button = new br24RadarButton(this, ID_RADAR_OVERLAY, overlay); + m_control_sizer->Add(m_overlay_button, 0, wxALL, BORDER); + + // The Transmit button + m_power_button = new br24RadarButton(this, ID_POWER, _("Unknown")); + m_control_sizer->Add(m_power_button, 0, wxALL, BORDER); + // Updated when we receive data m_from_sizer = m_control_sizer; m_control_sizer->Hide(m_transmit_sizer); @@ -976,11 +1114,15 @@ } void br24ControlsDialog::SwitchTo(wxBoxSizer* to, const wxChar* name) { + if (!m_top_sizer || !m_from_sizer) { + return; + } m_top_sizer->Hide(m_from_sizer); m_top_sizer->Show(to); LOG_VERBOSE(wxT("%s switch to control view %s"), m_log_name.c_str(), name); UpdateAdvanced4GState(); + UpdateTrailsState(); UpdateGuardZoneState(); SetMenuAutoHideTimeout(); @@ -1003,13 +1145,46 @@ } } +void br24ControlsDialog::UpdateTrailsState() { + if (m_top_sizer->IsShown(m_view_sizer)) { + int value = m_ri->m_trails_motion.GetValue(); + + if (value == TARGET_MOTION_OFF) { + m_target_trails_button->Hide(); + m_clear_trails_button->Hide(); + } else { + m_target_trails_button->Show(); + m_clear_trails_button->Show(); + } + } +} + void br24ControlsDialog::UpdateGuardZoneState() { - wxString label1, label2; + wxString label1, label2, label3, label4; + if (m_ri->m_guard_zone[0]->m_alarm_on) { + label3 << _(" + Alarm"); + } + if (m_ri->m_guard_zone[0]->m_arpa_on) { + label3 << _(" + Arpa"); + } + if (!m_ri->m_guard_zone[0]->m_alarm_on && !m_ri->m_guard_zone[0]->m_arpa_on) { + label3 << _(" Off"); + } + + if (m_ri->m_guard_zone[1]->m_alarm_on) { + label4 << _(" + Alarm"); + } + if (m_ri->m_guard_zone[1]->m_arpa_on) { + label4 << _(" + Arpa"); + } + if (!m_ri->m_guard_zone[1]->m_alarm_on && !m_ri->m_guard_zone[1]->m_arpa_on) { + label4 << _(" Off"); + } - label1 << _("Guard zone") << wxT(" 1\n") << guard_zone_names[m_ri->m_guard_zone[0]->m_type]; + label1 << _("Guard zone") << wxT(" 1 Green\n") << guard_zone_names[m_ri->m_guard_zone[0]->m_type] << label3; m_guard_1_button->SetLabel(label1); - label2 << _("Guard zone") << wxT(" 2\n") << guard_zone_names[m_ri->m_guard_zone[1]->m_type]; + label2 << _("Guard zone") << wxT(" 2 Blue\n") << guard_zone_names[m_ri->m_guard_zone[1]->m_type] << label4; m_guard_2_button->SetLabel(label2); } @@ -1058,27 +1233,28 @@ } void br24ControlsDialog::OnAutoClick(wxCommandEvent& event) { - m_from_control->SetAuto(); - m_auto_button->Disable(); - - OnBackClick(event); -} - -void br24ControlsDialog::OnMultiSweepClick(wxCommandEvent& event) { - wxString labelSweep; - - m_ri->m_multi_sweep_filter = !m_ri->m_multi_sweep_filter; - labelSweep << _("Multi Sweep Filter") << wxT("\n") << (m_ri->m_multi_sweep_filter ? _("On") : _("Off")); - m_multi_sweep_button->SetLabel(labelSweep); + if (m_from_control->autoValues == 1) { + m_from_control->SetAuto(1); + m_auto_button->Disable(); + } else if (m_from_control->autoValue < m_from_control->autoValues) { + m_from_control->SetAuto(m_from_control->autoValue + 1); + } else { + m_from_control->SetAuto(0); + } } void br24ControlsDialog::OnTrailsMotionClick(wxCommandEvent& event) { - m_ri->ClearTrails(); - if (m_ri->m_trails_motion.value == TARGET_MOTION_RELATIVE) { - m_ri->m_trails_motion.Update(TARGET_MOTION_TRUE); - } else { - m_ri->m_trails_motion.Update(TARGET_MOTION_RELATIVE); + int value = m_ri->m_trails_motion.GetValue(); + + value++; + if (value > TARGET_MOTION_TRUE) { + value = 0; } + m_ri->m_trails_motion.Update(value); + m_ri->ComputeColourMap(); + m_ri->ComputeTargetTrails(); + UpdateTrailsState(); + Fit(); UpdateControlValues(false); } @@ -1106,9 +1282,11 @@ void br24ControlsDialog::OnInstallationButtonClick(wxCommandEvent& event) { SwitchTo(m_installation_sizer, wxT("installation")); } +void br24ControlsDialog::OnPowerButtonClick(wxCommandEvent& event) { SwitchTo(m_power_sizer, wxT("power")); } + void br24ControlsDialog::OnPreferencesButtonClick(wxCommandEvent& event) { m_pi->ShowPreferencesDialog(m_pi->m_parent_window); } -void br24ControlsDialog::OnBearingButtonClick(wxCommandEvent& event) { SwitchTo(m_bearing_sizer, wxT("bearing")); } +void br24ControlsDialog::OnBearingButtonClick(wxCommandEvent& event) { SwitchTo(m_cursor_sizer, wxT("bearing")); } void br24ControlsDialog::OnMessageButtonClick(wxCommandEvent& event) { SetMenuAutoHideTimeout(); @@ -1118,15 +1296,28 @@ } } +void br24ControlsDialog::OnTargetsButtonClick(wxCommandEvent& event) { + M_SETTINGS.show_radar_target[m_ri->m_radar] = !(M_SETTINGS.show_radar_target[m_ri->m_radar]); + + UpdateControlValues(false); +} + void br24ControlsDialog::EnterEditMode(br24RadarControlButton* button) { m_from_control = button; // Keep a record of which button was clicked m_value_text->SetLabel(button->GetLabel()); SwitchTo(m_edit_sizer, wxT("edit")); - if (m_from_control->hasAuto) { + if (button->comment.length() > 0) { + m_comment_text->SetLabel(button->comment); + m_comment_text->Show(); + } else { + m_comment_text->Hide(); + } + + if (m_from_control->autoValues > 0) { m_auto_button->Show(); - if (m_from_control->isAuto) { + if (m_from_control->autoValue != 0 && m_from_control->autoValues == 1) { m_auto_button->Disable(); } else { m_auto_button->Enable(); @@ -1212,26 +1403,36 @@ EnterEditMode((br24RadarControlButton*)event.GetEventObject()); } -void br24ControlsDialog::OnRadarStateButtonClick(wxCommandEvent& event) { +void br24ControlsDialog::OnTransmitButtonClick(wxCommandEvent& event) { SetMenuAutoHideTimeout(); m_pi->m_settings.timed_idle = 0; - switch (m_ri->m_state.value) { - case RADAR_OFF: - case RADAR_WAKING_UP: - break; - case RADAR_STANDBY: - m_ri->RequestRadarState(RADAR_TRANSMIT); - break; - case RADAR_TRANSMIT: - m_ri->RequestRadarState(RADAR_STANDBY); - break; - } + m_ri->RequestRadarState(RADAR_TRANSMIT); +} + +void br24ControlsDialog::OnStandbyButtonClick(wxCommandEvent& event) { + SetMenuAutoHideTimeout(); + m_pi->m_settings.timed_idle = 0; + m_ri->RequestRadarState(RADAR_STANDBY); } void br24ControlsDialog::OnClearTrailsButtonClick(wxCommandEvent& event) { m_ri->ClearTrails(); } void br24ControlsDialog::OnOrientationButtonClick(wxCommandEvent& event) { - m_ri->m_orientation.Update(1 - m_ri->m_orientation.value); + int value = m_ri->m_orientation.GetValue() + 1; + + if (m_pi->GetHeadingSource() == HEADING_NONE) { + value = ORIENTATION_HEAD_UP; + } else { // There is a heading + if (value == ORIENTATION_NUMBER) { + if (M_SETTINGS.developer_mode) { + value = ORIENTATION_HEAD_UP; + } else { + value = ORIENTATION_STABILIZED_UP; + } + } + } + + m_ri->m_orientation.Update(value); UpdateControlValues(false); } @@ -1244,10 +1445,35 @@ void br24ControlsDialog::OnClearCursorButtonClick(wxCommandEvent& event) { LOG_DIALOG(wxT("%s OnClearCursorButtonClick"), m_log_name.c_str()); - m_ri->SetMouseVrmEbl(0., 0.); + m_ri->SetMouseVrmEbl(0., nanl("")); SwitchTo(m_control_sizer, wxT("main (clear cursor)")); } +void br24ControlsDialog::OnAcquireTargetButtonClick(wxCommandEvent& event) { + Position target_pos; + target_pos.lat = m_ri->m_mouse_lat; + target_pos.lon = m_ri->m_mouse_lon; + LOG_DIALOG(wxT("%s OnAcquireTargetButtonClick mouse=%f/%f"), m_log_name.c_str(), target_pos.lat, target_pos.lon); + m_ri->m_arpa->AcquireNewMARPATarget(target_pos); +} + +void br24ControlsDialog::OnDeleteTargetButtonClick(wxCommandEvent& event) { + Position target_pos; + target_pos.lat = m_ri->m_mouse_lat; + target_pos.lon = m_ri->m_mouse_lon; + LOG_DIALOG(wxT("%s OnDeleteTargetButtonClick mouse=%f/%f"), m_log_name.c_str(), target_pos.lat, target_pos.lon); + m_ri->m_arpa->DeleteTarget(target_pos); +} + +void br24ControlsDialog::OnDeleteAllTargetsButtonClick(wxCommandEvent& event) { + LOG_DIALOG(wxT("%s OnDeleteAllTargetsButtonClick"), m_log_name.c_str()); + for (int i = 0; i < RADARS; i++) { + if (m_pi->m_radar[i]->m_arpa) { + m_pi->m_radar[i]->m_arpa->DeleteAllTargets(); + } + } +} + void br24ControlsDialog::OnMove(wxMoveEvent& event) { m_manually_positioned = true; event.Skip(); @@ -1256,13 +1482,20 @@ void br24ControlsDialog::UpdateControlValues(bool refreshAll) { wxString o; - if (m_ri->m_state.mod) { + if (m_ri->m_state.IsModified()) { refreshAll = true; } RadarState state = (RadarState)m_ri->m_state.GetButton(); - o = _("Standby / Transmit"); + if (state == RADAR_TRANSMIT) { + m_standby_button->Enable(); + m_transmit_button->Disable(); + } else { + m_standby_button->Disable(); + m_transmit_button->Enable(); + } + o = _("Power Status"); o << wxT("\n"); if (m_pi->m_settings.timed_idle == 0) { switch (state) { @@ -1281,38 +1514,30 @@ } m_timed_idle_button->SetLocalValue(0); } else { - time_t now = time(0); - int left = m_pi->m_idle_standby - now; - if (left > 0) { - o = _("Standby in"); - o << wxString::Format(wxT(" %d:%02d"), left / 60, left % 60); + o << m_pi->GetTimedIdleText(); + } + m_power_button->SetLabel(o); + m_power_text->SetLabel(o); + + if (m_top_sizer->IsShown(m_power_sizer)) { + if (m_pi->m_settings.timed_idle) { + m_power_sizer->Show(m_timed_run_button); } else { - left = m_pi->m_idle_transmit - now; - if (left >= 0) { - o = _("Transmit in"); - o << wxString::Format(wxT(" %d:%02d"), left / 60, left % 60); - } + m_power_sizer->Hide(m_timed_run_button); } } - m_radar_state->SetLabel(o); - if (state == RADAR_TRANSMIT) { if (m_top_sizer->IsShown(m_control_sizer)) { m_control_sizer->Show(m_transmit_sizer); - m_top_sizer->Show(m_timed_idle_button); m_control_sizer->Layout(); } } else { m_control_sizer->Hide(m_transmit_sizer); - if (m_pi->m_settings.timed_idle) { - m_top_sizer->Show(m_timed_idle_button); - } else { - m_top_sizer->Hide(m_timed_idle_button); - } m_control_sizer->Layout(); } m_top_sizer->Layout(); Layout(); + Fit(); if (m_pi->m_settings.enable_dual_radar) { int show_other_radar = m_pi->m_settings.show_radar[1 - m_ri->m_radar]; @@ -1335,7 +1560,7 @@ m_window_button->SetLabel(o); for (int b = 0; b < BEARING_LINES; b++) { - if (m_ri->m_vrm[b] != 0.0) { + if (!isnan(m_ri->m_vrm[b])) { o = _("Clear EBL/VRM"); o << wxString::Format(wxT("%d"), b + 1); } else { @@ -1345,131 +1570,165 @@ m_bearing_buttons[b]->SetLabel(o); } - if (m_ri->m_target_trails.mod || refreshAll) { + if (M_SETTINGS.show_radar_target[m_ri->m_radar]) { + m_targets_button->SetLabel(_("Hide AIS/ARPA")); + } else { + m_targets_button->SetLabel(_("Show AIS/ARPA")); + } + + if (m_ri->m_target_trails.IsModified() || refreshAll) { m_target_trails_button->SetLocalValue(m_ri->m_target_trails.GetButton()); } - if (m_ri->m_trails_motion.mod || refreshAll) { - o = _("True/Relative trails"); + if (m_ri->m_trails_motion.IsModified() || refreshAll) { + int trails_motion = m_ri->m_trails_motion.GetButton(); + o = _("Off/Relative/True trails"); o << wxT("\n"); - if (m_ri->m_trails_motion.value == TARGET_MOTION_TRUE) { + if (trails_motion == TARGET_MOTION_TRUE) { o << _("True"); - } else { + } else if (trails_motion == TARGET_MOTION_RELATIVE) { o << _("Relative"); + } else { + o << _("Off"); } m_trails_motion_button->SetLabel(o); } - if (m_ri->m_orientation.mod || refreshAll) { + if (m_ri->m_orientation.IsModified() || refreshAll) { + int orientation = m_ri->m_orientation.GetButton(); + o = _("Orientation"); o << wxT("\n"); - switch (m_ri->m_orientation.GetButton()) { + switch (orientation) { + case ORIENTATION_HEAD_UP: + o << _("Head up"); + break; + case ORIENTATION_STABILIZED_UP: + o << _("Head up"); + o << wxT(" "); + o << _("(Stabilized)"); + break; case ORIENTATION_NORTH_UP: o << _("North up"); break; - case ORIENTATION_HEAD_UP: - o << _("Head up"); + case ORIENTATION_COG_UP: + o << _("Course up"); break; default: - o << _("???"); + o << _("Unknown"); } m_orientation_button->SetLabel(o); } + LOG_DIALOG(wxT("BR24radar_pi: orientation=%d heading source=%d"), m_ri->GetOrientation(), m_pi->GetHeadingSource()); + if (m_pi->GetHeadingSource() == HEADING_NONE) { + m_orientation_button->Disable(); + } else { + m_orientation_button->Enable(); + } - if (m_ri->m_overlay.mod || ((m_pi->m_settings.chart_overlay == m_ri->m_radar) != (m_ri->m_overlay.button != 0)) || refreshAll) { + int overlay; + if (m_ri->m_overlay.GetButton(&overlay) || ((m_pi->m_settings.chart_overlay == m_ri->m_radar) != (overlay != 0)) || refreshAll) { o = _("Overlay"); o << wxT("\n"); if (m_pi->m_settings.enable_dual_radar && ALL_RADARS(m_pi->m_settings.show_radar, 0)) { - o << ((m_ri->m_overlay.GetButton() > 0) ? m_ri->m_name : _("Off")); + o << ((overlay > 0) ? m_ri->m_name : _("Off")); } else { - o << ((m_ri->m_overlay.GetButton() > 0) ? _("On") : _("Off")); + o << ((overlay > 0) ? _("On") : _("Off")); } m_overlay_button->SetLabel(o); } - if (m_ri->m_range.mod || refreshAll) { + if (m_ri->m_range.IsModified() || refreshAll) { m_ri->m_range.GetButton(); m_range_button->SetRangeLabel(); } // gain - if (m_ri->m_gain.mod || refreshAll) { + if (m_ri->m_gain.IsModified() || refreshAll) { int button = m_ri->m_gain.GetButton(); - if (button == -1) { - m_gain_button->SetLocalAuto(); - } else { - m_gain_button->SetLocalValue(button); - } + m_gain_button->SetLocalValue(button); } // rain - if (m_ri->m_rain.mod || refreshAll) { + if (m_ri->m_rain.IsModified() || refreshAll) { m_rain_button->SetLocalValue(m_ri->m_rain.GetButton()); } // sea - if (m_ri->m_sea.mod || refreshAll) { + if (m_ri->m_sea.IsModified() || refreshAll) { int button = m_ri->m_sea.GetButton(); - if (button == -1) { - m_sea_button->SetLocalAuto(); - } else { - m_sea_button->SetLocalValue(button); - } + m_sea_button->SetLocalValue(button); } // target_boost - if (m_ri->m_target_boost.mod || refreshAll) { + if (m_ri->m_target_boost.IsModified() || refreshAll) { m_target_boost_button->SetLocalValue(m_ri->m_target_boost.GetButton()); } // target_expansion - if (m_ri->m_target_expansion.mod || refreshAll) { + if (m_ri->m_target_expansion.IsModified() || refreshAll) { m_target_expansion_button->SetLocalValue(m_ri->m_target_expansion.GetButton()); } // noise_rejection - if (m_ri->m_noise_rejection.mod || refreshAll) { + if (m_ri->m_noise_rejection.IsModified() || refreshAll) { m_noise_rejection_button->SetLocalValue(m_ri->m_noise_rejection.GetButton()); } // target_separation - if (m_ri->m_target_separation.mod || refreshAll) { + if (m_ri->m_target_separation.IsModified() || refreshAll) { m_target_separation_button->SetLocalValue(m_ri->m_target_separation.GetButton()); } // interference_rejection - if (m_ri->m_interference_rejection.mod || refreshAll) { + if (m_ri->m_interference_rejection.IsModified() || refreshAll) { m_interference_rejection_button->SetLocalValue(m_ri->m_interference_rejection.GetButton()); } // scanspeed - if (m_ri->m_scan_speed.mod || refreshAll) { + if (m_ri->m_scan_speed.IsModified() || refreshAll) { m_scan_speed_button->SetLocalValue(m_ri->m_scan_speed.GetButton()); } // antenna height - if (m_ri->m_antenna_height.mod || refreshAll) { + if (m_ri->m_antenna_height.IsModified() || refreshAll) { m_antenna_height_button->SetLocalValue(m_ri->m_antenna_height.GetButton()); } // bearing alignment - if (m_ri->m_bearing_alignment.mod || refreshAll) { + if (m_ri->m_bearing_alignment.IsModified() || refreshAll) { m_bearing_alignment_button->SetLocalValue(m_ri->m_bearing_alignment.GetButton()); } // local interference rejection - if (m_ri->m_local_interference_rejection.mod || refreshAll) { + if (m_ri->m_local_interference_rejection.IsModified() || refreshAll) { m_local_interference_rejection_button->SetLocalValue(m_ri->m_local_interference_rejection.GetButton()); } // side lobe suppression - if (m_ri->m_side_lobe_suppression.mod || refreshAll) { + if (m_ri->m_side_lobe_suppression.IsModified() || refreshAll) { int button = m_ri->m_side_lobe_suppression.GetButton(); - if (button == -1) { - m_side_lobe_suppression_button->SetLocalAuto(); - } else { - m_side_lobe_suppression_button->SetLocalValue(button); - } + m_side_lobe_suppression_button->SetLocalValue(button); + } + + if (refreshAll) { + // Update all buttons set from plugin settings + m_transparency_button->SetLocalValue(M_SETTINGS.overlay_transparency); + m_timed_idle_button->SetLocalValue(M_SETTINGS.timed_idle); + m_timed_run_button->SetLocalValue(M_SETTINGS.idle_run_time); + m_refresh_rate_button->SetLocalValue(M_SETTINGS.refreshrate); + m_main_bang_size_button->SetLocalValue(M_SETTINGS.main_bang_size); + m_antenna_starboard_button->SetLocalValue(M_SETTINGS.antenna_starboard); + m_antenna_forward_button->SetLocalValue(M_SETTINGS.antenna_forward); + } + + int arpa_targets = m_ri->m_arpa->GetTargetCount(); + if (arpa_targets) { + m_delete_target->Enable(); + m_delete_all->Enable(); + } else { + m_delete_target->Disable(); + m_delete_all->Disable(); } // Update the text that is currently shown in the edit box, this is a copy of the button itself @@ -1520,7 +1779,8 @@ LOG_DIALOG(wxT("%s UpdateDialogShown manually opened"), m_log_name.c_str()); if (!m_top_sizer->IsShown(m_control_sizer) && !m_top_sizer->IsShown(m_advanced_sizer) && !m_top_sizer->IsShown(m_view_sizer) && !m_top_sizer->IsShown(m_edit_sizer) && !m_top_sizer->IsShown(m_installation_sizer) && - !m_top_sizer->IsShown(m_guard_sizer) && !m_top_sizer->IsShown(m_adjust_sizer) && !m_top_sizer->IsShown(m_bearing_sizer)) { + !m_top_sizer->IsShown(m_guard_sizer) && !m_top_sizer->IsShown(m_adjust_sizer) && !m_top_sizer->IsShown(m_cursor_sizer) && + !m_top_sizer->IsShown(m_power_sizer)) { SwitchTo(m_control_sizer, wxT("main (manual open)")); } m_control_sizer->Layout(); @@ -1655,7 +1915,12 @@ m_guard_zone = m_ri->m_guard_zone[zone]; wxString GuardZoneText; - GuardZoneText << _("Guard Zone") << wxString::Format(wxT(" %d"), zone + 1); + if (zone == 0) { + GuardZoneText << _("Guard Zone 1 Green"); + } + if (zone == 1) { + GuardZoneText << _("Guard Zone 2 Blue"); + } m_guard_zone_text->SetLabel(GuardZoneText); m_guard_zone_type->SetSelection(m_guard_zone->m_type); @@ -1675,7 +1940,9 @@ } bearing = round(bearing); m_end_bearing->SetValue(wxString::Format(wxT("%3.0f"), bearing)); - m_filter->SetValue(m_guard_zone->m_multi_sweep_filter ? 1 : 0); + m_alarm->SetValue(m_guard_zone->m_alarm_on ? 1 : 0); + m_arpa_box->SetValue(m_guard_zone->m_arpa_on ? 1 : 0); + m_guard_zone->m_show_time = time(0); m_top_sizer->Hide(m_control_sizer); SwitchTo(m_guard_sizer, wxT("guard")); @@ -1688,13 +1955,7 @@ m_guard_zone->SetType(zoneType); - if (zoneType == GZ_OFF) { - m_start_bearing->Disable(); - m_end_bearing->Disable(); - m_inner_range->Disable(); - m_outer_range->Disable(); - - } else if (zoneType == GZ_CIRCLE) { + if (zoneType == GZ_CIRCLE) { m_start_bearing->Disable(); m_end_bearing->Disable(); m_inner_range->Enable(); @@ -1714,6 +1975,7 @@ void br24ControlsDialog::OnInner_Range_Value(wxCommandEvent& event) { wxString temp = m_inner_range->GetValue(); double t; + m_guard_zone->m_show_time = time(0); temp.ToDouble(&t); int conversionFactor = RangeUnitsToMeters[m_pi->m_settings.range_units]; @@ -1724,6 +1986,7 @@ void br24ControlsDialog::OnOuter_Range_Value(wxCommandEvent& event) { wxString temp = m_outer_range->GetValue(); double t; + m_guard_zone->m_show_time = time(0); temp.ToDouble(&t); int conversionFactor = RangeUnitsToMeters[m_pi->m_settings.range_units]; @@ -1735,6 +1998,7 @@ wxString temp = m_start_bearing->GetValue(); double t; + m_guard_zone->m_show_time = time(0); temp.ToDouble(&t); t = fmod(t, 360.); if (t < 0.) { @@ -1747,6 +2011,7 @@ wxString temp = m_end_bearing->GetValue(); double t; + m_guard_zone->m_show_time = time(0); temp.ToDouble(&t); t = fmod(t, 360.); if (t < 0.) { @@ -1755,9 +2020,14 @@ m_guard_zone->SetEndBearing(SCALE_DEGREES_TO_RAW2048(t)); } -void br24ControlsDialog::OnFilterClick(wxCommandEvent& event) { - int filt = m_filter->GetValue(); - m_guard_zone->SetMultiSweepFilter(filt); +void br24ControlsDialog::OnARPAClick(wxCommandEvent& event) { + int arpa = m_arpa_box->GetValue(); + m_guard_zone->SetArpaOn(arpa); +} + +void br24ControlsDialog::OnAlarmClick(wxCommandEvent& event) { + int alarm = m_alarm->GetValue(); + m_guard_zone->SetAlarmOn(alarm); } PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24ControlsDialog.h opencpn-plugin-br24radar-3.0.1/src/br24ControlsDialog.h --- opencpn-plugin-br24radar-2.1.0/src/br24ControlsDialog.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24ControlsDialog.h 2017-09-24 10:58:54.000000000 +0000 @@ -42,6 +42,8 @@ #define OFFSCREEN_CONTROL_X (-10000) #define OFFSCREEN_CONTROL_Y (-10000) +#define AUTO_RANGE (-20000) // Auto values are -20000 - auto_index + const static wxPoint OFFSCREEN_CONTROL = wxPoint(OFFSCREEN_CONTROL_X, OFFSCREEN_CONTROL_Y); //---------------------------------------------------------------------------------------------------------- @@ -75,6 +77,7 @@ void UnHideTemporarily(); void ShowDialog(); void HideDialog(); + void ShowCursorPane() { SwitchTo(m_cursor_sizer, wxT("cursor")); } br24radar_pi *m_pi; RadarInfo *m_ri; @@ -95,7 +98,6 @@ void OnMinusClick(wxCommandEvent &event); void OnMinusTenClick(wxCommandEvent &event); void OnAutoClick(wxCommandEvent &event); - void OnMultiSweepClick(wxCommandEvent &event); void OnTrailsMotionClick(wxCommandEvent &event); void OnAdjustButtonClick(wxCommandEvent &event); @@ -106,11 +108,12 @@ void OnRadarGainButtonClick(wxCommandEvent &event); - void OnRadarStateButtonClick(wxCommandEvent &event); + void OnPowerButtonClick(wxCommandEvent &event); void OnRadarShowButtonClick(wxCommandEvent &event); void OnRadarOverlayButtonClick(wxCommandEvent &event); void OnMessageButtonClick(wxCommandEvent &event); + void OnTargetsButtonClick(wxCommandEvent &event); void OnClearTrailsButtonClick(wxCommandEvent &event); void OnOrientationButtonClick(wxCommandEvent &event); @@ -120,15 +123,22 @@ void OnZone2ButtonClick(wxCommandEvent &event); void OnClearCursorButtonClick(wxCommandEvent &event); + void OnAcquireTargetButtonClick(wxCommandEvent &event); + void OnDeleteTargetButtonClick(wxCommandEvent &event); + void OnDeleteAllTargetsButtonClick(wxCommandEvent &event); void OnBearingSetButtonClick(wxCommandEvent &event); void OnBearingButtonClick(wxCommandEvent &event); void OnConfirmBogeyButtonClick(wxCommandEvent &event); + void OnTransmitButtonClick(wxCommandEvent &event); + void OnStandbyButtonClick(wxCommandEvent &event); + void EnterEditMode(br24RadarControlButton *button); void SwitchTo(wxBoxSizer *to, const wxChar *name); void UpdateAdvanced4GState(); + void UpdateTrailsState(); void SetMenuAutoHideTimeout(); @@ -142,7 +152,8 @@ wxBoxSizer *m_installation_sizer; wxBoxSizer *m_guard_sizer; wxBoxSizer *m_adjust_sizer; - wxBoxSizer *m_bearing_sizer; + wxBoxSizer *m_cursor_sizer; + wxBoxSizer *m_power_sizer; wxBoxSizer *m_transmit_sizer; // Controls disabled if not transmitting wxBoxSizer *m_from_sizer; // If on edit control, this is where the button is from @@ -158,10 +169,10 @@ wxButton *m_plus_ten_button; wxButton *m_plus_button; wxStaticText *m_value_text; + wxStaticText *m_comment_text; wxButton *m_minus_button; wxButton *m_minus_ten_button; wxButton *m_auto_button; - wxButton *m_multi_sweep_button; // Advanced controls br24RadarControlButton *m_interference_rejection_button; @@ -170,11 +181,12 @@ br24RadarControlButton *m_target_boost_button; br24RadarControlButton *m_target_expansion_button; br24RadarControlButton *m_scan_speed_button; - br24RadarControlButton *m_timed_idle_button; // Installation controls br24RadarControlButton *m_bearing_alignment_button; br24RadarControlButton *m_antenna_height_button; + br24RadarControlButton *m_antenna_forward_button; + br24RadarControlButton *m_antenna_starboard_button; br24RadarControlButton *m_local_interference_rejection_button; br24RadarControlButton *m_side_lobe_suppression_button; br24RadarControlButton *m_main_bang_size_button; @@ -182,16 +194,26 @@ // Bearing controls wxButton *m_bearing_buttons[BEARING_LINES]; wxButton *m_clear_cursor; + wxButton *m_acquire_target; + wxButton *m_delete_target; + wxButton *m_delete_all; // View controls br24RadarControlButton *m_target_trails_button; + wxButton *m_targets_button; wxButton *m_trails_motion_button; wxButton *m_clear_trails_button; wxButton *m_orientation_button; + // Power controls + wxStaticText *m_power_text; + wxButton *m_transmit_button; + wxButton *m_standby_button; + br24RadarControlButton *m_timed_idle_button; + br24RadarControlButton *m_timed_run_button; + // Show Controls - wxButton *m_radar_state; wxButton *m_overlay_button; wxButton *m_window_button; br24RadarRangeControlButton *m_range_button; @@ -204,18 +226,19 @@ wxButton *m_bearing_button; wxButton *m_guard_1_button; wxButton *m_guard_2_button; + wxButton *m_power_button; // Guard Zone Edit GuardZone *m_guard_zone; - wxStaticText *m_guard_zone_text; wxRadioBox *m_guard_zone_type; wxTextCtrl *m_outer_range; wxTextCtrl *m_inner_range; wxTextCtrl *m_start_bearing; wxTextCtrl *m_end_bearing; - wxCheckBox *m_filter; + wxCheckBox *m_arpa_box; + wxCheckBox *m_alarm; void ShowGuardZone(int zone); void SetGuardZoneVisibility(); @@ -224,7 +247,8 @@ void OnOuter_Range_Value(wxCommandEvent &event); void OnStart_Bearing_Value(wxCommandEvent &event); void OnEnd_Bearing_Value(wxCommandEvent &event); - void OnFilterClick(wxCommandEvent &event); + void OnARPAClick(wxCommandEvent &event); + void OnAlarmClick(wxCommandEvent &event); }; PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24MessageBox.cpp opencpn-plugin-br24radar-3.0.1/src/br24MessageBox.cpp --- opencpn-plugin-br24radar-2.1.0/src/br24MessageBox.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24MessageBox.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -259,13 +259,14 @@ bool br24MessageBox::UpdateMessage(bool force) { message_status new_message_state = HIDE; time_t now = time(0); + double radar_lat, radar_lon; - bool haveOpenGL = m_pi->m_opengl_mode; - bool haveGPS = m_pi->m_bpos_set; - bool haveTrueHeading = !TIMED_OUT(now, m_pi->m_hdt_timeout); - bool haveMagHeading = !TIMED_OUT(now, m_pi->m_hdm_timeout); - bool haveHeading = m_pi->m_heading_source != HEADING_NONE; - bool haveVariation = m_pi->m_var_source != VARIATION_SOURCE_NONE; + bool haveOpenGL = m_pi->IsOpenGLEnabled(); + bool haveGPS = m_pi->GetRadarPosition(&radar_lat, &radar_lon); + bool haveTrueHeading = !TIMED_OUT(now, m_pi->GetHeadingTrueTimeout()); + bool haveMagHeading = !TIMED_OUT(now, m_pi->GetHeadingMagTimeout()); + bool haveHeading = haveTrueHeading || haveMagHeading; + bool haveVariation = m_pi->GetVariationSource() != VARIATION_SOURCE_NONE; bool radarSeen = false; bool haveData = false; bool showRadar = m_pi->m_settings.show != 0; @@ -276,10 +277,11 @@ } for (int r = 0; r < RADARS; r++) { - if (m_pi->m_radar[r]->m_state.value != RADAR_OFF) { + int state = m_pi->m_radar[r]->m_state.GetValue(); + if (state != RADAR_OFF) { radarSeen = true; } - if (m_pi->m_radar[r]->m_state.value == RADAR_TRANSMIT) { + if (state == RADAR_TRANSMIT) { haveData = true; } } diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24OptionsDialog.cpp opencpn-plugin-br24radar-3.0.1/src/br24OptionsDialog.cpp --- opencpn-plugin-br24radar-2.1.0/src/br24OptionsDialog.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24OptionsDialog.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -29,8 +29,8 @@ *************************************************************************** */ -#include "br24radar_pi.h" #include "RadarDraw.h" +#include "br24radar_pi.h" PLUGIN_BEGIN_NAMESPACE @@ -143,7 +143,7 @@ this); trailSizer->Add(m_TrailEndColour); - // Target trails colours + // Target colours wxStaticBox *colourBox = new wxStaticBox(this, wxID_ANY, _("Target colors")); wxStaticBoxSizer *colourSizer = new wxStaticBoxSizer(colourBox, wxVERTICAL); @@ -167,6 +167,31 @@ m_StrongColour->Connect(wxEVT_COLOURPICKER_CHANGED, wxCommandEventHandler(br24OptionsDialog::OnStrongColourClick), NULL, this); colourSizer->Add(m_StrongColour); + wxStaticText *arpaText = new wxStaticText(this, wxID_ANY, _("ARPA edge color")); + colourSizer->Add(arpaText, 0, wxALL, border_size); + m_ArpaColour = new wxColourPickerCtrl(this, wxID_ANY, m_settings.arpa_colour, wxDefaultPosition, wxSize(150, 30)); + m_ArpaColour->Connect(wxEVT_COLOURPICKER_CHANGED, wxCommandEventHandler(br24OptionsDialog::OnArpaColourClick), NULL, this); + colourSizer->Add(m_ArpaColour); + + // Other colours + + wxStaticBox *PPIColourBox = new wxStaticBox(this, wxID_ANY, _("Radar window colors")); + wxStaticBoxSizer *PPIColourSizer = new wxStaticBoxSizer(PPIColourBox, wxVERTICAL); + + wxStaticText *backgroundText = new wxStaticText(this, wxID_ANY, _("Background color")); + PPIColourSizer->Add(backgroundText, 0, wxALL, border_size); + m_PPIBackgroundColour = + new wxColourPickerCtrl(this, wxID_ANY, m_settings.ppi_background_colour, wxDefaultPosition, wxSize(150, 30)); + m_PPIBackgroundColour->Connect(wxEVT_COLOURPICKER_CHANGED, wxCommandEventHandler(br24OptionsDialog::OnPPIBackgroundColourClick), + NULL, this); + PPIColourSizer->Add(m_PPIBackgroundColour); + + wxStaticText *aisText = new wxStaticText(this, wxID_ANY, _("AIS text color")); + PPIColourSizer->Add(aisText, 0, wxALL, border_size); + m_AisTextColour = new wxColourPickerCtrl(this, wxID_ANY, m_settings.ais_text_colour, wxDefaultPosition, wxSize(150, 30)); + m_AisTextColour->Connect(wxEVT_COLOURPICKER_CHANGED, wxCommandEventHandler(br24OptionsDialog::OnAisTextColourClick), NULL, this); + PPIColourSizer->Add(m_AisTextColour); + DisplayOptionsBox->Add(m_RangeUnits, 0, wxALL | wxEXPAND, border_size); DisplayOptionsBox->Add(drawingMethodSizer, 0, wxALL | wxEXPAND, border_size); DisplayOptionsBox->Add(menuOptionsSizer, 0, wxALL | wxEXPAND, border_size); @@ -174,12 +199,19 @@ DisplayOptionsBox->Add(guardZoneSizer, 0, wxALL, border_size); DisplayOptionsBox->Add(trailSizer, 0, wxALL | wxEXPAND, border_size); DisplayOptionsBox->Add(colourSizer, 0, wxALL | wxEXPAND, border_size); + DisplayOptionsBox->Add(PPIColourSizer, 0, wxALL | wxEXPAND, border_size); // Options wxStaticBox *itemStaticBoxOptions = new wxStaticBox(this, wxID_ANY, _("Options")); wxStaticBoxSizer *itemStaticBoxSizerOptions = new wxStaticBoxSizer(itemStaticBoxOptions, wxVERTICAL); topSizer->Add(itemStaticBoxSizerOptions, 0, wxEXPAND | wxALL, border_size); + m_ShowExtremeRange = new wxCheckBox(this, wxID_ANY, _("Show ring at extreme range")); + itemStaticBoxSizerOptions->Add(m_ShowExtremeRange, 0, wxALL, border_size); + m_ShowExtremeRange->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(br24OptionsDialog::OnShowExtremeRangeClick), + NULL, this); + m_ShowExtremeRange->SetValue(m_settings.show_extreme_range); + m_GuardZoneOnOverlay = new wxCheckBox(this, wxID_ANY, _("Show Guard Zone on overlay")); itemStaticBoxSizerOptions->Add(m_GuardZoneOnOverlay, 0, wxALL, border_size); m_GuardZoneOnOverlay->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(br24OptionsDialog::OnGuardZoneOnOverlayClick), @@ -243,7 +275,8 @@ DimeWindow(this); Fit(); - SetMinSize(GetBestSize()); + // SetMinSize(GetBestSize()); + SetLayoutAdaptationMode(wxDIALOG_ADAPTATION_MODE_ENABLED); } void br24OptionsDialog::OnRangeUnitsClick(wxCommandEvent &event) { @@ -258,6 +291,10 @@ m_settings.guard_zone_on_overlay = m_GuardZoneOnOverlay->GetValue(); } +void br24OptionsDialog::OnShowExtremeRangeClick(wxCommandEvent &event) { + m_settings.show_extreme_range = m_ShowExtremeRange->GetValue(); +} + void br24OptionsDialog::OnTrailsOnOverlayClick(wxCommandEvent &event) { m_settings.trails_on_overlay = m_TrailsOnOverlay->GetValue(); } @@ -272,6 +309,14 @@ void br24OptionsDialog::OnWeakColourClick(wxCommandEvent &event) { m_settings.weak_colour = m_WeakColour->GetColour(); } +void br24OptionsDialog::OnArpaColourClick(wxCommandEvent &event) { m_settings.arpa_colour = m_ArpaColour->GetColour(); } + +void br24OptionsDialog::OnAisTextColourClick(wxCommandEvent &event) { m_settings.ais_text_colour = m_AisTextColour->GetColour(); } + +void br24OptionsDialog::OnPPIBackgroundColourClick(wxCommandEvent &event) { + m_settings.ppi_background_colour = m_PPIBackgroundColour->GetColour(); +} + void br24OptionsDialog::OnIntermediateColourClick(wxCommandEvent &event) { m_settings.intermediate_colour = m_IntermediateColour->GetColour(); } diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24OptionsDialog.h opencpn-plugin-br24radar-3.0.1/src/br24OptionsDialog.h --- opencpn-plugin-br24radar-2.1.0/src/br24OptionsDialog.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24OptionsDialog.h 2017-09-24 10:58:54.000000000 +0000 @@ -50,10 +50,14 @@ void OnGuardZoneStyleClick(wxCommandEvent& event); void OnGuardZoneOnOverlayClick(wxCommandEvent& event); void OnGuardZoneTimeoutClick(wxCommandEvent& event); + void OnShowExtremeRangeClick(wxCommandEvent& event); void OnTrailsOnOverlayClick(wxCommandEvent& event); void OnTrailStartColourClick(wxCommandEvent& event); void OnTrailEndColourClick(wxCommandEvent& event); void OnWeakColourClick(wxCommandEvent& event); + void OnArpaColourClick(wxCommandEvent& event); + void OnPPIBackgroundColourClick(wxCommandEvent& event); + void OnAisTextColourClick(wxCommandEvent& event); void OnIntermediateColourClick(wxCommandEvent& event); void OnStrongColourClick(wxCommandEvent& event); void OnSelectSoundClick(wxCommandEvent& event); @@ -80,6 +84,10 @@ wxColourPickerCtrl* m_WeakColour; wxColourPickerCtrl* m_IntermediateColour; wxColourPickerCtrl* m_StrongColour; + wxColourPickerCtrl* m_ArpaColour; + wxColourPickerCtrl* m_AisTextColour; + wxColourPickerCtrl* m_PPIBackgroundColour; + wxCheckBox* m_ShowExtremeRange; wxCheckBox* m_GuardZoneOnOverlay; wxCheckBox* m_TrailsOnOverlay; wxCheckBox* m_IgnoreHeading; diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24radar_pi.cpp opencpn-plugin-br24radar-3.0.1/src/br24radar_pi.cpp --- opencpn-plugin-br24radar-2.1.0/src/br24radar_pi.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24radar_pi.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -30,9 +30,11 @@ */ #include "br24radar_pi.h" +#include "GuardZoneBogey.h" +#include "Kalman.h" +#include "RadarMarpa.h" #include "icons.h" #include "nmea0183/nmea0183.h" -#include "GuardZoneBogey.h" PLUGIN_BEGIN_NAMESPACE @@ -50,15 +52,17 @@ /********************************************************************************************************/ double local_distance(double lat1, double lon1, double lat2, double lon2) { + double s1 = deg2rad(lat1); + double l1 = deg2rad(lon1); + double s2 = deg2rad(lat2); + double l2 = deg2rad(lon2); + double theta = l2 - l1; + // Spherical Law of Cosines - double theta, dist; + double dist = acos(sin(s1) * sin(s2) + cos(s1) * cos(s2) * cos(theta)); - theta = lon2 - lon1; - dist = sin(deg2rad(lat1)) * sin(deg2rad(lat2)) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta)); - dist = acos(dist); // radians - dist = rad2deg(dist); - dist = fabs(dist) * 60; // nautical miles/degree - return (dist); + dist = fabs(rad2deg(dist)) * 60; // nautical miles/degree + return dist; } double local_bearing(double lat1, double lon1, double lat2, double lon2) { @@ -66,9 +70,10 @@ double l1 = deg2rad(lon1); double s2 = deg2rad(lat2); double l2 = deg2rad(lon2); + double theta = l2 - l1; - double y = sin(l2 - l1) * cos(s2); - double x = cos(s1) * sin(s2) - sin(s1) * cos(s2) * cos(l2 - l1); + double y = sin(theta) * cos(s2); + double x = cos(s1) * sin(s2) - sin(s1) * cos(s2) * cos(theta); double brg = fmod(rad2deg(atan2(y, x)) + 360.0, 360.0); return brg; @@ -99,7 +104,11 @@ // //--------------------------------------------------------------------------------------------------------- -//#include "default_pi.xpm" +enum { TIMER_ID = 51 }; + +BEGIN_EVENT_TABLE(br24radar_pi, wxEvtHandler) +EVT_TIMER(TIMER_ID, br24radar_pi::OnTimerNotify) +END_EVENT_TABLE() //--------------------------------------------------------------------------------------------------------- // @@ -107,18 +116,21 @@ // //--------------------------------------------------------------------------------------------------------- -br24radar_pi::br24radar_pi(void *ppimgr) : opencpn_plugin_112(ppimgr) { +br24radar_pi::br24radar_pi(void *ppimgr) : opencpn_plugin_114(ppimgr) { m_boot_time = wxGetUTCTimeMillis(); m_initialized = false; + // Create the PlugIn icons initialize_images(); m_pdeficon = new wxBitmap(*_img_radar_blank); - m_opengl_mode = false; + m_opengl_mode = OPENGL_UNKOWN; m_opengl_mode_changed = false; m_opencpn_gl_context = 0; m_opencpn_gl_context_broken = false; + m_timer = 0; + m_first_init = true; } @@ -155,6 +167,8 @@ m_first_init = false; } + time_t now = time(0); + // Font can change so initialize every time m_font = GetOCPNGUIScaledFont_PlugIn(_T("Dialog")); m_fat_font = m_font; @@ -164,26 +178,35 @@ m_var = 0.0; m_var_source = VARIATION_SOURCE_NONE; m_bpos_set = false; + m_ownship_lat = nan(""); + m_ownship_lon = nan(""); + m_radar_lat = nan(""); + m_radar_lon = nan(""); + m_cursor_lat = nan(""); + m_cursor_lon = nan(""); + m_guard_bogey_seen = false; m_guard_bogey_confirmed = false; m_sent_toolbar_button = TB_NONE; m_toolbar_button = TB_NONE; m_opengl_mode_changed = false; m_notify_radar_window_viz = false; + m_notify_control_dialog = false; m_bogey_dialog = 0; m_alarm_sound_timeout = 0; m_guard_bogey_timeout = 0; - m_bpos_timestamp = 0; + m_bpos_timestamp = now; m_hdt = 0.0; - m_hdt_timeout = 0; - m_hdm_timeout = 0; - m_var_timeout = 0; + m_hdt_timeout = now + WATCHDOG_TIMEOUT; + m_hdm_timeout = now + WATCHDOG_TIMEOUT; + m_var_timeout = now + WATCHDOG_TIMEOUT; + m_cog_timeout = now; m_idle_standby = 0; m_idle_transmit = 0; - m_heading_source = HEADING_NONE; m_radar_heading = nanl(""); + m_vp_rotation = 0.; // Set default settings before we load config. Prevents random behavior on uninitalized behavior. // For instance, LOG_XXX messages before config is loaded. @@ -196,7 +219,6 @@ m_settings.threshold_green = 255; m_settings.mcast_address = wxT(""); - ::wxDisplaySize(&m_display_width, &m_display_height); // Get a pointer to the opencpn display canvas, to use as a parent for the UI // dialog m_parent_window = GetOCPNCanvasWindow(); @@ -206,9 +228,11 @@ m_pMessageBox = new br24MessageBox; m_pMessageBox->Create(m_parent_window, this); - // before config, so config can set data in it - m_radar[0] = new RadarInfo(this, 0); - m_radar[1] = new RadarInfo(this, 1); + // Create objects before config, so config can set data in it + // This does not start any threads or generate any UI. + for (int r = 0; r < RADARS; r++) { + m_radar[r] = new RadarInfo(this, r); + } // And load the configuration items if (LoadConfig()) { @@ -219,11 +243,13 @@ LOG_INFO(wxT("BR24radar_pi: TRANSMIT = %d"), LOGLEVEL_TRANSMIT); LOG_INFO(wxT("BR24radar_pi: RECEIVE = %d"), LOGLEVEL_RECEIVE); LOG_INFO(wxT("BR24radar_pi: GUARD = %d"), LOGLEVEL_GUARD); + LOG_INFO(wxT("BR24radar_pi: ARPA = %d"), LOGLEVEL_ARPA); LOG_VERBOSE(wxT("BR24radar_pi: VERBOSE log is enabled")); LOG_DIALOG(wxT("BR24radar_pi: DIALOG log is enabled")); LOG_TRANSMIT(wxT("BR24radar_pi: TRANSMIT log is enabled")); LOG_RECEIVE(wxT("BR24radar_pi: RECEIVE log is enabled")); LOG_GUARD(wxT("BR24radar_pi: GUARD log is enabled")); + LOG_ARPA(wxT("BR24radar_pi: ARPA log is enabled")); } else { wxLogError(wxT("BR24radar_pi: configuration file values initialisation failed")); return 0; // give up @@ -251,27 +277,42 @@ wxMenuItem *mi1 = new wxMenuItem(&dummy_menu, -1, _("Show radar")); wxMenuItem *mi2 = new wxMenuItem(&dummy_menu, -1, _("Hide radar")); wxMenuItem *mi3 = new wxMenuItem(&dummy_menu, -1, _("Radar Control...")); + wxMenuItem *mi4 = new wxMenuItem(&dummy_menu, -1, _("Acquire radar target")); + wxMenuItem *mi5 = new wxMenuItem(&dummy_menu, -1, _("Delete radar target")); + wxMenuItem *mi6 = new wxMenuItem(&dummy_menu, -1, _("Delete all radar targets")); + #ifdef __WXMSW__ wxFont *qFont = OCPNGetFont(_("Menu"), 10); mi1->SetFont(*qFont); mi2->SetFont(*qFont); mi3->SetFont(*qFont); + mi4->SetFont(*qFont); + mi5->SetFont(*qFont); + mi6->SetFont(*qFont); #endif m_context_menu_show_id = AddCanvasContextMenuItem(mi1, this); m_context_menu_hide_id = AddCanvasContextMenuItem(mi2, this); m_context_menu_control_id = AddCanvasContextMenuItem(mi3, this); + m_context_menu_acquire_radar_target = AddCanvasContextMenuItem(mi4, this); + m_context_menu_delete_radar_target = AddCanvasContextMenuItem(mi5, this); + m_context_menu_delete_all_radar_targets = AddCanvasContextMenuItem(mi6, this); + m_context_menu_show = true; + m_context_menu_control = false; + m_context_menu_arpa = false; + SetCanvasContextMenuItemViz(m_context_menu_show_id, false); m_initialized = true; LOG_VERBOSE(wxT("BR24radar_pi: Initialized plugin transmit=%d/%d overlay=%d"), m_settings.show_radar[0], m_settings.show_radar[1], m_settings.chart_overlay); + m_notify_time_ms = 0; + m_timer = new wxTimer(this, TIMER_ID); SetRadarWindowViz(); - Notify(); + TimedControlUpdate(); m_radar[0]->StartReceive(); if (m_settings.enable_dual_radar) { m_radar[1]->StartReceive(); } - return PLUGIN_OPTIONS; } @@ -290,27 +331,33 @@ m_initialized = false; - // New style objects save position in destructor. - if (m_bogey_dialog) { - delete m_bogey_dialog; - m_bogey_dialog = 0; + if (m_timer) { + m_timer->Stop(); + delete m_timer; + m_timer = 0; } - // Delete all dialogs + // Stop processing in all radars. + // This waits for the receive threads to stop and removes the dialog, so that its settings + // can be saved. for (int r = 0; r < RADARS; r++) { - m_radar[r]->DeleteDialogs(); + m_radar[r]->Shutdown(); + } + + if (m_bogey_dialog) { + delete m_bogey_dialog; // This will also save its current pos in m_settings + m_bogey_dialog = 0; } SaveConfig(); - // Delete all 'new'ed objects + // Delete the RadarInfo objects. This will call their destructor and delete all data. for (int r = 0; r < RADARS; r++) { delete m_radar[r]; m_radar[r] = 0; } // No need to delete wxWindow stuff, wxWidgets does this for us. - LOG_VERBOSE(wxT("BR24radar_pi: DeInit of plugin done")); return true; } @@ -368,14 +415,16 @@ // A different thread (or even the control dialog itself) has changed state and now // the radar window and control visibility needs to be reset. It can't call SetRadarWindowViz() // directly so we redirect via flag and main thread. -void br24radar_pi::NotifyRadarWindowViz() { - m_notify_radar_window_viz = true; - m_radar[0]->m_main_timer_timeout = 0; -} +void br24radar_pi::NotifyRadarWindowViz() { m_notify_radar_window_viz = true; } + +// A different thread (or even the control dialog itself) has changed state and now +// the content of the control dialog needs to be reset (but not its visibility, that is what +// NotifyRadarWindowViz() does.) +// +void br24radar_pi::NotifyControlDialog() { m_notify_control_dialog = true; } void br24radar_pi::SetRadarWindowViz(bool reparent) { - int r; - for (r = 0; r < RADARS; r++) { + for (int r = 0; r < RADARS; r++) { bool showThisRadar = m_settings.show && m_settings.show_radar[r] && (r == 0 || m_settings.enable_dual_radar); bool showThisControl = m_settings.show && m_settings.show_radar_control[r] && (r == 0 || m_settings.enable_dual_radar); m_radar[r]->ShowRadarWindow(showThisRadar); @@ -383,11 +432,55 @@ m_radar[r]->UpdateTransmitState(); } - SetCanvasContextMenuItemViz(m_context_menu_show_id, m_settings.show == 0); - SetCanvasContextMenuItemViz(m_context_menu_hide_id, m_settings.show != 0); - SetCanvasContextMenuItemGrey(m_context_menu_control_id, m_settings.show == 0); LOG_DIALOG(wxT("BR24radar_pi: RadarWindow show = %d window0=%d window1=%d"), m_settings.show, m_settings.show_radar[0], m_settings.show_radar[1]); + + UpdateContextMenu(); +} + +void br24radar_pi::UpdateContextMenu() { + int arpa_targets = 0; + + for (int r = 0; r < RADARS; r++) { + arpa_targets += m_radar[r]->m_arpa->GetTargetCount(); + } + bool show = m_settings.show; + bool control = false; + bool arpa = arpa_targets == 0; + + if (m_settings.chart_overlay >= 0) { + control = m_settings.show_radar_control[m_settings.chart_overlay]; + } else { + control = true; + for (int r = 0; r < RADARS; r++) { + if (!m_settings.show_radar_control[r]) { + control = false; + } + } + } + + if (m_context_menu_arpa != arpa) { + SetCanvasContextMenuItemGrey(m_context_menu_delete_radar_target, arpa); + SetCanvasContextMenuItemGrey(m_context_menu_delete_all_radar_targets, arpa); + m_context_menu_arpa = arpa; + LOG_DIALOG(wxT("BR24radar_pi: ContextMenu arpa nr of targets = %d"), arpa_targets); + } + if (m_context_menu_control != control) { + SetCanvasContextMenuItemGrey(m_context_menu_control_id, control); + m_context_menu_control = control; + LOG_DIALOG(wxT("BR24radar_pi: ContextMenu control = %d"), control); + } + + if (m_context_menu_show != show) { + SetCanvasContextMenuItemViz(m_context_menu_show_id, !show); + SetCanvasContextMenuItemViz(m_context_menu_hide_id, show); + SetCanvasContextMenuItemViz(m_context_menu_control_id, show); + SetCanvasContextMenuItemViz(m_context_menu_acquire_radar_target, show); + SetCanvasContextMenuItemViz(m_context_menu_delete_radar_target, show); + SetCanvasContextMenuItemViz(m_context_menu_delete_all_radar_targets, show); + m_context_menu_show = show; + LOG_DIALOG(wxT("BR24radar_pi: ContextMenu show = %d"), show); + } } //******************************************************************************** @@ -485,11 +578,38 @@ ShowRadarControl(m_settings.chart_overlay, true); } } else if (id == m_context_menu_hide_id) { - m_settings.show = 0; + m_settings.show = false; SetRadarWindowViz(); } else if (id == m_context_menu_show_id) { - m_settings.show = 1; + m_settings.show = true; SetRadarWindowViz(); + } else if (id == m_context_menu_acquire_radar_target) { + if (m_settings.show // radar shown + && m_settings.chart_overlay >= 0 // overlay desired + && m_radar[m_settings.chart_overlay]->m_state.GetValue() == RADAR_TRANSMIT // Radar transmitting + && !isnan(m_cursor_lat) && !isnan(m_cursor_lon)) { + Position target_pos; + target_pos.lat = m_cursor_lat; + target_pos.lon = m_cursor_lon; + m_radar[m_settings.chart_overlay]->m_arpa->AcquireNewMARPATarget(target_pos); + } + } else if (id == m_context_menu_delete_radar_target) { + // Targets can also be deleted when the overlay is not shown + // In this case targets can be made by a guard zone in a radarwindow + if (m_settings.show && m_settings.chart_overlay >= 0) { + Position target_pos; + target_pos.lat = m_cursor_lat; + target_pos.lon = m_cursor_lon; + if (m_radar[m_settings.chart_overlay]->m_arpa) { + m_radar[m_settings.chart_overlay]->m_arpa->DeleteTarget(target_pos); + } + } + } else if (id == m_context_menu_delete_all_radar_targets) { + for (int i = 0; i < RADARS; i++) { + if (m_radar[i]->m_arpa) { + m_radar[i]->m_arpa->DeleteAllTargets(); + } + } } else { wxLogError(wxT("BR24radar_pi: Unknown context menu item callback")); } @@ -501,7 +621,7 @@ char checksum = 0; char *p; - snprintf(sentence, sizeof(sentence), "APHDT,%.1f,M", m_hdt); + snprintf(sentence, sizeof(sentence), "RAHDT,%.1f,T", m_hdt); for (p = sentence; *p; p++) { checksum ^= *p; @@ -512,24 +632,28 @@ PushNMEABuffer(nmea); } -wxString br24radar_pi::GetGuardZoneText(RadarInfo *ri) { +wxString br24radar_pi::GetTimedIdleText() { wxString text; - if (m_settings.timed_idle) { + if (m_settings.timed_idle > 0) { time_t now = time(0); int left = m_idle_standby - now; if (left >= 0) { text = _("Standby in"); - text << wxString::Format(wxT(" %2d:%02d"), left / 60, left % 60); + text << wxString::Format(wxT(" %d:%02d"), left / 60, left % 60); } else { left = m_idle_transmit - now; if (left >= 0) { text = _("Transmit in"); - text << wxString::Format(wxT(" %2d:%02d"), left / 60, left % 60); - return text; + text << wxString::Format(wxT(" %d:%02d"), left / 60, left % 60); } } } + return text; +} + +wxString br24radar_pi::GetGuardZoneText(RadarInfo *ri) { + wxString text = GetTimedIdleText(); for (int z = 0; z < GUARD_ZONES; z++) { int bogeys = ri->m_guard_zone[z]->GetBogeyCount(); @@ -561,7 +685,7 @@ text << m_radar[r]->m_name; text << wxT(":\n"); } - if (m_radar[r]->m_state.value == RADAR_TRANSMIT) { + if (m_radar[r]->m_state.GetValue() == RADAR_TRANSMIT) { bool bogeys_found_this_radar = false; for (size_t z = 0; z < GUARD_ZONES; z++) { @@ -651,17 +775,15 @@ time_t now = time(0); - if (state == RADAR_TRANSMIT) { - if (TIMED_OUT(now, m_idle_standby)) { - RequestStateAllRadars(RADAR_STANDBY); - m_idle_transmit = now + m_settings.timed_idle * SECONDS_PER_TIMED_IDLE_SETTING; - } - } else { - if (TIMED_OUT(now, m_idle_transmit)) { - RequestStateAllRadars(RADAR_TRANSMIT); - int burst = wxMax(m_settings.idle_run_time, SECONDS_PER_TRANSMIT_BURST); - m_idle_standby = now + burst; - } + if (m_idle_standby > 0 && TIMED_OUT(now, m_idle_standby) && state == RADAR_TRANSMIT) { + RequestStateAllRadars(RADAR_STANDBY); + m_idle_transmit = now + m_settings.timed_idle * SECONDS_PER_TIMED_IDLE_SETTING - + (m_settings.idle_run_time + 1) * SECONDS_PER_TIMED_RUN_SETTING; + m_idle_standby = 0; + } else if (m_idle_transmit > 0 && TIMED_OUT(now, m_idle_transmit) && state == RADAR_STANDBY) { + RequestStateAllRadars(RADAR_TRANSMIT); + m_idle_standby = now + (m_settings.idle_run_time + 1) * SECONDS_PER_TIMED_RUN_SETTING; + m_idle_transmit = 0; } } @@ -669,64 +791,39 @@ wxCriticalSectionLocker lock(m_exclusive); m_radar_heading = heading; m_radar_heading_true = isTrue; -} - - - -// Notify -// ------ -// Called once a second by the timer on radar[0]. -// -// This checks if we need to ping the radar to keep it alive (or make it alive) - -void br24radar_pi::Notify(void) { - LOG_VERBOSE(wxT("BR24radar_pi: main timer")); - time_t now = time(0); - - if (m_opengl_mode_changed || m_notify_radar_window_viz) { - m_opengl_mode_changed = false; - m_notify_radar_window_viz = false; - SetRadarWindowViz(true); - } - - { - double radar_heading; - bool radar_heading_true; - { - wxCriticalSectionLocker lock(m_exclusive); - radar_heading = m_radar_heading; - radar_heading_true = m_radar_heading_true; - m_radar_heading = nanl(""); - } - if (!wxIsNaN(radar_heading)) { - if (radar_heading_true) { - if (m_heading_source != HEADING_RADAR_HDT) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now RADAR (TRUE) (%d->%d)"), m_heading_source, HEADING_RADAR_HDT); - m_heading_source = HEADING_RADAR_HDT; - } - if (m_heading_source == HEADING_RADAR_HDT) { - m_hdt = radar_heading; - m_hdt_timeout = now + HEADING_TIMEOUT; - } - } else { - if (m_heading_source != HEADING_RADAR_HDM) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now RADAR (MAGNETIC) (%d->%d)"), m_heading_source, HEADING_RADAR_HDM); - m_heading_source = HEADING_RADAR_HDM; - } - if (m_heading_source == HEADING_RADAR_HDM) { - m_hdm = radar_heading; - m_hdt = radar_heading + m_var; - m_hdm_timeout = now + HEADING_TIMEOUT; - } + if (!wxIsNaN(m_radar_heading)) { + if (m_radar_heading_true) { + if (m_heading_source != HEADING_RADAR_HDT) { + m_heading_source = HEADING_RADAR_HDT; + } + if (m_heading_source == HEADING_RADAR_HDT) { + m_hdt = m_radar_heading; + m_hdt_timeout = now + HEADING_TIMEOUT; + } + } else { + if (m_heading_source != HEADING_RADAR_HDM) { + m_heading_source = HEADING_RADAR_HDM; + } + if (m_heading_source == HEADING_RADAR_HDM) { + m_hdm = m_radar_heading; + m_hdt = m_radar_heading + m_var; + m_hdm_timeout = now + HEADING_TIMEOUT; } } + } else if (m_heading_source == HEADING_RADAR_HDM || m_heading_source == HEADING_RADAR_HDT) { + // no heading on radar and heading source is still radar + m_heading_source = HEADING_NONE; } +} + +void br24radar_pi::UpdateHeadingPositionState() { + wxCriticalSectionLocker lock(m_exclusive); + time_t now = time(0); if (m_bpos_set && TIMED_OUT(now, m_bpos_timestamp + WATCHDOG_TIMEOUT)) { - // If the position data is 10s old reset our heading. - // Note that the watchdog is continuously reset every time we receive a - // heading. + // If the position data is 10s old reset our position. + // Note that the watchdog is reset every time we receive a position. m_bpos_set = false; LOG_VERBOSE(wxT("BR24radar_pi: Lost Boat Position data")); } @@ -740,8 +837,7 @@ case HEADING_RADAR_HDT: if (TIMED_OUT(now, m_hdt_timeout)) { // If the position data is 10s old reset our heading. - // Note that the watchdog is continuously reset every time we receive a - // heading + // Note that the watchdog is reset every time we receive a heading. m_heading_source = HEADING_NONE; LOG_VERBOSE(wxT("BR24radar_pi: Lost Heading data")); } @@ -764,12 +860,101 @@ LOG_VERBOSE(wxT("BR24radar_pi: Lost Variation source")); } + // Update radar position offset from GPS + if (m_heading_source != HEADING_NONE && !wxIsNaN(m_hdt) && + (m_settings.antenna_starboard != 0 || m_settings.antenna_forward != 0)) { + double sine = sin(deg2rad(m_hdt)); + double cosine = cos(deg2rad(m_hdt)); + double dist_forward = (double)m_settings.antenna_forward / 1852 / 60; + double dist_starboard = (double)m_settings.antenna_starboard / 1852 / 60; + m_radar_lat = dist_forward * cosine - dist_starboard * sine + m_ownship_lat; + m_radar_lon = (dist_forward * sine + dist_starboard * cosine) / cos(deg2rad(m_ownship_lat)) + m_ownship_lon; + } else { + m_radar_lat = m_ownship_lat; + m_radar_lon = m_ownship_lon; + } +} + +/** + * This is called whenever OpenCPN is drawing the chart, about halfway through its + * process, e.g. as the last part of RenderGLOverlay(), and by the timer. + * + * This happens on the main (GUI) thread. + */ +void br24radar_pi::ScheduleWindowRefresh() { + int drawTime = 0; + int millis; + + TimedControlUpdate(); // Update the controls. Method is self-limiting if called too often. + + for (int r = 0; r < RADARS; r++) { + drawTime += m_radar[r]->GetDrawTime(); + m_radar[r]->RefreshDisplay(); + } + + if (m_settings.refreshrate > 1 && drawTime < 500) { // 1 = 1 per s, 1000ms between draws, no additional refreshes + // 2 = 2 per s, 500ms + // 3 = 4 per s, 250ms + // 4 = 8 per s, 125ms + // 5 = 16 per s, 64ms + millis = (1000 - drawTime) / (1 << (m_settings.refreshrate - 1)) + drawTime; + + m_timer->StartOnce(millis); + LOG_VERBOSE(wxT("BR24radar_pi: rendering PPI window(s) took %dms, next extra render is in %dms"), drawTime, millis); + } else { + LOG_VERBOSE(wxT("BR24radar_pi: rendering PPI window(s) took %dms, refreshrate=%d, no next extra render"), drawTime, + m_settings.refreshrate); + } +} + +void br24radar_pi::OnTimerNotify(wxTimerEvent &event) { + if (m_settings.show) { // Is radar enabled? + LOG_INFO(wxT("BR24radar_pi: TIMER")); + + if (m_settings.chart_overlay >= 0) { + // If overlay is enabled schedule another chart draw. Note this will cause another call to RenderGLOverlay, + // which will then call ScheduleWindowRefresh again itself. + GetOCPNCanvasWindow()->Refresh(false); + } else { + ScheduleWindowRefresh(); + } + } +} + +// Called between 1 and 10 times per second by timer or RenderGLOverlay call +void br24radar_pi::TimedControlUpdate() { + wxLongLong now = wxGetUTCTimeMillis(); + if (!m_notify_control_dialog && !TIMED_OUT(now, m_notify_time_ms + 200)) { + return; // Don't run this more often than 5 times per second + } + m_notify_time_ms = now; + + bool updateAllControls = m_notify_control_dialog; + m_notify_control_dialog = false; + if (m_opengl_mode_changed || m_notify_radar_window_viz) { + m_opengl_mode_changed = false; + m_notify_radar_window_viz = false; + SetRadarWindowViz(true); + updateAllControls = true; + } else { + UpdateContextMenu(); + } + + UpdateHeadingPositionState(); + // Check the age of "radar_seen", if too old radar_seen = false bool any_data_seen = false; for (size_t r = 0; r < RADARS; r++) { - if (m_radar[r]->m_state.value == RADAR_TRANSMIT) { + int state = m_radar[r]->m_state.GetValue(); // Safe, protected by lock + if (state == RADAR_TRANSMIT) { any_data_seen = true; } + if (!m_settings.show // No radar shown + || state != RADAR_TRANSMIT // Radar not transmitting + || !m_bpos_set) { // No overlay possible (yet) + // Conditions for ARPA not fulfilled, delete all targets + m_radar[r]->m_arpa->RadarLost(); + } m_radar[r]->UpdateTransmitState(); } @@ -784,7 +969,9 @@ if (m_pMessageBox->IsShown() || (m_settings.verbose != 0)) { wxString t; for (size_t r = 0; r < RADARS; r++) { - if (m_radar[r]->m_state.value != RADAR_OFF) { + if (m_radar[r]->m_state.GetValue() != RADAR_OFF) { + wxCriticalSectionLocker lock(m_radar[r]->m_exclusive); + t << wxString::Format(wxT("%s\npackets %d/%d\nspokes %d/%d/%d\n"), m_radar[r]->m_name.c_str(), m_radar[r]->m_statistics.packets, m_radar[r]->m_statistics.broken_packets, m_radar[r]->m_statistics.spokes, m_radar[r]->m_statistics.broken_spokes, @@ -798,6 +985,17 @@ } } + // Always reset the counters, so they don't show huge numbers after IsShown changes + for (int r = 0; r < RADARS; r++) { + wxCriticalSectionLocker lock(m_radar[r]->m_exclusive); + + m_radar[r]->m_statistics.broken_packets = 0; + m_radar[r]->m_statistics.broken_spokes = 0; + m_radar[r]->m_statistics.missing_spokes = 0; + m_radar[r]->m_statistics.packets = 0; + m_radar[r]->m_statistics.spokes = 0; + } + wxString info; switch (m_heading_source) { case HEADING_NONE: @@ -844,12 +1042,7 @@ m_pMessageBox->UpdateMessage(false); for (int r = 0; r < RADARS; r++) { - m_radar[r]->UpdateControlState(false); - m_radar[r]->m_statistics.broken_packets = 0; - m_radar[r]->m_statistics.broken_spokes = 0; - m_radar[r]->m_statistics.missing_spokes = 0; - m_radar[r]->m_statistics.packets = 0; - m_radar[r]->m_statistics.spokes = 0; + m_radar[r]->UpdateControlState(updateAllControls); } UpdateState(); @@ -859,7 +1052,7 @@ RadarState state = RADAR_OFF; for (int r = 0; r < RADARS; r++) { - state = wxMax(state, (RadarState)m_radar[r]->m_state.value); + state = wxMax(state, (RadarState)m_radar[r]->m_state.GetValue()); } if (state == RADAR_OFF) { m_toolbar_button = TB_SEARCHING; @@ -877,6 +1070,17 @@ CheckTimedTransmit(state); } +void br24radar_pi::SetOpenGLMode(OpenGLMode mode) { + if (m_opengl_mode != mode) { + m_opengl_mode = mode; + // Can't hide/show the windows from here, this becomes recursive because the Chart display + // is managed by wxAuiManager as well. + m_opengl_mode_changed = true; + } +} + +wxGLContext *br24radar_pi::GetChartOpenGLContext() { return m_opencpn_gl_context; } + //************************************************************************************************** // Radar Image Graphic Display Processes //************************************************************************************************** @@ -888,76 +1092,77 @@ LOG_DIALOG(wxT("BR24radar_pi: RenderOverlay")); - if (m_opengl_mode) { - m_opengl_mode = false; - // Can't hide/show the windows from here, this becomes recursive because the Chart display - // is managed by wxAuiManager as well. - m_opengl_mode_changed = true; - } + SetOpenGLMode(OPENGL_OFF); return true; } // Called by Plugin Manager on main system process cycle bool br24radar_pi::RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp) { + double radar_lat, radar_lon; + if (!m_initialized) { return true; } - LOG_DIALOG(wxT("BR24radar_pi: RenderGLOverlay")); + LOG_DIALOG(wxT("BR24radar_pi: RenderGLOverlay context=%p"), pcontext); m_opencpn_gl_context = pcontext; if (!m_opencpn_gl_context && !m_opencpn_gl_context_broken) { LOG_INFO(wxT("BR24radar_pi: OpenCPN does not pass OpenGL context. Resize of OpenCPN window may be broken!")); } m_opencpn_gl_context_broken = m_opencpn_gl_context == 0; - if (!m_opengl_mode) { - m_opengl_mode = true; - // Can't hide/show the windows from here, this becomes recursive because the Chart display - // is managed by wxAuiManager as well. - m_opengl_mode_changed = true; + SetOpenGLMode(OPENGL_ON); + + if (vp->rotation != m_vp_rotation) { + wxCriticalSectionLocker lock(m_exclusive); + + m_cog_timeout = time(0) + m_COGAvgSec; + m_cog = m_COGAvg; + m_vp_rotation = vp->rotation; } - if (!m_settings.show // No radar shown - || m_settings.chart_overlay < 0 // No overlay desired - || m_radar[m_settings.chart_overlay]->m_state.value != RADAR_TRANSMIT // Radar not transmitting - || !m_bpos_set) { // No overlay possible (yet) - return true; + if (m_settings.show // Radar shown + && m_settings.chart_overlay >= 0 // Overlay desired + && m_radar[m_settings.chart_overlay]->m_state.GetValue() == RADAR_TRANSMIT // Radar transmitting + && GetRadarPosition(&radar_lat, &radar_lon)) { // Boat position known + + // Always compute m_auto_range_meters, possibly needed by SendState() called + // from DoTick(). + double max_distance = radar_distance(vp->lat_min, vp->lon_min, vp->lat_max, vp->lon_max, 'm'); + // max_distance is the length of the diagonal of the viewport. If the boat + // were centered, the max length to the edge of the screen is exactly half that. + double edge_distance = max_distance / 2.0; + int auto_range_meters = (int)edge_distance; + if (auto_range_meters < 50) { + auto_range_meters = 50; + } + + wxPoint boat_center; + GetCanvasPixLL(vp, &boat_center, radar_lat, radar_lon); + + m_radar[m_settings.chart_overlay]->SetAutoRangeMeters(auto_range_meters); + + // Calculate image scale factor + double llat, llon, ulat, ulon, dist_y, v_scale_ppm; + + GetCanvasLLPix(vp, wxPoint(0, vp->pix_height - 1), &ulat, &ulon); // is pix_height a mapable coordinate? + GetCanvasLLPix(vp, wxPoint(0, 0), &llat, &llon); + dist_y = radar_distance(llat, llon, ulat, ulon, 'm'); // Distance of height of display - meters + v_scale_ppm = 1.0; + if (dist_y > 0.) { + // v_scale_ppm = vertical pixels per meter + v_scale_ppm = vp->pix_height / dist_y; // pixel height of screen div by equivalent meters + } + + double rotation = fmod(rad2deg(vp->rotation + vp->skew * m_settings.skew_factor) + 720.0, 360); + + LOG_DIALOG(wxT("BR24radar_pi: RenderRadarOverlay lat=%g lon=%g v_scale_ppm=%g vp_rotation=%g skew=%g scale=%f rot=%g"), + vp->clat, vp->clon, vp->view_scale_ppm, vp->rotation, vp->skew, vp->chart_scale, rotation); + m_radar[m_settings.chart_overlay]->RenderRadarImage(boat_center, v_scale_ppm, rotation, true); } - // Always compute m_auto_range_meters, possibly needed by SendState() called - // from DoTick(). - double max_distance = radar_distance(vp->lat_min, vp->lon_min, vp->lat_max, vp->lon_max, 'm'); - // max_distance is the length of the diagonal of the viewport. If the boat - // were centered, the max length to the edge of the screen is exactly half that. - double edge_distance = max_distance / 2.0; - int auto_range_meters = (int)edge_distance; - if (auto_range_meters < 50) { - auto_range_meters = 50; - } - - wxPoint boat_center; - GetCanvasPixLL(vp, &boat_center, m_ownship_lat, m_ownship_lon); - - m_radar[m_settings.chart_overlay]->SetAutoRangeMeters(auto_range_meters); - - // Calculate image scale factor - double llat, llon, ulat, ulon, dist_y, v_scale_ppm; - - GetCanvasLLPix(vp, wxPoint(0, vp->pix_height - 1), &ulat, &ulon); // is pix_height a mapable coordinate? - GetCanvasLLPix(vp, wxPoint(0, 0), &llat, &llon); - dist_y = radar_distance(llat, llon, ulat, ulon, 'm'); // Distance of height of display - meters - v_scale_ppm = 1.0; - if (dist_y > 0.) { - // v_scale_ppm = vertical pixels per meter - v_scale_ppm = vp->pix_height / dist_y; // pixel height of screen div by equivalent meters - } - - double rotation = fmod(rad2deg(vp->rotation + vp->skew * m_settings.skew_factor) + 720.0, 360); - - LOG_DIALOG(wxT("BR24radar_pi: RenderRadarOverlay lat=%g lon=%g v_scale_ppm=%g vp_rotation=%g skew=%g scale=%f rot=%g"), vp->clat, - vp->clon, vp->view_scale_ppm, vp->rotation, vp->skew, vp->chart_scale, rotation); - m_radar[m_settings.chart_overlay]->RenderRadarImage(boat_center, v_scale_ppm, rotation, true); + ScheduleWindowRefresh(); return true; } @@ -971,21 +1176,30 @@ if (pConf) { pConf->SetPath(wxT("Settings")); - pConf->Read(wxT("OpenGL"), &m_opengl_mode, false); + pConf->Read(wxT("COGUPAvgSeconds"), &m_COGAvgSec, 15); + m_COGAvgSec = wxMin(m_COGAvgSec, MAX_COG_AVERAGE_SECONDS); // Bound the array size + for (int i = 0; i < m_COGAvgSec; i++) { + m_COGTable[i] = NAN; + } pConf->SetPath(wxT("/Plugins/BR24Radar")); + // Valgrind: This needs to be set before we set range, since that uses this + pConf->Read(wxT("RangeUnits"), &v, 0); + m_settings.range_units = (RangeUnits)wxMax(wxMin(v, 1), 0); + m_settings.range_unit_meters = (m_settings.range_units == RANGE_METRIC) ? 1000 : 1852; + if (pConf->Read(wxT("DisplayMode"), &v, 0)) { // v1.3 wxLogMessage(wxT("BR24radar_pi: Upgrading settings from v1.3 or lower")); pConf->Read(wxT("VerboseLog"), &m_settings.verbose, 0); - m_settings.verbose = wxMin(m_settings.verbose, 1); // Values over 1 are different now - pConf->Read(wxT("RunTimeOnIdle"), &m_settings.idle_run_time, 2); // Now is in seconds, not minutes - m_settings.idle_run_time *= 60; + m_settings.verbose = wxMax(m_settings.verbose, 1); // Values over 1 are different now + pConf->Read(wxT("RunTimeOnIdle"), &m_settings.idle_run_time, 2); + m_settings.idle_run_time = wxMax(m_settings.idle_run_time, 2); for (int r = 0; r < RADARS; r++) { - m_radar[r]->m_orientation.Update(0); + m_radar[r]->m_orientation.Update(ORIENTATION_HEAD_UP); m_radar[r]->m_boot_state.Update(0); - SetControlValue(r, CT_TARGET_TRAILS, 0); + SetControlValue(r, CT_TARGET_TRAILS, 0, 0); m_settings.show_radar[r] = true; LOG_DIALOG(wxT("BR24radar_pi: LoadConfig: show_radar[%d]=%d"), r, v); wxString s = (r) ? wxT("B") : wxT(""); @@ -1008,22 +1222,31 @@ pConf->Read(wxT("Enable_COG_heading"), &m_settings.enable_cog_heading, false); } else { pConf->Read(wxT("VerboseLog"), &m_settings.verbose, 0); - pConf->Read(wxT("RunTimeOnIdle"), &m_settings.idle_run_time, 120); + pConf->Read(wxT("RunTimeOnIdle"), &m_settings.idle_run_time, 1); + m_settings.idle_run_time = wxMax(m_settings.idle_run_time, 2); + for (int r = 0; r < RADARS; r++) { + pConf->Read(wxString::Format(wxT("Radar%dRange"), r), &v, 2000); + m_radar[r]->m_range.Update(v); pConf->Read(wxString::Format(wxT("Radar%dRotation"), r), &v, 0); + if (v == ORIENTATION_HEAD_UP) { + v = ORIENTATION_STABILIZED_UP; + } m_radar[r]->m_orientation.Update(v); pConf->Read(wxString::Format(wxT("Radar%dTransmit"), r), &v, 0); m_radar[r]->m_boot_state.Update(v); + pConf->Read(wxString::Format(wxT("Radar%dMinContourLength"), r), &m_radar[r]->m_min_contour_length, 6); pConf->Read(wxString::Format(wxT("Radar%dTrails"), r), &v, 0); - SetControlValue(r, CT_TARGET_TRAILS, v); + SetControlValue(r, CT_TARGET_TRAILS, v, 0); pConf->Read(wxString::Format(wxT("Radar%dTrueMotion"), r), &v, 0); - SetControlValue(r, CT_TRAILS_MOTION, v); + SetControlValue(r, CT_TRAILS_MOTION, v, 0); pConf->Read(wxString::Format(wxT("Radar%dWindowShow"), r), &m_settings.show_radar[r], r ? false : true); pConf->Read(wxString::Format(wxT("Radar%dWindowPosX"), r), &x, 30 + 540 * r); pConf->Read(wxString::Format(wxT("Radar%dWindowPosY"), r), &y, 120); m_settings.window_pos[r] = wxPoint(x, y); pConf->Read(wxString::Format(wxT("Radar%dControlShow"), r), &m_settings.show_radar_control[r], false); + pConf->Read(wxString::Format(wxT("Radar%dTargetShow"), r), &m_settings.show_radar_target[r], true); pConf->Read(wxString::Format(wxT("Radar%dControlPosX"), r), &x, OFFSCREEN_CONTROL_X); pConf->Read(wxString::Format(wxT("Radar%dControlPosY"), r), &y, OFFSCREEN_CONTROL_Y); m_settings.control_pos[r] = wxPoint(x, y); @@ -1033,8 +1256,9 @@ pConf->Read(wxString::Format(wxT("Radar%dZone%dEndBearing"), r, i), &m_radar[r]->m_guard_zone[i]->m_end_bearing, 0); pConf->Read(wxString::Format(wxT("Radar%dZone%dOuterRange"), r, i), &m_radar[r]->m_guard_zone[i]->m_outer_range, 0); pConf->Read(wxString::Format(wxT("Radar%dZone%dInnerRange"), r, i), &m_radar[r]->m_guard_zone[i]->m_inner_range, 0); - pConf->Read(wxString::Format(wxT("Radar%dZone%dFilter"), r, i), &m_radar[r]->m_guard_zone[i]->m_multi_sweep_filter, 0); pConf->Read(wxString::Format(wxT("Radar%dZone%dType"), r, i), &v, 0); + pConf->Read(wxString::Format(wxT("Radar%dZone%dAlarmOn"), r, i), &m_radar[r]->m_guard_zone[i]->m_alarm_on, 0); + pConf->Read(wxString::Format(wxT("Radar%dZone%dArpaOn"), r, i), &m_radar[r]->m_guard_zone[i]->m_arpa_on, 0); m_radar[r]->m_guard_zone[i]->SetType((GuardZoneType)v); } } @@ -1042,16 +1266,25 @@ pConf->Read(wxT("AlarmPosY"), &y, 175); m_settings.alarm_pos = wxPoint(x, y); pConf->Read(wxT("EnableCOGHeading"), &m_settings.enable_cog_heading, false); + pConf->Read(wxT("AISatARPAoffset"), &m_settings.AISatARPAoffset, 40); + if (m_settings.AISatARPAoffset < 10 || m_settings.AISatARPAoffset > 200) m_settings.AISatARPAoffset = 40; } pConf->Read(wxT("AlertAudioFile"), &m_settings.alert_audio_file, m_shareLocn + wxT("alarm.wav")); pConf->Read(wxT("ChartOverlay"), &m_settings.chart_overlay, 0); - pConf->Read(wxT("ColourStrong"), &s, "rgb(255,0,0)"); + pConf->Read(wxT("ColourStrong"), &s, "red"); m_settings.strong_colour = wxColour(s); - pConf->Read(wxT("ColourIntermediate"), &s, "rgb(0,255,0)"); + pConf->Read(wxT("ColourIntermediate"), &s, "green"); m_settings.intermediate_colour = wxColour(s); - pConf->Read(wxT("ColourWeak"), &s, "rgb(0,0,255)"); + pConf->Read(wxT("ColourWeak"), &s, "blue"); m_settings.weak_colour = wxColour(s); + pConf->Read(wxT("ColourArpaEdge"), &s, "white"); + m_settings.arpa_colour = wxColour(s); + pConf->Read(wxT("ColourAISText"), &s, "rgb(100,100,100)"); + m_settings.ais_text_colour = wxColour(s); + pConf->Read(wxT("ColourPPIBackground"), &s, "rgb(0,0,50)"); + m_settings.ppi_background_colour = wxColour(s); + pConf->Read(wxT("DeveloperMode"), &m_settings.developer_mode, false); pConf->Read(wxT("DrawingMethod"), &m_settings.drawing_method, 0); pConf->Read(wxT("EmulatorOn"), &m_settings.emulator_on, false); pConf->Read(wxT("EnableDualRadar"), &m_settings.enable_dual_radar, false); @@ -1062,12 +1295,12 @@ pConf->Read(wxT("GuardZonesThreshold"), &m_settings.guard_zone_threshold, 5L); pConf->Read(wxT("IgnoreRadarHeading"), &m_settings.ignore_radar_heading, 0); pConf->Read(wxT("MainBangSize"), &m_settings.main_bang_size, 0); + pConf->Read(wxT("ShowExtremeRange"), &m_settings.show_extreme_range, false); + pConf->Read(wxT("AntennaForward"), &m_settings.antenna_forward, 0); + pConf->Read(wxT("AntennaStarboard"), &m_settings.antenna_starboard, 0); pConf->Read(wxT("MenuAutoHide"), &m_settings.menu_auto_hide, 0); pConf->Read(wxT("PassHeadingToOCPN"), &m_settings.pass_heading_to_opencpn, false); pConf->Read(wxT("RadarInterface"), &m_settings.mcast_address); - pConf->Read(wxT("RangeUnits"), &v, 0); - m_settings.range_units = (RangeUnits)wxMax(wxMin(v, 1), 0); - m_settings.range_unit_meters = (m_settings.range_units == RANGE_METRIC) ? 1000 : 1852; pConf->Read(wxT("Refreshrate"), &m_settings.refreshrate, 3); pConf->Read(wxT("ReverseZoom"), &m_settings.reverse_zoom, false); pConf->Read(wxT("ScanMaxAge"), &m_settings.max_age, 6); @@ -1077,7 +1310,6 @@ // Make room for BLOB_HISTORY_MAX history values m_settings.threshold_blue = MAX(m_settings.threshold_blue, BLOB_HISTORY_MAX + 1); pConf->Read(wxT("ThresholdGreen"), &m_settings.threshold_green, 100); - pConf->Read(wxT("ThresholdMultiSweep"), &m_settings.threshold_multi_sweep, 20); pConf->Read(wxT("ThresholdRed"), &m_settings.threshold_red, 200); pConf->Read(wxT("TrailColourStart"), &s, "rgb(255,255,255)"); m_settings.trail_start_colour = wxColour(s); @@ -1106,6 +1338,7 @@ pConf->Write(wxT("AlarmPosY"), m_settings.alarm_pos.y); pConf->Write(wxT("AlertAudioFile"), m_settings.alert_audio_file); pConf->Write(wxT("ChartOverlay"), m_settings.chart_overlay); + pConf->Write(wxT("DeveloperMode"), m_settings.developer_mode); pConf->Write(wxT("DrawingMethod"), m_settings.drawing_method); pConf->Write(wxT("EmulatorOn"), m_settings.emulator_on); pConf->Write(wxT("EnableCOGHeading"), m_settings.enable_cog_heading); @@ -1117,6 +1350,9 @@ pConf->Write(wxT("GuardZonesThreshold"), m_settings.guard_zone_threshold); pConf->Write(wxT("IgnoreRadarHeading"), m_settings.ignore_radar_heading); pConf->Write(wxT("MainBangSize"), m_settings.main_bang_size); + pConf->Write(wxT("ShowExtremeRange"), m_settings.show_extreme_range); + pConf->Write(wxT("AntennaForward"), m_settings.antenna_forward); + pConf->Write(wxT("AntennaStarboard"), m_settings.antenna_starboard); pConf->Write(wxT("MenuAutoHide"), m_settings.menu_auto_hide); pConf->Write(wxT("PassHeadingToOCPN"), m_settings.pass_heading_to_opencpn); pConf->Write(wxT("RadarInterface"), m_settings.mcast_address); @@ -1129,25 +1365,34 @@ pConf->Write(wxT("SkewFactor"), m_settings.skew_factor); pConf->Write(wxT("ThresholdBlue"), m_settings.threshold_blue); pConf->Write(wxT("ThresholdGreen"), m_settings.threshold_green); - pConf->Write(wxT("ThresholdMultiSweep"), m_settings.threshold_multi_sweep); pConf->Write(wxT("ThresholdRed"), m_settings.threshold_red); pConf->Write(wxT("TrailColourStart"), m_settings.trail_start_colour.GetAsString()); pConf->Write(wxT("TrailColourEnd"), m_settings.trail_end_colour.GetAsString()); pConf->Write(wxT("TrailsOnOverlay"), m_settings.trails_on_overlay); pConf->Write(wxT("Transparency"), m_settings.overlay_transparency); pConf->Write(wxT("VerboseLog"), m_settings.verbose); + pConf->Write(wxT("AISatARPAoffset"), m_settings.AISatARPAoffset); + pConf->Write(wxT("ColourStrong"), m_settings.strong_colour.GetAsString()); + pConf->Write(wxT("ColourIntermediate"), m_settings.intermediate_colour.GetAsString()); + pConf->Write(wxT("ColourWeak"), m_settings.weak_colour.GetAsString()); + pConf->Write(wxT("ColourArpaEdge"), m_settings.arpa_colour.GetAsString()); + pConf->Write(wxT("ColourAISText"), m_settings.ais_text_colour.GetAsString()); + pConf->Write(wxT("ColourPPIBackground"), m_settings.ppi_background_colour.GetAsString()); for (int r = 0; r < RADARS; r++) { - pConf->Write(wxString::Format(wxT("Radar%dRotation"), r), m_radar[r]->m_orientation.value); - pConf->Write(wxString::Format(wxT("Radar%dTransmit"), r), m_radar[r]->m_state.value); + pConf->Write(wxString::Format(wxT("Radar%dRange"), r), m_radar[r]->m_range.GetValue()); + pConf->Write(wxString::Format(wxT("Radar%dRotation"), r), m_radar[r]->m_orientation.GetValue()); + pConf->Write(wxString::Format(wxT("Radar%dTransmit"), r), m_radar[r]->m_state.GetValue()); pConf->Write(wxString::Format(wxT("Radar%dWindowShow"), r), m_settings.show_radar[r]); pConf->Write(wxString::Format(wxT("Radar%dControlShow"), r), m_settings.show_radar_control[r]); - pConf->Write(wxString::Format(wxT("Radar%dTrails"), r), m_radar[r]->m_target_trails.value); - pConf->Write(wxString::Format(wxT("Radar%dTrueMotion"), r), m_radar[r]->m_trails_motion.value); + pConf->Write(wxString::Format(wxT("Radar%dTargetShow"), r), m_settings.show_radar_target[r]); + pConf->Write(wxString::Format(wxT("Radar%dTrails"), r), m_radar[r]->m_target_trails.GetValue()); + pConf->Write(wxString::Format(wxT("Radar%dTrueMotion"), r), m_radar[r]->m_trails_motion.GetValue()); pConf->Write(wxString::Format(wxT("Radar%dWindowPosX"), r), m_settings.window_pos[r].x); pConf->Write(wxString::Format(wxT("Radar%dWindowPosY"), r), m_settings.window_pos[r].y); pConf->Write(wxString::Format(wxT("Radar%dControlPosX"), r), m_settings.control_pos[r].x); pConf->Write(wxString::Format(wxT("Radar%dControlPosY"), r), m_settings.control_pos[r].y); + pConf->Write(wxString::Format(wxT("Radar%dMinContourLength"), r), m_radar[r]->m_min_contour_length); // LOG_DIALOG(wxT("BR24radar_pi: SaveConfig: show_radar[%d]=%d"), r, m_settings.show_radar[r]); for (int i = 0; i < GUARD_ZONES; i++) { @@ -1156,7 +1401,8 @@ pConf->Write(wxString::Format(wxT("Radar%dZone%dOuterRange"), r, i), m_radar[r]->m_guard_zone[i]->m_outer_range); pConf->Write(wxString::Format(wxT("Radar%dZone%dInnerRange"), r, i), m_radar[r]->m_guard_zone[i]->m_inner_range); pConf->Write(wxString::Format(wxT("Radar%dZone%dType"), r, i), (int)m_radar[r]->m_guard_zone[i]->m_type); - pConf->Write(wxString::Format(wxT("Radar%dZone%dFilter"), r, i), m_radar[r]->m_guard_zone[i]->m_multi_sweep_filter); + pConf->Write(wxString::Format(wxT("Radar%dZone%dAlarmOn"), r, i), m_radar[r]->m_guard_zone[i]->m_alarm_on); + pConf->Write(wxString::Format(wxT("Radar%dZone%dArpaOn"), r, i), m_radar[r]->m_guard_zone[i]->m_arpa_on); } } @@ -1169,11 +1415,9 @@ } void br24radar_pi::SetMcastIPAddress(wxString &address) { - { - wxCriticalSectionLocker lock(m_exclusive); + wxCriticalSectionLocker lock(m_exclusive); - m_settings.mcast_address = address; - } + m_settings.mcast_address = address; if (m_pMessageBox) { m_pMessageBox->SetMcastIPAddress(address); } @@ -1183,9 +1427,10 @@ void br24radar_pi::SetPositionFix(PlugIn_Position_Fix &pfix) {} void br24radar_pi::SetPositionFixEx(PlugIn_Position_Fix_Ex &pfix) { + wxCriticalSectionLocker lock(m_exclusive); + time_t now = time(0); wxString info; - if (m_var_source <= VARIATION_SOURCE_FIX && !wxIsNaN(pfix.Var) && (fabs(pfix.Var) > 0.0 || m_var == 0.0)) { if (m_var_source < VARIATION_SOURCE_FIX || fabs(pfix.Var - m_var) > 0.05) { LOG_VERBOSE(wxT("BR24radar_pi: Position fix provides new magnetic variation %f"), pfix.Var); @@ -1204,7 +1449,7 @@ if (!wxIsNaN(pfix.Hdt)) { if (m_heading_source < HEADING_FIX_HDT) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now HDT from OpenCPN (%d->%d)"), m_heading_source, HEADING_FIX_HDT); + LOG_VERBOSE(wxT("BR24radar_pi: Heading source is now HDT from OpenCPN (%d->%d)"), m_heading_source, HEADING_FIX_HDT); m_heading_source = HEADING_FIX_HDT; } if (m_heading_source == HEADING_FIX_HDT) { @@ -1213,7 +1458,7 @@ } } else if (!wxIsNaN(pfix.Hdm) && NOT_TIMED_OUT(now, m_var_timeout)) { if (m_heading_source < HEADING_FIX_HDM) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now HDM from OpenCPN + VAR (%d->%d)"), m_heading_source, HEADING_FIX_HDM); + LOG_VERBOSE(wxT("BR24radar_pi: Heading source is now HDM from OpenCPN + VAR (%d->%d)"), m_heading_source, HEADING_FIX_HDM); m_heading_source = HEADING_FIX_HDM; } if (m_heading_source == HEADING_FIX_HDM) { @@ -1223,7 +1468,7 @@ } } else if (!wxIsNaN(pfix.Cog) && m_settings.enable_cog_heading) { if (m_heading_source < HEADING_FIX_COG) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now COG from OpenCPN (%d->%d)"), m_heading_source, HEADING_FIX_COG); + LOG_VERBOSE(wxT("BR24radar_pi: Heading source is now COG from OpenCPN (%d->%d)"), m_heading_source, HEADING_FIX_COG); m_heading_source = HEADING_FIX_COG; } if (m_heading_source == HEADING_FIX_COG) { @@ -1235,28 +1480,77 @@ if (pfix.FixTime > 0 && NOT_TIMED_OUT(now, pfix.FixTime + WATCHDOG_TIMEOUT)) { m_ownship_lat = pfix.Lat; m_ownship_lon = pfix.Lon; + if (!m_bpos_set) { - LOG_INFO(wxT("BR24radar_pi: GPS position is now known")); + LOG_VERBOSE(wxT("BR24radar_pi: GPS position is now known")); } m_bpos_set = true; m_bpos_timestamp = now; } + + if (!wxIsNaN(pfix.Cog)) { + UpdateCOGAvg(pfix.Cog); + } + if (TIMED_OUT(now, m_cog_timeout)) { + m_cog_timeout = now + m_COGAvgSec; + m_cog = m_COGAvg; + } +} + +void br24radar_pi::UpdateCOGAvg(double cog) { + // This is a straight copy (except for formatting) of the code in + // OpenCPN/src/chart1.cpp MyFrame::PostProcessNNEA + if (m_COGAvgSec > 0) { + // Make a hole + for (int i = m_COGAvgSec - 1; i > 0; i--) { + m_COGTable[i] = m_COGTable[i - 1]; + } + m_COGTable[0] = cog; + + double sum = 0., count = 0; + for (int i = 0; i < m_COGAvgSec; i++) { + double adder = m_COGTable[i]; + if (wxIsNaN(adder)) { + continue; + } + if (fabs(adder - m_COGAvg) > 180.) { + if ((adder - m_COGAvg) > 0.) { + adder -= 360.; + } else { + adder += 360.; + } + } + + sum += adder; + count++; + } + sum /= count; + + if (sum < 0.) { + sum += 360.; + } else if (sum >= 360.) { + sum -= 360.; + } + m_COGAvg = sum; + } else { + m_COGAvg = cog; + } } void br24radar_pi::SetPluginMessage(wxString &message_id, wxString &message_body) { static const wxString WMM_VARIATION_BOAT = wxString(_T("WMM_VARIATION_BOAT")); wxString info; - if (message_id.Cmp(WMM_VARIATION_BOAT) == 0) { wxJSONReader reader; wxJSONValue message; if (!reader.Parse(message_body, &message)) { + wxCriticalSectionLocker lock(m_exclusive); wxJSONValue defaultValue(360); double variation = message.Get(_T("Decl"), defaultValue).AsDouble(); if (variation != 360.0) { if (m_var_source != VARIATION_SOURCE_WMM) { - LOG_INFO(wxT("BR24radar_pi: WMM plugin provides new magnetic variation %f"), variation); + LOG_VERBOSE(wxT("BR24radar_pi: WMM plugin provides new magnetic variation %f"), variation); } m_var = variation; m_var_source = VARIATION_SOURCE_WMM; @@ -1268,29 +1562,121 @@ } } } + } else if (message_id == wxS("AIS") || m_ais_in_arpa_zone.size() > 0) { + // Check if any Radar and ARPA zone is active + double ArpaMaxRange = 0.0; + bool ArpaGuardOn = false; + for (size_t r = 0; r < RADARS; r++) { + if (m_radar[r]->m_state.GetValue() != RADAR_OFF) { // One radar is on. Check for guardzones + for (int i = 0; i < RADARS; i++) { + for (int z = 0; z < GUARD_ZONES; z++) { + if (m_radar[i]->m_guard_zone[z]->m_arpa_on) { + ArpaGuardOn = true; + int t = m_radar[i]->m_guard_zone[z]->m_outer_range; + if (t > ArpaMaxRange) ArpaMaxRange = t; + } + } + } + break; + } + } + if (ArpaGuardOn) { + wxJSONReader reader; + wxJSONValue message; + if (!reader.Parse(message_body, &message)) { + wxJSONValue defaultValue(999); + long json_ais_mmsi = message.Get(_T("mmsi"), defaultValue).AsLong(); + if (json_ais_mmsi > 200000000) { // Neither ARPA targets nor SAR_aircraft + wxJSONValue defaultValue("90.0"); + double f_AISLat = wxAtof(message.Get(_T("lat"), defaultValue).AsString()); + double f_AISLon = wxAtof(message.Get(_T("lon"), defaultValue).AsString()); + // Rectangle around own ship to look for AIS targets. + double d_side = ArpaMaxRange / 1852.0 / 60.0; + if (f_AISLat < (m_radar_lat + d_side) && f_AISLat > (m_radar_lat - d_side) && f_AISLon < (m_radar_lon + d_side * 2) && + f_AISLon > (m_radar_lon - d_side * 2)) { + bool updated = false; + for (size_t i = 0; i < m_ais_in_arpa_zone.size(); i++) { // Check for existing mmsi + if (m_ais_in_arpa_zone[i].ais_mmsi == json_ais_mmsi) { + m_ais_in_arpa_zone[i].ais_time_upd = time(0); + m_ais_in_arpa_zone[i].ais_lat = f_AISLat; + m_ais_in_arpa_zone[i].ais_lon = f_AISLon; + updated = true; + break; + } + } + if (!updated) { // Add a new target + AisArpa m_new_ais_target; + m_new_ais_target.ais_mmsi = json_ais_mmsi; + m_new_ais_target.ais_time_upd = time(0); + m_new_ais_target.ais_lat = f_AISLat; + m_new_ais_target.ais_lon = f_AISLon; + m_ais_in_arpa_zone.push_back(m_new_ais_target); + } + } + } + } + } + // Delete > 3 min old AIS items or at once if neither active ARPA zone nor Radar + if (m_ais_in_arpa_zone.size() > 0) { + for (size_t i = 0; i < m_ais_in_arpa_zone.size(); i++) { + if (m_ais_in_arpa_zone[i].ais_mmsi > 0 && ((time(0) - m_ais_in_arpa_zone[i].ais_time_upd) > (3 * 60) || !ArpaGuardOn)) { + m_ais_in_arpa_zone.erase(m_ais_in_arpa_zone.begin() + i); + } + } + } + } +} + +bool br24radar_pi::FindAIS_at_arpaPos(const double &lat, const double &lon, const double &dist) { + if (m_ais_in_arpa_zone.size() < 1) return false; + bool hit = false; + double offset = dist / 1852. / 60.; + for (size_t i = 0; i < m_ais_in_arpa_zone.size(); i++) { + if (m_ais_in_arpa_zone[i].ais_mmsi != 0) { // Avtive post + if (lat + offset > m_ais_in_arpa_zone[i].ais_lat && lat - offset < m_ais_in_arpa_zone[i].ais_lat && + lon + (offset * 1.75) > m_ais_in_arpa_zone[i].ais_lon && lon - (offset * 1.75) < m_ais_in_arpa_zone[i].ais_lon) { + hit = true; + break; + } + } } + return hit; } -bool br24radar_pi::SetControlValue(int radar, ControlType controlType, int value) { // sends the command to the radar +bool br24radar_pi::SetControlValue(int radar, ControlType controlType, int value, + int autoValue) { // sends the command to the radar LOG_TRANSMIT(wxT("BR24radar_pi: %s set %s = %d"), m_radar[radar]->m_name.c_str(), ControlTypeNames[controlType].c_str(), value); switch (controlType) { case CT_TRANSPARENCY: { m_settings.overlay_transparency = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar return true; } case CT_SCAN_AGE: { m_settings.max_age = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar return true; } case CT_TIMED_IDLE: { m_settings.timed_idle = value; - m_idle_standby = time(0) + 5; + m_idle_standby = 0; m_idle_transmit = 0; - CheckTimedTransmit(RADAR_TRANSMIT); + if (m_radar[0]->m_state.GetValue() == RADAR_TRANSMIT || m_radar[1]->m_state.GetValue() == RADAR_TRANSMIT) { + m_idle_standby = time(0) + 10; + } else { + m_idle_transmit = time(0) + 10; + } + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar + return true; + } + case CT_TIMED_RUN: { + m_settings.idle_run_time = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar return true; } case CT_REFRESHRATE: { m_settings.refreshrate = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar return true; } case CT_TARGET_TRAILS: { @@ -1301,15 +1687,30 @@ } case CT_TRAILS_MOTION: { m_radar[radar]->m_trails_motion.Update(value); + m_radar[radar]->ComputeColourMap(); + m_radar[radar]->ComputeTargetTrails(); return true; } case CT_MAIN_BANG_SIZE: { m_settings.main_bang_size = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar + return true; + } + + case CT_ANTENNA_FORWARD: { + m_settings.antenna_forward = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar + return true; + } + + case CT_ANTENNA_STARBOARD: { + m_settings.antenna_starboard = value; + m_radar[1 - radar]->UpdateControlState(true); // Update the controls in the other radar return true; } default: { - if (m_radar[radar]->SetControlValue(controlType, value)) { + if (m_radar[radar]->SetControlValue(controlType, value, autoValue)) { return true; } } @@ -1379,7 +1780,7 @@ var = -m_NMEA0183.Hdg.MagneticVariationDegrees; } if (fabs(var - m_var) >= 0.05 && m_var_source <= VARIATION_SOURCE_NMEA) { - LOG_INFO(wxT("BR24radar_pi: NMEA provides new magnetic variation %f from %s"), var, sentence.c_str()); + // LOG_INFO(wxT("BR24radar_pi: NMEA provides new magnetic variation %f from %s"), var, sentence.c_str()); m_var = var; m_var_source = VARIATION_SOURCE_NMEA; m_var_timeout = now + WATCHDOG_TIMEOUT; @@ -1401,8 +1802,9 @@ if (!wxIsNaN(hdt)) { if (m_heading_source < HEADING_NMEA_HDT) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now HDT %d from NMEA %s (%d->%d)"), m_hdt, sentence.c_str(), m_heading_source, - HEADING_NMEA_HDT); + // LOG_INFO(wxT("BR24radar_pi: Heading source is now HDT %d from NMEA %s (%d->%d)"), m_hdt, sentence.c_str(), + // m_heading_source, + // HEADING_NMEA_HDT); Crashes!!! m_heading_source = HEADING_NMEA_HDT; } if (m_heading_source == HEADING_NMEA_HDT) { @@ -1411,8 +1813,8 @@ } } else if (!wxIsNaN(hdm) && NOT_TIMED_OUT(now, m_var_timeout)) { if (m_heading_source < HEADING_NMEA_HDM) { - LOG_INFO(wxT("BR24radar_pi: Heading source is now HDM %f + VAR %f from NMEA %s (%d->%d)"), hdm, m_var, sentence.c_str(), - m_heading_source, HEADING_NMEA_HDT); + // LOG_INFO(wxT("BR24radar_pi: Heading source is now HDM %f + VAR %f from NMEA %s (%d->%d)"), hdm, m_var, sentence.c_str(), + // m_heading_source, HEADING_NMEA_HDT); m_heading_source = HEADING_NMEA_HDM; } if (m_heading_source == HEADING_NMEA_HDM) { diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24radar_pi.h opencpn-plugin-br24radar-3.0.1/src/br24radar_pi.h --- opencpn-plugin-br24radar-2.1.0/src/br24radar_pi.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24radar_pi.h 2017-09-24 10:58:54.000000000 +0000 @@ -33,15 +33,29 @@ #define _BR24RADARPI_H_ #define MY_API_VERSION_MAJOR 1 -#define MY_API_VERSION_MINOR 12 +#define MY_API_VERSION_MINOR 14 // Needed for PluginAISDrawGL(). -#include "pi_common.h" +#include #include "jsonreader.h" -#include "version.h" #include "nmea0183/nmea0183.h" +#include "pi_common.h" +#include "version.h" + +// Load the ocpn_plugin. On OS X this generates many warnings, suppress these. +#ifdef __WXOSX__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Woverloaded-virtual" +#endif +#include "ocpn_plugin.h" +#ifdef __WXOSX__ +#pragma clang diagnostic pop +#endif PLUGIN_BEGIN_NAMESPACE +// Define the following to make sure we have no race conditions during thread stop. +// #define TEST_THREAD_RACES + // Forward definitions class GuardZone; class RadarInfo; @@ -53,18 +67,15 @@ class br24Transmit; class br24radar_pi; class GuardZoneBogey; +class RadarArpa; -#define SPOKES (4096) // BR radars can generate up to 4096 spokes per rotation, -#define LINES_PER_ROTATION (2048) // but use only half that in practice -#define RETURNS_PER_LINE (512) // BR radars generate 512 separate values per range, at 8 bits each -#define DEGREES_PER_ROTATION (360) // Classical math -#define RADARS (2) // Number of radars supported by this PI. 2 since 4G supports 2. More work - // needed if you intend to add multiple radomes to network! -#define GUARD_ZONES (2) // Could be increased if wanted -#define BEARING_LINES (2) // And these as well +#define RADARS (2) // Number of radars supported by this PI. 2 since 4G supports 2. More work + // needed if you intend to add multiple radomes to network! +#define GUARD_ZONES (2) // Could be increased if wanted +#define BEARING_LINES (2) // And these as well static const int SECONDS_PER_TIMED_IDLE_SETTING = 5 * 60; // 5 minutes increment for each setting -static const int SECONDS_PER_TRANSMIT_BURST = 30; +static const int SECONDS_PER_TIMED_RUN_SETTING = 10; #define OPENGL_ROTATION (-90.0) // Difference between 'up' and OpenGL 'up'... @@ -89,6 +100,8 @@ #define TIMED_OUT(t, timeout) (t >= timeout) #define NOT_TIMED_OUT(t, timeout) (!TIMED_OUT(t, timeout)) +#define VALID_GEO(x) (!isnan(x) && x >= -360.0 && x <= +360.0) + #ifndef M_SETTINGS #define M_SETTINGS m_pi->m_settings #endif @@ -98,6 +111,7 @@ #define LOGLEVEL_TRANSMIT 4 #define LOGLEVEL_RECEIVE 8 #define LOGLEVEL_GUARD 16 +#define LOGLEVEL_ARPA 32 #define IF_LOG_AT_LEVEL(x) if ((M_SETTINGS.verbose & x) != 0) #define IF_LOG_AT(x, y) \ do { \ @@ -109,6 +123,7 @@ #define LOG_TRANSMIT IF_LOG_AT_LEVEL(LOGLEVEL_TRANSMIT) wxLogMessage #define LOG_RECEIVE IF_LOG_AT_LEVEL(LOGLEVEL_RECEIVE) wxLogMessage #define LOG_GUARD IF_LOG_AT_LEVEL(LOGLEVEL_GUARD) wxLogMessage +#define LOG_ARPA IF_LOG_AT_LEVEL(LOGLEVEL_ARPA) wxLogMessage enum { BM_ID_RED, BM_ID_RED_SLAVE, BM_ID_GREEN, BM_ID_GREEN_SLAVE, BM_ID_AMBER, BM_ID_AMBER_SLAVE, BM_ID_BLANK, BM_ID_BLANK_SLAVE }; @@ -152,9 +167,12 @@ CT_SCAN_SPEED, CT_SCAN_AGE, CT_TIMED_IDLE, + CT_TIMED_RUN, CT_BEARING_ALIGNMENT, CT_SIDE_LOBE_SUPPRESSION, CT_ANTENNA_HEIGHT, + CT_ANTENNA_FORWARD, + CT_ANTENNA_STARBOARD, CT_LOCAL_INTERFERENCE_REJECTION, CT_TARGET_TRAILS, CT_TRAILS_MOTION, @@ -177,15 +195,18 @@ "Scan speed", "Scan age", "Timed idle", + "Running time", "Bearing alignment", "Side lobe suppression", "Antenna height", + "Antenna forward of GPS", + "Antenna starboard of GPS", "Local interference rejection", "Target trails", "Target trails motion", "Main bang size"}; -typedef enum GuardZoneType { GZ_OFF, GZ_ARC, GZ_CIRCLE } GuardZoneType; +typedef enum GuardZoneType { GZ_ARC, GZ_CIRCLE } GuardZoneType; typedef enum RadarType { RT_UNKNOWN, RT_BR24, RT_3G, RT_4G } RadarType; @@ -238,6 +259,7 @@ enum DisplayModeType { DM_CHART_OVERLAY, DM_CHART_NONE }; enum ToolbarIconColor { TB_NONE, TB_HIDDEN, TB_SEARCHING, TB_SEEN, TB_STANDBY, TB_ACTIVE }; enum VariationSource { VARIATION_SOURCE_NONE, VARIATION_SOURCE_NMEA, VARIATION_SOURCE_FIX, VARIATION_SOURCE_WMM }; +enum OpenGLMode { OPENGL_UNKOWN, OPENGL_OFF, OPENGL_ON }; static const int RangeUnitsToMeters[2] = {1852, 1000}; @@ -265,7 +287,7 @@ * some of it is 'secret' and can only be set by manipulating the ini file directly. */ struct PersistentSettings { - int overlay_transparency; + int overlay_transparency; // How transparent is the radar picture over the chart int range_index; // index into range array, see RadarInfo.cpp int verbose; // Loglevel 0..4. int guard_zone_threshold; // How many blobs must be sent by radar before we fire alarm @@ -279,27 +301,33 @@ int range_unit_meters; // ... 1852 or 1000, depending on range_units int max_age; // Scans older than this in seconds will be removed int timed_idle; // 0 = off, 1 = 5 mins, etc. to 7 = 35 mins - int idle_run_time; // how long, in seconds, should a idle run be? Value < 30 is ignored set to 30. + int idle_run_time; // 0 = 10s, 1 = 30s, 2 = 1 min int refreshrate; // How quickly to refresh the display + int chart_overlay; // -1 = none, otherwise = radar number + int menu_auto_hide; // 0 = none, 1 = 10s, 2 = 30s + int drawing_method; // VertexBuffer, Shader, etc. + bool developer_mode; // Readonly from config, allows head up mode bool show; // whether to show any radar (overlay or window) bool show_radar[RADARS]; // whether to show radar window - bool show_radar_control[RADARS]; // whether to show radar window + bool show_radar_control[RADARS]; // whether to show radar menu (control) window + bool show_radar_target[RADARS]; // whether to show AIS and ARPA targets on radar window bool transmit_radar[RADARS]; // whether radar should be transmitting (persistent) - int chart_overlay; // -1 = none, otherwise = radar number - int menu_auto_hide; // 0 = none, 1 = 10s, 2 = 30s bool pass_heading_to_opencpn; // Pass heading coming from radar as NMEA data to OpenCPN bool enable_cog_heading; // Allow COG as heading. Should be taken out back and shot. bool enable_dual_radar; // Should the dual radar be enabled for 4G? bool emulator_on; // Emulator, useful when debugging without radar - int drawing_method; // VertexBuffer, Shader, etc. bool ignore_radar_heading; // For testing purposes bool reverse_zoom; // false = normal, true = reverse + bool show_extreme_range; // Show red ring at extreme range and center int threshold_red; // Radar data has to be this strong to show as STRONG int threshold_green; // Radar data has to be this strong to show as INTERMEDIATE int threshold_blue; // Radar data has to be this strong to show as WEAK int threshold_multi_sweep; // Radar data has to be this strong not to be ignored in multisweep int main_bang_size; // Pixels at center to ignore + int antenna_starboard; // Ofsett of radar antenne starboard of GPS antenna + int antenna_forward; // Ofsett of radar antenne forward of GPS antenna int type_detection_method; // 0 = default, 1 = ignore reports + int AISatARPAoffset; // Rectangle side where to search AIS targets at ARPA position wxPoint control_pos[RADARS]; // Saved position of control menu windows wxPoint window_pos[RADARS]; // Saved position of radar windows, when floating and not docked wxPoint alarm_pos; // Saved position of alarm window @@ -310,6 +338,9 @@ wxColour strong_colour; // Colour for STRONG returns wxColour intermediate_colour; // Colour for INTERMEDIATE returns wxColour weak_colour; // Colour for WEAK returns + wxColour arpa_colour; // Colour for ARPA edges + wxColour ais_text_colour; // Colour for AIS texts + wxColour ppi_background_colour; // Colour for PPI background (normally very dark) }; struct scan_line { @@ -323,6 +354,16 @@ // a 1 is added in the rightmost position, if below threshold, a 0. }; +// Table for AIS targets inside ARPA zone +struct AisArpa { + long ais_mmsi; + time_t ais_time_upd; + double ais_lat; + double ais_lon; + + AisArpa() : ais_mmsi(0), ais_time_upd(), ais_lat(), ais_lon() {} +}; + //---------------------------------------------------------------------------------------------------------- // The PlugIn Class Definition //---------------------------------------------------------------------------------------------------------- @@ -334,7 +375,7 @@ INSTALLS_TOOLBAR_TOOL | USES_AUI_MANAGER | WANTS_CONFIG | WANTS_NMEA_EVENTS | WANTS_NMEA_SENTENCES | WANTS_PREFERENCES | \ WANTS_PLUGIN_MESSAGING | WANTS_CURSOR_LATLON | WANTS_MOUSE_EVENTS) -class br24radar_pi : public opencpn_plugin_112 { +class br24radar_pi : public opencpn_plugin_114, public wxEvtHandler { public: br24radar_pi(void *ppimgr); ~br24radar_pi(); @@ -368,14 +409,12 @@ void ShowPreferencesDialog(wxWindow *parent); void SetCursorLatLon(double lat, double lon); bool MouseEventHook(wxMouseEvent &event); - - // The wxTimer overrides - - void Notify(); + bool m_guard_bogey_confirmed; // Other public methods void NotifyRadarWindowViz(); + void NotifyControlDialog(); void OnControlDialogClose(RadarInfo *ri); void SetDisplayMode(DisplayModeType mode); @@ -384,12 +423,11 @@ void ShowGuardZoneDialog(int radar, int zone); void OnGuardZoneDialogClose(RadarInfo *ri); void ConfirmGuardZoneBogeys(); + void ResetOpenGLContext(); - bool SetControlValue(int radar, ControlType controlType, int value); + bool SetControlValue(int radar, ControlType controlType, int value, int autoValue); - // Various state decisions bool IsRadarOnScreen(int radar) { return m_settings.show && (m_settings.show_radar[radar] || m_settings.chart_overlay == radar); } - bool IsOverlayOnScreen(int radar) { return m_settings.show && m_settings.chart_overlay == radar; } bool LoadConfig(); bool SaveConfig(); @@ -397,15 +435,54 @@ long GetRangeMeters(); long GetOptimalRangeMeters(); + wxString GetTimedIdleText(); wxString GetGuardZoneText(RadarInfo *ri); void SetMcastIPAddress(wxString &msg); + wxString GetMcastIPAddress() { + wxCriticalSectionLocker lock(m_exclusive); + return m_settings.mcast_address; + } void SetRadarHeading(double heading = nan(""), bool isTrue = false); + double GetHeadingTrue() { + wxCriticalSectionLocker lock(m_exclusive); + return m_hdt; + } + time_t GetHeadingTrueTimeout() { + wxCriticalSectionLocker lock(m_exclusive); + return m_hdt_timeout; + } + time_t GetHeadingMagTimeout() { + wxCriticalSectionLocker lock(m_exclusive); + return m_hdm_timeout; + } + VariationSource GetVariationSource() { + wxCriticalSectionLocker lock(m_exclusive); + return m_var_source; + } + double GetCOG() { + wxCriticalSectionLocker lock(m_exclusive); + return m_cog; + } + bool GetRadarPosition(double *lat, double *lon) { + wxCriticalSectionLocker lock(m_exclusive); + + if (m_bpos_set && VALID_GEO(m_radar_lat) && VALID_GEO(m_radar_lon)) { + *lat = m_radar_lat; + *lon = m_radar_lon; + return true; + } + return false; + } + HeadingSource GetHeadingSource() { return m_heading_source; } + bool IsInitialized() { return m_initialized; } + wxLongLong GetBootMillis() { return m_boot_time; } + bool IsOpenGLEnabled() { return m_opengl_mode == OPENGL_ON; } + wxGLContext *GetChartOpenGLContext(); wxFont m_font; // The dialog font at a normal size wxFont m_fat_font; // The dialog font at a bigger size, bold - int m_display_width, m_display_height; PersistentSettings m_settings; RadarInfo *m_radar[RADARS]; @@ -413,8 +490,33 @@ br24MessageBox *m_pMessageBox; wxWindow *m_parent_window; - wxGLContext *m_opencpn_gl_context; - bool m_opencpn_gl_context_broken; + + // Check for AIS targets inside ARPA zone + vector m_ais_in_arpa_zone; // Array for AIS targets in ARPA zone(s) + bool FindAIS_at_arpaPos(const double &lat, const double &lon, const double &dist); + + private: + void RadarSendState(void); + void UpdateState(void); + void UpdateHeadingPositionState(void); + void DoTick(void); + void Select_Clutter(int req_clutter_index); + void Select_Rejection(int req_rejection_index); + void CheckGuardZoneBogeys(void); + void RenderRadarBuffer(wxDC *pdc, int width, int height); + void PassHeadingToOpenCPN(); + void CacheSetToolbarToolBitmaps(); + void CheckTimedTransmit(RadarState state); + void RequestStateAllRadars(RadarState state); + void SetRadarWindowViz(bool reparent = false); + void UpdateContextMenu(); + void UpdateCOGAvg(double cog); + void OnTimerNotify(wxTimerEvent &event); + void TimedControlUpdate(); + void ScheduleWindowRefresh(); + void SetOpenGLMode(OpenGLMode mode); + + wxCriticalSection m_exclusive; // protects callbacks that come from multiple radars double m_hdt; // this is the heading that the pi is using for all heading operations, in degrees. // m_hdt will come from the radar if available else from the NMEA stream. @@ -424,6 +526,9 @@ double m_radar_heading; // Last heading obtained from radar, or nan if none bool m_radar_heading_true; // Was TRUE flag set on radar heading? time_t m_radar_heading_timeout; // When last heading was obtained from radar, or 0 if not + HeadingSource m_heading_source; + bool m_bpos_set; + time_t m_bpos_timestamp; // Variation. Used to convert magnetic into true heading. // Can come from SetPositionFixEx, which may hail from the WMM plugin @@ -434,44 +539,13 @@ VariationSource m_var_source; time_t m_var_timeout; - HeadingSource m_heading_source; - bool m_opengl_mode; - volatile bool m_opengl_mode_changed; - bool m_bpos_set; - time_t m_bpos_timestamp; - - // Cursor position. Used to show position in radar window - double m_cursor_lat, m_cursor_lon; - double m_ownship_lat, m_ownship_lon; - - bool m_initialized; // True if Init() succeeded and DeInit() not called yet. - bool m_first_init; // True in first Init() call. - wxLongLong m_boot_time; // millis when started - - // Timed Transmit - time_t m_idle_standby; // When we will change to standby - time_t m_idle_transmit; // When we will change to transmit - - private: - void RadarSendState(void); - void UpdateState(void); - void DoTick(void); - void Select_Clutter(int req_clutter_index); - void Select_Rejection(int req_rejection_index); - void CheckGuardZoneBogeys(void); - void RenderRadarBuffer(wxDC *pdc, int width, int height); - void PassHeadingToOpenCPN(); - void CacheSetToolbarToolBitmaps(); - void CheckTimedTransmit(RadarState state); - void RequestStateAllRadars(RadarState state); - void SetRadarWindowViz(bool reparent = false); - - wxCriticalSection m_exclusive; // protects callbacks that come from multiple radars - wxFileConfig *m_pconfig; int m_context_menu_control_id; int m_context_menu_show_id; int m_context_menu_hide_id; + int m_context_menu_acquire_radar_target; + int m_context_menu_delete_radar_target; + int m_context_menu_delete_all_radar_targets; int m_tool_id; wxBitmap *m_pdeficon; @@ -489,25 +563,62 @@ ToolbarIconColor m_sent_toolbar_button; bool m_old_data_seen; - bool m_notify_radar_window_viz; + volatile bool m_notify_radar_window_viz; + volatile bool m_notify_control_dialog; + wxLongLong m_notify_time_ms; #define HEADING_TIMEOUT (5) GuardZoneBogey *m_bogey_dialog; bool m_guard_bogey_seen; // Saw guardzone bogeys on last check - bool m_guard_bogey_confirmed; time_t m_alarm_sound_timeout; time_t m_guard_bogey_timeout; // If we haven't seen bogeys for this long we reset confirm #define CONFIRM_RESET_TIMEOUT (15) + +// Compute average COG same way as OpenCPN +#define MAX_COG_AVERAGE_SECONDS (60) + double m_COGTable[MAX_COG_AVERAGE_SECONDS]; + int m_COGAvgSec; // Default 15, comes from OCPN settings + double m_COGAvg; // Average COG over m_COGTable + double m_cog; // Value of m_COGAvg at rotation time + time_t m_cog_timeout; // When m_cog will be set again + double m_vp_rotation; // Last seen vp->rotation + + // Keep last state of ContextMenu state sent, to avoid redraws + bool m_context_menu_show; + bool m_context_menu_control; + bool m_context_menu_arpa; + + // Cursor position. Used to show position in radar window + double m_cursor_lat, m_cursor_lon; + double m_ownship_lat, m_ownship_lon, m_radar_lat, m_radar_lon; + + bool m_initialized; // True if Init() succeeded and DeInit() not called yet. + bool m_first_init; // True in first Init() call. + wxLongLong m_boot_time; // millis when started + + // Timed Transmit + time_t m_idle_standby; // When we will change to standby + time_t m_idle_transmit; // When we will change to transmit + + OpenGLMode m_opengl_mode; + volatile bool m_opengl_mode_changed; + + wxGLContext *m_opencpn_gl_context; + bool m_opencpn_gl_context_broken; + + wxTimer *m_timer; + + DECLARE_EVENT_TABLE() }; PLUGIN_END_NAMESPACE -#include "br24OptionsDialog.h" +#include "GuardZone.h" +#include "RadarInfo.h" #include "br24ControlsDialog.h" #include "br24MessageBox.h" +#include "br24OptionsDialog.h" #include "br24Transmit.h" -#include "GuardZone.h" -#include "RadarInfo.h" #endif /* _BR24RADAR_PI_H_ */ diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24Receive.cpp opencpn-plugin-br24radar-3.0.1/src/br24Receive.cpp --- opencpn-plugin-br24radar-2.1.0/src/br24Receive.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24Receive.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -31,6 +31,7 @@ */ #include "br24Receive.h" +#include "RadarMarpa.h" PLUGIN_BEGIN_NAMESPACE @@ -133,6 +134,8 @@ }; #pragma pack(pop) +bool g_first_receive = true; + // Ethernet packet stuff ************************************************************* void br24Receive::logBinaryData(const wxString &what, const UINT8 *data, int size) { @@ -156,8 +159,19 @@ // void br24Receive::ProcessFrame(const UINT8 *data, int len) { time_t now = time(0); + + double lat; + double lon; + + m_pi->GetRadarPosition(&lat, &lon); + + // log_line.time_rec = wxGetUTCTimeMillis(); + wxLongLong time_rec = wxGetUTCTimeMillis(); + radar_frame_pkt *packet = (radar_frame_pkt *)data; + wxCriticalSectionLocker lock(m_ri->m_exclusive); + m_ri->m_radar_timeout = now + WATCHDOG_TIMEOUT; m_ri->m_data_timeout = now + DATA_TIMEOUT; m_ri->m_state.Update(RADAR_TRANSMIT); @@ -173,6 +187,12 @@ m_ri->m_statistics.broken_packets++; } + if (g_first_receive) { + g_first_receive = false; + wxLongLong startup_elapsed = wxGetUTCTimeMillis() - m_pi->GetBootMillis(); + LOG_INFO(wxT("BR24radar_pi: First radar spoke received after %llu ms\n"), startup_elapsed); + } + for (int scanline = 0; scanline < scanlines_in_packet; scanline++) { radar_line *line = &packet->line[scanline]; @@ -238,30 +258,33 @@ } } - if (angle_raw < 2) { + // if (angle_raw < 4) { + { IF_LOG_AT(LOGLEVEL_RECEIVE, - logBinaryData(wxString::Format(wxT("range=%d, angle=%d hdg=%hd"), range_raw, angle_raw, heading_raw), + logBinaryData(wxString::Format(wxT("range=%d, angle=%d hdg=%d"), range_raw, angle_raw, heading_raw), (uint8_t *)&line->br24, sizeof(line->br24))); } bool radar_heading_valid = HEADING_VALID(heading_raw); bool radar_heading_true = (heading_raw & HEADING_TRUE_FLAG) != 0; double heading; + int bearing_raw; if (radar_heading_valid && !m_pi->m_settings.ignore_radar_heading) { heading = MOD_DEGREES(SCALE_RAW_TO_DEGREES(MOD_ROTATION(heading_raw))); m_pi->SetRadarHeading(heading, radar_heading_true); - } else { // no heading on radar + } else { m_pi->SetRadarHeading(); } - short int hdt_raw = SCALE_DEGREES_TO_RAW(m_pi->m_hdt + m_ri->m_viewpoint_rotation); - int bearing_raw = angle_raw + hdt_raw; + // Guess the heading for the spoke. This is updated much less frequently than the + // data from the radar (which is accurate 10x per second), likely once per second. + heading_raw = SCALE_DEGREES_TO_RAW(m_pi->GetHeadingTrue()); // include variation + bearing_raw = angle_raw + heading_raw; // until here all is based on 4096 (SPOKES) scanlines SpokeBearing a = MOD_ROTATION2048(angle_raw / 2); // divide by 2 to map on 2048 scanlines SpokeBearing b = MOD_ROTATION2048(bearing_raw / 2); // divide by 2 to map on 2048 scanlines - - m_ri->ProcessRadarSpoke(a, b, line->data, RETURNS_PER_LINE, range_meters); + m_ri->ProcessRadarSpoke(a, b, line->data, RETURNS_PER_LINE, range_meters, time_rec, lat, lon); } } @@ -278,9 +301,11 @@ m_ri->m_radar_timeout = now + WATCHDOG_TIMEOUT; - if (m_ri->m_state.value != RADAR_TRANSMIT) { - if (m_ri->m_state.value == RADAR_OFF) { - m_ri->m_state.value = RADAR_STANDBY; + int state = m_ri->m_state.GetValue(); + + if (state != RADAR_TRANSMIT) { + if (state == RADAR_OFF) { + m_ri->m_state.Update(RADAR_STANDBY); } return; } @@ -317,14 +342,16 @@ } } - int hdt_raw = SCALE_DEGREES_TO_RAW(m_pi->m_hdt); + int hdt_raw = SCALE_DEGREES_TO_RAW(m_pi->GetHeadingTrue()); int bearing_raw = angle_raw + hdt_raw; bearing_raw += SCALE_DEGREES_TO_RAW(270); // Compensate openGL rotation compared to North UP SpokeBearing a = MOD_ROTATION2048(angle_raw / 2); // divide by 2 to map on 2048 scanlines SpokeBearing b = MOD_ROTATION2048(bearing_raw / 2); // divide by 2 to map on 2048 scanlines - - m_ri->ProcessRadarSpoke(a, b, data, sizeof(data), range_meters); + wxLongLong time_rec; + double lat = 0.; + double lon = 0.; + m_ri->ProcessRadarSpoke(a, b, data, sizeof(data), range_meters, time_rec, lat, lon); } LOG_VERBOSE(wxT("BR24radar_pi: emulating %d spokes at range %d with %d spots"), scanlines_in_packet, range_meters, spots); @@ -449,8 +476,7 @@ SOCKET commandSocket = INVALID_SOCKET; SOCKET reportSocket = INVALID_SOCKET; - LOG_RECEIVE(wxT("BR24radar_pi: br24Receive thread %s starting"), m_ri->m_name.c_str()); - socketReady(INVALID_SOCKET, 1000); // sleep for 1s so that other stuff is set up (fixes Windows core on startup) + LOG_VERBOSE(wxT("BR24radar_pi: br24Receive thread %s starting"), m_ri->m_name.c_str()); if (m_mcast_addr) { reportSocket = GetNewReportSocket(); @@ -464,13 +490,28 @@ no_data_timeout = 0; no_spoke_timeout = 0; } - } else { - // reportSocket is still valid, open data and command sockets as well if they are closed + } + if (radar_addr) { + // If we have detected a radar antenna at this address start opening more sockets. + // We do this later for 2 reasons: + // - Resource consumption + // - Timing. If we start processing radar data before the rest of the system + // is initialized then we get ordering/race condition issues. if (dataSocket == INVALID_SOCKET) { dataSocket = GetNewDataSocket(); - } else if (commandSocket == INVALID_SOCKET) { + } + if (commandSocket == INVALID_SOCKET) { commandSocket = GetNewCommandSocket(); } + } else { + if (dataSocket != INVALID_SOCKET) { + closesocket(dataSocket); + dataSocket = INVALID_SOCKET; + } + if (commandSocket != INVALID_SOCKET) { + closesocket(commandSocket); + commandSocket = INVALID_SOCKET; + } } } else { if (reportSocket != INVALID_SOCKET) { @@ -509,6 +550,7 @@ rx_len = sizeof(rx_addr); r = recvfrom(m_receive_socket, (char *)data, sizeof(data), 0, (struct sockaddr *)&rx_addr, &rx_len); if (r > 0) { + LOG_VERBOSE(wxT("BR24radar_pi: %s received stop instruction"), m_ri->m_name.c_str()); break; } } @@ -559,12 +601,11 @@ addr.Printf(wxT("%u.%u.%u.%u"), a[0], a[1], a[2], a[3]); m_pi->m_pMessageBox->SetRadarIPAddress(addr); - if (m_ri->m_state.value == RADAR_OFF) { + if (m_ri->m_state.GetValue() == RADAR_OFF) { LOG_INFO(wxT("BR24radar_pi: %s detected at %s"), m_ri->m_name.c_str(), addr.c_str()); m_ri->m_state.Update(RADAR_STANDBY); } } - m_ri->m_radar_timeout = time(0) + WATCHDOG_TIMEOUT; no_data_timeout = SECONDS_SELECT(-15); } } else { @@ -613,8 +654,6 @@ } // endless loop until thread destroy - LOG_INFO(wxT("BR24radar_pi: receive quit")); - if (dataSocket != INVALID_SOCKET) { closesocket(dataSocket); } @@ -636,11 +675,12 @@ freeifaddrs(m_interface_array); } -#if 0 +#ifdef TEST_THREAD_RACES LOG_VERBOSE(wxT("BR24radar_pi: %s receive thread sleeping"), m_ri->m_name.c_str()); - wxMilliSleep(2000); + wxMilliSleep(1000); #endif LOG_VERBOSE(wxT("BR24radar_pi: %s receive thread stopping"), m_ri->m_name.c_str()); + m_is_shutdown = true; return 0; } @@ -683,7 +723,7 @@ UINT16 field4; // 6-7 0 UINT32 field8; // 8-11 1 UINT8 gain; // 12 - UINT8 field13; // 13 ==1 for sea auto + UINT8 sea_auto; // 13 0 = off, 1 = harbour, 2 = offshore UINT8 field14; // 14 UINT16 field15; // 15-16 UINT32 sea; // 17-20 sea state (17) @@ -751,9 +791,13 @@ bool br24Receive::ProcessReport(const UINT8 *report, int len) { IF_LOG_AT(LOGLEVEL_RECEIVE, logBinaryData(wxT("ProcessReport"), report, len)); + time_t now = time(0); + + m_ri->m_radar_timeout = now + WATCHDOG_TIMEOUT; + if (m_ri->m_radar == 1) { if (m_ri->m_radar_type != RT_4G) { - LOG_INFO(wxT("BR24radar_pi: Radar report from 2nd radar tells us this a Navico 4G")); + // LOG_INFO(wxT("BR24radar_pi: Radar report from 2nd radar tells us this a Navico 4G")); m_ri->m_radar_type = RT_4G; m_pi->m_pMessageBox->SetRadarType(RT_4G); } @@ -766,7 +810,9 @@ RadarReport_01C4_18 *s = (RadarReport_01C4_18 *)report; // Radar status in byte 2 if (s->radar_status != m_radar_status) { - switch (report[2]) { + m_radar_status = s->radar_status; + + switch (m_radar_status) { case 0x01: m_ri->m_state.Update(RADAR_STANDBY); LOG_VERBOSE(wxT("BR24radar_pi: %s reports status STANDBY"), m_ri->m_name.c_str()); @@ -777,6 +823,7 @@ break; case 0x05: m_ri->m_state.Update(RADAR_WAKING_UP); + m_ri->m_data_timeout = now + DATA_TIMEOUT; LOG_VERBOSE(wxT("BR24radar_pi: %s reports status WAKING UP"), m_ri->m_name.c_str()); break; default: @@ -789,14 +836,14 @@ case (99 << 8) + 0x02: { // length 99, 02 C4 RadarReport_02C4_99 *s = (RadarReport_02C4_99 *)report; - if (s->field8 == 1) { // 1 for auto - m_ri->m_gain.Update(-1); // auto gain + if (s->field8 == 1) { + m_ri->m_gain.Update(AUTO_RANGE - 1); // auto gain } else { m_ri->m_gain.Update(s->gain * 100 / 255); } m_ri->m_rain.Update(s->rain * 100 / 255); - if (s->field13 == 0x01) { - m_ri->m_sea.Update(-1); // auto sea + if (s->sea_auto > 0) { + m_ri->m_sea.Update(AUTO_RANGE - s->sea_auto); } else { m_ri->m_sea.Update(s->sea * 100 / 255); } @@ -894,7 +941,7 @@ m_ri->m_noise_rejection.Update(s08->noise_rejection); m_ri->m_target_separation.Update(s08->target_sep); if (s08->sls_auto == 1) { - m_ri->m_side_lobe_suppression.Update(-1); + m_ri->m_side_lobe_suppression.Update(AUTO_RANGE - 1); } else { m_ri->m_side_lobe_suppression.Update(s08->side_lobe_suppression * 100 / 255); } @@ -969,10 +1016,18 @@ } // Called from the main thread to stop this thread. +// We send a simple one byte message to the thread so that it awakens from the select() call with +// this message ready for it to be read on 'm_receive_socket'. See the constructor in br24Receive.h +// for the setup of these two sockets. void br24Receive::Shutdown() { if (m_send_socket != INVALID_SOCKET) { - send(m_send_socket, "!", 1, MSG_DONTROUTE); + m_shutdown_time_requested = wxGetUTCTimeMillis(); + if (send(m_send_socket, "!", 1, MSG_DONTROUTE) > 0) { + LOG_VERBOSE(wxT("BR24radar_pi: %s requested receive thread to stop"), m_ri->m_name.c_str()); + return; + } } + LOG_INFO(wxT("BR24radar_pi: %s receive thread will take long time to stop"), m_ri->m_name.c_str()); } PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24Receive.h opencpn-plugin-br24radar-3.0.1/src/br24Receive.h --- opencpn-plugin-br24radar-2.1.0/src/br24Receive.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24Receive.h 2017-09-24 10:58:54.000000000 +0000 @@ -32,9 +32,9 @@ #ifndef _BR24RECEIVE_H_ #define _BR24RECEIVE_H_ +#include "RadarInfo.h" #include "pi_common.h" #include "socketutil.h" -#include "RadarInfo.h" PLUGIN_BEGIN_NAMESPACE @@ -47,15 +47,19 @@ m_radar_status = 0; m_new_ip_addr = false; m_next_rotation = 0; + m_shutdown_time_requested = 0; + m_is_shutdown = false; + + wxString mcast_address = m_pi->GetMcastIPAddress(); - if (m_pi->m_settings.mcast_address.length()) { + if (mcast_address.length()) { int b[4]; union { uint8_t b[4]; uint32_t addr; } mcast; - if (sscanf(m_pi->m_settings.mcast_address.c_str(), "%u.%u.%u.%u", &b[0], &b[1], &b[2], &b[3]) == 4) { + if (sscanf(mcast_address.c_str(), "%u.%u.%u.%u", &b[0], &b[1], &b[2], &b[3]) == 4) { mcast.b[0] = (uint8_t)b[0]; mcast.b[1] = (uint8_t)b[1]; mcast.b[2] = (uint8_t)b[2]; @@ -68,7 +72,7 @@ m_initial_mcast_addr.sin_port = 0; m_initial_mcast_addr.sin_family = AF_INET; m_mcast_addr = &m_initial_mcast_addr; - LOG_VERBOSE(wxT("BR24radar_pi: assuming radar is still reachable via %s"), m_pi->m_settings.mcast_address.c_str()); + LOG_VERBOSE(wxT("BR24radar_pi: assuming radar is still reachable via %s"), mcast_address.c_str()); } } @@ -88,6 +92,9 @@ wxIPV4address m_ip_addr; bool m_new_ip_addr; + wxLongLong m_shutdown_time_requested; // Main thread asks this thread to stop + volatile bool m_is_shutdown; + private: void logBinaryData(const wxString &what, const UINT8 *data, int size); @@ -113,7 +120,6 @@ int m_next_spoke; // emulator next spoke int m_next_rotation; // slowly rotate emulator - char m_radar_status; }; diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24Transmit.cpp opencpn-plugin-br24radar-3.0.1/src/br24Transmit.cpp --- opencpn-plugin-br24radar-2.1.0/src/br24Transmit.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24Transmit.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -36,7 +36,7 @@ br24Transmit::br24Transmit(br24radar_pi *pi, wxString name, int radar) { m_pi = pi; - memset(&m_addr, 0, sizeof(m_addr)); + CLEAR_STRUCT(m_addr); m_addr.sin_family = AF_INET; static UINT8 radar_mcast_send_addr[2][4] = {{236, 6, 7, 10}, {236, 6, 7, 14}}; @@ -153,12 +153,13 @@ return false; } -bool br24Transmit::SetControlValue(ControlType controlType, int value) { // sends the command to the radar +bool br24Transmit::SetControlValue(ControlType controlType, int value, int autoValue) { // sends the command to the radar bool r = false; switch (controlType) { case CT_RANGE: case CT_TIMED_IDLE: + case CT_TIMED_RUN: case CT_SCAN_AGE: case CT_TRANSPARENCY: case CT_REFRESHRATE: @@ -166,6 +167,8 @@ case CT_TRAILS_MOTION: case CT_MAIN_BANG_SIZE: case CT_MAX: + case CT_ANTENNA_FORWARD: + case CT_ANTENNA_STARBOARD: // The above are not settings that are not radar commands. Made them explicit so the // compiler can catch missing control types. break; @@ -188,39 +191,24 @@ } case CT_GAIN: { - if (value < 0) { // AUTO gain - UINT8 cmd[] = { - 0x06, 0xc1, 0, 0, 0, 0, - 0x01, 0, 0, 0, 0xad // changed from a1 to ad - }; - LOG_VERBOSE(wxT("BR24radar_pi: %s Gain: Auto in setcontrolvalue"), m_name); - r = TransmitCmd(cmd, sizeof(cmd)); - } else { // Manual Gain - int v = (value + 1) * 255 / 100; - if (v > 255) { - v = 255; - } - UINT8 cmd[] = {0x06, 0xc1, 0, 0, 0, 0, 0, 0, 0, 0, (UINT8)v}; - LOG_VERBOSE(wxT("BR24radar_pi: %s Gain: %d"), m_name, value); - r = TransmitCmd(cmd, sizeof(cmd)); + int v = (value + 1) * 255 / 100; + if (v > 255) { + v = 255; } + UINT8 cmd[] = {0x06, 0xc1, 0, 0, 0, 0, (UINT8)autoValue, 0, 0, 0, (UINT8)v}; + LOG_VERBOSE(wxT("BR24radar_pi: %s Gain: %d auto %d"), m_name, value, autoValue); + r = TransmitCmd(cmd, sizeof(cmd)); break; } case CT_SEA: { - if (value < 0) { // Sea Clutter - Auto - UINT8 cmd[11] = {0x06, 0xc1, 0x02, 0, 0, 0, 0x01, 0, 0, 0, 0xd3}; - LOG_VERBOSE(wxT("BR24radar_pi: %s Sea: Auto"), m_name); - r = TransmitCmd(cmd, sizeof(cmd)); - } else { // Sea Clutter - int v = (value + 1) * 255 / 100; - if (v > 255) { - v = 255; - } - UINT8 cmd[] = {0x06, 0xc1, 0x02, 0, 0, 0, 0, 0, 0, 0, (UINT8)v}; - LOG_VERBOSE(wxT("BR24radar_pi: %s Sea: %d"), m_name, value); - r = TransmitCmd(cmd, sizeof(cmd)); + int v = (value + 1) * 255 / 100; + if (v > 255) { + v = 255; } + UINT8 cmd[] = {0x06, 0xc1, 0x02, 0, 0, 0, autoValue, 0, 0, 0, (UINT8)v}; + LOG_VERBOSE(wxT("BR24radar_pi: %s Sea: %d auto %d"), m_name, value, autoValue); + r = TransmitCmd(cmd, sizeof(cmd)); break; } @@ -236,20 +224,13 @@ } case CT_SIDE_LOBE_SUPPRESSION: { - if (value < 0) { - UINT8 cmd[] = {// SIDE_LOBE_SUPPRESSION auto - 0x06, 0xc1, 0x05, 0, 0, 0, 0x01, 0, 0, 0, 0xc0}; - LOG_VERBOSE(wxT("BR24radar_pi: %s command Tx CT_SIDE_LOBE_SUPPRESSION Auto"), m_name); - r = TransmitCmd(cmd, sizeof(cmd)); - } else { - int v = (value + 1) * 255 / 100; - if (v > 255) { - v = 255; - } - UINT8 cmd[] = {0x6, 0xc1, 0x05, 0, 0, 0, 0, 0, 0, 0, (UINT8)v}; - LOG_VERBOSE(wxT("BR24radar_pi: %s command Tx CT_SIDE_LOBE_SUPPRESSION: %d"), m_name, value); - r = TransmitCmd(cmd, sizeof(cmd)); + int v = value * 256 / 100; + if (v > 255) { + v = 255; } + UINT8 cmd[] = {0x6, 0xc1, 0x05, 0, 0, 0, autoValue, 0, 0, 0, (UINT8)v}; + LOG_VERBOSE(wxT("BR24radar_pi: %s command Tx CT_SIDE_LOBE_SUPPRESSION: %d auto %d"), m_name, value, autoValue); + r = TransmitCmd(cmd, sizeof(cmd)); break; } diff -Nru opencpn-plugin-br24radar-2.1.0/src/br24Transmit.h opencpn-plugin-br24radar-3.0.1/src/br24Transmit.h --- opencpn-plugin-br24radar-2.1.0/src/br24Transmit.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/br24Transmit.h 2017-09-24 10:58:54.000000000 +0000 @@ -32,9 +32,9 @@ #ifndef _BR24TRANSMIT_H_ #define _BR24TRANSMIT_H_ +#include "RadarInfo.h" #include "pi_common.h" #include "socketutil.h" -#include "RadarInfo.h" PLUGIN_BEGIN_NAMESPACE @@ -59,7 +59,7 @@ void RadarTxOn(); bool RadarStayAlive(); bool SetRange(int meters); - bool SetControlValue(ControlType controlType, int value); + bool SetControlValue(ControlType controlType, int value, int autoValue); private: br24radar_pi *m_pi; diff -Nru opencpn-plugin-br24radar-2.1.0/src/drawutil.cpp opencpn-plugin-br24radar-3.0.1/src/drawutil.cpp --- opencpn-plugin-br24radar-2.1.0/src/drawutil.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/drawutil.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -29,8 +29,8 @@ *************************************************************************** */ -#include "br24radar_pi.h" #include "drawutil.h" +#include "br24radar_pi.h" PLUGIN_BEGIN_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/drawutil.h opencpn-plugin-br24radar-3.0.1/src/drawutil.h --- opencpn-plugin-br24radar-2.1.0/src/drawutil.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/drawutil.h 2017-09-24 10:58:54.000000000 +0000 @@ -32,7 +32,7 @@ #ifndef _DRAWUTIL_H_ #define _DRAWUTIL_H_ -#include "pi_common.h" +#include "br24radar_pi.h" PLUGIN_BEGIN_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/.gitignore opencpn-plugin-br24radar-3.0.1/src/.gitignore --- opencpn-plugin-br24radar-2.1.0/src/.gitignore 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/.gitignore 2017-09-24 10:58:54.000000000 +0000 @@ -1 +1,2 @@ version.h +version.h.gch diff -Nru opencpn-plugin-br24radar-2.1.0/src/GuardZoneBogey.cpp opencpn-plugin-br24radar-3.0.1/src/GuardZoneBogey.cpp --- opencpn-plugin-br24radar-2.1.0/src/GuardZoneBogey.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/GuardZoneBogey.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -29,8 +29,8 @@ *************************************************************************** */ -#include "br24radar_pi.h" #include "GuardZoneBogey.h" +#include "br24radar_pi.h" PLUGIN_BEGIN_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/GuardZone.cpp opencpn-plugin-br24radar-3.0.1/src/GuardZone.cpp --- opencpn-plugin-br24radar-2.1.0/src/GuardZone.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/GuardZone.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -28,12 +28,29 @@ *************************************************************************** */ +#include "RadarMarpa.h" #include "br24radar_pi.h" PLUGIN_BEGIN_NAMESPACE #undef TEST_GUARD_ZONE_LOCATION +GuardZone::GuardZone(br24radar_pi* pi, RadarInfo* ri, int zone) { + m_pi = pi; + m_ri = ri; + m_log_name = wxString::Format(wxT("BR24radar_pi: Radar %c GuardZone %d:"), m_ri->m_radar + 'A', zone + 1); + m_type = GZ_CIRCLE; + m_start_bearing = 0; + m_end_bearing = 0; + m_inner_range = 0; + m_outer_range = 0; + m_arpa_on = 0; + m_alarm_on = 0; + m_show_time = 0; + CLEAR_STRUCT(arpa_update_time); + ResetBogeys(); +} + void GuardZone::ProcessSpoke(SpokeBearing angle, UINT8* data, UINT8* hist, size_t len, int range) { size_t range_start = m_inner_range * RETURNS_PER_LINE / range; // Convert from meters to 0..511 size_t range_end = m_outer_range * RETURNS_PER_LINE / range; // Convert from meters to 0..511 @@ -47,19 +64,16 @@ if (range_end > RETURNS_PER_LINE) { range_end = RETURNS_PER_LINE; } - for (size_t r = range_start; r <= range_end; r++) { - if (!m_multi_sweep_filter || HISTORY_FILTER_ALLOW(hist[r])) { - if (data[r] >= m_pi->m_settings.threshold_blue) { - m_running_count++; - } + if (data[r] >= m_pi->m_settings.threshold_blue) { + m_running_count++; + } #ifdef TEST_GUARD_ZONE_LOCATION - // Zap guard zone computation location to green so this is visible on screen - else { - data[r] = m_pi->m_settings.threshold_green; - } -#endif + // Zap guard zone computation location to green so this is visible on screen + else { + data[r] = m_pi->m_settings.threshold_green; } +#endif } } in_guard_zone = true; @@ -73,17 +87,15 @@ } for (size_t r = range_start; r <= range_end; r++) { - if (!m_multi_sweep_filter || HISTORY_FILTER_ALLOW(hist[r])) { - if (data[r] >= m_pi->m_settings.threshold_blue) { - m_running_count++; - } + if (data[r] >= m_pi->m_settings.threshold_blue) { + m_running_count++; + } #ifdef TEST_GUARD_ZONE_LOCATION - // Zap guard zone computation location to green so this is visible on screen - else { - data[r] = m_pi->m_settings.threshold_green; - } -#endif + // Zap guard zone computation location to green so this is visible on screen + else { + data[r] = m_pi->m_settings.threshold_green; } +#endif } if (angle > m_last_angle) { in_guard_zone = true; @@ -117,4 +129,84 @@ m_last_angle = angle; } +// Search guard zone for ARPA targets +void GuardZone::SearchTargets() { + Position own_pos; + + if (!m_arpa_on) { + return; + } + if (m_ri->m_arpa->GetTargetCount() >= MAX_NUMBER_OF_TARGETS - 2) { + LOG_INFO(wxT("BR24radar_pi: No more scanning for ARPA targets, maximum number of targets reached")); + return; + } + if (!m_pi->m_settings.show // No radar shown + || (m_pi->m_radar[0]->m_state.GetValue() != RADAR_TRANSMIT && + m_pi->m_radar[1]->m_state.GetValue() != RADAR_TRANSMIT) // Radar not transmitting + || !m_pi->GetRadarPosition(&own_pos.lat, &own_pos.lon)) { // No position + return; + } + if (m_ri->m_range_meters == 0) { + return; + } + size_t range_start = m_inner_range * RETURNS_PER_LINE / m_ri->m_range_meters; // Convert from meters to 0..511 + size_t range_end = m_outer_range * RETURNS_PER_LINE / m_ri->m_range_meters; // Convert from meters to 0..511 + + SpokeBearing hdt = SCALE_DEGREES_TO_RAW2048(m_pi->GetHeadingTrue()); + SpokeBearing start_bearing = m_start_bearing + hdt; + SpokeBearing end_bearing = m_end_bearing + hdt; + start_bearing = MOD_ROTATION2048(start_bearing); + end_bearing = MOD_ROTATION2048(end_bearing); + if (start_bearing > end_bearing) { + end_bearing += LINES_PER_ROTATION; + } + if (m_type == GZ_CIRCLE) { + start_bearing = 0; + end_bearing = LINES_PER_ROTATION; + } + + if (range_start < RETURNS_PER_LINE) { + if (range_end > RETURNS_PER_LINE) { + range_end = RETURNS_PER_LINE; + } + if (range_end < range_start) return; + + for (int angle = start_bearing; angle < end_bearing; angle += 2) { + // check if this angle has been updated by the beam since last time + // and if possible targets have been refreshed + + wxLongLong time1 = m_ri->m_history[MOD_ROTATION2048(angle)].time; + // next one must be timed later than the pass 2 in refresh, otherwise target may be found multiple times + wxLongLong time2 = m_ri->m_history[MOD_ROTATION2048(angle + 3 * SCAN_MARGIN)].time; + + // check if target has been refreshed since last time + // and if the beam has passed the target location with SCAN_MARGIN spokes + if ((time1 > (arpa_update_time[MOD_ROTATION2048(angle)] + SCAN_MARGIN2) && + time2 >= time1)) { // the beam sould have passed our "angle" AND a point SCANMARGIN further + // set new refresh time + arpa_update_time[MOD_ROTATION2048(angle)] = time1; + for (int rrr = (int)range_start; rrr < (int)range_end; rrr++) { + if (m_ri->m_arpa->GetTargetCount() >= MAX_NUMBER_OF_TARGETS - 1) { + LOG_INFO(wxT("BR24radar_pi: No more scanning for ARPA targets in loop, maximum number of targets reached")); + return; + } + if (m_ri->m_arpa->MultiPix(angle, rrr)) { + bool next_r = false; + if (next_r) continue; + // pixel found that does not belong to a known target + Polar pol; + pol.angle = angle; + pol.r = rrr; + + Position x = Polar2Pos(pol, own_pos, m_ri->m_range_meters); + int target_i = m_ri->m_arpa->AcquireNewARPATarget(pol, 0); + if (target_i == -1) break; + } + } + } + } + } + return; +} + PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/GuardZone.h opencpn-plugin-br24radar-3.0.1/src/GuardZone.h --- opencpn-plugin-br24radar-2.1.0/src/GuardZone.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/GuardZone.h 2017-09-24 10:58:54.000000000 +0000 @@ -43,7 +43,10 @@ SpokeBearing m_end_bearing; int m_inner_range; // start in meters int m_outer_range; // end in meters - int m_multi_sweep_filter; + int m_alarm_on; + int m_arpa_on; + time_t m_show_time; + wxLongLong arpa_update_time[LINES_PER_ROTATION]; void ResetBogeys() { m_bogey_count = -1; @@ -54,6 +57,7 @@ void SetType(GuardZoneType type) { m_type = type; + if (m_type > (GuardZoneType)1) m_type = (GuardZoneType)0; ResetBogeys(); }; void SetStartBearing(SpokeBearing start_bearing) { @@ -72,9 +76,14 @@ m_outer_range = outer_range; ResetBogeys(); }; - void SetMultiSweepFilter(int filter) { - m_multi_sweep_filter = filter; - ResetBogeys(); + void SetArpaOn(int arpa) { m_arpa_on = arpa; }; + void SetAlarmOn(int alarm) { + m_alarm_on = alarm; + if (m_alarm_on) { + m_pi->m_guard_bogey_confirmed = false; + } else { + ResetBogeys(); + } }; /* @@ -82,6 +91,9 @@ */ void ProcessSpoke(SpokeBearing angle, UINT8 *data, UINT8 *hist, size_t len, int range); + // Find targets inside the zone + void SearchTargets(); + int GetBogeyCount() { if (m_bogey_count > -1) { LOG_GUARD(wxT("%s reporting bogey_count=%d"), m_log_name.c_str(), m_bogey_count); @@ -89,25 +101,14 @@ return m_bogey_count; }; - GuardZone(br24radar_pi *pi, int radar, int zone) { - m_pi = pi; - - m_log_name = wxString::Format(wxT("BR24radar_pi: Radar %c GuardZone %d:"), radar + 'A', zone + 1); - - m_type = GZ_OFF; - m_start_bearing = 0; - m_end_bearing = 0; - m_inner_range = 0; - m_outer_range = 0; - m_multi_sweep_filter = 0; - - ResetBogeys(); - } + GuardZone(br24radar_pi *pi, RadarInfo *ri, int zone); ~GuardZone() { LOG_VERBOSE(wxT("%s destroyed"), m_log_name.c_str()); } private: br24radar_pi *m_pi; + RadarInfo *m_ri; + wxString m_log_name; bool m_last_in_guard_zone; SpokeBearing m_last_angle; Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/issues.ods and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/issues.ods differ diff -Nru opencpn-plugin-br24radar-2.1.0/src/Kalman.cpp opencpn-plugin-br24radar-3.0.1/src/Kalman.cpp --- opencpn-plugin-br24radar-2.1.0/src/Kalman.cpp 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/Kalman.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,185 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Navico BR24 Radar Plugin + * Author: David Register + * Dave Cowell + * Kees Verruijt + * Douwe Fokkema + * Sean D'Epagnier + *************************************************************************** + * Copyright (C) 2010 by David S. Register bdbcat@yahoo.com * + * Copyright (C) 2012-2013 by Dave Cowell * + * Copyright (C) 2012-2016 by Kees Verruijt canboat@verruijt.net * + * Copyright (C) 2013-2016 by Douwe Fokkkema df@percussion.nl* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + The filter used here is an "Extended Kalman Filter" For a general introduction see + Wikipedia. + For the formula used here see "An Introduction to the Kalman Filter" + Greg Welch and Gary Bishop, TR45-041, Department of Computer Science, + University of North Carolina at Chapel Hill + July 24, 2006 + + */ + +#include "Kalman.h" + +PLUGIN_BEGIN_NAMESPACE + +KalmanFilter::KalmanFilter() { + // as the measurement to state transformation is non-linear, the extended Kalman filter is used + // as the state transformation is linear, the state transformation matrix F is equal to the jacobian A + // f is the state transformation function Xk <- Xk-1 + // Ai,j is jacobian matrix dfi / dxj + + I = I.Identity(); + Q = ZeroMatrix2; + R = ZeroMatrix2; + + ResetFilter(); +} + +void KalmanFilter::ResetFilter() { + // reset the filter to use it for a new case + A = I; + + // transpose of A + AT = A; + + // Jacobian matrix of partial derivatives dfi / dwj + W = ZeroMatrix42; + W(2, 0) = 1.; + W(3, 1) = 1.; + + // transpose of W + WT = ZeroMatrix24; + WT(0, 2) = 1.; + WT(1, 3) = 1.; + + // Observation matrix, jacobian of observation function h + // dhi / dvj + // angle = atan2 (lat,lon) * 2048 / (2 * pi) + v1 + // r = sqrt(x * x + y * y) + v2 + // v is measurement noise + H = ZeroMatrix24; + + // Transpose of observation matrix + HT = ZeroMatrix42; + + // Jacobian V, dhi / dvj + // As V is the identity matrix, it is left out of the calculation of the Kalman gain + + // P estimate error covariance + // initial values follow + // P(1, 1) = .0000027 * range * range; ??? + P = ZeroMatrix4; + P(0, 0) = 20.; + P(1, 1) = P(1, 1); + P(2, 2) = 4.; + P(3, 3) = 4.; + + // Q Process noise covariance matrix + Q(0, 0) = NOISE; // variance in lat speed, (m / sec)2 + Q(1, 1) = NOISE; // variance in lon speed, (m / sec)2 + + // R measurement noise covariance matrix + R(0, 0) = 100.0; // variance in the angle 3.0 + R(1, 1) = 25.; // variance in radius .5 +} + +KalmanFilter::~KalmanFilter() {} + +void KalmanFilter::Predict(LocalPosition* xx, double delta_time) { + Matrix X; + X(0, 0) = xx->lat; + X(1, 0) = xx->lon; + X(2, 0) = xx->dlat_dt; + X(3, 0) = xx->dlon_dt; + A(0, 2) = delta_time; // time in seconds + A(1, 3) = delta_time; + + AT(2, 0) = delta_time; + AT(3, 1) = delta_time; + + X = A * X; + xx->lat = X(0, 0); + xx->lon = X(1, 0); + xx->dlat_dt = X(2, 0); + xx->dlon_dt = X(3, 0); + xx->sd_speed_m_s = sqrt((P(2, 2) + P(3, 3)) / 2.); // rough approximation of standard dev of speed + return; +} + +void KalmanFilter::Update_P() { + // calculate apriori P + // separated from the predict to prevent the update being done both in pass 1 and pass2 + + P = A * P * AT + W * Q * WT; + return; +} + +void KalmanFilter::SetMeasurement(Polar* pol, LocalPosition* x, Polar* expected, int range) { +// pol measured angular position +// x expected local position +// expected, same but in polar coordinates +#define SQUARED(x) ((x) * (x)) + double q_sum = SQUARED(x->lon) + SQUARED(x->lat); + + double c = 2048. / (2. * PI); + H(0, 0) = -c * x->lon / q_sum; + H(0, 1) = c * x->lat / q_sum; + + q_sum = sqrt(q_sum); + H(1, 0) = x->lat / q_sum * 512. / (double)range; + H(1, 1) = x->lon / q_sum * 512. / (double)range; + + HT = H.Transpose(); + + Matrix Z; + Z(0, 0) = (double)(pol->angle - expected->angle); // Z is difference between measured and expected + if (Z(0, 0) > LINES_PER_ROTATION / 2) { + Z(0, 0) -= LINES_PER_ROTATION; + } + if (Z(0, 0) < -LINES_PER_ROTATION / 2) { + Z(0, 0) += LINES_PER_ROTATION; + } + Z(1, 0) = (double)(pol->r - expected->r); + + Matrix X; + X(0, 0) = x->lat; + X(1, 0) = x->lon; + X(2, 0) = x->dlat_dt; + X(3, 0) = x->dlon_dt; + + // calculate Kalman gain + K = P * HT * ((H * P * HT + R).Inverse()); + + // calculate apostriori expected position + X = X + K * Z; + x->lat = X(0, 0); + x->lon = X(1, 0); + x->dlat_dt = X(2, 0); + x->dlon_dt = X(3, 0); + + // update covariance P + P = (I - K * H) * P; + x->sd_speed_m_s = sqrt((P(2, 2) + P(3, 3)) / 2.); // rough approximation of standard dev of speed + return; +} + +PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/Kalman.h opencpn-plugin-br24radar-3.0.1/src/Kalman.h --- opencpn-plugin-br24radar-2.1.0/src/Kalman.h 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/Kalman.h 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,89 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Navico BR24 Radar Plugin + * Author: David Register + * Dave Cowell + * Kees Verruijt + * Douwe Fokkema + * Sean D'Epagnier + *************************************************************************** + * Copyright (C) 2010 by David S. Register bdbcat@yahoo.com * + * Copyright (C) 2012-2013 by Dave Cowell * + * Copyright (C) 2012-2016 by Kees Verruijt canboat@verruijt.net * + * Copyright (C) 2013-2016 by Douwe Fokkkema df@percussion.nl* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + */ + +#ifndef _BR24KALMAN_H_ +#define _BR24KALMAN_H_ + +#include "Matrix.h" + +PLUGIN_BEGIN_NAMESPACE + +#define NOISE (0.015) // Allowed covariance of target speed in lat and lon + // critical for the performance of target tracking + // lower value makes target go straight + // higher values allow target to make curves + +class Polar { + public: + int angle; + int r; + wxLongLong time; // wxGetUTCTimeMillis +}; + +class LocalPosition { + public: + double lat; + double lon; + double dlat_dt; // latitude of speed vector, m/s + double dlon_dt; // longitude of speed vector, m/s + double sd_speed_m_s; // standard deviation of the speed, m/s +}; + +static Matrix ZeroMatrix42; +static Matrix ZeroMatrix24; +static Matrix ZeroMatrix4; +static Matrix ZeroMatrix2; + +class KalmanFilter { + public: + KalmanFilter(); + ~KalmanFilter(); + void SetMeasurement(Polar* p, LocalPosition* x, Polar* expected, int range); + void Predict(LocalPosition* x, double delta_time); // measured position and expected position + void ResetFilter(); + void Update_P(); + + Matrix A; + Matrix AT; + Matrix W; + Matrix WT; + Matrix H; + Matrix HT; + Matrix P; + Matrix Q; + Matrix R; + Matrix K; + Matrix I; +}; + +PLUGIN_END_NAMESPACE +#endif diff -Nru opencpn-plugin-br24radar-2.1.0/src/Kalman-test.cpp opencpn-plugin-br24radar-3.0.1/src/Kalman-test.cpp --- opencpn-plugin-br24radar-2.1.0/src/Kalman-test.cpp 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/Kalman-test.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,114 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Navico BR24 Radar Plugin + * Author: David Register + * Dave Cowell + * Kees Verruijt + * Douwe Fokkema + * Sean D'Epagnier + *************************************************************************** + * Copyright (C) 2010 by David S. Register bdbcat@yahoo.com * + * Copyright (C) 2012-2013 by Dave Cowell * + * Copyright (C) 2012-2016 by Kees Verruijt canboat@verruijt.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + */ + +#include "Kalman.h" + +PLUGIN_BEGIN_NAMESPACE + +int main() { + int ret = 0; + KalmanFilter *filter = new KalmanFilter(); + Polar pol, expected; + LocalPosition x_local; + + Matrix m = {0.f, 0.f, 0.f, 0.f}; + + if (m(0, 0) != 0.f || m(0, 1) != 0.f || m(1, 0) != 0.f || m(1, 1) != 0.f) { + cout << "INFO: M(0,0)=" << m(0, 0) << " M(0,1)=" << m(0, 1) << " M(1,0)=" << m(1, 0) << " M(1,1)=" << m(1, 1) << "\n"; + cout << "ERROR: Matrix is not initialized to zero\n"; + ret = 1; + } + + m = ZeroMatrix2; + if (m(0, 0) != 0.f || m(0, 1) != 0.f || m(1, 0) != 0.f || m(1, 1) != 0.f) { + cout << "INFO: M(0,0)=" << m(0, 0) << " M(0,1)=" << m(0, 1) << " M(1,0)=" << m(1, 0) << " M(1,1)=" << m(1, 1) << "\n"; + cout << "ERROR: Matrix is not initialized to zero\n"; + ret = 1; + } + + m = m.Init(1.f); + + if (m(0, 0) != 1.f || m(0, 1) != 1.f || m(1, 0) != 1.f || m(1, 1) != 1.f) { + cout << "INFO: M(0,0)=" << m(0, 0) << " M(0,1)=" << m(0, 1) << " M(1,0)=" << m(1, 0) << " M(1,1)=" << m(1, 1) << "\n"; + cout << "ERROR: Matrix is not initialized to ones\n"; + ret = 1; + } + + m = m.Identity(); + + if (m(0, 0) != 1.f || m(0, 1) != 0.f || m(1, 0) != 0.f || m(1, 1) != 1.f) { + cout << "INFO: M(0,0)=" << m(0, 0) << " M(0,1)=" << m(0, 1) << " M(1,0)=" << m(1, 0) << " M(1,1)=" << m(1, 1) << "\n"; + cout << "ERROR: Matrix is not initialized to identity\n"; + ret = 1; + } + + pol.angle = 0; + pol.r = 1000; + pol.time = 1000; + + x_local.lat = 50; + x_local.lon = -5; + x_local.dlat_dt = 5; + x_local.dlon_dt = 2; + x_local.sd_speed_m_s = 0.2; + + expected.angle = 10; + expected.r = 1050; + expected.time = 6000; + + filter->SetMeasurement(&pol, &x_local, &expected, 4000); // pol is measured position in polar coordinates + filter->Predict(&x_local, (expected.time - pol.time).GetLo() / 1000.); // x_local is new estimated local position of the target + + cout << "INFO: The predicted location is: lat=" << x_local.lat << " lon=" << x_local.lon << "\n"; + cout << "INFO: Delta lat=" << x_local.dlat_dt << " Delta lon=" << x_local.dlon_dt << "\n"; + cout << "INFO: StdDev speed=" << x_local.sd_speed_m_s << "\n"; + +#define ASSERT_VALUE(name, actual, predicted) \ + if (fabs(actual - predicted) > 0.001) { \ + cout << "ERROR: Predicted " name " is not expected value " << predicted << " but " << actual << "\n"; \ + ret = 1; \ + } + + ASSERT_VALUE("lat", x_local.lat, 69.1754); + ASSERT_VALUE("lon", x_local.lon, 5); + ASSERT_VALUE("stddev", x_local.sd_speed_m_s, 2.03224); + + if (ret == 0) { + cout << "INFO: TEST PASSED\n"; + } else { + cout << "ERROR: TEST FAILED\n"; + } + exit(ret); +} + +PLUGIN_END_NAMESPACE + +int main() { br24::main(); } diff -Nru opencpn-plugin-br24radar-2.1.0/src/Matrix.h opencpn-plugin-br24radar-3.0.1/src/Matrix.h --- opencpn-plugin-br24radar-2.1.0/src/Matrix.h 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/Matrix.h 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,200 @@ +/****************************************************************************** + * Project: OpenCPN + * Purpose: Navico BR24 Radar Plugin + * Authors: Kees Verruijt, Blaz Bratanic + *************************************************************************** + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + * + * Matrix class derived from http://codereview.stackexchange.com/questions/43548/fixed-size-matrix-implementation + * + */ + +#ifndef _MATRIX_H_ +#define _MATRIX_H_ + +#include +#include +#include "pi_common.h" + +PLUGIN_BEGIN_NAMESPACE + +template +struct Matrix { + typedef Ty value_type; + + union { + struct { + Ty element[N][M]; + }; + struct { + Ty flatten[N * M]; + }; + }; + + // Access with bounds checking + Ty& operator()(const int r, const int c) { + assert(r >= 0 && r < N); + assert(c >= 0 && c < M); + return element[r][c]; + } + + const Ty operator()(const int r, const int c) const { + assert(r >= 0 && r < N); + assert(c >= 0 && c < M); + return element[r][c]; + } + + // Return matrix transpose + Matrix Transpose() const { + Matrix result; + for (int r = 0; r < N; ++r) { + for (int c = 0; c < M; ++c) { + result.element[c][r] = element[r][c]; + } + } + return result; + } + + // Return matrix initialized to value + Matrix Init(Ty value) const { + Matrix result; + for (int e = 0; e < M * N; ++e) { + result.flatten[e] = Ty(value); + } + return result; + } + + // Return matrix inverse + Matrix Inverse(); + + Matrix Identity() { + Matrix result = Matrix(); + for (int i = 0; i < N * N; ++i) result.flatten[i] = Ty(0); + for (int i = 0; i < N; ++i) result.element[i][i] = Ty(1); + return result; + } +}; + +/// +// Matrix Inverse +/// +// A design choice was made to keep Matrix an aggregate class to enable +// Matrix = {1.0f, 1.0f, 0.5f, 0.2f} initialization. +// With c++11 it would be possible to create a Matrix base class +// and derive all variations from it, while retaining the brace +// initialization. +// +// Matrix inverse helpers +namespace detail { +template +struct inverse; + +// Matrix inversion for 2x2 matrix +template +struct inverse { + Matrix operator()(const Matrix& a) { + Matrix result; + Ty det = a.element[0][0] * a.element[1][1] - a.element[0][1] * a.element[1][0]; + assert(det != 0); + + result.element[0][0] = a.element[1][1] / det; + result.element[1][1] = a.element[0][0] / det; + result.element[0][1] = -a.element[0][1] / det; + result.element[1][0] = -a.element[1][0] / det; + return result; + } +}; + +} // detail + +// Define matrix inverse +template +Matrix Matrix::Inverse() { + return detail::inverse()(*this); +} + +/// +// Matrix operations +/// +// Matrix product +template +Matrix operator*(const Matrix& a, const Matrix& b) { + Matrix result; + + for (int r = 0; r < N; ++r) { + for (int c = 0; c < P; ++c) { + Ty accum = Ty(0); + for (int i = 0; i < M; ++i) { + accum += a.element[r][i] * b.element[i][c]; + } + result.element[r][c] = accum; + } + } + return result; +} + +// Unary negation +template +Matrix operator-(const Matrix& a) { + Matrix result; + for (int e = 0; e < N * M; ++e) result.flatten[e] = -a.flatten[e]; + return result; +} + +#define MATRIX_WITH_MATRIX_OPERATOR(op_symbol, op) \ + template \ + Matrix operator op_symbol(const Matrix& a, const Matrix& b) { \ + Matrix result; \ + for (int e = 0; e < N * M; ++e) result.flatten[e] = a.flatten[e] op b.flatten[e]; \ + return result; \ + } + +MATRIX_WITH_MATRIX_OPERATOR(+, +); +MATRIX_WITH_MATRIX_OPERATOR(-, -); +#undef MATRIX_WITH_MATRIX_OPERATOR + +#define MATRIX_WITH_SCALAR_OPERATOR(op_symbol, op) \ + template \ + Matrix operator op_symbol(const Matrix& a, Ty scalar) { \ + Matrix result; \ + for (int e = 0; e < N * M; ++e) result.flatten[e] = a.flatten[e] op scalar; \ + return result; \ + } + +MATRIX_WITH_SCALAR_OPERATOR(+, +); +MATRIX_WITH_SCALAR_OPERATOR(-, -); +MATRIX_WITH_SCALAR_OPERATOR(*, *); +MATRIX_WITH_SCALAR_OPERATOR(/, /); +#undef MATRIX_WITH_SCALAR_OPERATOR + +template +Matrix operator+(Ty scalar, const Matrix& a) { + return a + scalar; +} + +template +Matrix operator*(Ty scalar, const Matrix& a) { + return a * scalar; +} + +template +Matrix operator-(Ty scalar, const Matrix& a) { + return -a + scalar; +} + +PLUGIN_END_NAMESPACE +#endif diff -Nru opencpn-plugin-br24radar-2.1.0/src/ocpn_plugin.h opencpn-plugin-br24radar-3.0.1/src/ocpn_plugin.h --- opencpn-plugin-br24radar-2.1.0/src/ocpn_plugin.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/ocpn_plugin.h 2017-09-24 10:58:54.000000000 +0000 @@ -49,7 +49,7 @@ // PlugIns conforming to API Version less then the most modern will also // be correctly supported. #define API_VERSION_MAJOR 1 -#define API_VERSION_MINOR 13 +#define API_VERSION_MINOR 14 // Fwd Definitions class wxFileConfig; @@ -57,6 +57,7 @@ class wxFont; class wxAuiManager; class wxScrolledWindow; +class wxGLCanvas; //--------------------------------------------------------------------------------------------------------- // @@ -476,6 +477,12 @@ virtual void OnToolbarToolUpCallback(int id); }; +class DECL_EXP opencpn_plugin_114 : public opencpn_plugin_113 { + public: + opencpn_plugin_114(void *pmgr); + virtual ~opencpn_plugin_114(); +}; + //------------------------------------------------------------------ // Route and Waypoint PlugIn support // @@ -715,6 +722,39 @@ virtual float *GetNoCOVRTableHead(int iTable); }; +// ---------------------------------------------------------------------------- +// PlugInChartBaseExtended +// Derived from PlugInChartBase, add extended chart support methods +// ---------------------------------------------------------------------------- + +class DECL_EXP PlugInChartBaseExtended : public PlugInChartBase { + public: + PlugInChartBaseExtended(); + virtual ~PlugInChartBaseExtended(); + + virtual int RenderRegionViewOnGL(const wxGLContext &glc, const PlugIn_ViewPort &VPoint, const wxRegion &Region, + bool b_use_stencil); + + virtual wxBitmap &RenderRegionViewOnDCNoText(const PlugIn_ViewPort &VPoint, const wxRegion &Region); + virtual bool RenderRegionViewOnDCTextOnly(wxMemoryDC &dc, const PlugIn_ViewPort &VPoint, const wxRegion &Region); + + virtual int RenderRegionViewOnGLNoText(const wxGLContext &glc, const PlugIn_ViewPort &VPoint, const wxRegion &Region, + bool b_use_stencil); + + virtual int RenderRegionViewOnGLTextOnly(const wxGLContext &glc, const PlugIn_ViewPort &VPoint, const wxRegion &Region, + bool b_use_stencil); + + virtual ListOfPI_S57Obj *GetObjRuleListAtLatLon(float lat, float lon, float select_radius, PlugIn_ViewPort *VPoint); + virtual wxString CreateObjDescriptions(ListOfPI_S57Obj *obj_list); + + virtual int GetNoCOVREntries(); + virtual int GetNoCOVRTablePoints(int iTable); + virtual int GetNoCOVRTablenPoints(int iTable); + virtual float *GetNoCOVRTableHead(int iTable); + + virtual void ClearPLIBTextList(); +}; + class wxArrayOfS57attVal; // name of the addressed look up table set (fifth letter) @@ -1078,4 +1118,10 @@ extern WXDLLIMPEXP_CORE const wxEventType wxEVT_DOWNLOAD_EVENT; +// API 1.14 Extra canvas Support + +/* Allow drawing of objects onto other OpenGL canvases */ +extern DECL_EXP void PlugInAISDrawGL(wxGLCanvas *glcanvas, const PlugIn_ViewPort &vp); +extern DECL_EXP bool PlugInSetFontColor(const wxString TextElement, const wxColour color); + #endif //_PLUGIN_H_ diff -Nru opencpn-plugin-br24radar-2.1.0/src/pi_common.h opencpn-plugin-br24radar-3.0.1/src/pi_common.h --- opencpn-plugin-br24radar-2.1.0/src/pi_common.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/pi_common.h 2017-09-24 10:58:54.000000000 +0000 @@ -45,8 +45,8 @@ #ifdef __WXGTK__ #include "GL/gl.h" -#include "GL/glu.h" #include "GL/glext.h" +#include "GL/glu.h" #endif #ifdef __WXOSX__ @@ -72,23 +72,23 @@ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpotentially-evaluated-expression" #endif -#include "wx/wx.h" #include "wx/aui/aui.h" #include "wx/aui/framemanager.h" +#include "wx/wx.h" #ifdef __WXOSX__ #pragma clang diagnostic pop #endif -#include +#include #include -#include +#include #include #include #include #include -#include +#include +#include #include -#include using namespace std; @@ -98,19 +98,9 @@ #endif #ifdef __WXOSX__ -#include -#include #include -#endif - -// Load the ocpn_plugin. On OS X this generates many warnings, suppress these. -#ifdef __WXOSX__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Woverloaded-virtual" -#endif -#include "ocpn_plugin.h" -#ifdef __WXOSX__ -#pragma clang diagnostic pop +#include +#include #endif #ifndef SOCKET @@ -151,6 +141,7 @@ #endif #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) +#define CLEAR_STRUCT(x) memset(&x, 0, sizeof(x)) #define MILLISECONDS_PER_SECOND (1000) @@ -164,4 +155,9 @@ #define rad2deg(x) ((x)*360.0 / (2 * PI)) #endif +#define SPOKES (4096) // BR radars can generate up to 4096 spokes per rotation, +#define LINES_PER_ROTATION (2048) // but use only half that in practice +#define RETURNS_PER_LINE (512) // BR radars generate 512 separate values per range, at 8 bits each +#define DEGREES_PER_ROTATION (360) // Classical math + #endif Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_amber.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_amber.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_amber_slave.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_amber_slave.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_blank.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_blank.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_blank_slave.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_blank_slave.png differ diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarCanvas.cpp opencpn-plugin-br24radar-3.0.1/src/RadarCanvas.cpp --- opencpn-plugin-br24radar-2.1.0/src/RadarCanvas.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarCanvas.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -30,8 +30,8 @@ */ #include "RadarCanvas.h" -#include "drawutil.h" #include "TextureFont.h" +#include "drawutil.h" PLUGIN_BEGIN_NAMESPACE @@ -159,6 +159,9 @@ int px; int py; + glPushMatrix(); + glPushAttrib(GL_ALL_ATTRIB_BITS); + glColor3ub(0, 126, 29); // same color as HDS glLineWidth(1.0); @@ -170,9 +173,27 @@ } } - if (m_pi->m_heading_source != HEADING_NONE) { - double heading = (m_ri->IsDisplayNorthUp() ? 0 : m_pi->m_hdt) + 180.; - double predictor = (m_ri->IsDisplayNorthUp() ? m_pi->m_hdt : 0) + 180.; + if (m_pi->GetHeadingSource() != HEADING_NONE) { + double heading; + double predictor; + switch (m_ri->GetOrientation()) { + case ORIENTATION_HEAD_UP: + heading = m_pi->GetHeadingTrue() + 180.; + predictor = 180.; + break; + case ORIENTATION_STABILIZED_UP: + heading = m_ri->m_course + 180.; + predictor = m_pi->GetHeadingTrue() + 180. - m_ri->m_course; + break; + case ORIENTATION_NORTH_UP: + heading = 180; + predictor = m_pi->GetHeadingTrue() + 180; + break; + case ORIENTATION_COG_UP: + heading = m_pi->GetCOG() + 180.; + predictor = m_pi->GetHeadingTrue() + 180. - heading; + break; + } x = -sinf(deg2rad(predictor)); y = cosf(deg2rad(predictor)); @@ -192,6 +213,7 @@ } else if (i % 15 == 0) { s = wxString::Format(wxT("%u"), i); } + m_FontNormal.GetTextExtent(s, &px, &py); if (x > 0) { x -= px; @@ -202,6 +224,9 @@ m_FontNormal.RenderString(s, center_x + x, center_y + y); } } + + glPopAttrib(); + glPopMatrix(); } void RadarCanvas::FillCursorTexture() { @@ -269,19 +294,22 @@ void RadarCanvas::RenderCursor(int w, int h) { double distance; double bearing; + double radar_lat, radar_lon; - if (m_ri->m_mouse_vrm != 0.0) { + int orientation = m_ri->GetOrientation(); + + if (!isnan(m_ri->m_mouse_vrm)) { distance = m_ri->m_mouse_vrm * 1852.; - bearing = m_ri->m_mouse_ebl; + bearing = m_ri->m_mouse_ebl[orientation]; } else { - if ((m_ri->m_mouse_lat == 0.0 && m_ri->m_mouse_lon == 0.0) || !m_pi->m_bpos_set) { + if (isnan(m_ri->m_mouse_lat) || isnan(m_ri->m_mouse_lon) || !m_pi->GetRadarPosition(&radar_lat, &radar_lon)) { return; } // Can't compute this upfront, ownship may move... - distance = local_distance(m_pi->m_ownship_lat, m_pi->m_ownship_lon, m_ri->m_mouse_lat, m_ri->m_mouse_lon) * 1852.; - bearing = local_bearing(m_pi->m_ownship_lat, m_pi->m_ownship_lon, m_ri->m_mouse_lat, m_ri->m_mouse_lon); - if (!m_ri->IsDisplayNorthUp()) { - bearing -= m_pi->m_hdt; + distance = local_distance(radar_lat, radar_lon, m_ri->m_mouse_lat, m_ri->m_mouse_lon) * 1852.; + bearing = local_bearing(radar_lat, radar_lon, m_ri->m_mouse_lat, m_ri->m_mouse_lon); + if (m_ri->GetOrientation() != ORIENTATION_NORTH_UP) { + bearing -= m_pi->GetHeadingTrue(); } // LOG_DIALOG(wxT("BR24radar_pi: Chart Mouse vrm=%f ebl=%f"), distance / 1852.0, bearing); } @@ -327,33 +355,41 @@ float full_range = wxMax(w, h) / 2.0; float center_x = w / 2.0; float center_y = h / 2.0; - int display_range = m_ri->GetDisplayRange(); + int orientation = m_ri->GetOrientation(); for (int b = 0; b < BEARING_LINES; b++) { - if (m_ri->m_vrm[b] != 0.0) { + float x, y; + glColor3ubv(rgb[b]); + glLineWidth(1.0); + if (!isnan(m_ri->m_vrm[b])) { float scale = m_ri->m_vrm[b] * 1852.0 * full_range / display_range; - float angle = (float)deg2rad(m_ri->m_ebl[b]); - float x = center_x + sinf(angle) * full_range * 2.; - float y = center_y - cosf(angle) * full_range * 2.; - - glColor3ubv(rgb[b]); - glLineWidth(1.0); - - glBegin(GL_LINES); - glVertex2f(center_x, center_y); - glVertex2f(x, y); - glEnd(); - + if (m_ri->m_ebl[orientation][b] != nanl("")) { + float angle = (float)deg2rad(m_ri->m_ebl[orientation][b]); + x = center_x + sinf(angle) * full_range * 2.; + y = center_y - cosf(angle) * full_range * 2.; + glBegin(GL_LINES); + glVertex2f(center_x, center_y); + glVertex2f(x, y); + glEnd(); + } DrawArc(center_x, center_y, scale, 0.f, 2.f * (float)PI, 360); } } } +static void ResetGLViewPort(int w, int h) { + glViewport(0, 0, w, h); + glMatrixMode(GL_PROJECTION); // Next two operations on the project matrix stack + glLoadIdentity(); // Reset projection matrix stack + glOrtho(0, w, h, 0, -1, 1); + glMatrixMode(GL_MODELVIEW); // Reset matrick stack target back to GL_MODELVIEW +} + void RadarCanvas::Render(wxPaintEvent &evt) { int w, h; - if (!IsShown() || !m_pi->m_initialized) { + if (!IsShown() || !m_pi->IsInitialized()) { return; } @@ -361,12 +397,7 @@ wxPaintDC(this); // only to be used in paint events. use wxClientDC to paint // outside the paint event - if (!m_pi->m_opengl_mode) { - LOG_DIALOG(wxT("BR24radar_pi: %s cannot render non-OpenGL mode"), m_ri->m_name.c_str()); - return; - } - if (!m_pi->m_opencpn_gl_context && !m_pi->m_opencpn_gl_context_broken) { - LOG_DIALOG(wxT("BR24radar_pi: %s skip render as no context known yet"), m_ri->m_name.c_str()); + if (!m_pi->IsOpenGLEnabled()) { return; } LOG_DIALOG(wxT("BR24radar_pi: %s render OpenGL canvas %d by %d "), m_ri->m_name.c_str(), w, h); @@ -380,32 +411,84 @@ m_FontNormal.Build(font); wxFont bigFont = GetOCPNGUIScaledFont_PlugIn(_T("Dialog")); bigFont.SetPointSize(bigFont.GetPointSize() + 2); - bigFont.SetStyle(wxFONTWEIGHT_BOLD); + bigFont.SetWeight(wxFONTWEIGHT_BOLD); m_FontBig.Build(bigFont); bigFont.SetPointSize(bigFont.GetPointSize() + 2); - bigFont.SetStyle(wxFONTWEIGHT_NORMAL); + bigFont.SetWeight(wxFONTWEIGHT_NORMAL); m_FontMenu.Build(bigFont); bigFont.SetPointSize(bigFont.GetPointSize() + 10); - bigFont.SetStyle(wxFONTWEIGHT_BOLD); + bigFont.SetWeight(wxFONTWEIGHT_BOLD); m_FontMenuBold.Build(bigFont); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Black Background + wxColour bg = M_SETTINGS.ppi_background_colour; + glClearColor(bg.Red() / 256.0, bg.Green() / 256.0, bg.Blue() / 256.0, bg.Alpha() / 256.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear the canvas glEnable(GL_TEXTURE_2D); // Enable textures glEnable(GL_COLOR_MATERIAL); glEnable(GL_BLEND); - // glDisable(GL_DEPTH_TEST); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); // Next two operations on the project matrix stack - glLoadIdentity(); // Reset projection matrix stack - glOrtho(0, w, h, 0, -1, 1); - glMatrixMode(GL_MODELVIEW); // Reset matrick stack target back to GL_MODELVIEW - + // LAYER 1 - RANGE RINGS AND HEADINGS + ResetGLViewPort(w, h); RenderRangeRingsAndHeading(w, h); + + PlugIn_ViewPort vp; + + if (m_pi->GetHeadingSource() != HEADING_NONE && m_pi->GetRadarPosition(&vp.clat, &vp.clon) && + M_SETTINGS.show_radar_target[m_ri->m_radar]) { + // LAYER 2 - AIS AND ARPA TARGETS + + ResetGLViewPort(w, h); + glPushMatrix(); + glPushAttrib(GL_ALL_ATTRIB_BITS); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + + vp.m_projection_type = 4; // Orthographic projection + float full_range = wxMax(w, h) / 2.0; + int display_range = m_ri->GetDisplayRange(); + + switch (m_ri->GetOrientation()) { + case ORIENTATION_HEAD_UP: + case ORIENTATION_STABILIZED_UP: + vp.rotation = deg2rad(-m_pi->GetHeadingTrue()); + break; + case ORIENTATION_NORTH_UP: + vp.rotation = 0.; + break; + case ORIENTATION_COG_UP: + vp.rotation = deg2rad(-m_pi->GetCOG()); + break; + } + + vp.view_scale_ppm = full_range / display_range; + vp.skew = 0.; + vp.pix_width = w; + vp.pix_height = h; + + wxString aisTextFont = _("AIS Target Name"); + wxFont *aisFont = GetOCPNScaledFont_PlugIn(aisTextFont, 12); + wxColour aisFontColor = GetFontColour_PlugIn(aisTextFont); + + if (aisFont) { + wxColour newFontColor = M_SETTINGS.ais_text_colour; + PlugInSetFontColor(aisTextFont, newFontColor); + newFontColor = GetFontColour_PlugIn(aisTextFont); + } + PlugInAISDrawGL(this, vp); + if (aisFont) { + PlugInSetFontColor(aisTextFont, aisFontColor); + } + + glPopAttrib(); + glPopMatrix(); + } + + // LAYER 3 - EBL & VRM + + ResetGLViewPort(w, h); Render_EBL_VRM(w, h); + // LAYER 4 - RADAR RETURNS glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); // Next two operations on the project matrix stack glLoadIdentity(); // Reset projection matrix stack @@ -415,36 +498,22 @@ glScaled((float)h / w, -1.0, 1.0); } glMatrixMode(GL_MODELVIEW); // Reset matrick stack target back to GL_MODELVIEW - m_ri->RenderRadarImage(wxPoint(0, 0), 1.0, 0.0, false); - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); // Next two operations on the project matrix stack - glLoadIdentity(); // Reset projection matrix stack - glOrtho(0, w, h, 0, -1, 1); - glMatrixMode(GL_MODELVIEW); // Reset matrick stack target back to GL_MODELVIEW - - glEnable(GL_TEXTURE_2D); - + // LAYER 5 - TEXTS & CURSOR + ResetGLViewPort(w, h); RenderTexts(w, h); RenderCursor(w, h); -#ifdef NEVER - glDisable(GL_TEXTURE_2D); - - glMatrixMode(GL_PROJECTION); // Next two operations on the project matrix stack - glLoadIdentity(); // Reset projection matrix stack - glMatrixMode(GL_MODELVIEW); // Reset matrick stack target back to GL_MODELVIEW -#endif - glPopAttrib(); glPopMatrix(); glFlush(); glFinish(); SwapBuffers(); - if (m_pi->m_opencpn_gl_context) { - SetCurrent(*m_pi->m_opencpn_gl_context); + wxGLContext *chart_context = m_pi->GetChartOpenGLContext(); + if (chart_context) { + SetCurrent(*chart_context); } else { SetCurrent(*m_zero_context); // Make sure OpenCPN -at least- doesn't overwrite our context info } @@ -459,34 +528,35 @@ int center_x = w / 2; int center_y = h / 2; - LOG_DIALOG(wxT("BR24radar_pi: %s Mouse clicked at %d, %d"), m_ri->m_name.c_str(), x, y); + // LOG_DIALOG(wxT("BR24radar_pi: %s Mouse clicked at %d, %d"), m_ri->m_name.c_str(), x, y); + if (x > 0 && x < w && y > 0 && y < h) { + if (x >= w - m_menu_size.x && y < m_menu_size.y) { + m_pi->ShowRadarControl(m_ri->m_radar, true); + } else if ((x >= center_x - m_zoom_size.x / 2) && (x <= center_x + m_zoom_size.x / 2) && + (y > h - m_zoom_size.y + MENU_ROUNDING)) { + if (x > center_x) { + m_ri->AdjustRange(+1); + } else { + m_ri->AdjustRange(-1); + } - if (x >= w - m_menu_size.x && y < m_menu_size.y) { - m_pi->ShowRadarControl(m_ri->m_radar, true); - } else if ((x >= center_x - m_zoom_size.x / 2) && (x <= center_x + m_zoom_size.x / 2) && - (y > h - m_zoom_size.y + MENU_ROUNDING)) { - if (x > center_x) { - m_ri->AdjustRange(+1); } else { - m_ri->AdjustRange(-1); - } + double delta_x = x - center_x; + double delta_y = y - center_y; - } else { - double delta_x = x - center_x; - double delta_y = y - center_y; + double distance = sqrt(delta_x * delta_x + delta_y * delta_y); - double distance = sqrt(delta_x * delta_x + delta_y * delta_y); + int display_range = m_ri->GetDisplayRange(); - int display_range = m_ri->GetDisplayRange(); - - double angle = fmod(rad2deg(atan2(delta_y, delta_x)) + 720. + 90., 360.0); + double angle = fmod(rad2deg(atan2(delta_y, delta_x)) + 720. + 90., 360.0); - double full_range = wxMax(w, h) / 2.0; + double full_range = wxMax(w, h) / 2.0; - double range = distance / (1852.0 * full_range / display_range); + double range = distance / (1852.0 * full_range / display_range); - LOG_VERBOSE(wxT("BR24radar_pi: cursor in PPI at angle=%.1f range=%f heading=%.1f"), angle, range); - m_ri->SetMouseVrmEbl(range, angle); + LOG_VERBOSE(wxT("BR24radar_pi: cursor in PPI at angle=%.1fdeg range=%.2fnm"), angle, range); + m_ri->SetMouseVrmEbl(range, angle); + } } event.Skip(); } @@ -495,12 +565,12 @@ #define ZOOM_SENSITIVITY 0 // Increase to make less sensitive void RadarCanvas::OnMouseWheel(wxMouseEvent &event) { - int delta = event.GetWheelDelta(); + // int delta = event.GetWheelDelta(); int rotation = event.GetWheelRotation(); wxLongLong now = wxGetUTCTimeMillis(); - LOG_INFO(wxT("BR24radar_pi: %s Mouse range wheel %d / %d"), m_ri->m_name.c_str(), rotation, delta); + // LOG_INFO(wxT("BR24radar_pi: %s Mouse range wheel %d / %d"), m_ri->m_name.c_str(), rotation, delta); if (rotation) { if (m_pi->m_settings.reverse_zoom) { diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarCanvas.h opencpn-plugin-br24radar-3.0.1/src/RadarCanvas.h --- opencpn-plugin-br24radar-2.1.0/src/RadarCanvas.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarCanvas.h 2017-09-24 10:58:54.000000000 +0000 @@ -32,8 +32,8 @@ #ifndef _RADAR_CANVAS_H_ #define _RADAR_CANVAS_H_ -#include "br24radar_pi.h" #include "TextureFont.h" +#include "br24radar_pi.h" PLUGIN_BEGIN_NAMESPACE @@ -59,8 +59,8 @@ br24radar_pi* m_pi; RadarInfo* m_ri; - wxGLContext* m_context; // Our GL context - wxGLContext* m_zero_context; // Set OpenGL back to this after using m_context so O doesn't accidentally use ours + wxGLContext* m_context; // Our GL context + wxGLContext* m_zero_context; TextureFont m_FontNormal; TextureFont m_FontBig; diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarDraw.cpp opencpn-plugin-br24radar-3.0.1/src/RadarDraw.cpp --- opencpn-plugin-br24radar-2.1.0/src/RadarDraw.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarDraw.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -30,8 +30,8 @@ */ #include "RadarDraw.h" -#include "RadarDrawVertex.h" #include "RadarDrawShader.h" +#include "RadarDrawVertex.h" PLUGIN_BEGIN_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarDrawShader.cpp opencpn-plugin-br24radar-3.0.1/src/RadarDrawShader.cpp --- opencpn-plugin-br24radar-2.1.0/src/RadarDrawShader.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarDrawShader.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -30,8 +30,8 @@ */ #include "RadarDrawShader.h" -#include "shaderutil.h" #include "drawutil.h" +#include "shaderutil.h" PLUGIN_BEGIN_NAMESPACE @@ -108,7 +108,7 @@ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); m_start_line = -1; - m_end_line = 0; + m_lines = 0; return true; } @@ -150,8 +150,9 @@ if (m_start_line > -1) { // Since the last time we have received data from [m_start_line, m_end_line> // so we only need to update the texture for those data lines. - if (m_end_line < m_start_line) { - // if the new data wraps past the end of the texture + if (m_start_line + m_lines > LINES_PER_ROTATION) { + int end_line = MOD_ROTATION2048(m_start_line + m_lines); + // if the new data partly wraps past the end of the texture // tell it the two parts separately // First remap [0, m_end_line> glTexSubImage2D(/* target = */ GL_TEXTURE_2D, @@ -159,7 +160,7 @@ /* x-offset = */ 0, /* y-offset = */ 0, /* width = */ RETURNS_PER_LINE, - /* height = */ m_end_line, + /* height = */ end_line, /* format = */ m_format, /* type = */ GL_UNSIGNED_BYTE, /* pixels = */ m_data); @@ -174,19 +175,19 @@ /* type = */ GL_UNSIGNED_BYTE, /* pixels = */ m_data + m_start_line * RETURNS_PER_LINE * m_channels); } else { - // Remap [m_start_line, m_end_line> + // Map [m_start_line, m_end_line> glTexSubImage2D(/* target = */ GL_TEXTURE_2D, /* level = */ 0, /* x-offset = */ 0, /* y-offset = */ m_start_line, /* width = */ RETURNS_PER_LINE, - /* height = */ m_end_line - m_start_line, + /* height = */ m_lines, /* format = */ m_format, /* type = */ GL_UNSIGNED_BYTE, /* pixels = */ m_data + m_start_line * RETURNS_PER_LINE * m_channels); } m_start_line = -1; - m_end_line = 0; + m_lines = 0; } // We tell the GPU to draw a square from (-512,-512) to (+512,+512). @@ -214,7 +215,9 @@ if (m_start_line == -1) { m_start_line = angle; // Note that this only runs once after each draw, } - m_end_line = angle + 1; // whereas this keeps running every draw operation + if (m_lines < LINES_PER_ROTATION) { + m_lines++; + } if (m_channels == SHADER_COLOR_CHANNELS) { unsigned char *d = m_data + (angle * RETURNS_PER_LINE) * m_channels; diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarDrawShader.h opencpn-plugin-br24radar-3.0.1/src/RadarDrawShader.h --- opencpn-plugin-br24radar-2.1.0/src/RadarDrawShader.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarDrawShader.h 2017-09-24 10:58:54.000000000 +0000 @@ -42,15 +42,15 @@ public: RadarDrawShader(RadarInfo* ri) { m_ri = ri; - m_start_line = LINES_PER_ROTATION; - m_end_line = 0; + m_start_line = -1; // No spokes received since last draw + m_lines = 0; m_texture = 0; m_fragment = 0; m_vertex = 0; m_program = 0; m_format = GL_RGBA; m_channels = SHADER_COLOR_CHANNELS; - memset(m_data, 0, sizeof(m_data)); + CLEAR_STRUCT(m_data); } ~RadarDrawShader(); @@ -64,8 +64,8 @@ wxCriticalSection m_exclusive; // protects the following three data structures unsigned char m_data[SHADER_COLOR_CHANNELS * LINES_PER_ROTATION * RETURNS_PER_LINE]; - int m_start_line; - int m_end_line; + int m_start_line; // First line received since last draw, or -1 + int m_lines; // # of lines received since last draw int m_format; int m_channels; Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_green.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_green.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_green_slave.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_green_slave.png differ diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarInfo.cpp opencpn-plugin-br24radar-3.0.1/src/RadarInfo.cpp --- opencpn-plugin-br24radar-2.1.0/src/RadarInfo.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarInfo.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -30,24 +30,19 @@ */ #include "RadarInfo.h" -#include "drawutil.h" -#include "br24Receive.h" -#include "br24Transmit.h" -#include "RadarDraw.h" #include "RadarCanvas.h" +#include "RadarDraw.h" +#include "RadarMarpa.h" #include "RadarPanel.h" #include "br24ControlsDialog.h" +#include "br24Receive.h" +#include "br24Transmit.h" +#include "drawutil.h" PLUGIN_BEGIN_NAMESPACE bool g_first_render = true; -enum { TIMER_ID = 1 }; - -BEGIN_EVENT_TABLE(RadarInfo, wxEvtHandler) -EVT_TIMER(TIMER_ID, RadarInfo::RefreshDisplay) -END_EVENT_TABLE() - static const RadarRange g_ranges_metric[] = { /* Nautical (mixed) first */ {50, 98, "50 m", 0, 0, 0}, @@ -133,71 +128,87 @@ void radar_range_control_item::Update(int v) { radar_control_item::Update(v); + wxCriticalSectionLocker lock(m_exclusive); + size_t g; + const RadarRange *newRange = 0; // Find out which nautical or metric range is the one represented by 'value'. // First we look up according to the desired setting (metric/nautical) and if // that doesn't work we look up nautical then metric. - range = 0; if (m_settings->range_units == RANGE_NAUTICAL) { for (g = 0; g < ARRAY_SIZE(g_ranges_nautic); g++) { - if (g_ranges_nautic[g].meters == value) { - range = &g_ranges_nautic[g]; + if (g_ranges_nautic[g].meters == m_value) { + newRange = &g_ranges_nautic[g]; break; } } } else { for (g = 0; g < ARRAY_SIZE(g_ranges_metric); g++) { - if (g_ranges_metric[g].meters == value) { - range = &g_ranges_metric[g]; + if (g_ranges_metric[g].meters == m_value) { + newRange = &g_ranges_metric[g]; break; } } } - if (!range) { + if (!newRange) { for (g = 0; g < ARRAY_SIZE(g_ranges_nautic); g++) { - if (g_ranges_nautic[g].meters == value) { - range = &g_ranges_nautic[g]; + if (g_ranges_nautic[g].meters == m_value) { + newRange = &g_ranges_nautic[g]; break; } } } - if (!range) { + if (!newRange) { for (g = 0; g < ARRAY_SIZE(g_ranges_metric); g++) { - if (g_ranges_metric[g].meters == value) { - range = &g_ranges_metric[g]; + if (g_ranges_metric[g].meters == m_value) { + newRange = &g_ranges_metric[g]; break; } } } + + m_range = newRange; } +/** + * Constructor. + * + * Called when the config is not yet known, so this should not start any + * computations based on those yet. + */ RadarInfo::RadarInfo(br24radar_pi *pi, int radar) { m_pi = pi; m_radar = radar; - + m_arpa = 0; m_radar_type = RT_UNKNOWN; m_auto_range_mode = true; + m_course_index = 0; + m_old_range = 0; + m_dir_lat = 0; + m_dir_lon = 0; m_range_meters = 0; m_auto_range_meters = 0; m_previous_auto_range_meters = 0; + m_previous_orientation = ORIENTATION_HEAD_UP; m_stayalive_timeout = 0; m_radar_timeout = 0; m_data_timeout = 0; - m_multi_sweep_filter = false; - - memset(&m_statistics, 0, sizeof(m_statistics)); + ClearTrails(); + CLEAR_STRUCT(m_statistics); + CLEAR_STRUCT(m_course_log); - m_mouse_lat = 0.0; - m_mouse_lon = 0.0; - m_mouse_vrm = 0.0; - m_mouse_ebl = 0.0; - for (int b = 0; b < BEARING_LINES; b++) { - m_ebl[b] = 0.0; - m_vrm[b] = 0.0; + m_mouse_lat = NAN; + m_mouse_lon = NAN; + for (int i = 0; i < ORIENTATION_NUMBER; i++) { + m_mouse_ebl[i] = NAN; + m_mouse_vrm = NAN; + for (int b = 0; b < BEARING_LINES; b++) { + m_ebl[i][b] = NAN; + m_vrm[b] = NAN; + } } - m_transmit = 0; m_receive = 0; m_draw_panel.draw = 0; @@ -205,24 +216,49 @@ m_radar_panel = 0; m_radar_canvas = 0; m_control_dialog = 0; - m_state.value = 0; - m_state.mod = false; - m_state.button = 0; + m_state.Update(RADAR_OFF); m_range.m_settings = &m_pi->m_settings; + m_refresh_millis = 50; + m_arpa = new RadarArpa(m_pi, this); for (size_t z = 0; z < GUARD_ZONES; z++) { - m_guard_zone[z] = new GuardZone(pi, radar, z); + m_guard_zone[z] = new GuardZone(m_pi, this, z); } +} - ComputeTargetTrails(); +void RadarInfo::Shutdown() { + if (m_receive) { + m_receive->Shutdown(); - m_timer = new wxTimer(this, TIMER_ID); - m_overlay_refreshes_queued = 0; - m_refreshes_queued = 0; - m_refresh_millis = 50; -} + wxLongLong threadStartWait = wxGetUTCTimeMillis(); + m_receive->Wait(); + wxLongLong threadEndWait = wxGetUTCTimeMillis(); + wxLongLong threadExtraWait = 0; + // See if Douwe is right and Wait() doesn't work properly -- attests it returns + // before the thread is dead. + while (!m_receive->m_is_shutdown) { + wxYield(); + wxMilliSleep(10); + threadExtraWait = wxGetUTCTimeMillis(); + } + + // Now log what we have done + if (threadExtraWait != 0) { + LOG_INFO(wxT("BR24radar_pi: %s receive thread wait did not work, had to wait for %lu ms extra"), m_name.c_str(), + threadExtraWait - threadEndWait); + threadEndWait = threadExtraWait; + } + if (m_receive->m_shutdown_time_requested != 0) { + LOG_INFO(wxT("BR24radar_pi: %s receive thread stopped in %lu ms, had to wait for %lu ms"), m_name.c_str(), + threadEndWait - m_receive->m_shutdown_time_requested, threadEndWait - threadStartWait); + } else { + LOG_INFO(wxT("BR24radar_pi: %s receive thread stopped in %lu ms, had to wait for %lu ms"), m_name.c_str(), + threadEndWait - m_receive->m_shutdown_time_requested, threadEndWait - threadStartWait); + } + delete m_receive; + m_receive = 0; + } -void RadarInfo::DeleteDialogs() { if (m_control_dialog) { delete m_control_dialog; m_control_dialog = 0; @@ -234,18 +270,6 @@ } RadarInfo::~RadarInfo() { - m_timer->Stop(); - if (m_receive) { - LOG_VERBOSE(wxT("BR24radar_pi: %s receive thread request stop"), m_name.c_str()); - m_receive->Shutdown(); - LOG_VERBOSE(wxT("BR24radar_pi: %s receive thread stopped"), m_name.c_str()); - m_receive->Wait(); - LOG_VERBOSE(wxT("BR24radar_pi: %s receive thread delete"), m_name.c_str()); - delete m_receive; - LOG_VERBOSE(wxT("BR24radar_pi: %s receive thread deleted"), m_name.c_str()); - m_receive = 0; - } - DeleteDialogs(); if (m_draw_panel.draw) { delete m_draw_panel.draw; m_draw_panel.draw = 0; @@ -258,12 +282,21 @@ delete m_transmit; m_transmit = 0; } + if (m_arpa) { + delete m_arpa; + m_arpa = 0; + } for (size_t z = 0; z < GUARD_ZONES; z++) { delete m_guard_zone[z]; m_guard_zone[z] = 0; } } +/** + * Initialize the on-screen and receive/transmit items. + * + * This is called after the config file has been loaded, so all state is known. + */ bool RadarInfo::Init(wxString name, int verbose) { m_verbose = verbose; @@ -278,7 +311,9 @@ wxLogError(wxT("BR24radar_pi %s: Unable to create RadarPanel"), name.c_str()); return false; } - m_timer->Start(m_refresh_millis); + + ComputeTargetTrails(); + return true; } @@ -302,6 +337,7 @@ if (!m_pi->m_settings.show_radar[m_radar]) { parent = GetOCPNCanvasWindow(); } + LOG_VERBOSE(wxT("BR24radar_pi %s: Creating control dialog"), m_name.c_str()); m_control_dialog->Create(parent, m_pi, this, wxID_ANY, m_name, m_pi->m_settings.control_pos[m_radar]); } m_control_dialog->ShowDialog(); @@ -318,7 +354,7 @@ wxLogError(wxT("BR24radar_pi %s: Unable to create transmit socket"), m_name.c_str()); } m_stayalive_timeout = 0; // Allow immediate restart of any TxOn or TxOff command - m_pi->NotifyRadarWindowViz(); + m_pi->NotifyControlDialog(); } void RadarInfo::SetName(wxString name) { @@ -338,6 +374,9 @@ m_receive = new br24Receive(m_pi, this); if (!m_receive || (m_receive->Run() != wxTHREAD_NO_ERROR)) { LOG_INFO(wxT("BR24radar_pi: %s unable to start receive thread."), m_name.c_str()); + if (m_receive) { + delete m_receive; + } m_receive = 0; } } @@ -345,8 +384,8 @@ void RadarInfo::ComputeColourMap() { for (int i = 0; i <= UINT8_MAX; i++) { - m_colour_map[i] = - (i >= m_pi->m_settings.threshold_red) ? BLOB_STRONG : (i >= m_pi->m_settings.threshold_green) + m_colour_map[i] = (i >= m_pi->m_settings.threshold_red) ? BLOB_STRONG + : (i >= m_pi->m_settings.threshold_green) ? BLOB_INTERMEDIATE : (i >= m_pi->m_settings.threshold_blue) ? BLOB_WEAK : BLOB_NONE; } @@ -358,7 +397,7 @@ m_colour_map_rgb[BLOB_INTERMEDIATE] = m_pi->m_settings.intermediate_colour; m_colour_map_rgb[BLOB_WEAK] = m_pi->m_settings.weak_colour; - if (m_target_trails.value > 0) { + if (m_trails_motion.GetValue() > 0) { float r1 = m_pi->m_settings.trail_start_colour.Red(); float g1 = m_pi->m_settings.trail_start_colour.Green(); float b1 = m_pi->m_settings.trail_start_colour.Blue(); @@ -383,11 +422,10 @@ void RadarInfo::ResetSpokes() { UINT8 zap[RETURNS_PER_LINE]; - LOG_VERBOSE(wxT("BR24radar_pi: reset spokes, history and trails")); + LOG_VERBOSE(wxT("BR24radar_pi: reset spokes")); - memset(zap, 0, sizeof(zap)); - memset(m_history, 0, sizeof(m_history)); - ClearTrails(); + CLEAR_STRUCT(zap); + CLEAR_STRUCT(m_history); if (m_draw_panel.draw) { for (size_t r = 0; r < LINES_PER_ROTATION; r++) { @@ -399,6 +437,7 @@ m_draw_overlay.draw->ProcessRadarSpoke(0, r, zap, sizeof(zap)); } } + for (size_t z = 0; z < GUARD_ZONES; z++) { // Zap them anyway just to be sure m_guard_zone[z]->ResetBogeys(); @@ -415,56 +454,69 @@ * @param len Number of returns * @param range Range (in meters) of this data */ -void RadarInfo::ProcessRadarSpoke(SpokeBearing angle, SpokeBearing bearing, UINT8 *data, size_t len, int range_meters) { - wxCriticalSectionLocker lock(m_exclusive); +void RadarInfo::ProcessRadarSpoke(SpokeBearing angle, SpokeBearing bearing, UINT8 *data, size_t len, int range_meters, + wxLongLong time_rec, double lat, double lon) { + int orientation; + + // calculate course as the moving average of m_hdt over one revolution + SampleCourse(angle); // used for course_up mode for (int i = 0; i < m_pi->m_settings.main_bang_size; i++) { data[i] = 0; } + if (m_pi->m_settings.show_extreme_range) { + data[RETURNS_PER_LINE - 1] = 255; // range ring, do we want this? ActionL: make setting, switched on for testing + data[1] = 255; // Main bang on purpose to show radar center + data[0] = 255; // Main bang on purpose to show radar center + } + if (m_range_meters != range_meters) { ResetSpokes(); + if (m_arpa) { + m_arpa->ClearContours(); + } LOG_VERBOSE(wxT("BR24radar_pi: %s detected spoke range change from %d to %d meters"), m_name.c_str(), m_range_meters, range_meters); m_range_meters = range_meters; - if (!m_range.value) { + if (!m_range.GetValue()) { m_range.Update(convertSpokeMetersToRangeMeters(range_meters)); } + } - } else if (m_orientation.mod) { + orientation = GetOrientation(); + if ((orientation == ORIENTATION_HEAD_UP || m_previous_orientation == ORIENTATION_HEAD_UP) && + (orientation != m_previous_orientation)) { ResetSpokes(); - LOG_VERBOSE(wxT("BR24radar_pi: %s HeadUp/NorthUp change")); + m_previous_orientation = orientation; } - int north_up = m_orientation.GetButton() == ORIENTATION_NORTH_UP; + + // In NORTH or COURSE UP modes we store the radar data at the bearing received + // in the spoke. In other words: at an absolute angle off north. + // This way, when the boat rotates the data on the overlay doesn't rotate with it. + // This is also called 'stabilized' mode, I guess. + // + // The history data used for the ARPA data is *always* in bearing mode, it is not usable + // with relative data. + // + int stabilized_mode = orientation != ORIENTATION_HEAD_UP; uint8_t weakest_normal_blob = m_pi->m_settings.threshold_blue; - bool calc_history = m_multi_sweep_filter; - for (size_t z = 0; z < GUARD_ZONES; z++) { - if (m_guard_zone[z]->m_type != GZ_OFF && m_guard_zone[z]->m_multi_sweep_filter) { - calc_history = true; - } - } - if (calc_history) { - UINT8 *hist_data = m_history[angle]; - for (size_t radius = 0; radius < len; radius++) { - hist_data[radius] = hist_data[radius] << 1; // shift left history byte 1 bit - if (data[radius] >= weakest_normal_blob) { - hist_data[radius] = hist_data[radius] | 1; // and add 1 if above threshold - } + UINT8 *hist_data = m_history[bearing].line; + m_history[bearing].time = time_rec; + m_history[bearing].lat = lat; + m_history[bearing].lon = lon; + for (size_t radius = 0; radius < len; radius++) { + hist_data[radius] = 0; + if (data[radius] >= weakest_normal_blob) { + // and add 1 if above threshold and set the left 2 bits, used for ARPA + hist_data[radius] = hist_data[radius] | 192; } } for (size_t z = 0; z < GUARD_ZONES; z++) { - if (m_guard_zone[z]->m_type != GZ_OFF) { - m_guard_zone[z]->ProcessSpoke(angle, data, m_history[angle], len, range_meters); - } - } - - if (m_multi_sweep_filter) { - for (size_t radius = 0; radius < len; radius++) { - if (!HISTORY_FILTER_ALLOW(m_history[angle][radius])) { - data[radius] = 0; - } + if (m_guard_zone[z]->m_alarm_on) { + m_guard_zone[z]->ProcessSpoke(angle, data, m_history[bearing].line, len, range_meters); } } @@ -473,59 +525,148 @@ m_draw_overlay.draw->ProcessRadarSpoke(m_pi->m_settings.overlay_transparency, bearing, data, len); } - if (m_target_trails.value != 0) { - if (m_trails_motion.value == TARGET_MOTION_TRUE) { - PolarToCartesianLookupTable *polarLookup; - polarLookup = GetPolarToCartesianLookupTable(); - if (angle % 32 == 0) { // run 1 out of 32 spokes - UpdateTrailPosition(); - } - - for (size_t radius = 0; radius < len; radius++) { - UINT8 *trail = &m_trails.true_trails[polarLookup->intx[bearing][radius] + - RETURNS_PER_LINE][polarLookup->inty[bearing][radius] + RETURNS_PER_LINE]; - if (data[radius] >= weakest_normal_blob) { - *trail = 1; - } else { - if (*trail > 0 && *trail < TRAIL_MAX_REVOLUTIONS) { - (*trail)++; - } - data[radius] = m_trail_colour[*trail]; + UpdateTrailPosition(); + + // True trails + int motion = m_trails_motion.GetValue(); + PolarToCartesianLookupTable *polarLookup = GetPolarToCartesianLookupTable(); + for (size_t radius = 0; radius < len - 1; radius++) { // len - 1 : no trails on range circle + int x = polarLookup->intx[bearing][radius] + TRAILS_SIZE / 2 + m_trails.offset.lat; + int y = polarLookup->inty[bearing][radius] + TRAILS_SIZE / 2 + m_trails.offset.lon; + + if (x >= 0 && x < TRAILS_SIZE && y >= 0 && y < TRAILS_SIZE) { + UINT8 *trail = &m_trails.true_trails[x][y]; + // when ship moves north, offset.lat > 0. Add to move trails image in opposite direction + // when ship moves east, offset.lon > 0. Add to move trails image in opposite direction + if (data[radius] >= weakest_normal_blob) { + *trail = 1; + } else { + if (*trail > 0 && *trail < TRAIL_MAX_REVOLUTIONS) { + (*trail)++; } - } - } else if (m_trails_motion.value == TARGET_MOTION_RELATIVE) { - UINT8 *trail = m_trails.relative_trails[angle]; - for (size_t radius = 0; radius < len; radius++) { - if (data[radius] >= weakest_normal_blob) { - *trail = 1; - } else { - if (*trail > 0 && *trail < TRAIL_MAX_REVOLUTIONS) { - (*trail)++; - } + if (motion == TARGET_MOTION_TRUE) { data[radius] = m_trail_colour[*trail]; } - trail++; } } } + // Relative trails + UINT8 *trail = m_trails.relative_trails[angle]; + for (size_t radius = 0; radius < len - 1; radius++) { // len - 1 : no trails on range circle + if (data[radius] >= weakest_normal_blob) { + *trail = 1; + } else { + if (*trail > 0 && *trail < TRAIL_MAX_REVOLUTIONS) { + (*trail)++; + } + if (motion == TARGET_MOTION_RELATIVE) { + data[radius] = m_trail_colour[*trail]; + } + } + trail++; + } + if (m_draw_overlay.draw && draw_trails_on_overlay) { m_draw_overlay.draw->ProcessRadarSpoke(m_pi->m_settings.overlay_transparency, bearing, data, len); } if (m_draw_panel.draw) { - m_draw_panel.draw->ProcessRadarSpoke(3, north_up ? bearing : angle, data, len); + m_draw_panel.draw->ProcessRadarSpoke(4, stabilized_mode ? bearing : angle, data, len); + } +} + +void RadarInfo::SampleCourse(int angle) { + // Calculates the moving average of m_hdt and returns this in m_course + // This is a bit more complicated then expected, average of 359 and 1 is 180 and that is not what we want + if (m_pi->GetHeadingSource() != HEADING_NONE && ((angle & 127) == 0)) { // sample m_hdt every 128 spokes + if (m_course_log[m_course_index] > 720.) { // keep values within limits + for (int i = 0; i < COURSE_SAMPLES; i++) { + m_course_log[i] -= 720; + } + } + if (m_course_log[m_course_index] < -720.) { + for (int i = 0; i < COURSE_SAMPLES; i++) { + m_course_log[i] += 720; + } + } + double hdt = m_pi->GetHeadingTrue(); + while (m_course_log[m_course_index] - hdt > 180.) { // compare with previous value + hdt += 360.; + } + while (m_course_log[m_course_index] - hdt < -180.) { + hdt -= 360.; + } + m_course_index++; + if (m_course_index >= COURSE_SAMPLES) m_course_index = 0; + m_course_log[m_course_index] = hdt; + double sum = 0; + for (int i = 0; i < COURSE_SAMPLES; i++) { + sum += m_course_log[i]; + } + m_course = fmod(sum / COURSE_SAMPLES + 720., 360); } } +void RadarInfo::ZoomTrails(float zoom_factor) { + // zoom_factor > 1 -> zoom in, enlarge image + // zoom relative trails + CLEAR_STRUCT(m_trails.copy_of_relative_trails); + for (int i = 0; i < LINES_PER_ROTATION; i++) { + for (int j = 0; j < RETURNS_PER_LINE; j++) { + int index_j = int((float)j * zoom_factor); + if (index_j >= RETURNS_PER_LINE) break; + if (m_trails.relative_trails[i][j] != 0) { + m_trails.copy_of_relative_trails[i][index_j] = m_trails.relative_trails[i][j]; + } + } + } + memcpy(m_trails.relative_trails, m_trails.copy_of_relative_trails, sizeof(m_trails.copy_of_relative_trails)); + + CLEAR_STRUCT(m_trails.copy_of_true_trails); + // zoom true trails + for (int i = wxMax(TRAILS_SIZE / 2 + m_trails.offset.lat - RETURNS_PER_LINE, 0); + i < wxMin(TRAILS_SIZE / 2 + m_trails.offset.lat + RETURNS_PER_LINE, TRAILS_SIZE); i++) { + int index_i = (int((float)(i - TRAILS_SIZE / 2 + m_trails.offset.lat) * zoom_factor)) + TRAILS_SIZE / 2 - + m_trails.offset.lat * zoom_factor; + if (index_i >= TRAILS_SIZE - 1) break; // allow adding an additional pixel later + if (index_i < 0) continue; + for (int j = wxMax(TRAILS_SIZE / 2 + m_trails.offset.lon - RETURNS_PER_LINE, 0); + j < wxMin(TRAILS_SIZE / 2 + m_trails.offset.lon + RETURNS_PER_LINE, TRAILS_SIZE); j++) { + int index_j = (int((float)(j - TRAILS_SIZE / 2 + m_trails.offset.lon) * zoom_factor)) + TRAILS_SIZE / 2 - + m_trails.offset.lon * zoom_factor; + if (index_j >= TRAILS_SIZE - 1) break; + if (index_j < 0) continue; + if (m_trails.true_trails[i][j] != 0) { // many to one mapping, prevent overwriting trails with 0 + m_trails.copy_of_true_trails[index_i][index_j] = m_trails.true_trails[i][j]; + if (zoom_factor > 1.2) { + // add an extra pixel in the y direction + m_trails.copy_of_true_trails[index_i][index_j + 1] = m_trails.true_trails[i][j]; + if (zoom_factor > 1.6) { + // also add pixel in the x direction + m_trails.copy_of_true_trails[index_i + 1][index_j] = m_trails.true_trails[i][j]; + m_trails.copy_of_true_trails[index_i + 1][index_j + 1] = m_trails.true_trails[i][j]; + } + } + } + } + } + memcpy(m_trails.true_trails, m_trails.copy_of_true_trails, sizeof(m_trails.copy_of_true_trails)); + m_trails.offset.lon *= zoom_factor; + m_trails.offset.lat *= zoom_factor; +} + void RadarInfo::UpdateTransmitState() { + wxCriticalSectionLocker lock(m_exclusive); time_t now = time(0); - if (m_state.value == RADAR_TRANSMIT && TIMED_OUT(now, m_data_timeout)) { + int state = m_state.GetValue(); + + if (state == RADAR_TRANSMIT && TIMED_OUT(now, m_data_timeout)) { m_state.Update(RADAR_STANDBY); LOG_INFO(wxT("BR24radar_pi: %s data lost"), m_name.c_str()); } - if (m_state.value == RADAR_STANDBY && TIMED_OUT(now, m_radar_timeout)) { + if (state == RADAR_STANDBY && TIMED_OUT(now, m_radar_timeout)) { static wxString empty; m_state.Update(RADAR_OFF); @@ -538,22 +679,24 @@ return; } - if (m_state.value == RADAR_TRANSMIT && TIMED_OUT(now, m_stayalive_timeout)) { + if (state == RADAR_TRANSMIT && TIMED_OUT(now, m_stayalive_timeout)) { m_transmit->RadarStayAlive(); m_stayalive_timeout = now + STAYALIVE_TIMEOUT; } // If we find we have a radar and the boot flag is still set, turn radar on // Think about interaction with timed_transmit - if (m_boot_state.value == RADAR_TRANSMIT && m_state.value == RADAR_STANDBY) { + if (m_boot_state.GetValue() == RADAR_TRANSMIT && state == RADAR_STANDBY) { m_boot_state.Update(RADAR_OFF); RequestRadarState(RADAR_TRANSMIT); } } void RadarInfo::RequestRadarState(RadarState state) { - if (m_pi->IsRadarOnScreen(m_radar) && m_state.value != RADAR_OFF) { // if radar is visible and detected - if (m_state.value != state && !(m_state.value == RADAR_WAKING_UP && state == RADAR_TRANSMIT)) { // and change is wanted + int oldState = m_state.GetValue(); + + if (m_pi->IsRadarOnScreen(m_radar) && oldState != RADAR_OFF) { // if radar is visible and detected + if (oldState != state && !(oldState == RADAR_WAKING_UP && state == RADAR_TRANSMIT)) { // and change is wanted time_t now = time(0); switch (state) { @@ -570,7 +713,6 @@ if (m_radar_panel) { m_radar_panel->Refresh(); } - m_pi->m_idle_standby = now + wxMax(m_pi->m_settings.idle_run_time, SECONDS_PER_TRANSMIT_BURST); break; case RADAR_STANDBY: @@ -579,106 +721,186 @@ } else { m_transmit->RadarTxOff(); } - m_pi->m_idle_transmit = now + m_pi->m_settings.timed_idle * SECONDS_PER_TIMED_IDLE_SETTING; break; case RADAR_WAKING_UP: case RADAR_OFF: LOG_INFO(wxT("BR24radar_pi: %s unexpected status request %d"), m_name.c_str(), state); } - m_stayalive_timeout = time(0) + STAYALIVE_TIMEOUT; + m_stayalive_timeout = now + STAYALIVE_TIMEOUT; } } } void RadarInfo::UpdateTrailPosition() { - if (!m_pi->m_bpos_set || m_pi->m_heading_source == HEADING_NONE) { - return; + double radar_lat; + double radar_lon; + int shift_lat; + int shift_lon; + + // When position changes the trail image is not moved, only the pointer to the center + // of the image (offset) is changed. + // So we move the image around within the m_trails.true_trails buffer (by moving the pointer). + // But when there is no room anymore (margin used) the whole trails image is shifted + // and the offset is reset + if (m_trails.offset.lon >= MARGIN || m_trails.offset.lon <= -MARGIN) { + LOG_INFO(wxT("BR24radar_pi: offset lon too large %d"), m_trails.offset.lon); + m_trails.offset.lon = 0; + } + if (m_trails.offset.lat >= MARGIN || m_trails.offset.lat <= -MARGIN) { + LOG_INFO(wxT("BR24radar_pi: offset lat too large %d"), m_trails.offset.lat); + m_trails.offset.lat = 0; } - if (m_trails.lat == m_pi->m_ownship_lat && m_trails.lon == m_pi->m_ownship_lon) { // don't do anything until position changes - return; + + // zooming of trails required? First check conditions + if (m_old_range == 0 || m_range_meters == 0) { + ClearTrails(); + if (m_range_meters == 0) { + return; + if (m_old_range == 0) { + m_old_range = m_range_meters; + return; + } + } + } else if (m_old_range != m_range_meters) { + // zoom trails + float zoom_factor = (float)m_old_range / (float)m_range_meters; + m_old_range = m_range_meters; + + // center the image before zooming + // otherwise the offset might get too large + ShiftImageLatToCenter(); + ShiftImageLonToCenter(); + ZoomTrails(zoom_factor); // this no longer modifies m_trails.offset, as the image is centered now } + m_old_range = m_range_meters; - double dif_lat = m_trails.lat - m_pi->m_ownship_lat; - double dif_lon = m_trails.lon - m_pi->m_ownship_lon; - m_trails.lat = m_pi->m_ownship_lat; - m_trails.lon = m_pi->m_ownship_lon; - double fshift_lat = dif_lat * 60. * 1852. / (double)m_range_meters * (double)(TRAILS_SIZE / 2); - double fshift_lon = dif_lon * 60. * 1852. / (double)m_range_meters * (double)(TRAILS_SIZE / 2); - fshift_lon *= cos(deg2rad(m_pi->m_ownship_lat)); // at higher latitudes a degree of longitude is fewer meters - int shift_lat = (int)(fshift_lat + m_trails.dif_lat); - int shift_lon = (int)(fshift_lon + m_trails.dif_lon); - m_trails.dif_lat = fshift_lat + m_trails.dif_lat - (double)shift_lat; // save the rounding fraction and appy it next time - m_trails.dif_lon = fshift_lon + m_trails.dif_lon - (double)shift_lon; + if (!m_pi->GetRadarPosition(&radar_lat, &radar_lon) || m_pi->GetHeadingSource() == HEADING_NONE) { + return; + } - if (abs(shift_lat) >= TRAILS_SIZE || abs(shift_lon) >= TRAILS_SIZE) { // huge shift, reset trails - ClearTrails(); - m_trails.lat = m_pi->m_ownship_lat; - m_trails.lon = m_pi->m_ownship_lon; - m_trails.dif_lat = 0.; - m_trails.dif_lon = 0.; + // Did the ship move? No, return. + if (m_trails.lat == radar_lat && m_trails.lon == radar_lon) { return; } - if (shift_lon > 0) { + // Check the movement of the ship + double dif_lat = radar_lat - m_trails.lat; // going north is positive + double dif_lon = radar_lon - m_trails.lon; // moving east is positive + m_trails.lat = radar_lat; + m_trails.lon = radar_lon; + + // get (floating point) shift of the ship in radar pixels + double fshift_lat = dif_lat * 60. * 1852. / (double)m_range_meters * (double)(RETURNS_PER_LINE); + double fshift_lon = dif_lon * 60. * 1852. / (double)m_range_meters * (double)(RETURNS_PER_LINE); + fshift_lon *= cos(deg2rad(radar_lat)); // at higher latitudes a degree of longitude is fewer meters + + // Get the integer pixel shift, first add previous rounding error + shift_lat = (int)(fshift_lat + m_trails.dif_lat); + shift_lon = (int)(fshift_lon + m_trails.dif_lon); + + // Check for changes in the direction of movement, part of the image buffer has to be erased + if (shift_lat > 0 && m_dir_lat <= 0) { + // change of direction of movement + // clear space in true_trails outside image in that direction (this area might not be empty) + memset(&m_trails.true_trails[TRAILS_SIZE - MARGIN + m_trails.offset.lat][0], 0, TRAILS_SIZE * (MARGIN - m_trails.offset.lat)); + m_dir_lat = 1; + } + + if (shift_lat < 0 && m_dir_lat >= 0) { + // change of direction of movement + // clear space in true_trails outside image in that direction + memset(&m_trails.true_trails[0][0], 0, TRAILS_SIZE * (MARGIN + m_trails.offset.lat)); + m_dir_lat = -1; + } + + if (shift_lon > 0 && m_dir_lon <= 0) { + // change of direction of movement + // clear space in true_trails outside image in that direction for (int i = 0; i < TRAILS_SIZE; i++) { - memmove(&m_trails.true_trails[i][shift_lon], &m_trails.true_trails[i][0], TRAILS_SIZE - shift_lon); - memset(&m_trails.true_trails[i][0], 0, shift_lon); + memset(&m_trails.true_trails[i][TRAILS_SIZE - MARGIN + m_trails.offset.lon], 0, MARGIN - m_trails.offset.lon); } + m_dir_lon = 1; } - if (shift_lon < 0) { + + if (shift_lon < 0 && m_dir_lon >= 0) { + // change of direction of movement + // clear space in true_trails outside image in that direction for (int i = 0; i < TRAILS_SIZE; i++) { - memmove(&m_trails.true_trails[i][0], &m_trails.true_trails[i][-shift_lon], TRAILS_SIZE + shift_lon); - memset(&m_trails.true_trails[i][TRAILS_SIZE + shift_lon], 0, -shift_lon); + memset(&m_trails.true_trails[i][0], 0, MARGIN + m_trails.offset.lon); + } + m_dir_lon = -1; + } + + // save the rounding fraction and appy it next time + m_trails.dif_lat = fshift_lat + m_trails.dif_lat - (double)shift_lat; + m_trails.dif_lon = fshift_lon + m_trails.dif_lon - (double)shift_lon; + + if (shift_lat >= MARGIN || shift_lat <= -MARGIN || shift_lon >= MARGIN || shift_lon <= -MARGIN) { // huge shift, reset trails + ClearTrails(); + if (!m_pi->GetRadarPosition(&m_trails.lat, &m_trails.lon)) { + m_trails.lat = 0.; + m_trails.lon = 0.; } + LOG_INFO(wxT("BR24radar_pi: %s Large movement trails reset"), m_name.c_str()); + return; } - if (shift_lat > 0) { - memmove(&m_trails.true_trails[shift_lat][0], &m_trails.true_trails[0][0], TRAILS_SIZE * (TRAILS_SIZE - shift_lat)); - memset(&m_trails.true_trails[0][0], 0, TRAILS_SIZE * shift_lat); + // offset lon too large: shift image + if (abs(m_trails.offset.lon + shift_lon) >= MARGIN) { + ShiftImageLonToCenter(); } - if (shift_lat < 0) { - memmove(&m_trails.true_trails[0][0], &m_trails.true_trails[-shift_lat][0], TRAILS_SIZE * (TRAILS_SIZE + shift_lat)); - memset(&m_trails.true_trails[TRAILS_SIZE + shift_lat][0], 0, -TRAILS_SIZE * shift_lat); + + // offset lat too large: shift image in lat direction + if (abs(m_trails.offset.lat + shift_lat) >= MARGIN) { + ShiftImageLatToCenter(); } + // apply the shifts to the offset + m_trails.offset.lat += shift_lat; + m_trails.offset.lon += shift_lon; } -void RadarInfo::RefreshDisplay(wxTimerEvent &event) { - if (m_radar == 0) { - time_t now = time(0); - if (TIMED_OUT(now, m_main_timer_timeout)) { - m_pi->Notify(); - m_main_timer_timeout = now + 1; +// shifts the true trails image in lon direction to center +void RadarInfo::ShiftImageLonToCenter() { + if (m_trails.offset.lon >= MARGIN || m_trails.offset.lon <= -MARGIN) { // abs no good + LOG_INFO(wxT("BR24radar_pi: offset lon too large %i"), m_trails.offset.lon); + m_trails.offset.lon = 0; + return; + } + if (m_trails.offset.lon > 0) { + for (int i = 0; i < TRAILS_SIZE; i++) { + memmove(&m_trails.true_trails[i][MARGIN], &m_trails.true_trails[i][MARGIN + m_trails.offset.lon], RETURNS_PER_LINE * 2); + memset(&m_trails.true_trails[i][TRAILS_SIZE - MARGIN], 0, MARGIN); } } - - if (m_overlay_refreshes_queued > 0) { - // don't do additional refresh when too busy - LOG_DIALOG(wxT("BR24radar_pi: %s busy encountered, overlay_refreshes_queued=%d"), m_name.c_str(), m_overlay_refreshes_queued); - } else if (m_pi->IsOverlayOnScreen(m_radar)) { - m_overlay_refreshes_queued++; - GetOCPNCanvasWindow()->Refresh(false); + if (m_trails.offset.lon < 0) { + for (int i = 0; i < TRAILS_SIZE; i++) { + memmove(&m_trails.true_trails[i][MARGIN], &m_trails.true_trails[i][MARGIN + m_trails.offset.lon], RETURNS_PER_LINE * 2); + memset(&m_trails.true_trails[i][TRAILS_SIZE - MARGIN], 0, MARGIN); + memset(&m_trails.true_trails[i][0], 0, MARGIN); + } } + m_trails.offset.lon = 0; +} - if (m_refreshes_queued > 0) { - // don't do additional refresh and reset the refresh conter - // this will also balance performance, if too busy skip refresh - LOG_DIALOG(wxT("BR24radar_pi: %s busy encountered, refreshes_queued=%d"), m_name.c_str(), m_refreshes_queued); - } else if (IsPaneShown()) { - m_refreshes_queued++; - m_radar_panel->Refresh(false); +// shifts the true trails image in lat direction to center +void RadarInfo::ShiftImageLatToCenter() { + if (m_trails.offset.lat >= MARGIN || m_trails.offset.lat <= -MARGIN) { // abs not ok + LOG_INFO(wxT("BR24radar_pi: offset lat too large %i"), m_trails.offset.lat); + m_trails.offset.lat = 0; } - // Calculate refresh speed - if (m_pi->m_settings.refreshrate) { - int millis = 1000 / (1 + ((m_pi->m_settings.refreshrate) - 1) * 5); - - if (millis != m_refresh_millis) { - m_refresh_millis = millis; - LOG_VERBOSE(wxT("BR24radar_pi: %s changed timer interval to %d milliseconds"), m_name.c_str(), m_refresh_millis); - m_timer->Start(m_refresh_millis); - } + if (m_trails.offset.lat > 0) { + memmove(&m_trails.true_trails[MARGIN][0], &m_trails.true_trails[MARGIN + m_trails.offset.lat][0], + (RETURNS_PER_LINE * 2) * TRAILS_SIZE); + memset(&m_trails.true_trails[TRAILS_SIZE - MARGIN][0], 0, TRAILS_SIZE * MARGIN); } + if (m_trails.offset.lat < 0) { + memmove(&m_trails.true_trails[MARGIN][0], &m_trails.true_trails[MARGIN + m_trails.offset.lat][0], + RETURNS_PER_LINE * 2 * TRAILS_SIZE); + memset(&m_trails.true_trails[0][0], 0, TRAILS_SIZE * MARGIN); + } + m_trails.offset.lat = 0; } void RadarInfo::RenderGuardZone() { @@ -686,7 +908,7 @@ GLubyte red = 0, green = 200, blue = 0, alpha = 50; for (size_t z = 0; z < GUARD_ZONES; z++) { - if (m_guard_zone[z]->m_type != GZ_OFF) { + if (m_guard_zone[z]->m_alarm_on || m_guard_zone[z]->m_arpa_on || m_guard_zone[z]->m_show_time + 5 > time(0)) { if (m_guard_zone[z]->m_type == GZ_CIRCLE) { start_bearing = 0; end_bearing = 359; @@ -724,11 +946,13 @@ // Note that we don't actually use m_settings.units here, so that if we are metric and // the plotter in NM, and it chose the last range, we start using nautic miles as well. - if (m_range.range) { - if (m_range.range >= g_ranges_nautic && m_range.range < g_ranges_nautic + ARRAY_SIZE(g_ranges_nautic)) { + const RadarRange *range = m_range.GetRange(); + + if (range) { + if (range >= g_ranges_nautic && range < g_ranges_nautic + ARRAY_SIZE(g_ranges_nautic)) { min = g_ranges_nautic; max = g_ranges_nautic + ARRAY_SIZE(g_ranges_nautic) - 1; - } else if (m_range.range >= g_ranges_metric && m_range.range < g_ranges_metric + ARRAY_SIZE(g_ranges_metric)) { + } else if (range >= g_ranges_metric && range < g_ranges_metric + ARRAY_SIZE(g_ranges_metric)) { min = g_ranges_metric; max = g_ranges_metric + ARRAY_SIZE(g_ranges_metric) - 1; } else { @@ -739,20 +963,20 @@ max--; // only 4G has longest ranges } - if (adjustment > 0 && m_range.range > min) { - LOG_VERBOSE(wxT("BR24radar_pi: Change radar range from %d/%d to %d/%d"), m_range.range[0].meters, - m_range.range[0].actual_meters, m_range.range[-1].meters, m_range.range[-1].actual_meters); - m_transmit->SetRange(m_range.range[-1].meters); - } else if (adjustment < 0 && m_range.range < max) { - LOG_VERBOSE(wxT("BR24radar_pi: Change radar range from %d/%d to %d/%d"), m_range.range[0].meters, - m_range.range[0].actual_meters, m_range.range[+1].meters, m_range.range[+1].actual_meters); - m_transmit->SetRange(m_range.range[+1].meters); + if (adjustment < 0 && range > min) { + LOG_VERBOSE(wxT("BR24radar_pi: Change radar range from %d/%d to %d/%d"), range[0].meters, range[0].actual_meters, + range[-1].meters, range[-1].actual_meters); + m_transmit->SetRange(range[-1].meters); + } else if (adjustment > 0 && range < max) { + LOG_VERBOSE(wxT("BR24radar_pi: Change radar range from %d/%d to %d/%d"), range[0].meters, range[0].actual_meters, + range[+1].meters, range[+1].actual_meters); + m_transmit->SetRange(range[+1].meters); } } } void RadarInfo::SetAutoRangeMeters(int meters) { - if (m_state.value == RADAR_TRANSMIT && m_auto_range_mode) { + if (m_state.GetValue() == RADAR_TRANSMIT && m_auto_range_mode) { m_auto_range_meters = meters; // Don't adjust auto range meters continuously when it is oscillating a little bit (< 5%) int test = 100 * m_previous_auto_range_meters / m_auto_range_meters; @@ -773,7 +997,9 @@ } } -bool RadarInfo::SetControlValue(ControlType controlType, int value) { return m_transmit->SetControlValue(controlType, value); } +bool RadarInfo::SetControlValue(ControlType controlType, int value, int autoValue) { + return m_transmit->SetControlValue(controlType, value, autoValue); +} void RadarInfo::ShowRadarWindow(bool show) { m_radar_panel->ShowFrame(show); } @@ -813,15 +1039,31 @@ void RadarInfo::ResetRadarImage() { if (m_range_meters) { ResetSpokes(); + ClearTrails(); + if (m_arpa) { + m_arpa->ClearContours(); + } m_range_meters = 0; } } +/** + * plugin calls this to request a redraw of the PPI window. + * + * Called on GUI thread. + */ +void RadarInfo::RefreshDisplay() { + if (IsPaneShown()) { + m_radar_panel->Refresh(false); + } +} + void RadarInfo::RenderRadarImage(DrawInfo *di) { wxCriticalSectionLocker lock(m_exclusive); int drawing_method = m_pi->m_settings.drawing_method; + int state = m_state.GetValue(); - if (m_state.value != RADAR_TRANSMIT && m_state.value != RADAR_WAKING_UP) { + if (state != RADAR_TRANSMIT && state != RADAR_WAKING_UP) { ResetRadarImage(); return; } @@ -857,23 +1099,82 @@ di->draw->DrawRadarImage(); if (g_first_render) { g_first_render = false; - wxLongLong startup_elapsed = wxGetUTCTimeMillis() - m_pi->m_boot_time; + wxLongLong startup_elapsed = wxGetUTCTimeMillis() - m_pi->GetBootMillis(); LOG_INFO(wxT("BR24radar_pi: First radar image rendered after %llu ms\n"), startup_elapsed); } } -void RadarInfo::RenderRadarImage(wxPoint center, double scale, double rotate, bool overlay) { +int RadarInfo::GetOrientation() { + int orientation; + + // check for no longer allowed value + if (m_pi->GetHeadingSource() == HEADING_NONE) { + orientation = ORIENTATION_HEAD_UP; + } else { + orientation = m_orientation.GetValue(); + } + + return orientation; +} + +void RadarInfo::RenderRadarImage(wxPoint center, double scale, double overlay_rotate, bool overlay) { if (!m_range_meters) { return; } + bool arpa_on = false; + if (m_arpa) { + for (int i = 0; i < GUARD_ZONES; i++) { + if (m_guard_zone[i]->m_arpa_on) arpa_on = true; + } + if (m_arpa->GetTargetCount()) { + arpa_on = true; + } + } + glPushAttrib(GL_COLOR_BUFFER_BIT | GL_LINE_BIT | GL_HINT_BIT); // Save state glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - rotate += OPENGL_ROTATION; // Difference between OpenGL and compass + radar - double guard_rotate = rotate; - if (overlay || IsDisplayNorthUp()) { - guard_rotate += m_pi->m_hdt; + overlay_rotate += OPENGL_ROTATION; // Difference between OpenGL and compass + radar + // Note that for overlay=false this is purely OPENGL_ROTATION. + + double panel_rotate = overlay_rotate; + double guard_rotate = overlay_rotate; + double arpa_rotate; + + // So many combinations here + + int orientation = GetOrientation(); + int range = m_range.GetValue(); + + if (!overlay) { + arpa_rotate = 0.; + switch (orientation) { + case ORIENTATION_STABILIZED_UP: + panel_rotate -= m_course; // Panel only needs stabilized heading applied + arpa_rotate -= m_course; + guard_rotate += m_pi->GetHeadingTrue() - m_course; + break; + case ORIENTATION_COG_UP: { + double cog = m_pi->GetCOG(); + panel_rotate -= cog; // Panel only needs stabilized heading applied + arpa_rotate -= cog; + guard_rotate += m_pi->GetHeadingTrue() - cog; + } break; + case ORIENTATION_NORTH_UP: + guard_rotate += m_pi->GetHeadingTrue(); + break; + case ORIENTATION_HEAD_UP: + arpa_rotate += -m_pi->GetHeadingTrue(); // Undo the actual heading calculation always done for ARPA + break; + } + } else { + guard_rotate += m_pi->GetHeadingTrue(); + arpa_rotate = overlay_rotate - OPENGL_ROTATION; + } + + if (arpa_on) { + m_arpa->RefreshArpaTargets(); } if (overlay) { @@ -883,55 +1184,84 @@ glRotated(guard_rotate, 0.0, 0.0, 1.0); glScaled(scale, scale, 1.); - // LOG_DIALOG(wxT("BR24radar_pi: %s render guard zone on overlay"), name.c_str()); - + // LOG_DIALOG(wxT("BR24radar_pi: %s render guard zone on overlay"), m_name.c_str()); RenderGuardZone(); glPopMatrix(); } + double radar_pixels_per_meter = ((double)RETURNS_PER_LINE) / m_range_meters; - scale = scale / radar_pixels_per_meter; + double radar_scale = scale / radar_pixels_per_meter; glPushMatrix(); glTranslated(center.x, center.y, 0); - if (rotate != 0.0) { - glRotated(rotate, 0.0, 0.0, 1.0); - } - glScaled(scale, scale, 1.); + glRotated(panel_rotate, 0.0, 0.0, 1.0); + glScaled(radar_scale, radar_scale, 1.); RenderRadarImage(&m_draw_overlay); - if (m_overlay_refreshes_queued > 0) { - m_overlay_refreshes_queued--; + glPopMatrix(); + + if (arpa_on) { + glPushMatrix(); + glTranslated(center.x, center.y, 0); + LOG_VERBOSE(wxT("BR24radar_pi: %s render ARPA targets on overlay with rot=%f"), m_name.c_str(), arpa_rotate); + + glRotated(arpa_rotate, 0.0, 0.0, 1.0); + glScaled(scale, scale, 1.); + m_arpa->DrawArpaTargets(); + glPopMatrix(); } - } else if (m_range.value) { + + } else if (range != 0) { + wxStopWatch stopwatch; + glPushMatrix(); - scale = 1.0 / m_range.value; - glScaled(scale, scale, 1.); + scale = 1.0 / range; glRotated(guard_rotate, 0.0, 0.0, 1.0); + glScaled(scale, scale, 1.); RenderGuardZone(); glPopMatrix(); glPushMatrix(); - double overscan = (double)m_range_meters / (double)m_range.value; - scale = overscan / RETURNS_PER_LINE; - glScaled(scale, scale, 1.); - glRotated(rotate, 0.0, 0.0, 1.0); - LOG_DIALOG(wxT("BR24radar_pi: %s render overscan=%g range=%d"), m_name.c_str(), overscan, m_range.value); + double overscan = (double)m_range_meters / (double)range; + double radar_scale = overscan / RETURNS_PER_LINE; + glScaled(radar_scale, radar_scale, 1.); + glRotated(panel_rotate, 0.0, 0.0, 1.0); + LOG_DIALOG(wxT("BR24radar_pi: %s render overscan=%g range=%d"), m_name.c_str(), overscan, range); RenderRadarImage(&m_draw_panel); - if (m_refreshes_queued > 0) { - m_refreshes_queued--; + glPopMatrix(); + + if (arpa_on) { + glPushMatrix(); + glScaled(scale, scale, 1.); + glRotated(arpa_rotate, 0.0, 0.0, 1.0); + m_arpa->DrawArpaTargets(); + glPopMatrix(); } + glFinish(); + m_draw_time_ms = stopwatch.Time(); } - glPopMatrix(); glPopAttrib(); } wxString RadarInfo::GetCanvasTextTopLeft() { wxString s; - if (IsDisplayNorthUp()) { - s << _("North Up"); - } else { - s << _("Head Up"); + switch (GetOrientation()) { + case ORIENTATION_HEAD_UP: + s << _("Head Up"); + break; + case ORIENTATION_STABILIZED_UP: + s << _("Head Up") << wxT("\n") << _("Stabilized"); + break; + case ORIENTATION_COG_UP: + s << _("Course Up"); + break; + case ORIENTATION_NORTH_UP: + s << _("North Up"); + break; + default: + s << _("Unknown"); + break; } if (m_pi->m_settings.emulator_on) { s << wxT("\n") << _("Emulator"); @@ -939,15 +1269,19 @@ if (m_range_meters) { s << wxT("\n") << GetRangeText(); } - if (m_target_trails.value > 0) { - if (s.Right(1) != wxT("\n")) { - s << wxT("\n"); - } - if (m_trails_motion.value == TARGET_MOTION_TRUE) { + if (s.Right(1) != wxT("\n")) { + s << wxT("\n"); + } + + int motion = m_trails_motion.GetValue(); + if (motion != TARGET_MOTION_OFF) { + if (motion == TARGET_MOTION_TRUE) { s << wxT("RM(T)"); } else { s << wxT("RM(R)"); } + } else { + s << wxT("RM"); } return s; @@ -983,7 +1317,8 @@ wxString s; wxString relative; - if (IsDisplayNorthUp()) { + if (angle > 360) angle -= 360; + if (GetOrientation() != ORIENTATION_HEAD_UP) { relative = wxT("T"); } else { if (angle > 180.0) { @@ -997,33 +1332,48 @@ } wxString RadarInfo::GetCanvasTextBottomLeft() { + double radar_lat, radar_lon; wxString s = m_pi->GetGuardZoneText(this); - if (m_state.value == RADAR_TRANSMIT) { - double distance = 0.0, bearing = nanl(""); + if (m_state.GetValue() == RADAR_TRANSMIT) { + double distance = 0.0, bearing = nan(""); + int orientation = GetOrientation(); // Add VRM/EBLs for (int b = 0; b < BEARING_LINES; b++) { - if (m_vrm[b] != 0.0) { + double bearing = m_ebl[orientation][b]; + if (!isnan(m_vrm[b]) && !isnan(bearing)) { + if (orientation == ORIENTATION_STABILIZED_UP) { + bearing += m_course; + if (bearing >= 360) bearing -= 360; + } + if (s.length()) { s << wxT("\n"); } - s << wxString::Format(wxT("VRM%d=%s EBL%d=%s"), b + 1, FormatDistance(m_vrm[b]), b + 1, FormatAngle(m_ebl[b])); + s << wxString::Format(wxT("VRM%d=%s EBL%d=%s"), b + 1, FormatDistance(m_vrm[b]), b + 1, FormatAngle(bearing)); } } - // Add in mouse cursor location - if (m_mouse_vrm != 0.0) { + if (!isnan(m_mouse_vrm)) { distance = m_mouse_vrm; - bearing = m_mouse_ebl; - } else if ((m_mouse_lat != 0.0 || m_mouse_lon != 0.0) && m_pi->m_bpos_set) { + bearing = m_mouse_ebl[orientation]; + + if (orientation == ORIENTATION_STABILIZED_UP) { + bearing += m_course; + } else if (orientation == ORIENTATION_COG_UP) { + bearing += m_pi->GetCOG(); + } + if (bearing >= 360) bearing -= 360; + + } else if (!isnan(m_mouse_lat) && !isnan(m_mouse_lon) && m_pi->GetRadarPosition(&radar_lat, &radar_lon)) { // Can't compute this upfront, ownship may move... - distance = local_distance(m_pi->m_ownship_lat, m_pi->m_ownship_lon, m_mouse_lat, m_mouse_lon); - bearing = local_bearing(m_pi->m_ownship_lat, m_pi->m_ownship_lon, m_mouse_lat, m_mouse_lon); - if (!IsDisplayNorthUp()) { - bearing -= m_pi->m_hdt; + distance = local_distance(radar_lat, radar_lon, m_mouse_lat, m_mouse_lon); + bearing = local_bearing(radar_lat, radar_lon, m_mouse_lat, m_mouse_lon); + if (GetOrientation() != ORIENTATION_NORTH_UP) { + bearing -= m_pi->GetHeadingTrue(); } } @@ -1040,7 +1390,7 @@ wxString RadarInfo::GetCanvasTextCenter() { wxString s; - switch (m_state.value) { + switch (m_state.GetValue()) { case RADAR_OFF: s << _("No radar"); break; @@ -1077,15 +1427,15 @@ } wxString &RadarInfo::GetRangeText() { - const RadarRange *r = m_range.range; - int meters = m_range.value; + const RadarRange *r = m_range.GetRange(); + int meters = m_range.GetValue(); if (!r) { m_range_text = wxT(""); return m_range_text; } - bool auto_range = m_auto_range_mode && (m_overlay.button > 0); + bool auto_range = m_auto_range_mode && (m_overlay.GetValue() > 0); m_range_text = wxT(""); if (auto_range) { @@ -1107,64 +1457,126 @@ } const char *RadarInfo::GetDisplayRangeStr(size_t idx) { - if (m_range.range) { - return (&m_range.range->name)[(idx + 1) % 4]; + const RadarRange *range = m_range.GetRange(); + + if (range) { + return (&range->name)[(idx + 1) % 4]; } return 0; } void RadarInfo::SetMouseLatLon(double lat, double lon) { - m_mouse_vrm = 0.0; - m_mouse_ebl = 0.0; + for (int i = 0; i < ORIENTATION_NUMBER; i++) { + m_mouse_ebl[i] = NAN; + } + m_mouse_vrm = NAN; m_mouse_lat = lat; m_mouse_lon = lon; LOG_DIALOG(wxT("BR24radar_pi: SetMouseLatLon(%f, %f)"), lat, lon); } void RadarInfo::SetMouseVrmEbl(double vrm, double ebl) { + double bearing; + int orientation = GetOrientation(); + double cog = m_pi->GetCOG(); + m_mouse_vrm = vrm; - m_mouse_ebl = ebl; - m_mouse_lat = 0.0; - m_mouse_lon = 0.0; - LOG_DIALOG(wxT("BR24radar_pi: SetMouseVrmEbl(%f, %f)"), vrm, ebl); + switch (orientation) { + case ORIENTATION_HEAD_UP: + default: + m_mouse_ebl[ORIENTATION_HEAD_UP] = ebl; + bearing = ebl; + break; + case ORIENTATION_NORTH_UP: + m_mouse_ebl[ORIENTATION_NORTH_UP] = ebl; + m_mouse_ebl[ORIENTATION_STABILIZED_UP] = ebl - m_course; + m_mouse_ebl[ORIENTATION_COG_UP] = ebl - cog; + bearing = ebl; + break; + case ORIENTATION_STABILIZED_UP: + m_mouse_ebl[ORIENTATION_NORTH_UP] = ebl + m_course; + m_mouse_ebl[ORIENTATION_COG_UP] = ebl + m_course - cog; + m_mouse_ebl[ORIENTATION_STABILIZED_UP] = ebl; + bearing = ebl + m_pi->GetHeadingTrue(); + break; + case ORIENTATION_COG_UP: + m_mouse_ebl[ORIENTATION_NORTH_UP] = ebl + cog; + m_mouse_ebl[ORIENTATION_STABILIZED_UP] = ebl + cog - m_course; + m_mouse_ebl[ORIENTATION_COG_UP] = ebl; + bearing = ebl + m_pi->GetHeadingTrue(); + break; + } + + static double R = 6378.1e3 / 1852.; // Radius of the Earth in nm + double brng = deg2rad(bearing); + double d = vrm; // Distance in nm + + double lat1, lon1; + if (m_pi->GetRadarPosition(&lat1, &lon1)) { + lat1 = deg2rad(lat1); + lon1 = deg2rad(lon1); + + double lat2 = asin(sin(lat1) * cos(d / R) + cos(lat1) * sin(d / R) * cos(brng)); + double lon2 = lon1 + atan2(sin(brng) * sin(d / R) * cos(lat1), cos(d / R) - sin(lat1) * sin(lat2)); + + m_mouse_lat = rad2deg(lat2); + m_mouse_lon = rad2deg(lon2); + LOG_DIALOG(wxT("BR24radar_pi: SetMouseVrmEbl(%f, %f) = %f / %f"), vrm, ebl, m_mouse_lat, m_mouse_lon); + if (m_control_dialog) { + m_control_dialog->ShowCursorPane(); + } + } else { + m_mouse_lat = nan(""); + m_mouse_lon = nan(""); + } } void RadarInfo::SetBearing(int bearing) { - if (m_vrm[bearing] != 0.0) { - m_vrm[bearing] = 0.0; - m_ebl[bearing] = 0.0; - } else if (m_mouse_vrm != 0.0) { + int orientation = GetOrientation(); + double radar_lat, radar_lon; + + if (!isnan(m_vrm[bearing])) { + m_vrm[bearing] = NAN; + m_ebl[orientation][bearing] = NAN; + } else if (!isnan(m_mouse_vrm)) { m_vrm[bearing] = m_mouse_vrm; - m_ebl[bearing] = m_mouse_ebl; - } else if (m_mouse_lat != 0.0 || m_mouse_lon != 0.0) { - m_vrm[bearing] = local_distance(m_pi->m_ownship_lat, m_pi->m_ownship_lon, m_mouse_lat, m_mouse_lon); - m_ebl[bearing] = local_bearing(m_pi->m_ownship_lat, m_pi->m_ownship_lon, m_mouse_lat, m_mouse_lon); + for (int i = 0; i < ORIENTATION_NUMBER; i++) { + m_ebl[i][bearing] = m_mouse_ebl[i]; + } + } else if (!isnan(m_mouse_lat) && !isnan(m_mouse_lon) && m_pi->GetRadarPosition(&radar_lat, &radar_lon)) { + m_vrm[bearing] = local_distance(radar_lat, radar_lon, m_mouse_lat, m_mouse_lon); + m_ebl[orientation][bearing] = local_bearing(radar_lat, radar_lon, m_mouse_lat, m_mouse_lon); } } -void RadarInfo::ClearTrails() { memset(&m_trails, 0, sizeof(m_trails)); } +void RadarInfo::ClearTrails() { + LOG_VERBOSE(wxT("BR24radar_pi: ClearTrails")); + CLEAR_STRUCT(m_trails); +} void RadarInfo::ComputeTargetTrails() { - static TrailRevolutionsAge maxRevs[TRAIL_ARRAY_SIZE] = {0, - SECONDS_TO_REVOLUTIONS(15), - SECONDS_TO_REVOLUTIONS(30), - SECONDS_TO_REVOLUTIONS(60), - SECONDS_TO_REVOLUTIONS(180), - SECONDS_TO_REVOLUTIONS(600), - TRAIL_MAX_REVOLUTIONS + 1}; - - TrailRevolutionsAge maxRev = maxRevs[m_target_trails.value]; + static TrailRevolutionsAge maxRevs[TRAIL_ARRAY_SIZE] = { + SECONDS_TO_REVOLUTIONS(15), SECONDS_TO_REVOLUTIONS(30), SECONDS_TO_REVOLUTIONS(60), SECONDS_TO_REVOLUTIONS(180), + SECONDS_TO_REVOLUTIONS(300), SECONDS_TO_REVOLUTIONS(600), TRAIL_MAX_REVOLUTIONS + 1}; + + int target_trails = m_target_trails.GetValue(); + int trails_motion = m_trails_motion.GetValue(); + + TrailRevolutionsAge maxRev = maxRevs[target_trails]; + if (trails_motion == 0) { + maxRev = 0; + } TrailRevolutionsAge revolution; double coloursPerRevolution = 0.; double colour = 0.; // Like plotter, continuous trails are all very white (non transparent) - if ((m_target_trails.value > 0) && (m_target_trails.value < TRAIL_CONTINUOUS)) { + if ((trails_motion > 0) && (target_trails < TRAIL_CONTINUOUS)) { coloursPerRevolution = BLOB_HISTORY_COLOURS / (double)maxRev; } - LOG_VERBOSE(wxT("BR24radar_pi: Target trail value %d = %d revolutions"), m_target_trails.value, maxRev); + LOG_VERBOSE(wxT("BR24radar_pi: Target trail value %d = %d revolutions"), target_trails, maxRev); // Disperse the BLOB_HISTORY values over 0..maxrev for (revolution = 0; revolution <= TRAIL_MAX_REVOLUTIONS; revolution++) { diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarInfo.h opencpn-plugin-br24radar-3.0.1/src/RadarInfo.h --- opencpn-plugin-br24radar-2.1.0/src/RadarInfo.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarInfo.h 2017-09-24 10:58:54.000000000 +0000 @@ -52,63 +52,80 @@ class radar_control_item { public: - int value; - int button; - bool mod; - void Update(int v) { wxCriticalSectionLocker lock(m_exclusive); - if (v != button) { - mod = true; - button = v; + if (v != m_button) { + m_mod = true; + m_button = v; } - value = v; + m_value = v; }; bool GetButton(int *value) { wxCriticalSectionLocker lock(m_exclusive); - bool changed = mod; + bool changed = m_mod; if (value) { - *value = this->value; + *value = this->m_value; } - mod = false; + m_mod = false; return changed; } int GetButton() { wxCriticalSectionLocker lock(m_exclusive); - mod = false; - return button; + m_mod = false; + return m_button; + } + + int GetValue() { + wxCriticalSectionLocker lock(m_exclusive); + + return m_value; + } + + bool IsModified() { + wxCriticalSectionLocker lock(m_exclusive); + + return m_mod; } radar_control_item() { - value = 0; - button = 0; - mod = false; + m_value = 0; + m_button = 0; + m_mod = false; } protected: wxCriticalSection m_exclusive; + int m_value; + int m_button; + bool m_mod; }; class radar_range_control_item : public radar_control_item { public: - const RadarRange *range; PersistentSettings *m_settings; void Update(int v); + const RadarRange *GetRange() { + wxCriticalSectionLocker lock(m_exclusive); + + return m_range; + } radar_range_control_item() { - value = 0; - button = 0; - mod = false; - range = 0; + m_value = 0; + m_button = 0; + m_mod = false; + m_range = 0; m_settings = 0; } + private: + const RadarRange *m_range; }; struct DrawInfo { @@ -120,22 +137,36 @@ typedef UINT8 TrailRevolutionsAge; #define SECONDS_TO_REVOLUTIONS(x) ((x)*2 / 5) #define TRAIL_MAX_REVOLUTIONS SECONDS_TO_REVOLUTIONS(600) + 1 -enum { TRAIL_OFF, TRAIL_15SEC, TRAIL_30SEC, TRAIL_1MIN, TRAIL_3MIN, TRAIL_10MIN, TRAIL_CONTINUOUS, TRAIL_ARRAY_SIZE }; +enum { TRAIL_15SEC, TRAIL_30SEC, TRAIL_1MIN, TRAIL_3MIN, TRAIL_5MIN, TRAIL_10MIN, TRAIL_CONTINUOUS, TRAIL_ARRAY_SIZE }; -class RadarInfo : public wxEvtHandler { +class RadarInfo { public: wxString m_name; // Either "Radar", "Radar A", "Radar B". br24radar_pi *m_pi; int m_radar; // Which radar this is (0..., max 2 for now) +#define COURSE_SAMPLES (16) + double m_course; // m_course is the moving everage of m_hdt used for course_up + double m_course_log[COURSE_SAMPLES]; + int m_course_index; + RadarArpa *m_arpa; + wxCriticalSection m_exclusive; // protects the following two /* User radar settings */ radar_control_item m_state; // RadarState (observed) radar_control_item m_boot_state; // Can contain RADAR_TRANSMIT until radar is seen at boot - radar_control_item m_orientation; // 0 = Heading Up, 1 = North Up -#define ORIENTATION_HEAD_UP (0) -#define ORIENTATION_NORTH_UP (1) + radar_control_item m_orientation; // See below for allowed values. +// Orientation HEAD_UP is available if there is no heading or dev mode is switched on +// Other orientations are available if there is a heading +#define ORIENTATION_HEAD_UP \ + (0) // Unstabilized heading (as if without compass) // Available if no compass or in dev mode +#define ORIENTATION_STABILIZED_UP (1) // Stabilized heading (averaged over a few seconds) +#define ORIENTATION_NORTH_UP (2) // North up +#define ORIENTATION_COG_UP (3) // Averaged GPS COG up (same way as OpenCPN) +#define ORIENTATION_NUMBER (4) + + int m_min_contour_length; // minimum contour length of an ARPA or MARPA target radar_control_item m_overlay; radar_range_control_item m_range; // value in meters @@ -154,8 +185,9 @@ radar_control_item m_side_lobe_suppression; radar_control_item m_target_trails; radar_control_item m_trails_motion; -#define TARGET_MOTION_RELATIVE (0) -#define TARGET_MOTION_TRUE (1) +#define TARGET_MOTION_OFF (0) +#define TARGET_MOTION_RELATIVE (1) +#define TARGET_MOTION_TRUE (2) /* Per radar objects */ @@ -177,33 +209,47 @@ RadarType m_radar_type; bool m_auto_range_mode; - int m_overlay_refreshes_queued; - int m_refreshes_queued; + int m_refresh_millis; - int m_main_timer_timeout; GuardZone *m_guard_zone[GUARD_ZONES]; - double m_ebl[BEARING_LINES]; + double m_ebl[ORIENTATION_NUMBER][BEARING_LINES]; double m_vrm[BEARING_LINES]; receive_statistics m_statistics; - bool m_multi_sweep_filter; - UINT8 m_history[LINES_PER_ROTATION][RETURNS_PER_LINE]; -#define HISTORY_FILTER_ALLOW(x) (HasBitCount2[(x)&7]) + struct line_history { + UINT8 line[RETURNS_PER_LINE]; + wxLongLong time; + double lat; + double lon; + }; -#define TRAILS_SIZE (RETURNS_PER_LINE * 2) -#define TRAILS_MIDDLE (TRAILS_SIZE / 2) + line_history m_history[LINES_PER_ROTATION]; +#define MARGIN (100) +#define TRAILS_SIZE (RETURNS_PER_LINE * 2 + MARGIN * 2) + //#define TRAILS_MIDDLE (TRAILS_SIZE / 2) + + struct IntVector { + int lat; + int lon; + }; struct TrailBuffer { + TrailRevolutionsAge true_trails[TRAILS_SIZE][TRAILS_SIZE]; + TrailRevolutionsAge relative_trails[LINES_PER_ROTATION][RETURNS_PER_LINE]; union { - TrailRevolutionsAge true_trails[TRAILS_SIZE][TRAILS_SIZE]; - TrailRevolutionsAge relative_trails[LINES_PER_ROTATION][RETURNS_PER_LINE]; + TrailRevolutionsAge copy_of_true_trails[TRAILS_SIZE][TRAILS_SIZE]; + TrailRevolutionsAge copy_of_relative_trails[LINES_PER_ROTATION][RETURNS_PER_LINE]; }; double lat; double lon; double dif_lat; // Fraction of a pixel expressed in lat/lon for True Motion Target Trails double dif_lon; + IntVector offset; }; + int m_old_range; + int m_dir_lat; + int m_dir_lon; TrailBuffer m_trails; /* Methods */ @@ -216,20 +262,26 @@ void SetName(wxString name); void AdjustRange(int adjustment); void SetAutoRangeMeters(int meters); - bool SetControlValue(ControlType controlType, int value); - void ProcessRadarSpoke(SpokeBearing angle, SpokeBearing bearing, UINT8 *data, size_t len, int range_meters); - void RefreshDisplay(wxTimerEvent &event); + bool SetControlValue(ControlType controlType, int value, int autoValue); + void ProcessRadarSpoke(SpokeBearing angle, SpokeBearing bearing, UINT8 *data, size_t len, int range_meters, wxLongLong time, + double lat, double lon); + void RefreshDisplay(); void UpdateTrailPosition(); void RenderGuardZone(); void ResetRadarImage(); + void ShiftImageLonToCenter(); + void ShiftImageLatToCenter(); void RenderRadarImage(wxPoint center, double scale, double rotation, bool overlay); void ShowRadarWindow(bool show); void ShowControlDialog(bool show, bool reparent); - void DeleteDialogs(); - void DeleteReceive(); + void Shutdown(); + // void DeleteReceive(); void UpdateTransmitState(); void RequestRadarState(RadarState state); - + int GetDrawTime() { + wxCriticalSectionLocker lock(m_exclusive); + return IsPaneShown() ? m_draw_time_ms : 0; + }; bool IsPaneShown(); void UpdateControlState(bool all); @@ -237,19 +289,24 @@ void ComputeTargetTrails(); wxString &GetRangeText(); const char *GetDisplayRangeStr(size_t idx); - int GetDisplayRange() { return m_range.value; }; + int GetDisplayRange() { return m_range.GetValue(); }; void SetNetworkCardAddress(struct sockaddr_in *address); void SetMouseLatLon(double lat, double lon); void SetMouseVrmEbl(double vrm, double ebl); void SetBearing(int bearing); void ClearTrails(); - bool IsDisplayNorthUp() { return m_orientation.value == ORIENTATION_NORTH_UP && m_pi->m_heading_source != HEADING_NONE; } + void ZoomTrails(float zoom_factor); + void SampleCourse(int angle); + int GetOrientation(); wxString GetCanvasTextTopLeft(); wxString GetCanvasTextBottomLeft(); wxString GetCanvasTextCenter(); - double m_mouse_lat, m_mouse_lon, m_mouse_vrm, m_mouse_ebl; + double m_mouse_lat, m_mouse_lon; + double m_mouse_ebl[ORIENTATION_NUMBER]; + double m_mouse_vrm; + int m_range_meters; // what radar told us is the range in the last received spoke // Speedup lookup tables of color to r,g,b, set dependent on m_settings.display_option. wxColour m_colour_map_rgb[BLOB_COLOURS]; @@ -261,23 +318,21 @@ wxString FormatDistance(double distance); wxString FormatAngle(double angle); - int m_range_meters; // what radar told us is the range in the last received spoke - int m_previous_auto_range_meters; int m_auto_range_meters; - wxCriticalSection m_exclusive; // protects the following two - DrawInfo m_draw_panel; // Draw onto our own panel - DrawInfo m_draw_overlay; // Abstract painting method + // wxCriticalSection m_exclusive; // protects the following two + DrawInfo m_draw_panel; // Draw onto our own panel + DrawInfo m_draw_overlay; // Abstract painting method int m_verbose; - wxTimer *m_timer; + int m_draw_time_ms; // Number of millis spent drawing wxString m_range_text; BlobColour m_trail_colour[TRAIL_MAX_REVOLUTIONS + 1]; - DECLARE_EVENT_TABLE() + int m_previous_orientation; }; PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarMarpa.cpp opencpn-plugin-br24radar-3.0.1/src/RadarMarpa.cpp --- opencpn-plugin-br24radar-2.1.0/src/RadarMarpa.cpp 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarMarpa.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,1180 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Navico BR24 Radar Plugin, Arpa partition + * Target tracking + * Authors: Douwe Fokkema + * Kees Verruijt + * Håkan Svensson + *************************************************************************** + * Copyright (C) 2010 by David S. Register bdbcat@yahoo.com * + * Copyright (C) 2012-2013 by Dave Cowell * + * Copyright (C) 2012-2016 by Kees Verruijt canboat@verruijt.net * + * Copyright (C) 2013-2016 by Douwe Fokkkema df@percussion.nl* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + */ + +#include "RadarMarpa.h" +#include "RadarInfo.h" +#include "br24radar_pi.h" +#include "drawutil.h" + +PLUGIN_BEGIN_NAMESPACE + +static int target_id_count = 0; + +RadarArpa::RadarArpa(br24radar_pi* pi, RadarInfo* ri) { + m_ri = ri; + m_pi = pi; + m_number_of_targets = 0; + CLEAR_STRUCT(m_targets); +} + +ArpaTarget::~ArpaTarget() { + if (m_kalman) { + delete m_kalman; + m_kalman = 0; + } +} + +RadarArpa::~RadarArpa() { + int n = m_number_of_targets; + m_number_of_targets = 0; + for (int i = 0; i < n; i++) { + if (m_targets[i]) { + delete m_targets[i]; + m_targets[i] = 0; + } + } +} + +Position Polar2Pos(Polar pol, Position own_ship, double range) { + // The "own_ship" in the fumction call can be the position at an earlier time than the current position + // converts in a radar image angular data r ( 0 - 512) and angle (0 - 2096) to position (lat, lon) + // based on the own ship position own_ship + Position pos; + pos.lat = own_ship.lat + + (double)pol.r / (double)RETURNS_PER_LINE * range * cos(deg2rad(SCALE_RAW_TO_DEGREES2048(pol.angle))) / 60. / 1852.; + pos.lon = own_ship.lon + + (double)pol.r / (double)RETURNS_PER_LINE * range * sin(deg2rad(SCALE_RAW_TO_DEGREES2048(pol.angle))) / + cos(deg2rad(own_ship.lat)) / 60. / 1852.; + return pos; +} + +Polar Pos2Polar(Position p, Position own_ship, int range) { + // converts in a radar image a lat-lon position to angular data + Polar pol; + double dif_lat = p.lat; + dif_lat -= own_ship.lat; + double dif_lon = (p.lon - own_ship.lon) * cos(deg2rad(own_ship.lat)); + pol.r = (int)(sqrt(dif_lat * dif_lat + dif_lon * dif_lon) * 60. * 1852. * (double)RETURNS_PER_LINE / (double)range + 1); + pol.angle = (int)((atan2(dif_lon, dif_lat)) * (double)LINES_PER_ROTATION / (2. * PI) + 1); // + 1 to minimize rounding errors + if (pol.angle < 0) pol.angle += LINES_PER_ROTATION; + return pol; +} + +bool RadarArpa::Pix(int ang, int rad) { + if (rad <= 1 || rad >= RETURNS_PER_LINE - 1) { // avoid range ring + return false; + } + return ((m_ri->m_history[MOD_ROTATION2048(ang)].line[rad] & 128) != 0); +} + +bool ArpaTarget::Pix(int ang, int rad) { + if (rad <= 1 || rad >= RETURNS_PER_LINE - 1) { // avoid range ring + return false; + } + if (m_check_for_duplicate) { + // check bit 1 + return ((m_ri->m_history[MOD_ROTATION2048(ang)].line[rad] & 64) != 0); + } else { + // check bit 0 + return ((m_ri->m_history[MOD_ROTATION2048(ang)].line[rad] & 128) != 0); + } +} + +bool ArpaTarget::MultiPix(int ang, int rad) { // checks if the blob has a contour of at least length pixels + // pol must start on the contour of the blob + // false if not + // if false clears out pixels of the blob in hist + wxCriticalSectionLocker lock(ArpaTarget::m_ri->m_exclusive); + int length = m_ri->m_min_contour_length; + Polar start; + start.angle = ang; + start.r = rad; + if (!Pix(start.angle, start.r)) { + return false; + } + Polar current = start; // the 4 possible translations to move from a point on the contour to the next + Polar max_angle; + Polar min_angle; + Polar max_r; + Polar min_r; + Polar transl[4]; // = { 0, 1, 1, 0, 0, -1, -1, 0 }; + transl[0].angle = 0; + transl[0].r = 1; + transl[1].angle = 1; + transl[1].r = 0; + transl[2].angle = 0; + transl[2].r = -1; + transl[3].angle = -1; + transl[3].r = 0; + int count = 0; + int aa; + int rr; + bool succes = false; + int index = 0; + max_r = current; + max_angle = current; + min_r = current; + min_angle = current; // check if p inside blob + if (start.r >= RETURNS_PER_LINE - 1) { + return false; // r too large + } + if (start.r < 3) { + return false; // r too small + } + // first find the orientation of border point p + for (int i = 0; i < 4; i++) { + index = i; + aa = current.angle + transl[index].angle; + rr = current.r + transl[index].r; + succes = !Pix(aa, rr); + if (succes) break; + } + if (!succes) { + // single pixel blob + return false; + } + index += 1; // determines starting direction + if (index > 3) index -= 4; + while (current.r != start.r || current.angle != start.angle || count == 0) { // try all translations to find the next point + // start with the "left most" translation relative to the + // previous one + index += 3; // we will turn left all the time if possible + for (int i = 0; i < 4; i++) { + if (index > 3) index -= 4; + aa = current.angle + transl[index].angle; + rr = current.r + transl[index].r; + succes = Pix(aa, rr); + if (succes) { // next point found + break; + } + index += 1; + } + if (!succes) { + return false; // no next point found (this happens when the blob consists of one single pixel) + } // next point found + current.angle = aa; + current.r = rr; + if (count >= length) { + return true; + } + count++; + if (current.angle > max_angle.angle) { + max_angle = current; + } + if (current.angle < min_angle.angle) { + min_angle = current; + } + if (current.r > max_r.r) { + max_r = current; + } + if (current.r < min_r.r) { + min_r = current; + } + } // contour length is less than m_min_contour_length + // before returning false erase this blob so we do not have to check this one again + if (min_angle.angle < 0) { + min_angle.angle += LINES_PER_ROTATION; + max_angle.angle += LINES_PER_ROTATION; + } + for (int a = min_angle.angle; a <= max_angle.angle; a++) { + for (int r = min_r.r; r <= max_r.r; r++) { + m_ri->m_history[MOD_ROTATION2048(a)].line[r] &= 63; + } + } + return false; +} + +bool RadarArpa::MultiPix(int ang, int rad) { + // checks the blob has a contour of at least length pixels + // pol must start on the contour of the blob + // false if not + // if false clears out pixels of th blob in hist + // wxCriticalSectionLocker lock(ArpaTarget::m_ri->m_exclusive); + int length = m_ri->m_min_contour_length; + Polar start; + start.angle = ang; + start.r = rad; + if (!Pix(start.angle, start.r)) { + return false; + } + Polar current = start; // the 4 possible translations to move from a point on the contour to the next + Polar max_angle; + Polar min_angle; + Polar max_r; + Polar min_r; + Polar transl[4]; // = { 0, 1, 1, 0, 0, -1, -1, 0 }; + transl[0].angle = 0; + transl[0].r = 1; + transl[1].angle = 1; + transl[1].r = 0; + transl[2].angle = 0; + transl[2].r = -1; + transl[3].angle = -1; + transl[3].r = 0; + int count = 0; + int aa; + int rr; + bool succes = false; + int index = 0; + max_r = current; + max_angle = current; + min_r = current; + min_angle = current; // check if p inside blob + if (start.r >= RETURNS_PER_LINE - 1) { + return false; // r too large + } + if (start.r < 3) { + return false; // r too small + } + // first find the orientation of border point p + for (int i = 0; i < 4; i++) { + index = i; + aa = current.angle + transl[index].angle; + rr = current.r + transl[index].r; + succes = !Pix(aa, rr); + if (succes) break; + } + if (!succes) { + return false; + } + index += 1; // determines starting direction + if (index > 3) index -= 4; + while (current.r != start.r || current.angle != start.angle || + count == 0) { // try all translations to find the next point // start with the "left most" translation relative to the + // previous one + index += 3; // we will turn left all the time if possible + for (int i = 0; i < 4; i++) { + if (index > 3) index -= 4; + aa = current.angle + transl[index].angle; + rr = current.r + transl[index].r; + succes = Pix(aa, rr); + if (succes) { // next point found + break; + } + index += 1; + } + if (!succes) { + return false; // no next point found + } // next point found + current.angle = aa; + current.r = rr; + if (count >= length) { + return true; + } + count++; + if (current.angle > max_angle.angle) { + max_angle = current; + } + if (current.angle < min_angle.angle) { + min_angle = current; + } + if (current.r > max_r.r) { + max_r = current; + } + if (current.r < min_r.r) { + min_r = current; + } + } // contour length is less than m_min_contour_length + // before returning false erase this blob so we do not have to check this one again + if (min_angle.angle < 0) { + min_angle.angle += LINES_PER_ROTATION; + max_angle.angle += LINES_PER_ROTATION; + } + for (int a = min_angle.angle; a <= max_angle.angle; a++) { + for (int r = min_r.r; r <= max_r.r; r++) { + m_ri->m_history[MOD_ROTATION2048(a)].line[r] &= 63; + } + } + return false; +} + +void RadarArpa::AcquireNewMARPATarget(Position target_pos) { AcquireOrDeleteMarpaTarget(target_pos, ACQUIRE0); } + +void RadarArpa::DeleteTarget(Position target_pos) { AcquireOrDeleteMarpaTarget(target_pos, FOR_DELETION); } + +void RadarArpa::AcquireOrDeleteMarpaTarget(Position target_pos, int status) { + // acquires new target from mouse click position + // no contour taken yet + // target status acquire0 + // returns in X metric coordinates of click + // constructs Kalman filter + + // make new target + int i_target; + if (m_number_of_targets < MAX_NUMBER_OF_TARGETS - 1 || + (m_number_of_targets == MAX_NUMBER_OF_TARGETS - 1 && status == FOR_DELETION)) { + if (m_targets[m_number_of_targets] == 0) { + m_targets[m_number_of_targets] = new ArpaTarget(m_pi, m_ri); + } + i_target = m_number_of_targets; + m_number_of_targets++; + } else { + LOG_INFO(wxT("BR24radar_pi: RadarArpa:: Error, max targets exceeded ")); + return; + } + + LOG_ARPA(wxT("BR24radar_pi: Adding (M)ARPA target at position %f / %f"), target_pos.lat, target_pos.lon); + + ArpaTarget* target = m_targets[i_target]; + target->m_position = target_pos; // Expected position + target->m_position.time = 0; + target->m_position.dlat_dt = 0.; + target->m_position.dlon_dt = 0.; + target->m_status = status; + + target->m_max_angle.angle = 0; + target->m_min_angle.angle = 0; + target->m_max_r.r = 0; + target->m_min_r.r = 0; + + if (!target->m_kalman) { + target->m_kalman = new KalmanFilter(); + } + target->m_automatic = false; + return; +} + +bool ArpaTarget::FindContourFromInside(Polar* pol) { // moves pol to contour of blob + // true if success + // false when failed + int ang = pol->angle; + int rad = pol->r; + if (rad >= RETURNS_PER_LINE - 1 || rad < 3) { + return false; + } + if (!(Pix(ang, rad))) { + return false; + } + while (Pix(ang, rad)) { + ang--; + } + ang++; + pol->angle = ang; + // check if the blob has the required min contour length + if (MultiPix(ang, rad)) { + return true; + } else { + return false; + } +} + +/** + * Find a contour from the given start position on the edge of a blob. + * + * Follows the contour in a clockwise manner. + * + * Returns 0 if ok, or a small integer on error (but nothing is done with this) + */ +int ArpaTarget::GetContour(Polar* pol) { + wxCriticalSectionLocker lock(ArpaTarget::m_ri->m_exclusive); + // the 4 possible translations to move from a point on the contour to the next + Polar transl[4]; // = { 0, 1, 1, 0, 0, -1, -1, 0 }; + transl[0].angle = 0; + transl[0].r = 1; + + transl[1].angle = 1; + transl[1].r = 0; + + transl[2].angle = 0; + transl[2].r = -1; + + transl[3].angle = -1; + transl[3].r = 0; + + int count = 0; + Polar start = *pol; + Polar current = *pol; + int aa; + int rr; + + bool succes = false; + int index = 0; + m_max_r = current; + m_max_angle = current; + m_min_r = current; + m_min_angle = current; + // check if p inside blob + if (start.r >= RETURNS_PER_LINE - 1) { + return 1; // return code 1, r too large + } + if (start.r < 4) { + return 2; // return code 2, r too small + } + if (!Pix(start.angle, start.r)) { + return 3; // return code 3, starting point outside blob + } + // first find the orientation of border point p + for (int i = 0; i < 4; i++) { + index = i; + aa = current.angle + transl[index].angle; + rr = current.r + transl[index].r; + // if (rr > 511) return 13; // r too large + succes = !Pix(aa, rr); + if (succes) break; + } + if (!succes) { + return 4; // return code 4, starting point not on contour + } + index += 1; // determines starting direction + if (index > 3) index -= 4; + + while (current.r != start.r || current.angle != start.angle || count == 0) { + // try all translations to find the next point + // start with the "left most" translation relative to the previous one + index += 3; // we will turn left all the time if possible + for (int i = 0; i < 4; i++) { + if (index > 3) index -= 4; + aa = current.angle + transl[index].angle; + rr = current.r + transl[index].r; + succes = Pix(aa, rr); + if (succes) { + // next point found + + break; + } + index += 1; + } + if (!succes) { + LOG_INFO(wxT("BR24radar_pi::RadarArpa::GetContour no next point found count= %i"), count); + return 7; // return code 7, no next point found + } + // next point found + current.angle = aa; + current.r = rr; + if (count < MAX_CONTOUR_LENGTH - 2) { + m_contour[count] = current; + } + if (count == MAX_CONTOUR_LENGTH - 2) { + m_contour[count] = start; // shortcut to the beginning for drawing the contour + current = start; // this will cause the while to terminate + } + if (count < MAX_CONTOUR_LENGTH - 1) { + count++; + } + if (current.angle > m_max_angle.angle) { + m_max_angle = current; + } + if (current.angle < m_min_angle.angle) { + m_min_angle = current; + } + if (current.r > m_max_r.r) { + m_max_r = current; + } + if (current.r < m_min_r.r) { + m_min_r = current; + } + } + m_contour_length = count; + // CalculateCentroid(*target); we better use the real centroid instead of the average, todo + if (m_min_angle.angle < 0) { + m_min_angle.angle += LINES_PER_ROTATION; + m_max_angle.angle += LINES_PER_ROTATION; + } + pol->angle = (m_max_angle.angle + m_min_angle.angle) / 2; + if (m_max_r.r > RETURNS_PER_LINE - 1 || m_min_r.r > RETURNS_PER_LINE - 1) { + return 10; // return code 10 r too large + } + if (m_max_r.r < 2 || m_min_r.r < 2) { + return 11; // return code 11 r too small + } + if (pol->angle >= LINES_PER_ROTATION) { + pol->angle -= LINES_PER_ROTATION; + } + pol->r = (m_max_r.r + m_min_r.r) / 2; + pol->time = m_ri->m_history[MOD_ROTATION2048(pol->angle)].time; + return 0; // success, blob found +} + +void RadarArpa::DrawContour(ArpaTarget* target) { + // should be improved using vertex arrays + PolarToCartesianLookupTable* polarLookup; + if (target->m_lost_count > 0) { + return; // don't draw targets that were not seen last sweep + } + polarLookup = GetPolarToCartesianLookupTable(); + wxColor arpa = m_pi->m_settings.arpa_colour; + glColor4ub(arpa.Red(), arpa.Green(), arpa.Blue(), arpa.Alpha()); + glLineWidth(3.0); + + glEnableClientState(GL_VERTEX_ARRAY); + + double vertex_array[2 * MAX_CONTOUR_LENGTH + 1]; + for (int i = 0; i < target->m_contour_length; i++) { + int angle = MOD_ROTATION2048(target->m_contour[i].angle - 512); + int radius = target->m_contour[i].r; + if (radius <= 0 || radius >= RETURNS_PER_LINE) { + LOG_INFO(wxT("BR24radar_pi: wrong values in DrawContour")); + return; + } + vertex_array[2 * i] = polarLookup->x[angle][radius] * m_ri->m_range_meters / RETURNS_PER_LINE; + vertex_array[2 * i + 1] = polarLookup->y[angle][radius] * m_ri->m_range_meters / RETURNS_PER_LINE; + } + + glVertexPointer(2, GL_DOUBLE, 0, vertex_array); + glDrawArrays(GL_LINE_STRIP, 0, target->m_contour_length); + + glDisableClientState(GL_VERTEX_ARRAY); // disable vertex arrays + +// following displays expected position with crosses that indicate the size of the search area +// for debugging only + +#ifdef MARPA_DEBUG + // draw expected pos for test + int angle = MOD_ROTATION2048(target->expected.angle - 512); + int radius = target->expected.r; + + double xx; + double yy; + int dist_a = (int)(326. / (double)radius * TARGET_SEARCH_RADIUS2 / 2.); + int dist_r = (int)((double)TARGET_SEARCH_RADIUS2 / 2.); + glColor4ub(0, 250, 0, 250); + if (radius < 511 - dist_r && radius > dist_r) { + xx = polarLookup->x[MOD_ROTATION2048(angle)][radius - dist_r] * m_ri->m_range_meters / RETURNS_PER_LINE; + yy = polarLookup->y[MOD_ROTATION2048(angle)][radius - dist_r] * m_ri->m_range_meters / RETURNS_PER_LINE; + glVertex2f(xx, yy); + xx = polarLookup->x[MOD_ROTATION2048(angle)][radius + dist_r] * m_ri->m_range_meters / RETURNS_PER_LINE; + yy = polarLookup->y[MOD_ROTATION2048(angle)][radius + dist_r] * m_ri->m_range_meters / RETURNS_PER_LINE; + glVertex2f(xx, yy); + xx = polarLookup->x[MOD_ROTATION2048(angle - dist_a)][radius] * m_ri->m_range_meters / RETURNS_PER_LINE; + yy = polarLookup->y[MOD_ROTATION2048(angle - dist_a)][radius] * m_ri->m_range_meters / RETURNS_PER_LINE; + glVertex2f(xx, yy); + xx = polarLookup->x[MOD_ROTATION2048(angle + dist_a)][radius] * m_ri->m_range_meters / RETURNS_PER_LINE; + yy = polarLookup->y[MOD_ROTATION2048(angle + dist_a)][radius] * m_ri->m_range_meters / RETURNS_PER_LINE; + glVertex2f(xx, yy); + } +#endif +} + +void RadarArpa::DrawArpaTargets() { + for (int i = 0; i < m_number_of_targets; i++) { + if (!m_targets[i]) continue; + if (m_targets[i]->m_status != LOST) { + DrawContour(m_targets[i]); + } + } +} + +void RadarArpa::CleanUpLostTargets() { + // remove targets with status LOST and put them at the end + // adjust m_number_of_targets + int ii = 0; + while (ii < m_number_of_targets) { + if (m_targets[ii]) { + if (m_targets[ii]->m_status == LOST) { + // we keep the lost target for later use, destruction and construction is expensive + ArpaTarget* lost = m_targets[ii]; + int len = sizeof(ArpaTarget*); + // move rest of larget list up to keep them in sequence + memmove(&m_targets[ii], &m_targets[ii] + 1, (m_number_of_targets - ii) * len); + m_number_of_targets--; + // set the lost target at the last position + m_targets[m_number_of_targets] = lost; + } else { + ii++; + } + } + } +} + +void RadarArpa::RefreshArpaTargets() { + CleanUpLostTargets(); + int target_to_delete = -1; + // find a target with status FOR_DELETION if it is there + for (int i = 0; i < m_number_of_targets; i++) { + if (!m_targets[i]) continue; + if (m_targets[i]->m_status == FOR_DELETION) { + target_to_delete = i; + } + } + if (target_to_delete != -1) { + // delete the target that is closest to the target with status FOR_DELETION + Position* deletePosition = &m_targets[target_to_delete]->m_position; + double min_dist = 1000; + int del_target = -1; + for (int i = 0; i < m_number_of_targets; i++) { + if (!m_targets[i]) continue; + if (i == target_to_delete || m_targets[i]->m_status == LOST) continue; + double dif_lat = deletePosition->lat - m_targets[i]->m_position.lat; + double dif_lon = (deletePosition->lon - m_targets[i]->m_position.lon) * cos(deg2rad(deletePosition->lat)); + double dist2 = dif_lat * dif_lat + dif_lon * dif_lon; + if (dist2 < min_dist) { + min_dist = dist2; + del_target = i; + } + } + // del_target is the index of the target closest to target with index target_to_delete + if (del_target != -1) { + m_targets[del_target]->SetStatusLost(); + } + m_targets[target_to_delete]->SetStatusLost(); + // now first clean up the lost targets again + CleanUpLostTargets(); + } + + ArpaTarget t; + KalmanFilter k; + // main target refresh loop + + // pass 1 of target refresh + int dist = TARGET_SEARCH_RADIUS1; + for (int i = 0; i < m_number_of_targets; i++) { + if (!m_targets[i]) { + LOG_INFO(wxT("BR24radar_pi: error target non existent i=%i"), i); + continue; + } + m_targets[i]->m_pass_nr = PASS1; + if (m_targets[i]->m_pass1_result == NOT_FOUND_IN_PASS1) continue; + m_targets[i]->RefreshTarget(dist); + if (m_targets[i]->m_pass1_result == NOT_FOUND_IN_PASS1) { + } + } + + // pass 2 of target refresh + dist = TARGET_SEARCH_RADIUS2; + for (int i = 0; i < m_number_of_targets; i++) { + if (!m_targets[i]) { + LOG_INFO(wxT("BR24radar_pi: error target non existent i=%i"), i); + continue; + } + if (m_targets[i]->m_pass1_result == UNKNOWN) continue; + m_targets[i]->m_pass_nr = PASS2; + m_targets[i]->RefreshTarget(dist); + } + + for (int i = 0; i < GUARD_ZONES; i++) m_ri->m_guard_zone[i]->SearchTargets(); +} + +void ArpaTarget::RefreshTarget(int dist) { + Position prev_X; + Position prev2_X; + Position own_pos; + Polar pol; + double delta_t; + LocalPosition x_local; + wxLongLong prev_refresh = m_refresh; + + // refresh may be called from guard directly, better check + if (m_status == LOST || !m_pi->GetRadarPosition(&own_pos.lat, &own_pos.lon)) { + return; + } + pol = Pos2Polar(m_position, own_pos, m_ri->m_range_meters); + wxLongLong time1 = m_ri->m_history[MOD_ROTATION2048(pol.angle)].time; + int margin = SCAN_MARGIN; + if (m_pass_nr == PASS2) margin += 100; + wxLongLong time2 = m_ri->m_history[MOD_ROTATION2048(pol.angle + margin)].time; + // check if target has been refreshed since last time (at least SCAN_MARGIN2 later) + // and if the beam has passed the target location with SCAN_MARGIN spokes + // the beam sould have passed our "angle" AND a point SCANMARGIN further + // always refresh when status == 0 + if ((time1 < (m_refresh + SCAN_MARGIN2) || time2 < time1) && m_status != 0) { + wxLongLong now = wxGetUTCTimeMillis(); // millis + int diff = now.GetLo() - m_refresh.GetLo(); + if (diff > 8000) { + LOG_ARPA(wxT("BR24radar_pi: target not refreshed, missing spokes, set lost, status= %i, target_id= %i timediff= %i"), + m_status, m_target_id, diff); + SetStatusLost(); + } + return; + } + // set new refresh time + m_refresh = time1; + prev2_X = prev_X; + prev_X = m_position; // save the previous target position + + // for test only + /* if (status == 0) { + target_id_count++; + if (target_id_count >= 10000) target_id_count = 1; + target_id = target_id_count; + }*/ + + // PREDICTION CYCLE + m_position.time = time1; // estimated new target time + delta_t = ((double)((m_position.time - prev_X.time).GetLo())) / 1000.; // in seconds + if (m_status == 0) { + delta_t = 0.; + } + if (m_position.lat > 90.) { + SetStatusLost(); + return; + } + x_local.lat = (m_position.lat - own_pos.lat) * 60. * 1852.; // in meters + x_local.lon = (m_position.lon - own_pos.lon) * 60. * 1852. * cos(deg2rad(own_pos.lat)); // in meters + x_local.dlat_dt = m_position.dlat_dt; // meters / sec + x_local.dlon_dt = m_position.dlon_dt; // meters / sec + m_kalman->Predict(&x_local, delta_t); // x_local is new estimated local position of the target + // now set the polar to expected angular position from the expected local position + pol.angle = (int)(atan2(x_local.lon, x_local.lat) * LINES_PER_ROTATION / (2. * PI)); + if (pol.angle < 0) pol.angle += LINES_PER_ROTATION; + pol.r = + (int)(sqrt(x_local.lat * x_local.lat + x_local.lon * x_local.lon) * (double)RETURNS_PER_LINE / (double)m_ri->m_range_meters); + // zooming and target movement may cause r to be out of bounds + if (pol.r >= RETURNS_PER_LINE || pol.r <= 0) { + SetStatusLost(); + return; + } + m_expected = pol; // save expected polar position + + // Measurement cycle + // now search for the target at the expected polar position in pol + int dist1 = dist; + Polar back = pol; + if (GetTarget(&pol, dist1)) { + ResetPixels(); + // target too large? (land masses?) get rid of it + if (abs(back.r - pol.r) > MAX_TARGET_DIAMETER || abs(m_max_r.r - m_min_r.r) > MAX_TARGET_DIAMETER || + abs(m_min_angle.angle - m_max_angle.angle) > MAX_TARGET_DIAMETER) { + SetStatusLost(); + return; + } + + // target refreshed, measured position in pol + // check if target has a new later time than previous target + if (pol.time <= prev_X.time && m_status > 1) { + // found old target again, reset what we have done + LOG_INFO(wxT("BR24radar_pi: Error Gettarget same time found")); + m_position = prev_X; + prev_X = prev2_X; + return; + } + + m_lost_count = 0; + if (m_status == ACQUIRE0) { + // as this is the first measurement, move target to measured position + Position p_own; + p_own.lat = m_ri->m_history[MOD_ROTATION2048(pol.angle)].lat; // get the position at receive time + p_own.lon = m_ri->m_history[MOD_ROTATION2048(pol.angle)].lon; + m_position = Polar2Pos(pol, p_own, m_ri->m_range_meters); // using own ship location from the time of reception + m_position.dlat_dt = 0.; + m_position.dlon_dt = 0.; + m_expected = pol; + m_position.sd_speed_kn = 0.; + } + + m_status++; + // target gets an id when status == STATUS_TO_OCPN + if (m_status == STATUS_TO_OCPN) { + target_id_count++; + if (target_id_count >= 10000) target_id_count = 1; + m_target_id = target_id_count; + } + + // Kalman filter to calculate the apostriori local position and speed based on found position (pol) + if (m_status > 1) { + m_kalman->Update_P(); + m_kalman->SetMeasurement(&pol, &x_local, &m_expected, m_ri->m_range_meters); // pol is measured position in polar coordinates + } + + // x_local expected position in local coordinates + + m_position.time = pol.time; // set the target time to the newly found time + } // end of target found + + // target not found + else { + // target not found + if (m_pass_nr == PASS1) m_kalman->Update_P(); + // check if the position of the target has been taken by another target, a duplicate + // if duplicate, handle target as not found but don't do pass 2 (= search in the surroundings) + bool duplicate = false; + m_check_for_duplicate = true; + if (m_pass_nr == PASS1 && GetTarget(&pol, dist1)) { + m_pass1_result = UNKNOWN; + duplicate = true; + } + m_check_for_duplicate = false; + + // not found in pass 1 + // try again later in pass 2 with a larger distance + if (m_pass_nr == PASS1 && !duplicate) { + m_pass1_result = NOT_FOUND_IN_PASS1; + // reset what we have done + pol.time = prev_X.time; + m_refresh = prev_refresh; + m_position = prev_X; + prev_X = prev2_X; + return; + } + + // delete low status targets immediately when not found + if (m_status == ACQUIRE0 || m_status == ACQUIRE1 || m_status == 2) { + SetStatusLost(); + return; + } + + m_lost_count++; + + // delete if not found too often + if (m_lost_count > MAX_LOST_COUNT) { + SetStatusLost(); + return; + } + } // end of target not found + // set pass1_result ready for next sweep + m_pass1_result = UNKNOWN; + if (m_status != ACQUIRE1) { + // if status == 1, then this was first measurement, keep position at measured position + m_position.lat = own_pos.lat + x_local.lat / 60. / 1852.; + m_position.lon = own_pos.lon + x_local.lon / 60. / 1852. / cos(deg2rad(own_pos.lat)); + m_position.dlat_dt = x_local.dlat_dt; // meters / sec + m_position.dlon_dt = x_local.dlon_dt; // meters /sec + m_position.sd_speed_kn = x_local.sd_speed_m_s * 3600. / 1852.; + } + + // set refresh time to the time of the spoke where the target was found + m_refresh = m_position.time; + if (m_status >= 1) { + if (m_status == 2) { + // avoid extreme start-up speeds + if (m_position.dlat_dt > START_UP_SPEED) m_position.dlat_dt = START_UP_SPEED; + if (m_position.dlat_dt < -START_UP_SPEED) m_position.dlat_dt = -START_UP_SPEED; + if (m_position.dlon_dt > START_UP_SPEED) m_position.dlon_dt = START_UP_SPEED; + if (m_position.dlon_dt < -START_UP_SPEED) m_position.dlon_dt = -START_UP_SPEED; + } + if (m_status == 3) { + // avoid extreme start-up speeds + if (m_position.dlat_dt > 2 * START_UP_SPEED) m_position.dlat_dt = 2 * START_UP_SPEED; + if (m_position.dlat_dt < -2 * START_UP_SPEED) m_position.dlat_dt = -2 * START_UP_SPEED; + if (m_position.dlon_dt > 2 * START_UP_SPEED) m_position.dlon_dt = 2 * START_UP_SPEED; + if (m_position.dlon_dt < -2 * START_UP_SPEED) m_position.dlon_dt = -2 * START_UP_SPEED; + } + double s1 = m_position.dlat_dt; // m per second + double s2 = m_position.dlon_dt; // m per second + m_speed_kn = (sqrt(s1 * s1 + s2 * s2)) * 3600. / 1852.; // and convert to nautical miles per hour + m_course = rad2deg(atan2(s2, s1)); + if (m_course < 0) m_course += 360.; + if (m_speed_kn > 20.) { + pol = Pos2Polar(m_position, own_pos, m_ri->m_range_meters); + } + + if (m_speed_kn < (double)TARGET_SPEED_DIV_SDEV * m_position.sd_speed_kn) { + m_speed_kn = 0.; + m_course = 0.; + if (m_stationary < 2) { + m_stationary++; + } + } else if (m_stationary > 0) { + m_stationary--; + } + + // send target data to OCPN + pol = Pos2Polar(m_position, own_pos, m_ri->m_range_meters); + if (m_status >= STATUS_TO_OCPN) { + OCPN_target_status s; + if (m_status >= Q_NUM) s = Q; + if (m_status > T_NUM) s = T; + if (m_lost_count > 0) { + // if target was not seen last sweep, color yellow + s = Q; + } + // Check for AIS target at (M)ARPA position + double posOffset = (double)m_pi->m_settings.AISatARPAoffset; + // Default 40 >> look 80 meters around + 4% of distance to target + double dist2target = (4.0 / 100) * (double)pol.r / (double)RETURNS_PER_LINE * m_ri->m_range_meters; + posOffset += dist2target; + if (m_pi->FindAIS_at_arpaPos(m_position.lat, m_position.lon, posOffset)) s = L; + PassARPAtoOCPN(&pol, s); + } + } + return; +} + +#define PIX(aa, rr) \ + if (rr > 510) continue; \ + if (MultiPix(aa, rr)) { \ + pol->angle = aa; \ + pol->r = rr; \ + return true; \ + } + +bool ArpaTarget::FindNearestContour(Polar* pol, int dist) { + // make a search pattern along a square + // returns the position of the nearest blob found in pol + // dist is search radius (1 more or less) + int a = pol->angle; + int r = pol->r; + if (dist < 2) dist = 2; + for (int j = 1; j <= dist; j++) { + int dist_r = j; + int dist_a = (int)(326. / (double)r * j); // 326/r: conversion factor to make squares + if (dist_a == 0) dist_a = 1; + for (int i = 0; i <= dist_a; i++) { // "upper" side + PIX(a - i, r + dist_r); // search starting from the middle + PIX(a + i, r + dist_r); + } + for (int i = 0; i < dist_r; i++) { // "right hand" side + PIX(a + dist_a, r + i); + PIX(a + dist_a, r - i); + } + for (int i = 0; i <= dist_a; i++) { // "lower" side + PIX(a + i, r - dist_r); + PIX(a - i, r - dist_r); + } + for (int i = 0; i < dist_r; i++) { // "left hand" side + PIX(a - dist_a, r + i); + PIX(a - dist_a, r - i); + } + } + return false; +} + +void RadarArpa::CalculateCentroid(ArpaTarget* target) { + // real calculation still to be done +} + +ArpaTarget::ArpaTarget(br24radar_pi* pi, RadarInfo* ri) { + ArpaTarget::m_ri = ri; + m_pi = pi; + m_kalman = 0; + m_status = LOST; + m_contour_length = 0; + m_lost_count = 0; + m_target_id = 0; + m_refresh = 0; + m_automatic = false; + m_speed_kn = 0.; + m_course = 0.; + m_stationary = 0; + m_position.dlat_dt = 0.; + m_position.dlon_dt = 0.; + m_pass1_result = UNKNOWN; + m_pass_nr = PASS1; +} + +ArpaTarget::ArpaTarget() { + m_kalman = 0; + m_status = LOST; + m_contour_length = 0; + m_lost_count = 0; + m_target_id = 0; + m_refresh = 0; + m_automatic = false; + m_speed_kn = 0.; + m_course = 0.; + m_stationary = 0; + m_position.dlat_dt = 0.; + m_position.dlon_dt = 0.; + m_pass1_result = UNKNOWN; + m_pass_nr = PASS1; +} + +bool ArpaTarget::GetTarget(Polar* pol, int dist1) { + // general target refresh + bool contour_found = false; + int dist = dist1; + + if (m_status == ACQUIRE0 || m_status == ACQUIRE1) { + dist *= 2; + } + if (dist > pol->r - 5) { + dist = pol->r - 5; // don't search close to origin + } + + int a = pol->angle; + int r = pol->r; + + if (Pix(a, r)) { + contour_found = FindContourFromInside(pol); + } else { + contour_found = FindNearestContour(pol, dist); + } + if (!contour_found) { + return false; + } + int cont = GetContour(pol); + if (cont != 0) { + // LOG_ARPA(wxT("BR24radar_pi: ARPA contour error %d at %d, %d"), cont, a, r); + // reset pol in case of error + pol->angle = a; + pol->r = r; + return false; + } + return true; +} + +void ArpaTarget::PassARPAtoOCPN(Polar* pol, OCPN_target_status status) { + wxString s_TargID, s_Bear_Unit, s_Course_Unit; + wxString s_speed, s_course, s_Dist_Unit, s_status; + wxString s_bearing; + wxString s_distance; + wxString s_target_name; + wxString nmea; + char sentence[90]; + char checksum = 0; + char* p; + + s_Bear_Unit = wxEmptyString; // Bearing Units R or empty + s_Course_Unit = wxT("T"); // Course type R; Realtive T; true + s_Dist_Unit = wxT("N"); // Speed/Distance Unit K, N, S N= NM/h = Knots + switch (status) { + case Q: + s_status = wxT("Q"); // yellow + break; + case T: + s_status = wxT("T"); // green + break; + case L: + s_status = wxT("L"); // ? + break; + } + + double dist = (double)pol->r / (double)RETURNS_PER_LINE * (double)m_ri->m_range_meters / 1852.; + double bearing = (double)pol->angle * 360. / (double)LINES_PER_ROTATION; + + if (bearing < 0) bearing += 360; + s_TargID = wxString::Format(wxT("%4i"), m_target_id); + s_speed = wxString::Format(wxT("%4.2f"), m_speed_kn); + s_course = wxString::Format(wxT("%3.1f"), m_course); + if (m_automatic) { + s_target_name = wxString::Format(wxT("ARPA%4i"), m_target_id); + } else { + s_target_name = wxString::Format(wxT("MARPA%4i"), m_target_id); + } + s_distance = wxString::Format(wxT("%f"), dist); + s_bearing = wxString::Format(wxT("%f"), bearing); + + /* Code for TTM follows. Send speed and course using TTM*/ + snprintf(sentence, sizeof(sentence), "RATTM,%2s,%s,%s,%s,%s,%s,%s, , ,%s,%s,%s, ", + (const char*)s_TargID.mb_str(), // 1 target id + (const char*)s_distance.mb_str(), // 2 Targ distance + (const char*)s_bearing.mb_str(), // 3 Bearing fr own ship. + (const char*)s_Bear_Unit.mb_str(), // 4 Brearing unit ( T = true) + (const char*)s_speed.mb_str(), // 5 Target speed + (const char*)s_course.mb_str(), // 6 Target Course. + (const char*)s_Course_Unit.mb_str(), // 7 Course ref T // 8 CPA Not used // 9 TCPA Not used + (const char*)s_Dist_Unit.mb_str(), // 10 S/D Unit N = knots/Nm + (const char*)s_target_name.mb_str(), // 11 Target name + (const char*)s_status.mb_str()); // 12 Target Status L/Q/T // 13 Ref N/A + + for (p = sentence; *p; p++) { + checksum ^= *p; + } + nmea.Printf(wxT("$%s*%02X\r\n"), sentence, (unsigned)checksum); + PushNMEABuffer(nmea); +} + +void ArpaTarget::SetStatusLost() { + m_contour_length = 0; + m_lost_count = 0; + if (m_kalman) { + // reset kalman filter, don't delete it, too expensive + m_kalman->ResetFilter(); + } + if (m_status >= STATUS_TO_OCPN) { + Polar p; + p.angle = 0; + p.r = 0; + PassARPAtoOCPN(&p, L); + } + m_status = LOST; + m_target_id = 0; + m_automatic = false; + m_refresh = 0; + m_speed_kn = 0.; + m_course = 0.; + m_stationary = 0; + m_position.dlat_dt = 0.; + m_position.dlon_dt = 0.; + m_pass_nr = PASS1; +} + +void RadarArpa::DeleteAllTargets() { + for (int i = 0; i < m_number_of_targets; i++) { + if (!m_targets[i]) continue; + m_targets[i]->SetStatusLost(); + } +} + +int RadarArpa::AcquireNewARPATarget(Polar pol, int status) { + // acquires new target from mouse click position + // no contour taken yet + // target status status, normally 0, if dummy target to delete a target -2 + // returns in X metric coordinates of click + // constructs Kalman filter + Position own_pos; + Position target_pos; + + if (!m_pi->GetRadarPosition(&own_pos.lat, &own_pos.lon)) { + return -1; + } + target_pos = Polar2Pos(pol, own_pos, m_ri->m_range_meters); + // make new target or re-use an existing one with status == lost + int i; + if (m_number_of_targets < MAX_NUMBER_OF_TARGETS - 1 || (m_number_of_targets == MAX_NUMBER_OF_TARGETS - 1 && status == -2)) { + if (!m_targets[m_number_of_targets]) { + m_targets[m_number_of_targets] = new ArpaTarget(m_pi, m_ri); + } + i = m_number_of_targets; + m_number_of_targets++; + } else { + LOG_INFO(wxT("BR24radar_pi: RadarArpa:: Error, max targets exceeded %i"), m_number_of_targets); + return -1; + } + + ArpaTarget* target = m_targets[i]; + + target->m_position = target_pos; // Expected position + target->m_position.time = wxGetUTCTimeMillis(); + target->m_position.dlat_dt = 0.; + target->m_position.dlon_dt = 0.; + target->m_position.sd_speed_kn = 0.; + target->m_status = status; + target->m_max_angle.angle = 0; + target->m_min_angle.angle = 0; + target->m_max_r.r = 0; + target->m_min_r.r = 0; + if (!target->m_kalman) { + target->m_kalman = new KalmanFilter(); + } + target->m_check_for_duplicate = false; + target->m_automatic = true; + target->m_target_id = 0; + target->RefreshTarget(TARGET_SEARCH_RADIUS1); + return i; +} + +void ArpaTarget::ResetPixels() { + // resets the pixels of the current blob (plus a little margin) so that blob will no be found again in the same sweep + for (int r = m_min_r.r - DISTANCE_BETWEEN_TARGETS; r <= m_max_r.r + DISTANCE_BETWEEN_TARGETS; r++) { + if (r >= LINES_PER_ROTATION || r < 0) continue; + for (int a = m_min_angle.angle - DISTANCE_BETWEEN_TARGETS; a <= m_max_angle.angle + DISTANCE_BETWEEN_TARGETS; a++) { + m_ri->m_history[MOD_ROTATION2048(a)].line[r] = m_ri->m_history[MOD_ROTATION2048(a)].line[r] & 127; + } + } +} + +void RadarArpa::ClearContours() { + for (int i = 0; i < m_number_of_targets; i++) { + m_targets[i]->m_contour_length = 0; + } +} + +PLUGIN_END_NAMESPACE diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarMarpa.h opencpn-plugin-br24radar-3.0.1/src/RadarMarpa.h --- opencpn-plugin-br24radar-2.1.0/src/RadarMarpa.h 1970-01-01 00:00:00.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarMarpa.h 2017-09-24 10:58:54.000000000 +0000 @@ -0,0 +1,176 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Navico BR24 Radar Plugin + * Author: David Register + * Dave Cowell + * Kees Verruijt + * Douwe Fokkema + * Sean D'Epagnier + *************************************************************************** + * Copyright (C) 2010 by David S. Register bdbcat@yahoo.com * + * Copyright (C) 2012-2013 by Dave Cowell * + * Copyright (C) 2012-2016 by Kees Verruijt canboat@verruijt.net * + * Copyright (C) 2013-2016 by Douwe Fokkkema df@percussion.nl* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + */ + +#ifndef _RADAR_MARPA_H_ +#define _RADAR_MARPA_H_ + +//#include "pi_common.h" + +//#include "br24radar_pi.h" +#include "Kalman.h" +#include "Matrix.h" +#include "RadarInfo.h" + +PLUGIN_BEGIN_NAMESPACE + +// Forward definitions +class KalmanFilter; +class Position; + +#define MAX_NUMBER_OF_TARGETS (100) +#define TARGET_SEARCH_RADIUS1 (2) // radius of target search area for pass 1 (on top of the size of the blob) +#define TARGET_SEARCH_RADIUS2 (15) // radius of target search area for pass 1 +#define SCAN_MARGIN (150) // number of lines that a next scan of the target may have moved +#define SCAN_MARGIN2 (1000) // if target is refreshed after this time you will be shure it is the next sweep +#define MAX_CONTOUR_LENGTH (601) // defines maximal size of target contour +#define MAX_TARGET_DIAMETER (200) // target will be set lost if diameter larger than this value +#define MAX_LOST_COUNT (3) // number of sweeps that target can be missed before it is set to lost + +#define FOR_DELETION (-2) // status of a duplicate target used to delete a target +#define LOST (-1) +#define ACQUIRE0 (0) // 0 under acquisition, first seen, no contour yet +#define ACQUIRE1 (1) // 1 under acquisition, contour found, first position FOUND +#define ACQUIRE2 (2) // 2 under acquisition, speed and course taken +#define ACQUIRE3 (3) // 3 under acquisition, speed and course verified, next time active + // >=4 active + +#define Q_NUM (4) // status Q to OCPN at target status +#define T_NUM (6) // status T to OCPN at target status +#define TARGET_SPEED_DIV_SDEV 2. +#define STATUS_TO_OCPN (5) // First status to be send to OCPN +#define START_UP_SPEED (0.5) // maximum allowed speed (m/sec) for new target, real format with . +#define DISTANCE_BETWEEN_TARGETS (4) // minimum separation between targets + +typedef int target_status; +enum OCPN_target_status { + Q, // acquiring + T, // active + L // lost +}; + +class Position { + public: + double lat; + double lon; + double dlat_dt; // m / sec + double dlon_dt; // m / sec + wxLongLong time; // millis + double speed_kn; + double sd_speed_kn; // standard deviation of the speed in knots +}; + +Position Polar2Pos(Polar pol, Position own_ship, double range); + +Polar Pos2Polar(Position p, Position own_ship, int range); + +enum TargetProcessStatus { UNKNOWN, NOT_FOUND_IN_PASS1 }; +enum PassN { PASS1, PASS2 }; + +class ArpaTarget { + friend class RadarArpa; // Allow RadarArpa access to private members + + public: + ArpaTarget(br24radar_pi* pi, RadarInfo* ri); + ArpaTarget(); + ~ArpaTarget(); + + int GetContour(Polar* p); + void set(br24radar_pi* pi, RadarInfo* ri); + bool FindNearestContour(Polar* pol, int dist); + bool FindContourFromInside(Polar* p); + bool GetTarget(Polar* pol, int dist); + void RefreshTarget(int dist); + void PassARPAtoOCPN(Polar* p, OCPN_target_status s); + void SetStatusLost(); + void ResetPixels(); + void GetSpeed(); + bool Pix(int ang, int rad); + bool MultiPix(int ang, int rad); + + private: + RadarInfo* m_ri; + br24radar_pi* m_pi; + KalmanFilter* m_kalman; + int m_target_id; + target_status m_status; + Position m_position; // holds actual position of target + double m_speed_kn; // Average speed of target. TODO: Merge with m_position.speed? + wxLongLong m_refresh; // time of last refresh + double m_course; + int m_stationary; // number of sweeps target was stationary + int m_lost_count; + bool m_check_for_duplicate; + TargetProcessStatus m_pass1_result; + PassN m_pass_nr; + Polar m_contour[MAX_CONTOUR_LENGTH + 1]; // contour of target, only valid immediately after finding it + int m_contour_length; + Polar m_max_angle, m_min_angle, m_max_r, m_min_r; // charasterictics of contour + + Polar m_expected; + + bool m_automatic; // True for ARPA, false for MARPA. +}; + +class RadarArpa { + public: + RadarArpa(br24radar_pi* pi, RadarInfo* ri); + ~RadarArpa(); + void DrawArpaTargets(); + void RefreshArpaTargets(); + int AcquireNewARPATarget(Polar pol, int status); + void AcquireNewMARPATarget(Position p); + void DeleteTarget(Position p); + bool MultiPix(int ang, int rad); + void DeleteAllTargets(); + void CleanUpLostTargets(); + void RadarLost() { + DeleteAllTargets(); // Let ARPA targets disappear + } + void ClearContours(); + int GetTargetCount() { return m_number_of_targets; } + + private: + int m_number_of_targets; + ArpaTarget* m_targets[MAX_NUMBER_OF_TARGETS]; + + br24radar_pi* m_pi; + RadarInfo* m_ri; + + void AcquireOrDeleteMarpaTarget(Position p, int status); + void CalculateCentroid(ArpaTarget* t); + void DrawContour(ArpaTarget* t); + bool Pix(int ang, int rad); +}; + +PLUGIN_END_NAMESPACE + +#endif diff -Nru opencpn-plugin-br24radar-2.1.0/src/RadarPanel.cpp opencpn-plugin-br24radar-3.0.1/src/RadarPanel.cpp --- opencpn-plugin-br24radar-2.1.0/src/RadarPanel.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/RadarPanel.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -58,7 +58,7 @@ m_sizer = new wxBoxSizer(wxHORIZONTAL); - m_text = new wxStaticText(this, 0, _("OpenGL mode required"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); + m_text = new wxStaticText(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); m_sizer->Add(m_text, 0, wxEXPAND | wxALL, 0); SetSizer(m_sizer); @@ -67,8 +67,9 @@ Layout(); // SetMinSize(GetBestSize()); - m_best_size.x = m_pi->m_display_width / 2; - m_best_size.y = m_pi->m_display_height / 2; + m_best_size = wxGetDisplaySize(); + m_best_size.x /= 2; + m_best_size.y /= 2; pane.MinSize(256, 256); pane.BestSize(m_best_size); @@ -149,7 +150,7 @@ wxAuiPaneInfo& pane = m_aui_mgr->GetPane(this); - if (!m_pi->m_opengl_mode && m_ri->m_radar_canvas) { + if (!m_pi->IsOpenGLEnabled() && m_ri->m_radar_canvas) { m_sizer->Detach(m_ri->m_radar_canvas); delete m_ri->m_radar_canvas; m_ri->m_radar_canvas = 0; @@ -160,7 +161,7 @@ Layout(); } if (visible) { - if (m_pi->m_opengl_mode && !m_ri->m_radar_canvas) { + if (m_pi->IsOpenGLEnabled() && !m_ri->m_radar_canvas) { LOG_DIALOG(wxT("BR24radar_pi %s: creating OpenGL canvas"), m_ri->m_name.c_str()); m_ri->m_radar_canvas = new RadarCanvas(m_pi, m_ri, this, GetSize()); if (!m_ri->m_radar_canvas) { Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_red.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_red.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/src/radar_red_slave.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/src/radar_red_slave.png differ diff -Nru opencpn-plugin-br24radar-2.1.0/src/socketutil.cpp opencpn-plugin-br24radar-3.0.1/src/socketutil.cpp --- opencpn-plugin-br24radar-2.1.0/src/socketutil.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/socketutil.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -170,7 +170,7 @@ wxString address; address.Printf(wxT(" %u.%u.%u.%u"), a[0], a[1], a[2], a[3]); - memset(&adr, 0, sizeof(adr)); + CLEAR_STRUCT(adr); adr.sin_family = AF_INET; adr.sin_addr.s_addr = htonl(INADDR_ANY); // I know, htonl is unnecessary here adr.sin_port = htons(port); @@ -218,7 +218,7 @@ SOCKET server = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); struct sockaddr_in adr; - memset(&adr, 0, sizeof(adr)); + CLEAR_STRUCT(adr); adr.sin_family = AF_INET; adr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // I know, htonl is unnecessary here adr.sin_port = htons(0); @@ -242,7 +242,7 @@ struct sockaddr_in adr; socklen_t adrlen; - memset(&adr, 0, sizeof(adr)); + CLEAR_STRUCT(adr); adrlen = sizeof(adr); if (client == INVALID_SOCKET) { @@ -299,8 +299,7 @@ /* alloc a contiguous block for entire list */ unsigned n = iilen, k = 0; - struct ifaddrs_storage *ifa = (struct ifaddrs_storage *)malloc(n * sizeof(struct ifaddrs_storage)); - memset(ifa, 0, n * sizeof(struct ifaddrs_storage)); + struct ifaddrs_storage *ifa = (struct ifaddrs_storage *)calloc(n, sizeof(struct ifaddrs_storage)); /* foreach interface */ struct ifaddrs_storage *ift = ifa; diff -Nru opencpn-plugin-br24radar-2.1.0/src/TextureFont.cpp opencpn-plugin-br24radar-3.0.1/src/TextureFont.cpp --- opencpn-plugin-br24radar-2.1.0/src/TextureFont.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/TextureFont.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -136,7 +136,7 @@ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, internalformat, tex_w, tex_h, 0, format, GL_UNSIGNED_BYTE, teximage); @@ -277,7 +277,10 @@ glTranslatef(x, y, 0); glPushAttrib(GL_TEXTURE_BIT); + glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, m_texobj); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glPushMatrix(); for (unsigned int i = 0; i < string.size(); i++) { diff -Nru opencpn-plugin-br24radar-2.1.0/src/wxJSON/json_defs.h opencpn-plugin-br24radar-3.0.1/src/wxJSON/json_defs.h --- opencpn-plugin-br24radar-2.1.0/src/wxJSON/json_defs.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/wxJSON/json_defs.h 2017-09-24 10:58:54.000000000 +0000 @@ -8,7 +8,6 @@ // Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// - #ifndef _WX_JSON_DEFS_H_ #define _WX_JSON_DEFS_H_ @@ -16,18 +15,16 @@ // The following symbols should be updated for each new component release // since some kind of tests, like those of AM_WXCODE_CHECKFOR_COMPONENT_VERSION() // for "configure" scripts under unix, use them. -#define wxJSON_MAJOR 1 -#define wxJSON_MINOR 2 -#define wxJSON_RELEASE 1 +#define wxJSON_MAJOR 1 +#define wxJSON_MINOR 2 +#define wxJSON_RELEASE 1 // For non-Unix systems (i.e. when building without a configure script), // users of this component can use the following macro to check if the // current version is at least major.minor.release -#define wxCHECK_JSON_VERSION(major,minor,release) \ - (wxJSON_MAJOR > (major) || \ - (wxJSON_MAJOR == (major) && wxJSON_MINOR > (minor)) || \ - (wxJSON_MAJOR == (major) && wxJSON_MINOR == (minor) && wxJSON_RELEASE >= (release))) - +#define wxCHECK_JSON_VERSION(major, minor, release) \ + (wxJSON_MAJOR > (major) || (wxJSON_MAJOR == (major) && wxJSON_MINOR > (minor)) || \ + (wxJSON_MAJOR == (major) && wxJSON_MINOR == (minor) && wxJSON_RELEASE >= (release))) // Defines for shared builds. // Simple reference for using these macros and for writin components @@ -44,43 +41,40 @@ // WXDLLIMPEXP_DATA_MYCOMP(int) myGlobalIntVar; // #ifdef WXMAKINGDLL_JSON - #define WXDLLIMPEXP_JSON WXEXPORT - #define WXDLLIMPEXP_DATA_JSON(type) WXEXPORT type +#define WXDLLIMPEXP_JSON WXEXPORT +#define WXDLLIMPEXP_DATA_JSON(type) WXEXPORT type #elif defined(WXUSINGDLL) - #define WXDLLIMPEXP_JSON WXIMPORT - #define WXDLLIMPEXP_DATA_JSON(type) WXIMPORT type -#else // not making nor using DLL - #define WXDLLIMPEXP_JSON - #define WXDLLIMPEXP_DATA_JSON(type) type +#define WXDLLIMPEXP_JSON WXIMPORT +#define WXDLLIMPEXP_DATA_JSON(type) WXIMPORT type +#else // not making nor using DLL +#define WXDLLIMPEXP_JSON +#define WXDLLIMPEXP_DATA_JSON(type) type #endif -//dsr +// dsr #undef WXDLLIMPEXP_JSON #undef WXDLLIMPEXP_DATA_JSON - #define WXDLLIMPEXP_JSON - #define WXDLLIMPEXP_DATA_JSON(type) type - -//dsr +#define WXDLLIMPEXP_JSON +#define WXDLLIMPEXP_DATA_JSON(type) type +// dsr // the __PRETTY_FUNCTION__ macro expands to the full class's // member name in the GNU GCC. // For other compilers we use the standard __wxFUNCTION__ macro -#if !defined( __GNUC__ ) - #define __PRETTY_FUNCTION__ __WXFUNCTION__ +#if !defined(__GNUC__) +#define __PRETTY_FUNCTION__ __WXFUNCTION__ #endif - - // define wxJSON_USE_UNICODE if wxWidgets was built with // unicode support -#if defined( wxJSON_USE_UNICODE ) - #undef wxJSON_USE_UNICODE +#if defined(wxJSON_USE_UNICODE) +#undef wxJSON_USE_UNICODE #endif // do not modify the following lines #if wxUSE_UNICODE == 1 - #define wxJSON_USE_UNICODE +#define wxJSON_USE_UNICODE #endif // the following macro, if defined, cause the wxJSONValue to store @@ -88,22 +82,19 @@ // C-strings. By default this macro is not defined // #define wxJSON_USE_CSTRING - // the following macro, if defined, cause the wxJSONvalue and its // referenced data structure to store and increment a static // progressive counter in the ctor. // this is only usefull for debugging purposes // #define WXJSON_USE_VALUE_COUNTER - // the following macro is used by wxJSON internally and you should not // modify it. If the platform seems to support 64-bits integers, // the following lines define the 'wxJSON_64BIT_INT' macro -#if defined( wxLongLong_t ) +#if defined(wxLongLong_t) #define wxJSON_64BIT_INT #endif - // // the following macro, if defined, cause the wxJSON library to // always use 32-bits integers also when the platform seems to @@ -111,7 +102,7 @@ // // #define wxJSON_NO_64BIT_INT // -#if defined( wxJSON_NO_64BIT_INT ) && defined( wxJSON_64BIT_INT ) +#if defined(wxJSON_NO_64BIT_INT) && defined(wxJSON_64BIT_INT) #undef wxJSON_64BIT_INT #endif @@ -123,70 +114,64 @@ // in function wxJSONReader::Strtoll(const wxString &,__int64 *) // *** 1 errors in Compile *** // so, if the constants are not defined, I define them by myself -#if !defined( LLONG_MAX ) - #define LLONG_MAX 9223372036854775807 +#if !defined(LLONG_MAX) +#define LLONG_MAX 9223372036854775807 #endif -#if !defined( ULLONG_MAX ) - #define ULLONG_MAX 18446744073709551615 +#if !defined(ULLONG_MAX) +#define ULLONG_MAX 18446744073709551615 #endif -#if !defined( LLONG_MIN ) - #define LLONG_MIN -9223372036854775808 +#if !defined(LLONG_MIN) +#define LLONG_MIN -9223372036854775808 #endif - - // the same applies for all other integer constants -#if !defined( INT_MIN ) - #define INT_MIN -32768 +#if !defined(INT_MIN) +#define INT_MIN -32768 #endif -#if !defined( INT_MAX ) - #define INT_MAX 32767 +#if !defined(INT_MAX) +#define INT_MAX 32767 #endif -#if !defined( UINT_MAX ) - #define UINT_MAX 65535 +#if !defined(UINT_MAX) +#define UINT_MAX 65535 #endif -#if !defined( LONG_MIN ) - #define LONG_MIN -2147483648 +#if !defined(LONG_MIN) +#define LONG_MIN -2147483648 #endif -#if !defined( LONG_MAX ) - #define LONG_MAX 2147483647 +#if !defined(LONG_MAX) +#define LONG_MAX 2147483647 #endif -#if !defined( ULONG_MAX ) - #define ULONG_MAX 4294967295 +#if !defined(ULONG_MAX) +#define ULONG_MAX 4294967295 #endif -#if !defined( SHORT_MAX ) - #define SHORT_MAX 32767 +#if !defined(SHORT_MAX) +#define SHORT_MAX 32767 #endif -#if !defined( SHORT_MIN ) - #define SHORT_MIN -32768 +#if !defined(SHORT_MIN) +#define SHORT_MIN -32768 #endif -#if !defined( USHORT_MAX ) - #define USHORT_MAX 65535 +#if !defined(USHORT_MAX) +#define USHORT_MAX 65535 #endif - - // // define the wxJSON_ASSERT() macro to expand to wxASSERT() // unless the wxJSON_NOABORT_ASSERT is defined // #define wxJSON_NOABORT_ASSERT -#if defined( wxJSON_NOABORT_ASSERT ) - #define wxJSON_ASSERT( cond ) +#if defined(wxJSON_NOABORT_ASSERT) +#define wxJSON_ASSERT(cond) #else - #define wxJSON_ASSERT( cond ) wxASSERT( cond ); +#define wxJSON_ASSERT(cond) wxASSERT(cond); #endif - // // the following macros are used by the wxJSONWriter::WriteStringValues() // when the wxJSONWRITER_SPLIT_STRING flag is set -#define wxJSONWRITER_LAST_COL 50 -#define wxJSONWRITER_SPLIT_COL 75 -#define wxJSONWRITER_MIN_LENGTH 15 -#define wxJSONWRITER_TAB_LENGTH 4 - +#define wxJSONWRITER_LAST_COL 50 +#define wxJSONWRITER_SPLIT_COL 75 +#define wxJSONWRITER_MIN_LENGTH 15 +#define wxJSONWRITER_TAB_LENGTH 4 // // some compilers (i.e. MSVC++) defines their own 'snprintf' function @@ -197,13 +182,12 @@ #define snprintf _snprintf #endif - // // check if wxWidgets is compiled using --enable-stl in which case // we have to use different aproaches when declaring the array and // key/value containers (see the docs: wxJSON internals: array and hash_map #undef wxJSON_USE_STL -#if defined( wxUSE_STL ) && wxUSE_STL == 1 +#if defined(wxUSE_STL) && wxUSE_STL == 1 #define wxJSON_USE_STL #endif @@ -211,13 +195,10 @@ // defines the MIN and MAX macro for numeric arguments // note that the safest way to define such functions is using templates #ifndef MIN -# define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #ifndef MAX -# define MAX(a,b) ((a) > (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif - -#endif // _WX_JSON_DEFS_H_ - - +#endif // _WX_JSON_DEFS_H_ diff -Nru opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonreader.cpp opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonreader.cpp --- opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonreader.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonreader.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -10,10 +10,10 @@ #include -#include -#include #include #include +#include +#include PLUGIN_BEGIN_NAMESPACE @@ -359,7 +359,6 @@ default: AddError(_T("Cannot find a start object/array character" )); return m_errors.size(); - break; } // returning from DoRead() could be for EOF or for diff -Nru opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonreader.h opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonreader.h --- opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonreader.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonreader.h 2017-09-24 10:58:54.000000000 +0000 @@ -23,9 +23,9 @@ // for all others, include the necessary headers (this file is usually all you // need because it includes almost all "standard" wxWidgets headers) #ifndef WX_PRECOMP +#include #include #include -#include #endif #include "json_defs.h" diff -Nru opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonval.cpp opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonval.cpp --- opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonval.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonval.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -17,8 +17,8 @@ #pragma hdrstop #endif -#include #include +#include #include #include "jsonval.h" @@ -1177,7 +1177,7 @@ return r; } -bool wxJSONValue::AsCString(wxChar* ch) const { +bool wxJSONValue::AsCString(wxChar*& ch) const { bool r = IsCString(); if (r) { ch = (wxChar*)AsCString(); @@ -2026,7 +2026,6 @@ switch (type) { case wxJSONTYPE_OBJECT: map = AsMap(); - size = Size(); for (it = map->begin(); it != map->end(); ++it) { const wxJSONValue& v = it->second; sub = v.Dump(true, indent); diff -Nru opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonval.h opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonval.h --- opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonval.h 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonval.h 2017-09-24 10:58:54.000000000 +0000 @@ -21,10 +21,10 @@ // for all others, include the necessary headers (this file is usually all you // need because it includes almost all "standard" wxWidgets headers) #ifndef WX_PRECOMP -#include -#include -#include #include +#include +#include +#include #endif #include "json_defs.h" @@ -163,7 +163,7 @@ bool AsBool(bool& b) const; bool AsDouble(double& d) const; bool AsString(wxString& str) const; - bool AsCString(wxChar* ch) const; + bool AsCString(wxChar*& ch) const; wxMemoryBuffer AsMemoryBuff() const; bool AsMemoryBuff(wxMemoryBuffer& buff) const; diff -Nru opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonwriter.cpp opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonwriter.cpp --- opencpn-plugin-br24radar-2.1.0/src/wxJSON/jsonwriter.cpp 2016-08-25 07:48:23.000000000 +0000 +++ opencpn-plugin-br24radar-3.0.1/src/wxJSON/jsonwriter.cpp 2017-09-24 10:58:54.000000000 +0000 @@ -8,13 +8,12 @@ // Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// - #include -#include -#include #include #include +#include +#include static const wxChar* writerTraceMask = _T("traceWriter"); @@ -187,32 +186,29 @@ \ref wxjson_tutorial_style_none. To know more about the writer's styles see \ref wxjson_tutorial_style */ -wxJSONWriter::wxJSONWriter( int style, int indent, int step ) -{ - m_indent = indent; - m_step = step; - m_style = style; - m_noUtf8 = false; - if ( m_style == wxJSONWRITER_NONE ) { - m_indent = 0; - m_step = 0; - } - // set the default format string for doubles as - // 10 significant digits and suppress trailing ZEROes - SetDoubleFmtString( "%.10g") ; - -#if !defined( wxJSON_USE_UNICODE ) - // in ANSI builds we can suppress UTF-8 conversion for both the writer and the reader - if ( m_style == wxJSONWRITER_NOUTF8_STREAM ) { - m_noUtf8 = true; - } +wxJSONWriter::wxJSONWriter(int style, int indent, int step) { + m_indent = indent; + m_step = step; + m_style = style; + m_noUtf8 = false; + if (m_style == wxJSONWRITER_NONE) { + m_indent = 0; + m_step = 0; + } + // set the default format string for doubles as + // 10 significant digits and suppress trailing ZEROes + SetDoubleFmtString("%.10g"); + +#if !defined(wxJSON_USE_UNICODE) + // in ANSI builds we can suppress UTF-8 conversion for both the writer and the reader + if (m_style == wxJSONWRITER_NOUTF8_STREAM) { + m_noUtf8 = true; + } #endif } //! Dtor - does nothing -wxJSONWriter::~wxJSONWriter() -{ -} +wxJSONWriter::~wxJSONWriter() {} //! Write the JSONvalue object to a JSON text. /*! @@ -255,40 +251,35 @@ } \endcode */ -void -wxJSONWriter::Write( const wxJSONValue& value, wxString& str ) -{ -#if !defined( wxJSON_USE_UNICODE ) - // in ANSI builds output to a string never use UTF-8 conversion - bool noUtf8_bak = m_noUtf8; // save the current setting - m_noUtf8 = true; +void wxJSONWriter::Write(const wxJSONValue& value, wxString& str) { +#if !defined(wxJSON_USE_UNICODE) + // in ANSI builds output to a string never use UTF-8 conversion + bool noUtf8_bak = m_noUtf8; // save the current setting + m_noUtf8 = true; #endif - wxMemoryOutputStream os; - Write( value, os ); - - // get the address of the buffer - wxFileOffset len = os.GetLength(); - wxStreamBuffer* osBuff = os.GetOutputStreamBuffer(); - void* buffStart = osBuff->GetBufferStart(); + wxMemoryOutputStream os; + Write(value, os); - if ( m_noUtf8 ) { - str = wxString::From8BitData( (const char*) buffStart, len ); - } - else { - str = wxString::FromUTF8( (const char*) buffStart, len ); - } -#if !defined( wxJSON_USE_UNICODE ) - m_noUtf8 = noUtf8_bak; // restore the old setting + // get the address of the buffer + wxFileOffset len = os.GetLength(); + wxStreamBuffer* osBuff = os.GetOutputStreamBuffer(); + void* buffStart = osBuff->GetBufferStart(); + + if (m_noUtf8) { + str = wxString::From8BitData((const char*)buffStart, len); + } else { + str = wxString::FromUTF8((const char*)buffStart, len); + } +#if !defined(wxJSON_USE_UNICODE) + m_noUtf8 = noUtf8_bak; // restore the old setting #endif } //! \overload Write( const wxJSONValue&, wxString& ) -void -wxJSONWriter::Write( const wxJSONValue& value, wxOutputStream& os ) -{ - m_level = 0; - DoWrite( os, value, 0, false ); +void wxJSONWriter::Write(const wxJSONValue& value, wxOutputStream& os) { + m_level = 0; + DoWrite(os, value, 0, false); } //! Set the format string for double values. @@ -306,13 +297,7 @@ is because the JSON writer always procudes UTF-8 encoded text and decimal digits in UTF-8 are made of only one UTF-8 code-unit (1 byte). */ -void -wxJSONWriter::SetDoubleFmtString( const char* fmt ) -{ - m_fmt = (char*) fmt; -} - - +void wxJSONWriter::SetDoubleFmtString(const char* fmt) { m_fmt = (char*)fmt; } //! Perform the real write operation. /*! @@ -331,253 +316,242 @@ iterates through all JSON value object in the array/map and calls itself for every item in the container. */ -int -wxJSONWriter::DoWrite( wxOutputStream& os, const wxJSONValue& value, const wxString* key, bool comma ) -{ - // note that this function is recursive +int wxJSONWriter::DoWrite(wxOutputStream& os, const wxJSONValue& value, const wxString* key, bool comma) { + // note that this function is recursive - // some variables that cannot be allocated in the switch statement - const wxJSONInternalMap* map = 0; - int size; - m_colNo = 1; m_lineNo = 1; - // determine the comment position; it is one of: - // - // wxJSONVALUE_COMMENT_BEFORE - // wxJSONVALUE_COMMENT_AFTER - // wxJSONVALUE_COMMENT_INLINE - // - // or -1 if comments have not to be written - int commentPos = -1; - if ( value.GetCommentCount() > 0 && (m_style & wxJSONWRITER_WRITE_COMMENTS)) { - commentPos = value.GetCommentPos(); - if ( ( m_style & wxJSONWRITER_COMMENTS_BEFORE) != 0 ) { - commentPos = wxJSONVALUE_COMMENT_BEFORE; - } - else if ( (m_style & wxJSONWRITER_COMMENTS_AFTER) != 0 ) { - commentPos = wxJSONVALUE_COMMENT_AFTER; - } + // some variables that cannot be allocated in the switch statement + const wxJSONInternalMap* map = 0; + int size; + m_colNo = 1; + m_lineNo = 1; + // determine the comment position; it is one of: + // + // wxJSONVALUE_COMMENT_BEFORE + // wxJSONVALUE_COMMENT_AFTER + // wxJSONVALUE_COMMENT_INLINE + // + // or -1 if comments have not to be written + int commentPos = -1; + if (value.GetCommentCount() > 0 && (m_style & wxJSONWRITER_WRITE_COMMENTS)) { + commentPos = value.GetCommentPos(); + if ((m_style & wxJSONWRITER_COMMENTS_BEFORE) != 0) { + commentPos = wxJSONVALUE_COMMENT_BEFORE; + } else if ((m_style & wxJSONWRITER_COMMENTS_AFTER) != 0) { + commentPos = wxJSONVALUE_COMMENT_AFTER; + } + } + + int lastChar = 0; // check if WriteComment() writes the last LF char + + // first write the comment if it is BEFORE + if (commentPos == wxJSONVALUE_COMMENT_BEFORE) { + lastChar = WriteComment(os, value, true); + if (lastChar < 0) { + return lastChar; + } else if (lastChar != '\n') { + WriteSeparator(os); } + } - int lastChar = 0; // check if WriteComment() writes the last LF char + lastChar = WriteIndent(os); + if (lastChar < 0) { + return lastChar; + } - // first write the comment if it is BEFORE - if ( commentPos == wxJSONVALUE_COMMENT_BEFORE ) { - lastChar = WriteComment( os, value, true ); - if ( lastChar < 0 ) { - return lastChar; - } - else if ( lastChar != '\n' ) { - WriteSeparator( os ); - } - } + // now write the key if it is not NULL + if (key) { + lastChar = WriteKey(os, *key); + } + if (lastChar < 0) { + return lastChar; + } - lastChar = WriteIndent( os ); - if ( lastChar < 0 ) { + // now write the value + wxJSONInternalMap::const_iterator it; // declare the map object + long int count = 0; + + wxJSONType t = value.GetType(); + switch (t) { + case wxJSONTYPE_INVALID: + WriteInvalid(os); + wxFAIL_MSG(_T("wxJSONWriter::WriteEmpty() cannot be called (not a valid JSON text")); + break; + + case wxJSONTYPE_INT: + case wxJSONTYPE_SHORT: + case wxJSONTYPE_LONG: + case wxJSONTYPE_INT64: + lastChar = WriteIntValue(os, value); + break; + + case wxJSONTYPE_UINT: + case wxJSONTYPE_USHORT: + case wxJSONTYPE_ULONG: + case wxJSONTYPE_UINT64: + lastChar = WriteUIntValue(os, value); + break; + + case wxJSONTYPE_NULL: + lastChar = WriteNullValue(os); + break; + case wxJSONTYPE_BOOL: + lastChar = WriteBoolValue(os, value); + break; + + case wxJSONTYPE_DOUBLE: + lastChar = WriteDoubleValue(os, value); + break; + + case wxJSONTYPE_STRING: + case wxJSONTYPE_CSTRING: + lastChar = WriteStringValue(os, value.AsString()); + break; + + case wxJSONTYPE_MEMORYBUFF: + lastChar = WriteMemoryBuff(os, value.AsMemoryBuff()); + break; + + case wxJSONTYPE_ARRAY: + ++m_level; + os.PutC('['); + // the inline comment for objects and arrays are printed in the open char + if (commentPos == wxJSONVALUE_COMMENT_INLINE) { + commentPos = -1; // we have already written the comment + lastChar = WriteComment(os, value, false); + if (lastChar < 0) { + return lastChar; + } + if (lastChar != '\n') { + lastChar = WriteSeparator(os); + } + } else { // comment is not to be printed inline, so write a LF + lastChar = WriteSeparator(os); + if (lastChar < 0) { + return lastChar; + } + } + + // now iterate through all sub-items and call DoWrite() recursively + size = value.Size(); + for (int i = 0; i < size; i++) { + bool comma = false; + if (i < size - 1) { + comma = true; + } + wxJSONValue v = value.ItemAt(i); + lastChar = DoWrite(os, v, 0, comma); + if (lastChar < 0) { + return lastChar; + } + } + --m_level; + lastChar = WriteIndent(os); + if (lastChar < 0) { return lastChar; - } - - // now write the key if it is not NULL - if ( key ) { - lastChar = WriteKey( os, *key ); - } - if ( lastChar < 0 ) { + } + os.PutC(']'); + break; + + case wxJSONTYPE_OBJECT: + ++m_level; + + os.PutC('{'); + // the inline comment for objects and arrays are printed in the open char + if (commentPos == wxJSONVALUE_COMMENT_INLINE) { + commentPos = -1; // we have already written the comment + lastChar = WriteComment(os, value, false); + if (lastChar < 0) { + return lastChar; + } + if (lastChar != '\n') { + WriteSeparator(os); + } + } else { + lastChar = WriteSeparator(os); + } + + map = value.AsMap(); + size = value.Size(); + count = 0; + for (it = map->begin(); it != map->end(); ++it) { + // get the key and the value + wxString key = it->first; + const wxJSONValue& v = it->second; + bool comma = false; + if (count < size - 1) { + comma = true; + } + lastChar = DoWrite(os, v, &key, comma); + if (lastChar < 0) { + return lastChar; + } + count++; + } + --m_level; + lastChar = WriteIndent(os); + if (lastChar < 0) { return lastChar; - } - - // now write the value - wxJSONInternalMap::const_iterator it; // declare the map object - long int count = 0; - - wxJSONType t = value.GetType(); - switch ( t ) { - case wxJSONTYPE_INVALID : - WriteInvalid( os ); - wxFAIL_MSG( _T("wxJSONWriter::WriteEmpty() cannot be called (not a valid JSON text")); - break; - - case wxJSONTYPE_INT : - case wxJSONTYPE_SHORT : - case wxJSONTYPE_LONG : - case wxJSONTYPE_INT64 : - lastChar = WriteIntValue( os, value ); - break; - - case wxJSONTYPE_UINT : - case wxJSONTYPE_USHORT : - case wxJSONTYPE_ULONG : - case wxJSONTYPE_UINT64 : - lastChar = WriteUIntValue( os, value ); - break; - - case wxJSONTYPE_NULL : - lastChar = WriteNullValue( os ); - break; - case wxJSONTYPE_BOOL : - lastChar = WriteBoolValue( os, value ); - break; - - case wxJSONTYPE_DOUBLE : - lastChar = WriteDoubleValue( os, value ); - break; - - case wxJSONTYPE_STRING : - case wxJSONTYPE_CSTRING : - lastChar = WriteStringValue( os, value.AsString()); - break; - - case wxJSONTYPE_MEMORYBUFF : - lastChar = WriteMemoryBuff( os, value.AsMemoryBuff()); - break; - - case wxJSONTYPE_ARRAY : - ++m_level; - os.PutC( '[' ); - // the inline comment for objects and arrays are printed in the open char - if ( commentPos == wxJSONVALUE_COMMENT_INLINE ) { - commentPos = -1; // we have already written the comment - lastChar = WriteComment( os, value, false ); - if ( lastChar < 0 ) { - return lastChar; - } - if ( lastChar != '\n' ) { - lastChar = WriteSeparator( os ); - } - } - else { // comment is not to be printed inline, so write a LF - lastChar = WriteSeparator( os ); - if ( lastChar < 0 ) { - return lastChar; - } - } - - // now iterate through all sub-items and call DoWrite() recursively - size = value.Size(); - for ( int i = 0; i < size; i++ ) { - bool comma = false; - if ( i < size - 1 ) { - comma = true; - } - wxJSONValue v = value.ItemAt( i ); - lastChar = DoWrite( os, v, 0, comma ); - if ( lastChar < 0 ) { - return lastChar; - } - - } - --m_level; - lastChar = WriteIndent( os ); - if ( lastChar < 0 ) { - return lastChar; - } - os.PutC( ']' ); - break; - - case wxJSONTYPE_OBJECT : - ++m_level; - - os.PutC( '{' ); - // the inline comment for objects and arrays are printed in the open char - if ( commentPos == wxJSONVALUE_COMMENT_INLINE ) { - commentPos = -1; // we have already written the comment - lastChar = WriteComment( os, value, false ); - if ( lastChar < 0 ) { - return lastChar; - } - if ( lastChar != '\n' ) { - WriteSeparator( os ); - } - } - else { - lastChar = WriteSeparator( os ); - } - - map = value.AsMap(); - size = value.Size(); - count = 0; - for ( it = map->begin(); it != map->end(); ++it ) { - // get the key and the value - wxString key = it->first; - const wxJSONValue& v = it->second; - bool comma = false; - if ( count < size - 1 ) { - comma = true; - } - lastChar = DoWrite( os, v, &key, comma ); - if ( lastChar < 0 ) { - return lastChar; - } - count++; - } - --m_level; - lastChar = WriteIndent( os ); - if ( lastChar < 0 ) { - return lastChar; - } - os.PutC( '}' ); - break; - - default : - // a not yet defined wxJSONType: we FAIL - wxFAIL_MSG( _T("wxJSONWriter::DoWrite() undefined wxJSONType type")); - break; - } - - // writes the comma character before the inline comment - if ( comma ) { - os.PutC( ',' ); - } - - if ( commentPos == wxJSONVALUE_COMMENT_INLINE ) { - lastChar = WriteComment( os, value, false ); - if ( lastChar < 0 ) { - return lastChar; - } - } - else if ( commentPos == wxJSONVALUE_COMMENT_AFTER ) { - WriteSeparator( os ); - lastChar = WriteComment( os, value, true ); - if ( lastChar < 0 ) { - return lastChar; - } - } - if ( lastChar != '\n' ) { - lastChar = WriteSeparator( os ); - } - return lastChar; + } + os.PutC('}'); + break; + + default: + // a not yet defined wxJSONType: we FAIL + wxFAIL_MSG(_T("wxJSONWriter::DoWrite() undefined wxJSONType type")); + break; + } + + // writes the comma character before the inline comment + if (comma) { + os.PutC(','); + } + + if (commentPos == wxJSONVALUE_COMMENT_INLINE) { + lastChar = WriteComment(os, value, false); + if (lastChar < 0) { + return lastChar; + } + } else if (commentPos == wxJSONVALUE_COMMENT_AFTER) { + WriteSeparator(os); + lastChar = WriteComment(os, value, true); + if (lastChar < 0) { + return lastChar; + } + } + if (lastChar != '\n') { + lastChar = WriteSeparator(os); + } + return lastChar; } - //! Write the comment strings, if any. -int -wxJSONWriter::WriteComment( wxOutputStream& os, const wxJSONValue& value, bool indent ) -{ - // the function returns the last character written which should be - // a LF char or -1 in case of errors - // if nothing is written, returns ZERO - int lastChar = 0; +int wxJSONWriter::WriteComment(wxOutputStream& os, const wxJSONValue& value, bool indent) { + // the function returns the last character written which should be + // a LF char or -1 in case of errors + // if nothing is written, returns ZERO + int lastChar = 0; - // only write comments if the style include the WRITE_COMMENTS flag - if ( (m_style & wxJSONWRITER_WRITE_COMMENTS ) == 0 ) { - return lastChar; - } + // only write comments if the style include the WRITE_COMMENTS flag + if ((m_style & wxJSONWRITER_WRITE_COMMENTS) == 0) { + return lastChar; + } - const wxArrayString cmt = value.GetCommentArray(); - int cmtSize = cmt.GetCount(); - for ( int i = 0; i < cmtSize; i++ ) { - if ( indent ) { - WriteIndent( os ); - } - else { - os.PutC( '\t' ); - } - WriteString( os, cmt[i]); - lastChar = cmt[i].Last(); - if ( lastChar != '\n' ) { - os.PutC( '\n' ); - lastChar = '\n'; - } + const wxArrayString cmt = value.GetCommentArray(); + int cmtSize = cmt.GetCount(); + for (int i = 0; i < cmtSize; i++) { + if (indent) { + WriteIndent(os); + } else { + os.PutC('\t'); + } + WriteString(os, cmt[i]); + lastChar = cmt[i].Last(); + if (lastChar != '\n') { + os.PutC('\n'); + lastChar = '\n'; } - return lastChar; + } + return lastChar; } //! Writes the indentation to the JSON text. @@ -593,11 +567,9 @@ The function also checks that wxJSONWRITER_STYLED is set and the wxJSONWRITER_NO_INDENTATION is not set. */ -int -wxJSONWriter::WriteIndent( wxOutputStream& os ) -{ - int lastChar = WriteIndent( os, m_level ); - return lastChar; +int wxJSONWriter::WriteIndent(wxOutputStream& os) { + int lastChar = WriteIndent(os, m_level); + return lastChar; } //! Write the specified number of indentation (spaces or tabs) @@ -615,32 +587,28 @@ \endcode */ -int -wxJSONWriter::WriteIndent( wxOutputStream& os, int num ) -{ - int lastChar = 0; - if ( !(m_style & wxJSONWRITER_STYLED) || (m_style & wxJSONWRITER_NO_INDENTATION)) { - return lastChar; - } - - int numChars = m_indent + ( m_step * num ); - char c = ' '; - if ( m_style & wxJSONWRITER_TAB_INDENT ) { - c = '\t'; - numChars = num; - } - - for ( int i = 0; i < numChars; i++ ) { - os.PutC( c ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } +int wxJSONWriter::WriteIndent(wxOutputStream& os, int num) { + int lastChar = 0; + if (!(m_style & wxJSONWRITER_STYLED) || (m_style & wxJSONWRITER_NO_INDENTATION)) { + return lastChar; + } + int numChars = m_indent + (m_step * num); + char c = ' '; + if (m_style & wxJSONWRITER_TAB_INDENT) { + c = '\t'; + numChars = num; + } + + for (int i = 0; i < numChars; i++) { + os.PutC(c); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; } - return c; + } + return c; } - //! Write the provided string to the output object. /*! The function writes the string \c str to the output object that @@ -655,179 +623,170 @@ The function returns ZERO on success or -1 in case of errors. */ -int -wxJSONWriter::WriteStringValue( wxOutputStream& os, const wxString& str ) -{ - // JSON values of type STRING are written by converting the whole string - // to UTF-8 and then copying the UTF-8 buffer to the 'os' stream - // one byte at a time and processing them - os.PutC( '\"' ); // open quotes - - // the buffer that has to be written is either UTF-8 or ANSI c_str() depending - // on the 'm_noUtf8' flag - char* writeBuff = 0; - wxCharBuffer utf8CB = str.ToUTF8(); // the UTF-8 buffer -#if !defined( wxJSON_USE_UNICODE ) - wxCharBuffer ansiCB( str.c_str()); // the ANSI buffer - if ( m_noUtf8 ) { - writeBuff = ansiCB.data(); - } - else { - writeBuff = utf8CB.data(); - } +int wxJSONWriter::WriteStringValue(wxOutputStream& os, const wxString& str) { + // JSON values of type STRING are written by converting the whole string + // to UTF-8 and then copying the UTF-8 buffer to the 'os' stream + // one byte at a time and processing them + os.PutC('\"'); // open quotes + + // the buffer that has to be written is either UTF-8 or ANSI c_str() depending + // on the 'm_noUtf8' flag + char* writeBuff = 0; + wxCharBuffer utf8CB = str.ToUTF8(); // the UTF-8 buffer +#if !defined(wxJSON_USE_UNICODE) + wxCharBuffer ansiCB(str.c_str()); // the ANSI buffer + if (m_noUtf8) { + writeBuff = ansiCB.data(); + } else { + writeBuff = utf8CB.data(); + } #else - writeBuff = utf8CB.data(); + writeBuff = utf8CB.data(); #endif - // NOTE: in ANSI builds UTF-8 conversion may fail (see samples/test5.cpp, - // test 7.3) although I do not know why - if ( writeBuff == 0 ) { - const char* err = ""; - os.Write( err, strlen( err )); - return 0; - } - size_t len = strlen( writeBuff ); - int lastChar = 0; - - // store the column at which the string starts - // splitting strings only happen if the string starts within - // column wxJSONWRITER_LAST_COL (default 50) - // see 'include/wx/json_defs.h' for the defines - int tempCol = m_colNo; - - // now write the UTF8 buffer processing the bytes - size_t i; - for ( i = 0; i < len; i++ ) { - bool shouldEscape = false; - unsigned char ch = *writeBuff; - ++writeBuff; // point to the next byte - - // the escaped character - char escCh = 0; - - // for every character we have to check if it is a character that - // needs to be escaped: note that characters that should be escaped - // may be not if some writer's flags are specified - switch ( ch ) { - case '\"' : // quotes - shouldEscape = true; - escCh = '\"'; - break; - case '\\' : // reverse solidus - shouldEscape = true; - escCh = '\\'; - break; - case '/' : // solidus - shouldEscape = true; - escCh = '/'; - break; - case '\b' : // backspace - shouldEscape = true; - escCh = 'b'; - break; - case '\f' : // formfeed - shouldEscape = true; - escCh = 'f'; - break; - case '\n' : // newline - shouldEscape = true; - escCh = 'n'; - break; - case '\r' : // carriage-return - shouldEscape = true; - escCh = 'r'; - break; - case '\t' : // horizontal tab - shouldEscape = true; - escCh = 't'; - break; - default : - shouldEscape = false; - break; - } // end switch - - - // if the character is a control character that is not identified by a - // lowercase letter, we should escape it - if ( !shouldEscape && ch < 32 ) { - char b[8]; - snprintf( b, 8, "\\u%04X", (int) ch ); - os.Write( b, 6 ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } - } - - // the char is not a control character - else { - // some characters that should be escaped are not escaped - // if the writer was constructed with some flags - if ( shouldEscape && !( m_style & wxJSONWRITER_ESCAPE_SOLIDUS) ) { - if ( ch == '/' ) { - shouldEscape = false; - } - } - if ( shouldEscape && (m_style & wxJSONWRITER_MULTILINE_STRING)) { - if ( ch == '\n' || ch == '\t' ) { - shouldEscape = false; - } - } - - - // now write the character prepended by ESC if it should be escaped - if ( shouldEscape ) { - os.PutC( '\\' ); - os.PutC( escCh ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } - } - else { - // a normal char or a UTF-8 units: write the character - os.PutC( ch ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } - } - } - - // check if SPLIT_STRING flag is set and if the string has to - // be splitted - if ( (m_style & wxJSONWRITER_STYLED) && (m_style & wxJSONWRITER_SPLIT_STRING)) { - // split the string if the character written is LF - if ( ch == '\n' ) { - // close quotes and CR - os.Write( "\"\n", 2 ); - lastChar = WriteIndent( os, m_level + 2 ); // write indentation - os.PutC( '\"' ); // reopen quotes - if ( lastChar < 0 ) { - return lastChar; - } - } - // split the string only if there is at least wxJSONWRITER_MIN_LENGTH - // character to write and the character written is a punctuation or space - // BUG: the following does not work because the columns are not counted - else if ( (m_colNo >= wxJSONWRITER_SPLIT_COL) - && (tempCol <= wxJSONWRITER_LAST_COL )) { - if ( IsSpace( ch ) || IsPunctuation( ch )) { - if ( len - i > wxJSONWRITER_MIN_LENGTH ) { - // close quotes and CR - os.Write( "\"\n", 2 ); - lastChar = WriteIndent( os, m_level + 2 ); // write indentation - os.PutC( '\"' ); // reopen quotes - if ( lastChar < 0 ) { - return lastChar; - } - } - } - } - } - } // end for - os.PutC( '\"' ); // close quotes + // NOTE: in ANSI builds UTF-8 conversion may fail (see samples/test5.cpp, + // test 7.3) although I do not know why + if (writeBuff == 0) { + const char* err = ""; + os.Write(err, strlen(err)); return 0; -} + } + size_t len = strlen(writeBuff); + int lastChar = 0; + + // store the column at which the string starts + // splitting strings only happen if the string starts within + // column wxJSONWRITER_LAST_COL (default 50) + // see 'include/wx/json_defs.h' for the defines + int tempCol = m_colNo; + + // now write the UTF8 buffer processing the bytes + size_t i; + for (i = 0; i < len; i++) { + bool shouldEscape = false; + unsigned char ch = *writeBuff; + ++writeBuff; // point to the next byte + + // the escaped character + char escCh = 0; + + // for every character we have to check if it is a character that + // needs to be escaped: note that characters that should be escaped + // may be not if some writer's flags are specified + switch (ch) { + case '\"': // quotes + shouldEscape = true; + escCh = '\"'; + break; + case '\\': // reverse solidus + shouldEscape = true; + escCh = '\\'; + break; + case '/': // solidus + shouldEscape = true; + escCh = '/'; + break; + case '\b': // backspace + shouldEscape = true; + escCh = 'b'; + break; + case '\f': // formfeed + shouldEscape = true; + escCh = 'f'; + break; + case '\n': // newline + shouldEscape = true; + escCh = 'n'; + break; + case '\r': // carriage-return + shouldEscape = true; + escCh = 'r'; + break; + case '\t': // horizontal tab + shouldEscape = true; + escCh = 't'; + break; + default: + shouldEscape = false; + break; + } // end switch + // if the character is a control character that is not identified by a + // lowercase letter, we should escape it + if (!shouldEscape && ch < 32) { + char b[8]; + snprintf(b, 8, "\\u%04X", (int)ch); + os.Write(b, 6); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } + } + // the char is not a control character + else { + // some characters that should be escaped are not escaped + // if the writer was constructed with some flags + if (shouldEscape && !(m_style & wxJSONWRITER_ESCAPE_SOLIDUS)) { + if (ch == '/') { + shouldEscape = false; + } + } + if (shouldEscape && (m_style & wxJSONWRITER_MULTILINE_STRING)) { + if (ch == '\n' || ch == '\t') { + shouldEscape = false; + } + } + + // now write the character prepended by ESC if it should be escaped + if (shouldEscape) { + os.PutC('\\'); + os.PutC(escCh); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } + } else { + // a normal char or a UTF-8 units: write the character + os.PutC(ch); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } + } + } + + // check if SPLIT_STRING flag is set and if the string has to + // be splitted + if ((m_style & wxJSONWRITER_STYLED) && (m_style & wxJSONWRITER_SPLIT_STRING)) { + // split the string if the character written is LF + if (ch == '\n') { + // close quotes and CR + os.Write("\"\n", 2); + lastChar = WriteIndent(os, m_level + 2); // write indentation + os.PutC('\"'); // reopen quotes + if (lastChar < 0) { + return lastChar; + } + } + // split the string only if there is at least wxJSONWRITER_MIN_LENGTH + // character to write and the character written is a punctuation or space + // BUG: the following does not work because the columns are not counted + else if ((m_colNo >= wxJSONWRITER_SPLIT_COL) && (tempCol <= wxJSONWRITER_LAST_COL)) { + if (IsSpace(ch) || IsPunctuation(ch)) { + if (len - i > wxJSONWRITER_MIN_LENGTH) { + // close quotes and CR + os.Write("\"\n", 2); + lastChar = WriteIndent(os, m_level + 2); // write indentation + os.PutC('\"'); // reopen quotes + if (lastChar < 0) { + return lastChar; + } + } + } + } + } + } // end for + os.PutC('\"'); // close quotes + return 0; +} //! Write a generic string /*! @@ -836,64 +795,56 @@ to the output text. The function converts the string \c str to UTF-8 and writes the buffer.. */ -int -wxJSONWriter::WriteString( wxOutputStream& os, const wxString& str ) -{ - wxLogTrace( writerTraceMask, _T("(%s) string to write=%s"), - __PRETTY_FUNCTION__, str.c_str() ); - int lastChar = 0; - char* writeBuff = 0; - - // the buffer that has to be written is either UTF-8 or ANSI c_str() depending - // on the 'm_noUtf8' flag - wxCharBuffer utf8CB = str.ToUTF8(); // the UTF-8 buffer -#if !defined( wxJSON_USE_UNICODE ) - wxCharBuffer ansiCB( str.c_str()); // the ANSI buffer - - if ( m_noUtf8 ) { - writeBuff = ansiCB.data(); - } - else { - writeBuff = utf8CB.data(); - } -#else +int wxJSONWriter::WriteString(wxOutputStream& os, const wxString& str) { + wxLogTrace(writerTraceMask, _T("(%s) string to write=%s"), __PRETTY_FUNCTION__, str.c_str()); + int lastChar = 0; + char* writeBuff = 0; + + // the buffer that has to be written is either UTF-8 or ANSI c_str() depending + // on the 'm_noUtf8' flag + wxCharBuffer utf8CB = str.ToUTF8(); // the UTF-8 buffer +#if !defined(wxJSON_USE_UNICODE) + wxCharBuffer ansiCB(str.c_str()); // the ANSI buffer + + if (m_noUtf8) { + writeBuff = ansiCB.data(); + } else { writeBuff = utf8CB.data(); + } +#else + writeBuff = utf8CB.data(); #endif - // NOTE: in ANSI builds UTF-8 conversion may fail (see samples/test5.cpp, - // test 7.3) although I do not know why - if ( writeBuff == 0 ) { - const char* err = ""; - os.Write( err, strlen( err )); - return 0; - } - size_t len = strlen( writeBuff ); + // NOTE: in ANSI builds UTF-8 conversion may fail (see samples/test5.cpp, + // test 7.3) although I do not know why + if (writeBuff == 0) { + const char* err = ""; + os.Write(err, strlen(err)); + return 0; + } + size_t len = strlen(writeBuff); - os.Write( writeBuff, len ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } + os.Write(writeBuff, len); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } - wxLogTrace( writerTraceMask, _T("(%s) result=%d"), - __PRETTY_FUNCTION__, lastChar ); - return lastChar; + wxLogTrace(writerTraceMask, _T("(%s) result=%d"), __PRETTY_FUNCTION__, lastChar); + return lastChar; } //! Write the NULL JSON value to the output stream. /*! The function writes the \b null literal string to the output stream. */ -int -wxJSONWriter::WriteNullValue( wxOutputStream& os ) -{ - os.Write( "null", 4 ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } - return 0; +int wxJSONWriter::WriteNullValue(wxOutputStream& os) { + os.Write("null", 4); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } + return 0; } - //! Writes a value of type INT. /*! This function is called for every value objects of INT type. @@ -901,44 +852,40 @@ representation of the integer and simply copy it to the output stream. Returns -1 on stream errors or ZERO if no errors. */ -int -wxJSONWriter::WriteIntValue( wxOutputStream& os, const wxJSONValue& value ) -{ - int r = 0; - char buffer[32]; // need to store 64-bits integers (max 20 digits) - size_t len; - - wxJSONRefData* data = value.GetRefData(); - wxASSERT( data ); - -#if defined( wxJSON_64BIT_INT ) - #if wxCHECK_VERSION(2, 9, 0 ) || !defined( wxJSON_USE_UNICODE ) - // this is fine for wxW 2.9 and for wxW 2.8 ANSI - snprintf( buffer, 32, "%" wxLongLongFmtSpec "d", - data->m_value.m_valInt64 ); - #else - // this is for wxW 2.8 Unicode: in order to use the cross-platform - // format specifier, we use the wxString's sprintf() function and then - // convert to UTF-8 before writing to the stream - wxString s; - s.Printf( _T("%") wxLongLongFmtSpec _T("d"), - data->m_value.m_valInt64 ); - wxCharBuffer cb = s.ToUTF8(); - const char* cbData = cb.data(); - len = strlen( cbData ); - wxASSERT( len < 32 ); - memcpy( buffer, cbData, len ); - buffer[len] = 0; - #endif +int wxJSONWriter::WriteIntValue(wxOutputStream& os, const wxJSONValue& value) { + int r = 0; + char buffer[32]; // need to store 64-bits integers (max 20 digits) + size_t len; + + wxJSONRefData* data = value.GetRefData(); + wxASSERT(data); + +#if defined(wxJSON_64BIT_INT) +#if wxCHECK_VERSION(2, 9, 0) || !defined(wxJSON_USE_UNICODE) + // this is fine for wxW 2.9 and for wxW 2.8 ANSI + snprintf(buffer, 32, "%" wxLongLongFmtSpec "d", data->m_value.m_valInt64); #else - snprintf( buffer, 32, "%ld", data->m_value.m_valLong ); + // this is for wxW 2.8 Unicode: in order to use the cross-platform + // format specifier, we use the wxString's sprintf() function and then + // convert to UTF-8 before writing to the stream + wxString s; + s.Printf(_T("%") wxLongLongFmtSpec _T("d"), data->m_value.m_valInt64); + wxCharBuffer cb = s.ToUTF8(); + const char* cbData = cb.data(); + len = strlen(cbData); + wxASSERT(len < 32); + memcpy(buffer, cbData, len); + buffer[len] = 0; #endif - len = strlen( buffer ); - os.Write( buffer, len ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - r = -1; - } - return r; +#else + snprintf(buffer, 32, "%ld", data->m_value.m_valLong); +#endif + len = strlen(buffer); + os.Write(buffer, len); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + r = -1; + } + return r; } //! Writes a value of type UNSIGNED INT. @@ -950,49 +897,46 @@ flag is set in the \c m_flags data member. Returns -1 on stream errors or ZERO if no errors. */ -int -wxJSONWriter::WriteUIntValue( wxOutputStream& os, const wxJSONValue& value ) -{ - int r = 0; size_t len; - - // prepend a plus sign if the style specifies that unsigned integers - // have to be recognized by the JSON reader - if ( m_style & wxJSONWRITER_RECOGNIZE_UNSIGNED ) { - os.PutC( '+' ); - } - - char buffer[32]; // need to store 64-bits integers (max 20 digits) - wxJSONRefData* data = value.GetRefData(); - wxASSERT( data ); - -#if defined( wxJSON_64BIT_INT ) - #if wxCHECK_VERSION(2, 9, 0 ) || !defined( wxJSON_USE_UNICODE ) - // this is fine for wxW 2.9 and for wxW 2.8 ANSI - snprintf( buffer, 32, "%" wxLongLongFmtSpec "u", - data->m_value.m_valUInt64 ); - #else - // this is for wxW 2.8 Unicode: in order to use the cross-platform - // format specifier, we use the wxString's sprintf() function and then - // convert to UTF-8 before writing to the stream - wxString s; - s.Printf( _T("%") wxLongLongFmtSpec _T("u"), - data->m_value.m_valInt64 ); - wxCharBuffer cb = s.ToUTF8(); - const char* cbData = cb.data(); - len = strlen( cbData ); - wxASSERT( len < 32 ); - memcpy( buffer, cbData, len ); - buffer[len] = 0; - #endif +int wxJSONWriter::WriteUIntValue(wxOutputStream& os, const wxJSONValue& value) { + int r = 0; + size_t len; + + // prepend a plus sign if the style specifies that unsigned integers + // have to be recognized by the JSON reader + if (m_style & wxJSONWRITER_RECOGNIZE_UNSIGNED) { + os.PutC('+'); + } + + char buffer[32]; // need to store 64-bits integers (max 20 digits) + wxJSONRefData* data = value.GetRefData(); + wxASSERT(data); + +#if defined(wxJSON_64BIT_INT) +#if wxCHECK_VERSION(2, 9, 0) || !defined(wxJSON_USE_UNICODE) + // this is fine for wxW 2.9 and for wxW 2.8 ANSI + snprintf(buffer, 32, "%" wxLongLongFmtSpec "u", data->m_value.m_valUInt64); #else - snprintf( buffer, 32, "%lu", data->m_value.m_valULong ); + // this is for wxW 2.8 Unicode: in order to use the cross-platform + // format specifier, we use the wxString's sprintf() function and then + // convert to UTF-8 before writing to the stream + wxString s; + s.Printf(_T("%") wxLongLongFmtSpec _T("u"), data->m_value.m_valInt64); + wxCharBuffer cb = s.ToUTF8(); + const char* cbData = cb.data(); + len = strlen(cbData); + wxASSERT(len < 32); + memcpy(buffer, cbData, len); + buffer[len] = 0; #endif - len = strlen( buffer ); - os.Write( buffer, len ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - r = -1; - } - return r; +#else + snprintf(buffer, 32, "%lu", data->m_value.m_valULong); +#endif + len = strlen(buffer); + os.Write(buffer, len); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + r = -1; + } + return r; } //! Writes a value of type DOUBLE. @@ -1007,21 +951,19 @@ conversion. See SetDoubleFmtString for details. */ -int -wxJSONWriter::WriteDoubleValue( wxOutputStream& os, const wxJSONValue& value ) -{ - int r = 0; +int wxJSONWriter::WriteDoubleValue(wxOutputStream& os, const wxJSONValue& value) { + int r = 0; - char buffer[32]; - wxJSONRefData* data = value.GetRefData(); - wxASSERT( data ); - snprintf( buffer, 32, m_fmt, data->m_value.m_valDouble ); - size_t len = strlen( buffer ); - os.Write( buffer, len ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - r = -1; - } - return r; + char buffer[32]; + wxJSONRefData* data = value.GetRefData(); + wxASSERT(data); + snprintf(buffer, 32, m_fmt, data->m_value.m_valDouble); + size_t len = strlen(buffer); + os.Write(buffer, len); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + r = -1; + } + return r; } //! Writes a value of type BOOL. @@ -1031,41 +973,34 @@ value in \c value. Returns -1 on stream errors or ZERO if no errors. */ -int -wxJSONWriter::WriteBoolValue( wxOutputStream& os, const wxJSONValue& value ) -{ - int r = 0; - const char* f = "false"; const char* t = "true"; - wxJSONRefData* data = value.GetRefData(); - wxASSERT( data ); - - const char* c = f; // defaults to FALSE - - if ( data->m_value.m_valBool ) { - c = t; - } - - size_t len = strlen( c ); - os.Write( c, len ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - r = -1; - } - return r; +int wxJSONWriter::WriteBoolValue(wxOutputStream& os, const wxJSONValue& value) { + int r = 0; + const char* f = "false"; + const char* t = "true"; + wxJSONRefData* data = value.GetRefData(); + wxASSERT(data); + + const char* c = f; // defaults to FALSE + + if (data->m_value.m_valBool) { + c = t; + } + + size_t len = strlen(c); + os.Write(c, len); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + r = -1; + } + return r; } - - - //! Write the key of a key/value element to the output stream. -int -wxJSONWriter::WriteKey( wxOutputStream& os, const wxString& key ) -{ - wxLogTrace( writerTraceMask, _T("(%s) key write=%s"), - __PRETTY_FUNCTION__, key.c_str() ); +int wxJSONWriter::WriteKey(wxOutputStream& os, const wxString& key) { + wxLogTrace(writerTraceMask, _T("(%s) key write=%s"), __PRETTY_FUNCTION__, key.c_str()); - int lastChar = WriteStringValue( os, key ); - os.Write( " : ", 3 ); - return lastChar; + int lastChar = WriteStringValue(os, key); + os.Write(" : ", 3); + return lastChar; } //! Write the invalid JSON value to the output stream. @@ -1084,13 +1019,11 @@ \endcode In debug mode, the function always fails with an wxFAIL_MSG failure. */ -int -wxJSONWriter::WriteInvalid( wxOutputStream& os ) -{ - wxFAIL_MSG( _T("wxJSONWriter::WriteInvalid() cannot be called (not a valid JSON text")); - int lastChar = 0; - os.Write( "", 9 ); - return lastChar; +int wxJSONWriter::WriteInvalid(wxOutputStream& os) { + wxFAIL_MSG(_T("wxJSONWriter::WriteInvalid() cannot be called (not a valid JSON text")); + int lastChar = 0; + os.Write("", 9); + return lastChar; } //! Write a JSON value of type \e memory \e buffer @@ -1109,98 +1042,93 @@ \endcode */ -int -wxJSONWriter::WriteMemoryBuff( wxOutputStream& os, const wxMemoryBuffer& buff ) -{ -#define MAX_BYTES_PER_ROW 20 - char str[16]; - - // if STYLED and SPLIT_STRING flags are set, the function writes 20 bytes on every row - // the following is the counter of bytes written. - // the string is splitted only for the special meory buffer type, not for array of INTs - int bytesWritten = 0; - bool splitString = false; - if ( (m_style & wxJSONWRITER_STYLED) && - (m_style & wxJSONWRITER_SPLIT_STRING)) { - splitString = true; - } - - size_t buffLen = buff.GetDataLen(); - unsigned char* ptr = (unsigned char*) buff.GetData(); - wxASSERT( ptr ); - char openChar = '\''; - char closeChar = '\''; - bool asArray = false; - - if ( (m_style & wxJSONWRITER_MEMORYBUFF ) == 0 ) { - // if the special flag is not specified, write as an array of INTs - openChar = '['; - closeChar = ']'; - asArray = true; - } - // write the open character - os.PutC( openChar ); - - for ( size_t i = 0; i < buffLen; i++ ) { - unsigned char c = *ptr; - ++ptr; - - if ( asArray ) { - snprintf( str, 14, "%d", c ); - size_t len = strlen( str ); - wxASSERT( len <= 3 ); - wxASSERT( len >= 1 ); - str[len] = ','; - // do not write the comma char for the last element - if ( i < buffLen - 1 ) { - ++len; - } - os.Write( str, len ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } - } - else { - // now convert the byte in two hex digits - char c1 = c / 16; - char c2 = c % 16; - c1 += '0'; - c2 += '0'; - if ( c1 > '9' ) { - c1 += 7; - } - if ( c2 > '9' ) { - c2 += 7; - } - os.PutC( c1 ); - os.PutC( c2 ); - if ( os.GetLastError() != wxSTREAM_NO_ERROR ) { - return -1; - } - if ( splitString ) { - ++bytesWritten; - } - - if (( bytesWritten >= MAX_BYTES_PER_ROW ) && ((buffLen - i ) >= 5 )) { - // split the string if we wrote 20 bytes, but only is we have to - // write at least 5 bytes - os.Write( "\'\n", 2 ); - int lastChar = WriteIndent( os, m_level + 2 ); // write indentation - os.PutC( '\'' ); // reopen quotes - if ( lastChar < 0 ) { - return lastChar; - } - bytesWritten = 0; - } - } - } - - // write the close character - os.PutC( closeChar ); - return closeChar; +int wxJSONWriter::WriteMemoryBuff(wxOutputStream& os, const wxMemoryBuffer& buff) { +#define MAX_BYTES_PER_ROW 20 + char str[16]; + + // if STYLED and SPLIT_STRING flags are set, the function writes 20 bytes on every row + // the following is the counter of bytes written. + // the string is splitted only for the special meory buffer type, not for array of INTs + int bytesWritten = 0; + bool splitString = false; + if ((m_style & wxJSONWRITER_STYLED) && (m_style & wxJSONWRITER_SPLIT_STRING)) { + splitString = true; + } + + size_t buffLen = buff.GetDataLen(); + unsigned char* ptr = (unsigned char*)buff.GetData(); + wxASSERT(ptr); + char openChar = '\''; + char closeChar = '\''; + bool asArray = false; + + if ((m_style & wxJSONWRITER_MEMORYBUFF) == 0) { + // if the special flag is not specified, write as an array of INTs + openChar = '['; + closeChar = ']'; + asArray = true; + } + // write the open character + os.PutC(openChar); + + for (size_t i = 0; i < buffLen; i++) { + unsigned char c = *ptr; + ++ptr; + + if (asArray) { + snprintf(str, 14, "%d", c); + size_t len = strlen(str); + wxASSERT(len <= 3); + wxASSERT(len >= 1); + str[len] = ','; + // do not write the comma char for the last element + if (i < buffLen - 1) { + ++len; + } + os.Write(str, len); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } + } else { + // now convert the byte in two hex digits + char c1 = c / 16; + char c2 = c % 16; + c1 += '0'; + c2 += '0'; + if (c1 > '9') { + c1 += 7; + } + if (c2 > '9') { + c2 += 7; + } + os.PutC(c1); + os.PutC(c2); + if (os.GetLastError() != wxSTREAM_NO_ERROR) { + return -1; + } + if (splitString) { + ++bytesWritten; + } + + if ((bytesWritten >= MAX_BYTES_PER_ROW) && ((buffLen - i) >= 5)) { + // split the string if we wrote 20 bytes, but only is we have to + // write at least 5 bytes + os.Write("\'\n", 2); + int lastChar = WriteIndent(os, m_level + 2); // write indentation + os.PutC('\''); // reopen quotes + if (lastChar < 0) { + return lastChar; + } + bytesWritten = 0; + } + } + } + + // write the close character + os.PutC(closeChar); + return closeChar; } - //! Writes the separator between values /*! The function is called when a value has been written to the JSON @@ -1212,59 +1140,50 @@ of errors. Note that LF is returned even if the character is not actually written. */ -int -wxJSONWriter::WriteSeparator( wxOutputStream& os ) -{ - int lastChar = '\n'; - if ( (m_style & wxJSONWRITER_STYLED) && !(m_style & wxJSONWRITER_NO_LINEFEEDS )) { - os.PutC( '\n' ); - } - return lastChar; +int wxJSONWriter::WriteSeparator(wxOutputStream& os) { + int lastChar = '\n'; + if ((m_style & wxJSONWRITER_STYLED) && !(m_style & wxJSONWRITER_NO_LINEFEEDS)) { + os.PutC('\n'); + } + return lastChar; } //! Returns TRUE if the character is a space character. -bool -wxJSONWriter::IsSpace( wxChar ch ) -{ - bool r = false; - switch ( ch ) { - case ' ' : - case '\t' : - case '\r' : - case '\f' : - case '\n' : - r = true; - break; - default : - break; - } - return r; +bool wxJSONWriter::IsSpace(wxChar ch) { + bool r = false; + switch (ch) { + case ' ': + case '\t': + case '\r': + case '\f': + case '\n': + r = true; + break; + default: + break; + } + return r; } //! Returns TRUE if the character if a puctuation character -bool -wxJSONWriter::IsPunctuation( wxChar ch ) -{ - bool r = false; - switch ( ch ) { - case '.' : - case ',' : - case ';' : - case ':' : - case '!' : - case '?' : - r = true; - break; - default : - break; - } - return r; +bool wxJSONWriter::IsPunctuation(wxChar ch) { + bool r = false; + switch (ch) { + case '.': + case ',': + case ';': + case ':': + case '!': + case '?': + r = true; + break; + default: + break; + } + return r; } - /* { } */ - - Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_context_menu.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_context_menu.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_hidden.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_hidden.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_info.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_info.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_info_type.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_info_type.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_menu_standby.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_menu_standby.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_not_detected.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_not_detected.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_ppi_docked.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_ppi_docked.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_ppi_no_radar.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_ppi_no_radar.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_ppi.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_ppi.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_ppi_standby.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_ppi_standby.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_standby.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_standby.png differ Binary files /tmp/tmpzEQ_aw/dJDuVE_RAn/opencpn-plugin-br24radar-2.1.0/wiki/radar_transmit.png and /tmp/tmpzEQ_aw/fiL8z2F9au/opencpn-plugin-br24radar-3.0.1/wiki/radar_transmit.png differ