1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-04-19 19:59:11 +02:00

Compare commits

..

58 Commits

Author SHA1 Message Date
372f2966bb Properly print the tag name on big-edian systems 2025-04-17 20:58:27 +02:00
1aa0fa4be4 Fixed Qt5 build 2025-04-17 20:37:30 +02:00
f4e19d0917 Multiple S-57 files parse optimizations 2025-04-17 20:25:12 +02:00
91376fd609 Make sure all fields have their definitions 2025-04-17 08:43:23 +02:00
92b2fbaf04 Fixed ISO8211 parser error handling 2025-04-17 07:42:45 +02:00
a21096a0a9 Added Vakaros VKX files support info 2025-04-16 08:59:31 +02:00
920cf03d1b
Translated using Weblate (German)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/de/
2025-04-15 07:18:18 +02:00
72155beb6b
Translated using Weblate (Czech)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/cs/
2025-04-15 07:16:48 +02:00
99 efi
88acc78e1c
Translated using Weblate (Hungarian)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/hu/
2025-04-14 19:03:04 +02:00
Babos Gábor
1583794329
Translated using Weblate (Hungarian)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/hu/
2025-04-14 19:03:03 +02:00
Максим Горпиніч
beb2f6d70c
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/uk/
2025-04-14 19:03:02 +02:00
Åke Engelbrektson
afd3a09f50
Translated using Weblate (Swedish)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/sv/
2025-04-14 19:03:02 +02:00
Cloud Esp
2a247a2a38
Translated using Weblate (French)
Currently translated at 100.0% (492 of 492 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/fr/
2025-04-14 19:03:01 +02:00
44af6eea4d Vakaros VKX MacOS desktop integration 2025-04-14 09:31:10 +02:00
40c396a8c8 Localization update 2025-04-13 18:13:55 +02:00
5018aecb42 Added Vakaros VKX support info 2025-04-13 18:12:16 +02:00
a2d56236b6 Version++ 2025-04-13 18:10:35 +02:00
b20a6cd479 Vakaros VKX Windows desktop integration 2025-04-13 17:55:39 +02:00
7bbf6fba97 Vakaros VKX Linux desktop integration 2025-04-13 17:41:33 +02:00
d2ac9f2ee6 Added support for Vakaros VKX files 2025-04-12 13:16:36 +02:00
ERYpTION
fa344e94e4
Translated using Weblate (Danish)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/da/
2025-04-08 09:01:40 +02:00
raf
dd53293229
Translated using Weblate (Catalan)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/ca/
2025-03-25 12:29:40 +01:00
355f451e5c Add "office" as used in OpenAndroMaps as an equivalent to Mapsforge's "civic" 2025-03-21 22:06:50 +01:00
0b61fb0470 Use jom for Windows CI builds 2025-03-21 06:55:21 +01:00
af18c98a03 Update the nuber of cores acording to the latest GitHub runners state 2025-03-21 06:27:33 +01:00
e9a8112196 Fixed error handling 2025-03-21 05:56:17 +01:00
Nikolay Korotkiy
bca335d4b2
Translated using Weblate (Esperanto)
Currently translated at 91.2% (448 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/eo/
2025-03-20 22:55:09 +01:00
Nikolay Korotkiy
f3b1fa8eb7
Translated using Weblate (Russian)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/ru/
2025-03-20 22:55:09 +01:00
Nikolay Korotkiy
fac377e746
Translated using Weblate (Finnish)
Currently translated at 96.7% (475 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/fi/
2025-03-20 22:55:09 +01:00
7184c691d3 Fixed possible null pointer dereferences 2025-03-19 08:11:49 +01:00
381ab1516d Do not draw special type buildings multiple times.
Use the new "exclude" rule to improve performance by not drawing
the civic/church buildings multipe times.
2025-03-19 01:38:04 +01:00
cf84680bc6 Revert "Use jom in Windows CI builds"
This reverts commit 38abffda178b7695b1d2db7fff815a4f6411ef7a.
2025-03-17 22:47:44 +01:00
Hosted Weblate
74e322860f
Merge branch 'origin/master' into Weblate. 2025-03-17 22:33:21 +01:00
38abffda17 Use jom in Windows CI builds 2025-03-17 22:33:12 +01:00
99 efi
304d4f770e
Translated using Weblate (Hungarian)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/hu/
2025-03-17 16:17:37 +01:00
Максим Горпиніч
739564955e
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/uk/
2025-03-17 15:17:05 +01:00
Cloud Esp
4e45cf6d40
Translated using Weblate (French)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/fr/
2025-03-17 15:17:05 +01:00
Hosted Weblate
644e14947d
Merge branch 'origin/master' into Weblate. 2025-03-17 09:00:35 +01:00
c171e8088c
Added Velocitek VTK support info 2025-03-17 09:00:32 +01:00
Hosted Weblate
431357b08d
Merge branch 'origin/master' into Weblate. 2025-03-17 08:41:50 +01:00
af03a85fdb Added missing VTK icns icon 2025-03-17 08:41:20 +01:00
Åke Engelbrektson
003bdd8814
Translated using Weblate (Swedish)
Currently translated at 100.0% (491 of 491 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/sv/
2025-03-17 08:01:21 +01:00
91c0e2a83d German translation update 2025-03-17 07:43:05 +01:00
496a474bd2 Czech translation update 2025-03-17 07:42:35 +01:00
f1b7d57027 Lcalization update 2025-03-17 07:40:10 +01:00
2e4e702640 Fixed speed values conversion 2025-03-16 22:33:26 +01:00
9d3cdbbd42 Velocitek VTK MacOS desktop integration 2025-03-16 22:15:37 +01:00
0e329f4b22 Added Velocitek VTK Windows desktop integration 2025-03-16 17:53:00 +01:00
2041cc7ff5 Added Velocitek VTK files Linux desktop integration 2025-03-16 17:37:37 +01:00
8169015f70 Added missing trunk roads names 2025-03-16 17:32:36 +01:00
28f55b7e0d Added support for Velocitek VTK files 2025-03-16 17:17:09 +01:00
912a00c80e Cosmetics 2025-03-16 17:15:33 +01:00
8de6bbe4fb Fixed maximal speed info
Display the maximum of all primary graphs, not the maximum of all graphs.
2025-03-16 17:14:14 +01:00
f34d6b0540 Fixed wrong oneway icon filename 2025-03-16 17:11:13 +01:00
Максим Горпиніч
2eb527f2f3
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (490 of 490 strings)

Translation: GPXSee/Translations
Translate-URL: https://hosted.weblate.org/projects/gpxsee/translations/uk/
2025-03-11 20:01:29 +01:00
94785ee2ec Added support for the "exclude" theme rules added in recent Mapsforge versions 2025-03-11 07:34:31 +01:00
a2f1ef7572 Silence MSVC C4018 warnings 2025-03-08 18:06:20 +01:00
7731cfaa4f Version++ 2025-03-08 18:05:44 +01:00
55 changed files with 1523 additions and 748 deletions

View File

@ -1,4 +1,4 @@
version: 13.37.{build}
version: 13.39.{build}
configuration:
- Release
@ -8,6 +8,7 @@ image:
environment:
NSISDIR: C:\Program Files (x86)\NSIS
JOMDIR: C:\Qt\Tools\QtCreator\bin\jom
matrix:
- QTDIR: C:\Qt\5.15\msvc2019_64
OPENSSLDIR: C:\OpenSSL-v111-Win64\bin
@ -17,14 +18,14 @@ environment:
install:
- cmd: |-
set PATH=%QTDIR%\bin;%NSISDIR%;%PATH%
set PATH=%QTDIR%\bin;%NSISDIR%;%JOMDIR%;%PATH%
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
build_script:
- cmd: |-
lrelease gpxsee.pro
qmake gpxsee.pro
nmake release
jom release
md installer
copy release\GPXSee.exe installer

View File

@ -43,7 +43,7 @@ jobs:
- name: Configure build
run: qmake gpxsee.pro OPENSSL_PATH=android_openssl
- name: Build project
run: make -j2 apk
run: make -j4 apk
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:

View File

@ -24,4 +24,4 @@ jobs:
- name: Configure build
run: qmake CONFIG+=${{ matrix.config }} gpxsee.pro
- name: Build project
run: make -j2
run: make -j4

View File

@ -5,7 +5,8 @@ GPS log file formats.
## Features
* Opens GPX, TCX, FIT, KML, NMEA, IGC, CUP, SIGMA SLF, Suunto SML, LOC, GeoJSON,
OziExplorer (PLT, RTE, WPT), Garmin GPI&CSV, TomTom OV2&ITN, ONmove OMD/GHP,
TwoNav (TRK, RTE, WPT), GPSDump WPT, 70mai GPS logs and geotagged JPEG files.
TwoNav (TRK, RTE, WPT), GPSDump WPT, Velocitek VTK, Vakaros VKX, 70mai GPS logs
and geotagged JPEG files.
* Opens geo URIs (RFC 5870).
* User-definable online maps (OpenStreetMap/Google tiles, WMTS, WMS, TMS,
QuadTiles).

View File

@ -214,10 +214,11 @@
</rule>
<!-- Buildings -->
<rule e="way" k="building" v="*">
<rule e="way" k="building" v="-|civic|office|cathedral|church|basilica">
<area fill="#dbd0b6" stroke="#cdccc4" stroke-width="0.1"/>
</rule>
<rule e="way" k="building" v="civic">
<rule e="way" k="building" v="civic|office">
<area fill="#cfc4b3" stroke="#cdccc4" stroke-width="0.1"/>
<rule e="way" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" priority="-10"/>
@ -403,7 +404,7 @@
<rule e="way" k="*" v="*" zoom-min="14">
<pathText fill="#000000" font-size="10" k="name" priority="-5" stroke="#FFFFFF" stroke-width="2"/>
<rule e="way" k="oneway" v="yes|true|1" zoom-min="16">
<lineSymbol priority="-50" src=":/symbols/arrow.svg" symbol-width="16" symbol-height="8"/>
<lineSymbol priority="-50" src=":/symbols/oneway.svg" symbol-width="16" symbol-height="8"/>
</rule>
</rule>
</rule>
@ -428,6 +429,12 @@
<line stroke="#f7d9a6" stroke-width="1" stroke-linecap="butt"/>
</rule>
</rule>
<rule e="way" k="*" v="*" zoom-min="14">
<pathText fill="#000000" font-size="10" k="name" priority="-3" stroke="#FFFFFF" stroke-width="2"/>
<rule e="way" k="oneway" v="yes|true|1" zoom-min="16">
<lineSymbol priority="-50" src=":/symbols/oneway.svg" symbol-width="16" symbol-height="8"/>
</rule>
</rule>
</rule>
<rule e="way" k="highway" v="motorway|motorway_link">
<rule e="way" k="tunnel" v="~|false|no">

View File

@ -3,7 +3,7 @@ unix:!macx:!android {
} else {
TARGET = GPXSee
}
VERSION = 13.37
VERSION = 13.39
QT += core \
gui \
@ -118,6 +118,8 @@ HEADERS += src/common/config.h \
src/data/style.h \
src/data/twonavparser.h \
src/data/txtparser.h \
src/data/vkxparser.h \
src/data/vtkparser.h \
src/map/ENC/data.h \
src/map/IMG/light.h \
src/map/downloader.h \
@ -346,6 +348,8 @@ SOURCES += src/main.cpp \
src/GUI/projectioncombobox.cpp \
src/GUI/passwordedit.cpp \
src/data/txtparser.cpp \
src/data/vkxparser.cpp \
src/data/vtkparser.cpp \
src/map/downloader.cpp \
src/map/demloader.cpp \
src/map/ENC/atlasdata.cpp \
@ -561,7 +565,9 @@ win32 {
icons/formats/trk.ico \
icons/formats/gemf.ico \
icons/formats/000.ico \
icons/formats/031.ico
icons/formats/031.ico \
icons/formats/vtk.ico \
icons/formats/vkx.ico
DEFINES += _USE_MATH_DEFINES \
NOGDI
}

View File

@ -32,3 +32,5 @@ trk:#cccccc
gemf:#147085
000:#000000
031:#000000
vtk:#632433
vkx:#00ccff

BIN
icons/formats/vkx.icns Normal file

Binary file not shown.

BIN
icons/formats/vkx.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
icons/formats/vtk.icns Normal file

Binary file not shown.

BIN
icons/formats/vtk.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Fitxers compatibles</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>Fitxers CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>Fitxers CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>Fitxers FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>Fitxers GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>Fitxers GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>Fitxers GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>Fitxers IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>Fitxers ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>Imatges JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>Fitxers KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>Fitxers LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>Fitxers NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>Fitxer ONmove</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>Fitxers OV2</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>Fitxers OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>Fitxers SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>Fitxers SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>Fitxers TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>Fitxers de registre GPS de 70mai</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>Fitxers VTK</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>Fitxers TwoNav</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>Ffitxers d&apos;abocament de GPS</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Tots els fitxers</translation>
</message>
@ -956,7 +966,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="1126"/>
<source>Error loading geo URI:</source>
<translation type="unfinished"></translation>
<translation>Error en carregar geo URI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
@ -2420,17 +2430,17 @@
<translation>Ritme</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Podporované soubory</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>Soubory CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>Soubory CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>Soubory FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>Soubory GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>Soubory GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>Soubory GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>Soubory IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>Soubory ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>Obrázky JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>Soubory KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>Soubory LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>Soubory NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>Soubory OV2</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>Soubory OziExploreru</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>Soubory SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>Soubory TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>Soubory SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>Soubory ONmove</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>GPS logy z kamer 70mai</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation>Soubory VKX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>Soubory VTK</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>Soubory TwoNavu</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>Soubory GPSDumpu</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Všechny soubory</translation>
</message>
@ -2382,7 +2392,7 @@
<translation>Rychlost</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -2427,12 +2437,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Understøttede filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG-billeder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS-logfiler</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Alle filer</translation>
</message>
@ -768,7 +778,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="1126"/>
<source>Error loading geo URI:</source>
<translation type="unfinished"></translation>
<translation>Fejl ved indlæsning af geo-URI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1132"/>
@ -2420,17 +2430,17 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>knob</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mil/t</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/t</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Unterstützte Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG-Bilder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS-Logdateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation>VKX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Alle Dateien</translation>
</message>
@ -2380,7 +2390,7 @@
<translation>Geschwindigkeit</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -2425,12 +2435,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Subtenataj dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG-bildoj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump-dosieroj</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Ĉiuj dosieroj</translation>
</message>
@ -2420,17 +2430,17 @@
<translation>Ritmo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Formatos admitidos</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>Archivos CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>Archivos CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>Archivos FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>Archivos GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>Archivos GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>Archivos GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>Archivos IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>Archivos ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>Imágenes JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>Archivos KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>Archivos LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>Archivos NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>Archivos ONmove</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>Archivos OV2</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>Archivos OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>Archivos SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>Archivos SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>Archivos TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>Archivos TwoNav</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>Archivos GPSDump</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Todos los archivos</translation>
</message>
@ -2420,17 +2430,17 @@
<translation>Ritmo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Tuetut tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG-kuvat</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS -lokitiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Kaikki tiedostot</translation>
</message>
@ -2380,7 +2390,7 @@
<translation>Vauhti</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/t</translation>
</message>
@ -2425,12 +2435,12 @@
<translation>Tahti</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mph</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Formats pris en charge</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>Données CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>Données CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>Données FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>Données GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>Données GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>Données GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>Données IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>Fichiers ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>Images JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>Données KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>Données LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>Données NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>Fichiers OV2</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>Données OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>Données SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>Données TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>Données SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>Données ONmove</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>Fichiers de journalisation GPS 70mai</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation>Fichiers VKX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>Fichiers VTK</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>Données TwoNav</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>Fichiers GPSDump</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Tous les fichiers</translation>
</message>
@ -2380,7 +2390,7 @@
<translation>Vitesse</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -2425,12 +2435,12 @@
<translation>Allure</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>nd</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Támogatott fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG képek</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2 fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS naplófájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation>VKX fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump fájlok</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Minden fájl</translation>
</message>
@ -195,7 +205,7 @@
<message>
<location filename="../src/GUI/dirselectwidget.cpp" line="40"/>
<source>Select directory</source>
<translation>Könyvtár választása</translation>
<translation>Könyvtár kiválasztása</translation>
</message>
</context>
<context>
@ -1061,7 +1071,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="2005"/>
<source>Select map directory</source>
<translation>Térképmappa választása</translation>
<translation>Térképmappa kiválasztása</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="2054"/>
@ -2030,7 +2040,7 @@
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="826"/>
<source>Select the initial paths of the file open dialogues. Leave the field empty for the system default.</source>
<translation>Alapértelmezetten megnyíló mappa a lenti elemekhez. Üresen hagyva a mezőt, a program által alapértelmezett.</translation>
<translation>Válassza ki a fájlmegnyitó párbeszédpanelek kezdeti elérési útvonalait. A rendszer alapértelmezett beállításaihoz hagyja üresen.</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="830"/>
@ -2418,17 +2428,17 @@
<translation>Iram</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>csomó</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mph</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>File supportati</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>File CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>File CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>File FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>File GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>File GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>File GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>File IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>File ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>File JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>File KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>File LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>File NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>File ONmove</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>File OV2</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>File OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>File SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>File SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>File TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>File TwoNav</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Tutti i file</translation>
</message>
@ -2420,17 +2430,17 @@
<translation>Ritmo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation> </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2 </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation> </translation>
</message>
@ -2418,17 +2428,17 @@
<translation></translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Støttede filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG-bilder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Alle filer</translation>
</message>
@ -2420,17 +2430,17 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/t</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Obsługiwane pliki</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>Pliki CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>Pliki CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>Pliki FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>Pliki GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>Pliki GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>Pliki GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>Pliki IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>Pliki ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>Pliki JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>Pliki KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>Pliki LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>Pliki NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>Pliki OV2</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>Pliki OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>Pliki SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>Pliki TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>Pliki SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Wszystkie pliki</translation>
</message>
@ -2382,7 +2392,7 @@
<translation>Prędkość</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -2427,12 +2437,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Formatos suportados</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>Arquivos CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>Arquivos CUP</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>Arquivos FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>Arquivos GeoJSON</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>Arquivos GPI</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>Arquivos GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>Arquivos IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>Imagens JPEG</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>Arquivos KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>Arquivos LOC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>Arquivos NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>Arquivos OziExplorer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>Arquivos SLF</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>Arquivos SML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>Arquivos TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Todos os arquivos</translation>
</message>
@ -2420,17 +2430,17 @@
<translation>Ritmo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Все поддерживаемые файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>Файлы ITN</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG изображения</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2 файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Все файлы</translation>
</message>
@ -832,7 +842,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="1126"/>
<source>Error loading geo URI:</source>
<translation type="unfinished"></translation>
<translation>Ошибка загрузки гео URI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1132"/>
@ -2382,7 +2392,7 @@
<translation>Скорость</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>км/ч</translation>
</message>
@ -2427,12 +2437,12 @@
<translation>Темп</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>уз</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>мл/ч</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Filer som stöds</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG-bilder</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS-loggfiler</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation>VKX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>VTK-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Alla filer</translation>
</message>
@ -2380,7 +2390,7 @@
<translation>Hastighet</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -2425,12 +2435,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>knop</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Desteklenen dosyalar</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG görüntüleri</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2 dostaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation>70mai GPS kayıt dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump dosyaları</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Tüm dosyalar</translation>
</message>
@ -2418,17 +2428,17 @@
<translation>Hız</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/sa</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/sa</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation>Всі підтримувані формати</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG зображення</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2 файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
<translation>70mai файли журналу GPS</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation>Файли VKX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation>Файли VTK</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump файли</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation>Всі файли</translation>
</message>
@ -768,7 +778,7 @@
<message>
<location filename="../src/GUI/gui.cpp" line="1126"/>
<source>Error loading geo URI:</source>
<translation type="unfinished"></translation>
<translation>Помилка завантаження geo URI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1132"/>
@ -2422,17 +2432,17 @@
<translation>Темп</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>вуз</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>миль/год</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>км/год</translation>
</message>

View File

@ -70,117 +70,127 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="228"/>
<location filename="../src/data/data.cpp" line="234"/>
<source>Supported files</source>
<translation></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="229"/>
<location filename="../src/data/data.cpp" line="235"/>
<source>CSV files</source>
<translation>CSV </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="230"/>
<location filename="../src/data/data.cpp" line="236"/>
<source>CUP files</source>
<translation>CUP </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="231"/>
<location filename="../src/data/data.cpp" line="237"/>
<source>FIT files</source>
<translation>FIT </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="232"/>
<location filename="../src/data/data.cpp" line="238"/>
<source>GeoJSON files</source>
<translation>GeoJSON </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="233"/>
<location filename="../src/data/data.cpp" line="239"/>
<source>GPI files</source>
<translation>GPI </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="234"/>
<location filename="../src/data/data.cpp" line="240"/>
<source>GPX files</source>
<translation>GPX </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="235"/>
<location filename="../src/data/data.cpp" line="241"/>
<source>IGC files</source>
<translation>IGC </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="236"/>
<location filename="../src/data/data.cpp" line="242"/>
<source>ITN files</source>
<translation>ITN </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="237"/>
<location filename="../src/data/data.cpp" line="243"/>
<source>JPEG images</source>
<translation>JPEG </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="238"/>
<location filename="../src/data/data.cpp" line="244"/>
<source>KML files</source>
<translation>KML </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="239"/>
<location filename="../src/data/data.cpp" line="245"/>
<source>LOC files</source>
<translation>LOC </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="240"/>
<location filename="../src/data/data.cpp" line="246"/>
<source>NMEA files</source>
<translation>NMEA </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="241"/>
<location filename="../src/data/data.cpp" line="247"/>
<source>ONmove files</source>
<translation>ONmove </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="242"/>
<location filename="../src/data/data.cpp" line="248"/>
<source>OV2 files</source>
<translation>OV2 </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="243"/>
<location filename="../src/data/data.cpp" line="249"/>
<source>OziExplorer files</source>
<translation>OziExplorer </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="244"/>
<location filename="../src/data/data.cpp" line="250"/>
<source>SLF files</source>
<translation>SLF </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="245"/>
<location filename="../src/data/data.cpp" line="251"/>
<source>SML files</source>
<translation>SML </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="246"/>
<location filename="../src/data/data.cpp" line="252"/>
<source>TCX files</source>
<translation>TCX </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="247"/>
<location filename="../src/data/data.cpp" line="253"/>
<source>70mai GPS log files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="248"/>
<location filename="../src/data/data.cpp" line="254"/>
<source>VKX files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="255"/>
<source>VTK files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="256"/>
<source>TwoNav files</source>
<translation>TwoNav </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="249"/>
<location filename="../src/data/data.cpp" line="257"/>
<source>GPSDump files</source>
<translation>GPSDump </translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="250"/>
<location filename="../src/data/data.cpp" line="258"/>
<source>All files</source>
<translation></translation>
</message>
@ -2418,17 +2428,17 @@
<translation></translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="134"/>
<location filename="../src/GUI/speedgraph.cpp" line="146"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="137"/>
<location filename="../src/GUI/speedgraph.cpp" line="149"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="140"/>
<location filename="../src/GUI/speedgraph.cpp" line="152"/>
<source>km/h</source>
<translation>km/h</translation>
</message>

View File

@ -15,8 +15,8 @@
<li>Opens GPX, TCX, FIT, KML, IGC, NMEA, SIGMA SLF, Suunto SML, LOC,
OziExplorer (PLT, WPT, RTE), GeoJSON, SeeYou CUP,
Garmin GPI &amp; CSV, TomTom OV2 &amp; ITN, ONmove OMD/GHP,
TwoNav (TRK, RTE, WPT), GPSDump WPT, 70mai GPS logs and
geotagged JPEG files.</li>
TwoNav (TRK, RTE, WPT), GPSDump WPT, Velocitek VTK,
Vakaros VKX, 70mai GPS logs and geotagged JPEG files.</li>
<li>Opens geo URIs (RFC 5870).</li>
<li>User-definable online maps (OpenStreetMap/Google tiles, WMTS,
WMS, TMS, QuadTiles).</li>
@ -114,6 +114,8 @@
<mimetype>application/vnd.gpsdump.wpt</mimetype>
<mimetype>application/vnd.gpstuner.gmi</mimetype>
<mimetype>application/vnd.70mai.txt</mimetype>
<mimetype>application/vnd.velocitek.vtk</mimetype>
<mimetype>application/vnd.vakaros.vkx</mimetype>
<mimetype>x-scheme-handler/geo</mimetype>
</mimetypes>
</component>

View File

@ -16,4 +16,4 @@ Icon=gpxsee
Terminal=false
Type=Application
Categories=Graphics;Viewer;Education;Geography;Maps;Sports;Qt
MimeType=x-scheme-handler/geo;application/gpx+xml;application/vnd.garmin.tcx+xml;application/vnd.ant.fit;application/vnd.google-earth.kml+xml;application/vnd.fai.igc;application/vnd.nmea.nmea;application/vnd.oziexplorer.plt;application/vnd.oziexplorer.rte;application/vnd.oziexplorer.wpt;application/vnd.groundspeak.loc+xml;application/vnd.sigma.slf+xml;application/geo+json;application/vnd.naviter.seeyou.cup;application/vnd.garmin.gpi;application/vnd.suunto.sml+xml;image/jpeg;text/csv;application/vnd.garmin.img;application/vnd.garmin.jnx;application/vnd.garmin.gmap+xml;image/vnd.maptech.kap;application/vnd.oziexplorer.map;application/vnd.mapbox.mbtiles;application/vnd.twonav.rmap;application/vnd.trekbuddy.tba;application/vnd.gpxsee.map+xml;application/x-tar;image/tiff;application/vnd.google-earth.kmz;application/vnd.alpinequest.aqm;application/vnd.cgtk.gemf;application/vnd.rmaps.sqlite;application/vnd.osmdroid.sqlite;application/vnd.mapsforge.map;application/vnd.tomtom.ov2;application/vnd.tomtom.itn;application/vnd.esri.wld;application/vnd.onmove.omd;application/vnd.onmove.ghp;application/vnd.memory-map.qct;application/vnd.twonav.trk;application/vnd.twonav.rte;application/vnd.twonav.wpt;application/vnd.orux.map+xml;application/vnd.iho.s57-data;application/vnd.iho.s57-catalogue;application/vnd.gpsdump.wpt;application/vnd.gpstuner.gmi;application/vnd.70mai.txt
MimeType=x-scheme-handler/geo;application/gpx+xml;application/vnd.garmin.tcx+xml;application/vnd.ant.fit;application/vnd.google-earth.kml+xml;application/vnd.fai.igc;application/vnd.nmea.nmea;application/vnd.oziexplorer.plt;application/vnd.oziexplorer.rte;application/vnd.oziexplorer.wpt;application/vnd.groundspeak.loc+xml;application/vnd.sigma.slf+xml;application/geo+json;application/vnd.naviter.seeyou.cup;application/vnd.garmin.gpi;application/vnd.suunto.sml+xml;image/jpeg;text/csv;application/vnd.garmin.img;application/vnd.garmin.jnx;application/vnd.garmin.gmap+xml;image/vnd.maptech.kap;application/vnd.oziexplorer.map;application/vnd.mapbox.mbtiles;application/vnd.twonav.rmap;application/vnd.trekbuddy.tba;application/vnd.gpxsee.map+xml;application/x-tar;image/tiff;application/vnd.google-earth.kmz;application/vnd.alpinequest.aqm;application/vnd.cgtk.gemf;application/vnd.rmaps.sqlite;application/vnd.osmdroid.sqlite;application/vnd.mapsforge.map;application/vnd.tomtom.ov2;application/vnd.tomtom.itn;application/vnd.esri.wld;application/vnd.onmove.omd;application/vnd.onmove.ghp;application/vnd.memory-map.qct;application/vnd.twonav.trk;application/vnd.twonav.rte;application/vnd.twonav.wpt;application/vnd.orux.map+xml;application/vnd.iho.s57-data;application/vnd.iho.s57-catalogue;application/vnd.gpsdump.wpt;application/vnd.gpstuner.gmi;application/vnd.70mai.txt;application/vnd.velocitek.vtk;application/vnd.vakaros.vkx

View File

@ -198,6 +198,23 @@
<glob pattern="*.txt"/>
</mime-type>
<mime-type type="application/vnd.velocitek.vtk">
<comment>Velocitek VTK File</comment>
<sub-class-of type="application/octet-stream"/>
<generic-icon name="application/octet-stream"/>
<glob pattern="*.vtk"/>
</mime-type>
<mime-type type="application/vnd.vakaros.vkx">
<comment>Vakaros VKX File</comment>
<sub-class-of type="application/octet-stream"/>
<generic-icon name="application/octet-stream"/>
<magic>
<match type="byte" offset="0" value="0xFF"/>
</magic>
<glob pattern="*.vkx"/>
</mime-type>
<!-- Maps -->
<mime-type type="application/vnd.garmin.img">

View File

@ -750,6 +750,38 @@
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>vtk</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/vnd.velocitek.vtk</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>icons/vtk.icns</string>
<key>CFBundleTypeName</key>
<string>Velocitek VTK File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>vkx</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/vnd.vakaros.vkx</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>icons/vkx.icns</string>
<key>CFBundleTypeName</key>
<string>Vakaros VKX File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
<key>CFBundleURLTypes</key>
@ -1697,6 +1729,8 @@
<string>https://iho.int/uploads/user/pubs/standards/s-57/31Main.pdf</string>
<key>UTTypeDescription</key>
<string>IHO S-57 Electronic Navigation Chart</string>
<key>UTTypeIconFile</key>
<string>icons/000.icns</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
@ -1718,6 +1752,8 @@
<string>https://iho.int/uploads/user/pubs/standards/s-57/20ApB1.pdf</string>
<key>UTTypeDescription</key>
<string>IHO S-57 Electronic Navigation Catalogue</string>
<key>UTTypeIconFile</key>
<string>icons/031.icns</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
@ -1753,6 +1789,52 @@
<string>application/vnd.70mai.txt</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.velocitek.vtk</string>
<key>UTTypeReferenceURL</key>
<string>https://github.com/velocitek/vtk_protocol</string>
<key>UTTypeDescription</key>
<string>Velocitek VTK File</string>
<key>UTTypeIconFile</key>
<string>icons/vtk.icns</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>vtk</string>
</array>
<key>public.mime-type</key>
<string>application/vnd.velocitek.vtk</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.vakaros.vkx</string>
<key>UTTypeReferenceURL</key>
<string>https://github.com/vakaros/vkx</string>
<key>UTTypeDescription</key>
<string>Vakaros VKX File</string>
<key>UTTypeIconFile</key>
<string>icons/vkx.icns</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>vkx</string>
</array>
<key>public.mime-type</key>
<string>application/vnd.vakaros.vkx</string>
</dict>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>

View File

@ -49,7 +49,7 @@ Unicode true
; The name of the installer
Name "GPXSee"
; Program version
!define VERSION "13.37"
!define VERSION "13.39"
; The file to write
OutFile "GPXSee-${VERSION}_x64.exe"
@ -204,13 +204,15 @@ Section "GPXSee" SEC_APP
!insertmacro FILE_ASSOCIATION_ADD "gemf" "GEMF Map File" 26
!insertmacro FILE_ASSOCIATION_ADD "000" "IHO S-57 Electronic Navigation Chart" 27
!insertmacro FILE_ASSOCIATION_ADD "031" "IHO S-57 Electronic Navigation Catalogue" 28
!insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 29
!insertmacro FILE_ASSOCIATION_ADD "kmz" "KML geographic compressed data" 29
!insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 30
!insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 31
!insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 32
!insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track File" 33
!insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 34
!insertmacro FILE_ASSOCIATION_ADD "vtk" "Velocitek VTK File" 29
!insertmacro FILE_ASSOCIATION_ADD "vkx" "Vakaros VKX File" 30
!insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 31
!insertmacro FILE_ASSOCIATION_ADD "kmz" "KML geographic compressed data" 31
!insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 32
!insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 33
!insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 34
!insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track File" 35
!insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 36
!insertmacro URI_ASSOCIATION_ADD "geo"
@ -266,6 +268,8 @@ Section "GPXSee" SEC_APP
WriteRegStr HKCR ".000\OpenWithList" "GPXSee.exe" ""
WriteRegStr HKCR ".031\OpenWithList" "GPXSee.exe" ""
WriteRegStr HKCR ".txt\OpenWithList" "GPXSee.exe" ""
WriteRegStr HKCR ".vtk\OpenWithList" "GPXSee.exe" ""
WriteRegStr HKCR ".vkx\OpenWithList" "GPXSee.exe" ""
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
@ -440,6 +444,8 @@ Section "Uninstall"
!insertmacro FILE_ASSOCIATION_REMOVE "gemf"
!insertmacro FILE_ASSOCIATION_REMOVE "000"
!insertmacro FILE_ASSOCIATION_REMOVE "031"
!insertmacro FILE_ASSOCIATION_REMOVE "vtk"
!insertmacro FILE_ASSOCIATION_REMOVE "vkx"
!insertmacro URI_ASSOCIATION_REMOVE "geo"
@ -494,6 +500,8 @@ Section "Uninstall"
DeleteRegValue HKCR ".000\OpenWithList" "GPXSee.exe"
DeleteRegValue HKCR ".031\OpenWithList" "GPXSee.exe"
DeleteRegValue HKCR ".txt\OpenWithList" "GPXSee.exe"
DeleteRegValue HKCR ".vtk\OpenWithList" "GPXSee.exe"
DeleteRegValue HKCR ".vkx\OpenWithList" "GPXSee.exe"
DeleteRegKey HKCR "Applications\GPXSee.exe"
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'

View File

@ -64,6 +64,7 @@ GraphItem *SpeedGraph::loadGraph(const Graph &graph, const Track &track,
if (primary) {
_avg.append(QPointF(track.distance(), gi->avg()));
_mavg.append(QPointF(track.distance(), gi->mavg()));
_max.append(QPointF(track.distance(), gi->max()));
}
return gi;
@ -117,6 +118,16 @@ qreal SpeedGraph::avg() const
return (sum / w);
}
qreal SpeedGraph::max() const
{
qreal mv = 0;
for (int i = 0; i < _max.size(); i++)
mv = qMax(mv, _max.at(i).y());
return mv;
}
void SpeedGraph::clear()
{
qDeleteAll(_tracks);
@ -124,6 +135,7 @@ void SpeedGraph::clear()
_avg.clear();
_mavg.clear();
_max.clear();
GraphTab::clear();
}

View File

@ -26,12 +26,13 @@ private:
GraphItem *loadGraph(const Graph &graph, const Track &track,
const QColor &color, bool primary);
qreal avg() const;
qreal max() const {return bounds().bottom();}
qreal max() const;
void setYUnits();
void setInfo();
QVector<QPointF> _avg;
QVector<QPointF> _mavg;
QVector<QPointF> _max;
Units _units;
TimeType _timeType;

View File

@ -24,6 +24,8 @@
#include "twonavparser.h"
#include "gpsdumpparser.h"
#include "txtparser.h"
#include "vtkparser.h"
#include "vkxparser.h"
#include "data.h"
@ -51,6 +53,8 @@ static GHPParser ghp;
static TwoNavParser twonav;
static GPSDumpParser gpsdump;
static TXTParser txt;
static VTKParser vtk;
static VKXParser vkx;
static QMultiMap<QString, Parser*> parsers()
{
@ -85,6 +89,8 @@ static QMultiMap<QString, Parser*> parsers()
map.insert("wpt", &twonav);
map.insert("wpt", &gpsdump);
map.insert("txt", &txt);
map.insert("vtk", &vtk);
map.insert("vkx", &vkx);
return map;
}
@ -245,6 +251,8 @@ QString Data::formats()
+ qApp->translate("Data", "SML files") + " (*.sml);;"
+ qApp->translate("Data", "TCX files") + " (*.tcx);;"
+ qApp->translate("Data", "70mai GPS log files") + " (*.txt);;"
+ qApp->translate("Data", "VKX files") + " (*.vkx);;"
+ qApp->translate("Data", "VTK files") + " (*.vtk);;"
+ qApp->translate("Data", "TwoNav files") + " (*.rte *.trk *.wpt);;"
+ qApp->translate("Data", "GPSDump files") + " (*.wpt);;"
+ qApp->translate("Data", "All files") + " (*)";

View File

@ -467,8 +467,7 @@ bool FITParser::parseHeader(CTX &ctx)
}
bool FITParser::parse(QFile *file, QList<TrackData> &tracks,
QList<RouteData> &routes,
QList<Area> &polygons, QVector<Waypoint> &waypoints)
QList<RouteData> &routes, QList<Area> &polygons, QVector<Waypoint> &waypoints)
{
Q_UNUSED(routes);
Q_UNUSED(polygons);

View File

@ -4,7 +4,6 @@
#include <QXmlStreamReader>
#include "parser.h"
class TCXParser : public Parser
{
public:

151
src/data/vkxparser.cpp Normal file
View File

@ -0,0 +1,151 @@
#include "vkxparser.h"
static bool readTrackPoint(QDataStream &stream, SegmentData &segment)
{
quint64 time;
qint32 lat, lon;
quint32 unused;
float speed, alt;
stream >> time >> lat >> lon;
if (stream.status() != QDataStream::Ok)
return false;
if (stream.readRawData((char*)&speed, 4) != 4)
return false;
stream >> unused;
if (stream.readRawData((char*)&alt, 4) != 4)
return false;
stream >> unused >> unused >> unused >> unused;
if (stream.status() != QDataStream::Ok)
return false;
Trackpoint t(Coordinates(lon / 1e7, lat / 1e7));
if (!t.coordinates().isValid())
return false;
t.setTimestamp(QDateTime::fromMSecsSinceEpoch(time));
t.setSpeed(speed);
t.setElevation(alt);
segment.append(t);
return true;
}
bool VKXParser::skip(QDataStream &stream, quint8 key, int len)
{
if (stream.skipRawData(len) != len) {
_errorString = "Invalid 0x" + QString::number(key, 16) + " row";
return false;
}
return true;
}
bool VKXParser::parse(QFile *file, QList<TrackData> &tracks,
QList<RouteData> &routes, QList<Area> &polygons, QVector<Waypoint> &waypoints)
{
Q_UNUSED(routes);
Q_UNUSED(polygons);
Q_UNUSED(waypoints);
quint8 key;
quint64 hdr;
SegmentData segment;
QDataStream stream(file);
stream.setByteOrder(QDataStream::LittleEndian);
stream >> hdr;
if ((hdr & 0xFF) != 0xFF) {
_errorString = "Not a Vakaros VKX file";
return false;
}
while (stream.status() == QDataStream::Ok) {
stream >> key;
if (stream.status() != QDataStream::Ok)
break;
switch (key) {
case 0x01:
if (!skip(stream, key, 32))
return false;
break;
case 0x02:
if (!readTrackPoint(stream, segment)) {
_errorString = "Invalid 0x2 row";
return false;
}
break;
case 0x03:
if (!skip(stream, key, 20))
return false;
break;
case 0x04:
if (!skip(stream, key, 13))
return false;
break;
case 0x05:
if (!skip(stream, key, 17))
return false;
break;
case 0x06:
if (!skip(stream, key, 18))
return false;
break;
case 0x07:
if (!skip(stream, key, 12))
return false;
break;
case 0x08:
if (!skip(stream, key, 13))
return false;
break;
case 0x0A:
case 0x0B:
if (!skip(stream, key, 16))
return false;
break;
case 0x0C:
if (!skip(stream, key, 12))
return false;
break;
case 0x0E:
case 0x0F:
if (!skip(stream, key, 16))
return false;
break;
case 0x10:
if (!skip(stream, key, 12))
return false;
break;
case 0x20:
if (!skip(stream, key, 13))
return false;
break;
case 0x21:
if (!skip(stream, key, 52))
return false;
break;
case 0xFE:
if (!skip(stream, key, 2))
return false;
break;
case 0xFF:
if (!skip(stream, key, 7))
return false;
break;
default:
_errorString = "Unknown row key: 0x" + QString::number(key, 16);
return false;
}
}
if (stream.status() != QDataStream::ReadPastEnd) {
_errorString = "Unexpected EOF";
return false;
}
tracks.append(segment);
return true;
}

27
src/data/vkxparser.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef VKXPARSER_H
#define VKXPARSER_H
#include "parser.h"
class QDataStream;
class VKXParser : public Parser
{
public:
VKXParser()
{
static_assert(sizeof(float) == 4, "Invalid float size");
}
bool parse(QFile *file, QList<TrackData> &tracks, QList<RouteData> &routes,
QList<Area> &polygons, QVector<Waypoint> &waypoints);
QString errorString() const {return _errorString;}
int errorLine() const {return 0;}
private:
bool skip(QDataStream &stream, quint8 key, int len);
QString _errorString;
};
#endif // VKXPARSER_H

217
src/data/vtkparser.cpp Normal file
View File

@ -0,0 +1,217 @@
#include <QtEndian>
#include <QTimeZone>
#include "vtkparser.h"
#define TYPE(tag) (tag & 0x07)
#define FIELD(tag) (tag >> 3)
#define VARINT 0
#define I64 1
#define LEN 2
#define I32 5
struct CTX
{
CTX(const QByteArray &ba)
: bp(ba.constData()), be(bp + ba.size()), tag(0) {}
const char *bp;
const char *be;
quint32 tag;
};
static inline qint32 zigzag32decode(quint32 value)
{
return static_cast<qint32>((value >> 1u) ^ static_cast<quint32>(
-static_cast<qint32>(value & 1u)));
}
template<typename T>
static bool varint(CTX &ctx, T &val)
{
unsigned int shift = 0;
val = 0;
while (ctx.bp < ctx.be) {
val |= ((quint8)*ctx.bp & 0x7F) << shift;
shift += 7;
if (!((quint8)*ctx.bp++ & 0x80))
return true;
}
return false;
}
static bool length(CTX &ctx, qint32 &val)
{
if (TYPE(ctx.tag) != LEN)
return false;
if (!varint(ctx, val))
return false;
return (val >= 0);
}
static bool skip(CTX &ctx)
{
qint32 len = 0;
switch (TYPE(ctx.tag)) {
case VARINT:
return varint(ctx, len);
case I64:
len = 8;
break;
case LEN:
if (!varint(ctx, len) || len < 0)
return false;
break;
case I32:
len = 4;
break;
default:
return false;
}
if (ctx.bp + len > ctx.be)
return false;
ctx.bp += len;
return true;
}
static bool trackpoint(CTX &ctx, Trackpoint &t)
{
qint32 len, lon = 0xFFFFFFF, lat = 0xFFFFFFF;
quint32 val, seconds = 0, centiSeconds = 0, speed = 0;
if (!length(ctx, len))
return false;
const char *ee = ctx.bp + len;
if (ee > ctx.be)
return false;
while (ctx.bp < ee) {
if (!varint(ctx, ctx.tag))
return false;
switch (FIELD(ctx.tag)) {
case 1:
if (TYPE(ctx.tag) != VARINT)
return false;
if (!varint(ctx, seconds))
return false;
break;
case 2:
if (TYPE(ctx.tag) != VARINT)
return false;
if (!varint(ctx, centiSeconds))
return false;
break;
case 3:
if (TYPE(ctx.tag) != VARINT)
return false;
if (!varint(ctx, val))
return false;
lat = zigzag32decode(val);
break;
case 4:
if (TYPE(ctx.tag) != VARINT)
return false;
if (!varint(ctx, val))
return false;
lon = zigzag32decode(val);
break;
case 5:
if (TYPE(ctx.tag) != VARINT)
return false;
if (!varint(ctx, speed))
return false;
break;
default:
if (!skip(ctx))
return false;
}
}
t.setCoordinates(Coordinates(lon / 1e7, lat / 1e7));
t.setTimestamp(QDateTime::fromMSecsSinceEpoch(
((qint64)seconds * 1000) + ((qint64)centiSeconds * 10),
QTimeZone::utc()));
t.setSpeed(speed * 0.051444);
return (ctx.bp == ee);
}
static bool record(CTX &ctx, Trackpoint &t)
{
while (ctx.bp < ctx.be) {
if (!varint(ctx, ctx.tag))
return false;
switch (FIELD(ctx.tag)) {
case 1:
if (!trackpoint(ctx, t))
return false;
break;
default:
if (!skip(ctx))
return false;
}
}
return (ctx.bp == ctx.be);
}
bool VTKParser::parse(QFile *file, QList<TrackData> &tracks,
QList<RouteData> &routes, QList<Area> &polygons, QVector<Waypoint> &waypoints)
{
Q_UNUSED(routes);
Q_UNUSED(polygons);
Q_UNUSED(waypoints);
qint64 len;
quint16 recordLen;
QByteArray ba;
SegmentData segment;
Trackpoint t;
_errorString = "";
while (true) {
if ((len = file->read((char*)&recordLen, sizeof(recordLen)))
!= sizeof(recordLen)) {
if (!len)
break;
else {
_errorString = "Error reading VTK record size";
return false;
}
}
recordLen = qFromLittleEndian(recordLen);
ba.resize(recordLen);
if (file->read(ba.data(), ba.size()) != ba.size()) {
_errorString = "Error reading VTK record";
return false;
}
CTX ctx(ba);
t.setCoordinates(Coordinates());
if (!record(ctx, t)) {
_errorString = "Invalid VTK record";
return false;
} else {
if (t.coordinates().isValid())
segment.append(t);
else if (!t.coordinates().isNull()) {
_errorString = "Invalid VTK record coordinates";
return false;
}
}
}
tracks.append(segment);
return true;
}

18
src/data/vtkparser.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef VTKPARSER_H
#define VTKPARSER_H
#include "parser.h"
class VTKParser : public Parser
{
public:
bool parse(QFile *file, QList<TrackData> &tracks, QList<RouteData> &routes,
QList<Area> &polygons, QVector<Waypoint> &waypoints);
QString errorString() const {return _errorString;}
int errorLine() const {return 0;}
private:
QString _errorString;
};
#endif // VTKPARSER_H

View File

@ -1,3 +1,4 @@
#include <QtEndian>
#include <QFile>
#include <QRegularExpression>
#include "common/util.h"
@ -5,13 +6,6 @@
using namespace ENC;
#define UINT16(x) \
(((quint16)*(const uchar*)(x)) \
| ((quint16)(*((const uchar*)(x) + 1)) << 8))
#define INT32(x) ((qint32)UINT32(x))
#define INT16(x) ((qint16)UINT16(x))
struct DR {
char RecordLength[5];
char InterchangeLevel;
@ -29,18 +23,18 @@ struct DR {
};
const QVariant *ISO8211::Field::data(const QByteArray &name, int idx) const
const QVariant *ISO8211::Field::data(quint32 name, int idx) const
{
const QVector<QVariant> &v = _data.at(idx);
for (int i = 0; i < _subFields.size(); i++)
if (_subFields.at(i) == name)
for (int i = 0; i < _subFields->size(); i++)
if (_subFields->at(i) == name)
return &v.at(i);
return 0;
}
bool ISO8211::Field::subfield(const char *name, int *val, int idx) const
bool ISO8211::Field::subfield(quint32 name, int *val, int idx) const
{
bool ok;
@ -52,7 +46,7 @@ bool ISO8211::Field::subfield(const char *name, int *val, int idx) const
return ok;
}
bool ISO8211::Field::subfield(const char *name, uint *val, int idx) const
bool ISO8211::Field::subfield(quint32 name, uint *val, int idx) const
{
bool ok;
@ -64,7 +58,7 @@ bool ISO8211::Field::subfield(const char *name, uint *val, int idx) const
return ok;
}
bool ISO8211::Field::subfield(const char *name, QByteArray *val, int idx) const
bool ISO8211::Field::subfield(quint32 name, QByteArray *val, int idx) const
{
const QVariant *v = data(name, idx);
if (!v)
@ -101,6 +95,7 @@ int ISO8211::readDR(QVector<FieldDefinition> &fields)
DR ddr;
QByteArray fieldLen, fieldPos;
int len, lenSize, posSize, tagSize, offset;
char tag[4];
static_assert(sizeof(ddr) == 24, "Invalid DR alignment");
if (_file.read((char*)&ddr, sizeof(ddr)) != sizeof(ddr))
@ -115,20 +110,19 @@ int ISO8211::readDR(QVector<FieldDefinition> &fields)
if (len < 0 || offset < 0 || lenSize < 0 || posSize < 0 || tagSize < 0)
return -1;
fields.resize((offset - 1 - sizeof(DR)) / (lenSize + posSize + tagSize));
fields.resize((offset - 1 - sizeof(ddr)) / (lenSize + posSize + tagSize));
fieldLen.resize(lenSize);
fieldPos.resize(posSize);
for (int i = 0; i < fields.size(); i++) {
FieldDefinition &r = fields[i];
r.tag.resize(tagSize);
if (_file.read(r.tag.data(), tagSize) != tagSize
if (_file.read(tag, sizeof(tag)) != tagSize
|| _file.read(fieldLen.data(), lenSize) != lenSize
|| _file.read(fieldPos.data(), posSize) != posSize)
return -1;
r.tag = qFromLittleEndian<quint32>(tag);
r.pos = offset + Util::str2int(fieldPos.constData(), posSize);
r.size = Util::str2int(fieldLen.constData(), lenSize);
@ -141,11 +135,12 @@ int ISO8211::readDR(QVector<FieldDefinition> &fields)
bool ISO8211::readDDA(const FieldDefinition &def, SubFields &fields)
{
static const QRegularExpression re("(\\d*)(\\w+)\\(*(\\d*)\\)*");
static const QRegularExpression re(
"([0-9]*)(A|I|R|B|b11|b12|b14|b21|b22|b24)\\(*([0-9]*)\\)*");
QByteArray ba(def.size, Qt::Initialization::Uninitialized);
bool repeat = false;
QVector<SubFieldDefinition> defs;
QVector<QByteArray> defTags;
QVector<quint32> defTags;
if (!(_file.seek(def.pos) && _file.read(ba.data(), ba.size()) == ba.size()))
return false;
@ -155,9 +150,9 @@ bool ISO8211::readDDA(const FieldDefinition &def, SubFields &fields)
repeat = true;
list[1].remove(0, 1);
}
QList<QByteArray> tags(list.at(1).split('!'));
if (list.size() > 2) {
QList<QByteArray> tags(list.at(1).split('!'));
QRegularExpressionMatchIterator it = re.globalMatch(list.at(2));
int tag = 0;
@ -187,11 +182,17 @@ bool ISO8211::readDDA(const FieldDefinition &def, SubFields &fields)
SubFieldDefinition sfd(fieldType(typeStr, size));
if (sfd.type() == Unknown)
return false;
if (tag >= tags.size())
return false;
defs[tag] = sfd;
defTags[tag] = tags.at(tag);
defTags[tag] = (tags.at(tag).length() == 4)
? qFromLittleEndian<quint32>(tags.at(tag).constData()) : 0;
tag++;
}
}
if (tag != tags.size())
return false;
}
fields = SubFields(defTags, defs, repeat);
@ -217,8 +218,10 @@ bool ISO8211::readDDR()
for (int i = 0; i < fields.size(); i++) {
SubFields def;
if (!readDDA(fields.at(i), def)) {
QByteArray tag(sizeof(quint32), Qt::Initialization::Uninitialized);
qToLittleEndian<quint32>(fields.at(i).tag, tag.data());
_errorString = QString("Error reading %1 DDA field")
.arg(QString(fields.at(i).tag));
.arg(QString(tag));
return false;
}
_map.insert(fields.at(i).tag, def);
@ -270,11 +273,11 @@ bool ISO8211::readUDA(quint64 pos, const FieldDefinition &def,
dp++;
break;
case S16:
row[i] = QVariant(INT16(dp));
row[i] = QVariant(qFromLittleEndian<qint16>(dp));
dp += 2;
break;
case S32:
row[i] = QVariant(INT32(dp));
row[i] = QVariant(qFromLittleEndian<qint32>(dp));
dp += 4;
break;
case U8:
@ -282,11 +285,11 @@ bool ISO8211::readUDA(quint64 pos, const FieldDefinition &def,
dp++;
break;
case U16:
row[i] = QVariant(UINT16(dp));
row[i] = QVariant(qFromLittleEndian<quint16>(dp));
dp += 2;
break;
case U32:
row[i] = QVariant(UINT32(dp));
row[i] = QVariant(qFromLittleEndian<quint32>(dp));
dp += 4;
break;
default:
@ -322,13 +325,16 @@ bool ISO8211::readRecord(Record &record)
FieldsMap::const_iterator it(_map.find(def.tag));
if (it == _map.constEnd()) {
_errorString = QString("%1: unknown record").arg(QString(def.tag));
QByteArray tag(sizeof(quint32), Qt::Initialization::Uninitialized);
qToLittleEndian<quint32>(def.tag, tag.data());
_errorString = QString("%1: unknown record").arg(QString(tag));
return false;
}
if (!readUDA(pos, def, it->defs(), it->repeat(), data)) {
_errorString = QString("Error reading %1 record")
.arg(QString(def.tag));
QByteArray tag(sizeof(quint32), Qt::Initialization::Uninitialized);
qToLittleEndian<quint32>(def.tag, tag.data());
_errorString = QString("Error reading %1 record").arg(QString(tag));
return false;
}
@ -338,8 +344,7 @@ bool ISO8211::readRecord(Record &record)
return true;
}
const ISO8211::Field *ISO8211::field(const Record &record, const QByteArray &name)
const ISO8211::Field *ISO8211::field(const Record &record, quint32 name)
{
for (int i = 0; i < record.size(); i++)
if (record.at(i).tag() == name)

View File

@ -4,13 +4,6 @@
#include <QFile>
#include <QByteArray>
#include <QVariant>
#include <QDebug>
#define UINT32(x) \
(((quint32)*(const uchar*)(x)) \
| ((quint32)(*((const uchar*)(x) + 1)) << 8) \
| ((quint32)(*((const uchar*)(x) + 2)) << 16) \
| ((quint32)(*((const uchar*)(x) + 3)) << 24))
namespace ENC {
@ -22,23 +15,22 @@ public:
class Field
{
public:
Field() {}
Field(const QByteArray &tag, const QVector<QByteArray> &subFields,
const Data &data) : _tag(tag), _subFields(subFields), _data(data) {}
Field() : _subFields(0) {}
Field(quint32 tag, const QVector<quint32> &subFields, const Data &data)
: _tag(tag), _subFields(&subFields), _data(data) {}
const QByteArray &tag() const {return _tag;}
const QVector<QByteArray> &subFields() const {return _subFields;}
quint32 tag() const {return _tag;}
const Data &data() const {return _data;}
bool subfield(const char *name, int *val, int idx = 0) const;
bool subfield(const char *name, uint *val, int idx = 0) const;
bool subfield(const char *name, QByteArray *val, int idx = 0) const;
bool subfield(quint32 name, int *val, int idx = 0) const;
bool subfield(quint32 name, uint *val, int idx = 0) const;
bool subfield(quint32 name, QByteArray *val, int idx = 0) const;
private:
const QVariant *data(const QByteArray &name, int idx = 0) const;
const QVariant *data(quint32 name, int idx = 0) const;
QByteArray _tag;
QVector<QByteArray> _subFields;
quint32 _tag;
const QVector<quint32> *_subFields;
Data _data;
};
@ -50,14 +42,21 @@ public:
const QString &errorString() const {return _errorString;}
static const Field *field(const Record &record, const QByteArray &name);
static const Field *field(const Record &record, quint32 name);
static constexpr quint32 NAME(const char str[4])
{
return static_cast<quint32>(str[0])
+ (static_cast<quint32>(str[1]) << 8)
+ (static_cast<quint32>(str[2]) << 16)
+ (static_cast<quint32>(str[3]) << 24);
}
private:
enum FieldType {Unknown, String, Array, S8, S16, S32, U8, U16, U32};
struct FieldDefinition
{
QByteArray tag;
quint32 tag;
int pos;
int size;
};
@ -81,22 +80,22 @@ private:
{
public:
SubFields() : _repeat(false) {}
SubFields(const QVector<QByteArray> &tags,
SubFields(const QVector<quint32> &tags,
const QVector<SubFieldDefinition> &defs, bool repeat)
: _tags(tags), _defs(defs), _repeat(repeat) {}
const QVector<QByteArray> &tags() const {return _tags;}
const QVector<quint32> &tags() const {return _tags;}
const QVector<SubFieldDefinition> &defs() const {return _defs;}
bool repeat() const {return _repeat;}
private:
QVector<QByteArray> _tags;
QVector<quint32> _tags;
QVector<SubFieldDefinition> _defs;
bool _repeat;
};
typedef QMap<QByteArray, SubFields> FieldsMap;
typedef QMap<quint32, SubFields> FieldsMap;
static SubFieldDefinition fieldType(const QString &str, int cnt);
@ -110,14 +109,6 @@ private:
QString _errorString;
};
#ifndef QT_NO_DEBUG
inline QDebug operator<<(QDebug dbg, const ISO8211::Field &field)
{
dbg.nospace() << "Field(" << field.tag() << ", " << field.subFields() << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG
}
#endif // ENC_ISO8211_H

View File

@ -1,3 +1,4 @@
#include <QtEndian>
#include "GUI/units.h"
#include "objects.h"
#include "attributes.h"
@ -14,6 +15,19 @@ using namespace ENC;
#define PRIM_L 2
#define PRIM_A 3
constexpr quint32 RCID = ISO8211::NAME("RCID");
constexpr quint32 SG2D = ISO8211::NAME("SG2D");
constexpr quint32 SG3D = ISO8211::NAME("SG3D");
constexpr quint32 FSPT = ISO8211::NAME("FSPT");
constexpr quint32 VRPT = ISO8211::NAME("VRPT");
constexpr quint32 ATTF = ISO8211::NAME("ATTF");
constexpr quint32 VRID = ISO8211::NAME("VRID");
constexpr quint32 FRID = ISO8211::NAME("FRID");
constexpr quint32 DSPM = ISO8211::NAME("DSPM");
constexpr quint32 COMF = ISO8211::NAME("COMF");
constexpr quint32 SOMF = ISO8211::NAME("SOMF");
constexpr quint32 HUNI = ISO8211::NAME("HUNI");
static QMap<uint,uint> orderMapInit()
{
QMap<uint,uint> map;
@ -90,20 +104,20 @@ static uint order(uint type)
return (it == orderMap.constEnd()) ? (type>>16) + 512 : it.value();
}
static void warning(const ISO8211::Field &FRID, uint PRIM)
static void warning(const ISO8211::Field &frid, uint prim)
{
uint RCID = 0xFFFFFFFF;
FRID.subfield("RCID", &RCID);
uint rcid = 0xFFFFFFFF;
frid.subfield(RCID, &rcid);
switch (PRIM) {
switch (prim) {
case PRIM_P:
qWarning("%u: invalid point feature", RCID);
qWarning("%u: invalid point feature", rcid);
break;
case PRIM_L:
qWarning("%u: invalid line feature", RCID);
qWarning("%u: invalid line feature", rcid);
break;
case PRIM_A:
qWarning("%u: invalid area feature", RCID);
qWarning("%u: invalid area feature", rcid);
break;
}
}
@ -132,7 +146,7 @@ static bool parseNAME(const ISO8211::Field *f, quint8 *type, quint32 *id,
return false;
*type = (quint8)(*ba.constData());
*id = UINT32(ba.constData() + 1);
*id = qFromLittleEndian<quint32>(ba.constData() + 1);
return true;
}
@ -141,9 +155,9 @@ static const ISO8211::Field *SGXD(const ISO8211::Record &r)
{
const ISO8211::Field *f;
if ((f = ISO8211::field(r, "SG2D")))
if ((f = ISO8211::field(r, SG2D)))
return f;
else if ((f = ISO8211::field(r, "SG3D")))
else if ((f = ISO8211::field(r, SG3D)))
return f;
else
return 0;
@ -212,12 +226,12 @@ static bool linePointCb(const MapData::Line *line, void *context)
return true;
}
static Coordinates coordinates(int x, int y, uint COMF)
static Coordinates coordinates(int x, int y, uint comf)
{
return Coordinates(x / (double)COMF, y / (double)COMF);
return Coordinates(x / (double)comf, y / (double)comf);
}
static Coordinates point(const ISO8211::Record &r, uint COMF)
static Coordinates point(const ISO8211::Record &r, uint comf)
{
const ISO8211::Field *f = SGXD(r);
if (!f)
@ -226,7 +240,7 @@ static Coordinates point(const ISO8211::Record &r, uint COMF)
int y = f->data().at(0).at(0).toInt();
int x = f->data().at(0).at(1).toInt();
return coordinates(x, y, COMF);
return coordinates(x, y, comf);
}
static uint depthLevel(double minDepth)
@ -477,10 +491,10 @@ RectC MapData::Line::bounds() const
}
QVector<MapData::Sounding> MapData::soundings(const ISO8211::Record &r,
uint COMF, uint SOMF)
uint comf, uint somf)
{
QVector<Sounding> s;
const ISO8211::Field *f = ISO8211::field(r, "SG3D");
const ISO8211::Field *f = ISO8211::field(r, SG3D);
if (!f)
return QVector<Sounding>();
@ -489,24 +503,24 @@ QVector<MapData::Sounding> MapData::soundings(const ISO8211::Record &r,
int y = f->data().at(i).at(0).toInt();
int x = f->data().at(i).at(1).toInt();
int z = f->data().at(i).at(2).toInt();
s.append(Sounding(coordinates(x, y, COMF), z / (double)SOMF));
s.append(Sounding(coordinates(x, y, comf), z / (double)somf));
}
return s;
}
QVector<MapData::Sounding> MapData::soundingGeometry(const ISO8211::Record &r,
const RecordMap &vi, const RecordMap &vc, uint COMF, uint SOMF)
const RecordMap &vi, const RecordMap &vc, uint comf, uint somf)
{
quint8 type;
quint32 id;
RecordMapIterator it;
const ISO8211::Field *FSPT = ISO8211::field(r, "FSPT");
if (!FSPT || FSPT->data().at(0).size() != 4)
const ISO8211::Field *fspt = ISO8211::field(r, FSPT);
if (!fspt || fspt->data().at(0).size() != 4)
return QVector<Sounding>();
if (!parseNAME(FSPT, &type, &id))
if (!parseNAME(fspt, &type, &id))
return QVector<Sounding>();
if (type == RCNM_VI) {
@ -520,21 +534,21 @@ QVector<MapData::Sounding> MapData::soundingGeometry(const ISO8211::Record &r,
} else
return QVector<Sounding>();
return soundings(it.value(), COMF, SOMF);
return soundings(it.value(), comf, somf);
}
Coordinates MapData::pointGeometry(const ISO8211::Record &r,
const RecordMap &vi, const RecordMap &vc, uint COMF)
const RecordMap &vi, const RecordMap &vc, uint comf)
{
quint8 type;
quint32 id;
RecordMapIterator it;
const ISO8211::Field *FSPT = ISO8211::field(r, "FSPT");
if (!FSPT || FSPT->data().at(0).size() != 4)
const ISO8211::Field *fspt = ISO8211::field(r, FSPT);
if (!fspt || fspt->data().at(0).size() != 4)
return Coordinates();
if (!parseNAME(FSPT, &type, &id))
if (!parseNAME(fspt, &type, &id))
return Coordinates();
if (type == RCNM_VI) {
@ -548,55 +562,55 @@ Coordinates MapData::pointGeometry(const ISO8211::Record &r,
} else
return Coordinates();
return point(it.value(), COMF);
return point(it.value(), comf);
}
QVector<Coordinates> MapData::lineGeometry(const ISO8211::Record &r,
const RecordMap &vc, const RecordMap &ve, uint COMF)
const RecordMap &vc, const RecordMap &ve, uint comf)
{
QVector<Coordinates> path;
Coordinates c[2];
uint ORNT;
uint ornt;
quint8 type;
quint32 id;
const ISO8211::Field *FSPT = ISO8211::field(r, "FSPT");
if (!FSPT || FSPT->data().at(0).size() != 4)
const ISO8211::Field *fspt = ISO8211::field(r, FSPT);
if (!fspt || fspt->data().at(0).size() != 4)
return QVector<Coordinates>();
for (int i = 0; i < FSPT->data().size(); i++) {
if (!parseNAME(FSPT, &type, &id, i) || type != RCNM_VE)
for (int i = 0; i < fspt->data().size(); i++) {
if (!parseNAME(fspt, &type, &id, i) || type != RCNM_VE)
return QVector<Coordinates>();
ORNT = FSPT->data().at(i).at(1).toUInt();
ornt = fspt->data().at(i).at(1).toUInt();
RecordMapIterator it = ve.find(id);
if (it == ve.constEnd())
return QVector<Coordinates>();
const ISO8211::Record &FRID = it.value();
const ISO8211::Field *VRPT = ISO8211::field(FRID, "VRPT");
if (!VRPT || VRPT->data().size() != 2)
const ISO8211::Record &frid = it.value();
const ISO8211::Field *vrpt = ISO8211::field(frid, VRPT);
if (!vrpt || vrpt->data().size() != 2)
return QVector<Coordinates>();
for (int j = 0; j < 2; j++) {
if (!parseNAME(VRPT, &type, &id, j) || type != RCNM_VC)
if (!parseNAME(vrpt, &type, &id, j) || type != RCNM_VC)
return QVector<Coordinates>();
RecordMapIterator jt = vc.find(id);
if (jt == vc.constEnd())
return QVector<Coordinates>();
c[j] = point(jt.value(), COMF);
c[j] = point(jt.value(), comf);
if (c[j].isNull())
return QVector<Coordinates>();
}
const ISO8211::Field *vertexes = SGXD(FRID);
if (ORNT == 2) {
const ISO8211::Field *vertexes = SGXD(frid);
if (ornt == 2) {
path.append(c[1]);
if (vertexes) {
for (int j = vertexes->data().size() - 1; j >= 0; j--) {
const QVector<QVariant> &cv = vertexes->data().at(j);
path.append(coordinates(cv.at(1).toInt(), cv.at(0).toInt(),
COMF));
comf));
}
}
path.append(c[0]);
@ -606,7 +620,7 @@ QVector<Coordinates> MapData::lineGeometry(const ISO8211::Record &r,
for (int j = 0; j < vertexes->data().size(); j++) {
const QVector<QVariant> &cv = vertexes->data().at(j);
path.append(coordinates(cv.at(1).toInt(), cv.at(0).toInt(),
COMF));
comf));
}
}
path.append(c[1]);
@ -617,26 +631,26 @@ QVector<Coordinates> MapData::lineGeometry(const ISO8211::Record &r,
}
Polygon MapData::polyGeometry(const ISO8211::Record &r, const RecordMap &vc,
const RecordMap &ve, uint COMF)
const RecordMap &ve, uint comf)
{
Polygon path;
QVector<Coordinates> v;
Coordinates c[2];
uint ORNT, USAG;
uint ornt, usag;
quint8 type;
quint32 id;
const ISO8211::Field *FSPT = ISO8211::field(r, "FSPT");
if (!FSPT || FSPT->data().at(0).size() != 4)
const ISO8211::Field *fspt = ISO8211::field(r, FSPT);
if (!fspt || fspt->data().at(0).size() != 4)
return Polygon();
for (int i = 0; i < FSPT->data().size(); i++) {
if (!parseNAME(FSPT, &type, &id, i) || type != RCNM_VE)
for (int i = 0; i < fspt->data().size(); i++) {
if (!parseNAME(fspt, &type, &id, i) || type != RCNM_VE)
return Polygon();
ORNT = FSPT->data().at(i).at(1).toUInt();
USAG = FSPT->data().at(i).at(2).toUInt();
ornt = fspt->data().at(i).at(1).toUInt();
usag = fspt->data().at(i).at(2).toUInt();
if (USAG == 2 && path.isEmpty()) {
if (usag == 2 && path.isEmpty()) {
path.append(v);
v.clear();
}
@ -644,55 +658,55 @@ Polygon MapData::polyGeometry(const ISO8211::Record &r, const RecordMap &vc,
RecordMapIterator it = ve.find(id);
if (it == ve.constEnd())
return Polygon();
const ISO8211::Record &FRID = it.value();
const ISO8211::Field *VRPT = ISO8211::field(FRID, "VRPT");
if (!VRPT || VRPT->data().size() != 2)
const ISO8211::Record &frid = it.value();
const ISO8211::Field *vrpt = ISO8211::field(frid, VRPT);
if (!vrpt || vrpt->data().size() != 2)
return Polygon();
for (int j = 0; j < 2; j++) {
if (!parseNAME(VRPT, &type, &id, j) || type != RCNM_VC)
if (!parseNAME(vrpt, &type, &id, j) || type != RCNM_VC)
return Polygon();
RecordMapIterator jt = vc.find(id);
if (jt == vc.constEnd())
return Polygon();
c[j] = point(jt.value(), COMF);
c[j] = point(jt.value(), comf);
if (c[j].isNull())
return Polygon();
}
const ISO8211::Field *vertexes = SGXD(FRID);
if (ORNT == 2) {
const ISO8211::Field *vertexes = SGXD(frid);
if (ornt == 2) {
v.append(c[1]);
if (USAG == 3)
if (usag == 3)
v.append(Coordinates());
if (vertexes) {
for (int j = vertexes->data().size() - 1; j >= 0; j--) {
const QVector<QVariant> &cv = vertexes->data().at(j);
v.append(coordinates(cv.at(1).toInt(), cv.at(0).toInt(),
COMF));
comf));
}
}
if (USAG == 3)
if (usag == 3)
v.append(Coordinates());
v.append(c[0]);
} else {
v.append(c[0]);
if (USAG == 3)
if (usag == 3)
v.append(Coordinates());
if (vertexes) {
for (int j = 0; j < vertexes->data().size(); j++) {
const QVector<QVariant> &cv = vertexes->data().at(j);
v.append(coordinates(cv.at(1).toInt(), cv.at(0).toInt(),
COMF));
comf));
}
}
if (USAG == 3)
if (usag == 3)
v.append(Coordinates());
v.append(c[1]);
}
if (USAG == 2 && v.first() == v.last()) {
if (usag == 2 && v.first() == v.last()) {
path.append(v);
v.clear();
}
@ -708,12 +722,12 @@ MapData::Attributes MapData::attributes(const ISO8211::Record &r)
{
Attributes attr;
const ISO8211::Field *ATTF = ISO8211::field(r, "ATTF");
if (!(ATTF && ATTF->data().at(0).size() == 2))
const ISO8211::Field *attf = ISO8211::field(r, ATTF);
if (!(attf && attf->data().at(0).size() == 2))
return attr;
for (int i = 0; i < ATTF->data().size(); i++) {
const QVector<QVariant> &av = ATTF->data().at(i);
for (int i = 0; i < attf->data().size(); i++) {
const QVector<QVariant> &av = attf->data().at(i);
attr.insert(av.at(0).toUInt(), av.at(1).toByteArray());
}
@ -726,64 +740,64 @@ MapData::Point *MapData::pointObject(const Sounding &s)
}
MapData::Point *MapData::pointObject(const ISO8211::Record &r,
const RecordMap &vi, const RecordMap &vc, uint COMF, uint OBJL, uint HUNI)
const RecordMap &vi, const RecordMap &vc, uint comf, uint objl, uint huni)
{
Coordinates c(pointGeometry(r, vi, vc, COMF));
return (c.isNull() ? 0 : new Point(OBJL, c, attributes(r), HUNI));
Coordinates c(pointGeometry(r, vi, vc, comf));
return (c.isNull() ? 0 : new Point(objl, c, attributes(r), huni));
}
MapData::Line *MapData::lineObject(const ISO8211::Record &r,
const RecordMap &vc, const RecordMap &ve, uint COMF, uint OBJL)
const RecordMap &vc, const RecordMap &ve, uint comf, uint objl)
{
QVector<Coordinates> path(lineGeometry(r, vc, ve, COMF));
return (path.isEmpty() ? 0 : new Line(OBJL, path, attributes(r)));
QVector<Coordinates> path(lineGeometry(r, vc, ve, comf));
return (path.isEmpty() ? 0 : new Line(objl, path, attributes(r)));
}
MapData::Poly *MapData::polyObject(const ISO8211::Record &r,
const RecordMap &vc, const RecordMap &ve, uint COMF, uint OBJL, uint HUNI)
const RecordMap &vc, const RecordMap &ve, uint comf, uint objl, uint huni)
{
Polygon path(polyGeometry(r, vc, ve, COMF));
return (path.isEmpty() ? 0 : new Poly(OBJL, path, attributes(r), HUNI));
Polygon path(polyGeometry(r, vc, ve, comf));
return (path.isEmpty() ? 0 : new Poly(objl, path, attributes(r), huni));
}
bool MapData::processRecord(const ISO8211::Record &record,
QVector<ISO8211::Record> &fe, RecordMap &vi, RecordMap &vc, RecordMap &ve,
RecordMap &vf, uint &COMF, uint &SOMF, uint &HUNI)
RecordMap &vf, uint &comf, uint &somf, uint &huni)
{
if (record.size() < 2)
return false;
const ISO8211::Field &f = record.at(1);
const QByteArray &ba = f.tag();
quint32 tag = f.tag();
if (ba == "VRID") {
if (tag == VRID) {
if (f.data().at(0).size() < 2)
return false;
int RCNM = f.data().at(0).at(0).toInt();
uint RCID = f.data().at(0).at(1).toUInt();
int rcnm = f.data().at(0).at(0).toInt();
uint rcid = f.data().at(0).at(1).toUInt();
switch (RCNM) {
switch (rcnm) {
case RCNM_VI:
vi.insert(RCID, record);
vi.insert(rcid, record);
break;
case RCNM_VC:
vc.insert(RCID, record);
vc.insert(rcid, record);
break;
case RCNM_VE:
ve.insert(RCID, record);
ve.insert(rcid, record);
break;
case RCNM_VF:
vf.insert(RCID, record);
vf.insert(rcid, record);
break;
default:
return false;
}
} else if (ba == "FRID") {
} else if (tag == FRID) {
fe.append(record);
} else if (ba == "DSPM") {
if (!(f.subfield("COMF", &COMF) && f.subfield("SOMF", &SOMF)))
} else if (tag == DSPM) {
if (!(f.subfield(COMF, &comf) && f.subfield(SOMF, &somf)))
return false;
if (!f.subfield("HUNI", &HUNI))
if (!f.subfield(HUNI, &huni))
return false;
}
@ -796,7 +810,7 @@ MapData::MapData(const QString &path)
QVector<ISO8211::Record> fe;
ISO8211 ddf(path);
ISO8211::Record record;
uint PRIM, OBJL, COMF = 1, SOMF = 1, HUNI = 1;
uint prim, objl, comf = 1, somf = 1, huni = 1;
Poly *poly;
Line *line;
Point *point;
@ -806,7 +820,7 @@ MapData::MapData(const QString &path)
if (!ddf.readDDR())
return;
while (ddf.readRecord(record))
if (!processRecord(record, fe, vi, vc, ve, vf, COMF, SOMF, HUNI))
if (!processRecord(record, fe, vi, vc, ve, vf, comf, somf, huni))
qWarning("Invalid S-57 record");
for (int i = 0; i < fe.size(); i++) {
@ -815,39 +829,39 @@ MapData::MapData(const QString &path)
if (f.data().at(0).size() < 5)
continue;
PRIM = f.data().at(0).at(2).toUInt();
OBJL = f.data().at(0).at(4).toUInt();
prim = f.data().at(0).at(2).toUInt();
objl = f.data().at(0).at(4).toUInt();
switch (PRIM) {
switch (prim) {
case PRIM_P:
if (OBJL == SOUNDG) {
QVector<Sounding> s(soundingGeometry(r, vi, vc, COMF, SOMF));
if (objl == SOUNDG) {
QVector<Sounding> s(soundingGeometry(r, vi, vc, comf, somf));
for (int i = 0; i < s.size(); i++) {
point = pointObject(s.at(i));
pointBounds(point->pos(), min, max);
_points.Insert(min, max, point);
}
} else {
if ((point = pointObject(r, vi, vc, COMF, OBJL, HUNI))) {
if ((point = pointObject(r, vi, vc, comf, objl, huni))) {
pointBounds(point->pos(), min, max);
_points.Insert(min, max, point);
} else
warning(f, PRIM);
warning(f, prim);
}
break;
case PRIM_L:
if ((line = lineObject(r, vc, ve, COMF, OBJL))) {
if ((line = lineObject(r, vc, ve, comf, objl))) {
rectcBounds(line->bounds(), min, max);
_lines.Insert(min, max, line);
} else
warning(f, PRIM);
warning(f, prim);
break;
case PRIM_A:
if ((poly = polyObject(r, vc, ve, COMF, OBJL, HUNI))) {
if ((poly = polyObject(r, vc, ve, comf, objl, huni))) {
rectcBounds(poly->bounds(), min, max);
_areas.Insert(min, max, poly);
} else
warning(f, PRIM);
warning(f, prim);
break;
}
}

View File

@ -32,28 +32,28 @@ private:
typedef RTree<const Line*, double, 2> LineTree;
typedef RTree<const Point*, double, 2> PointTree;
static QVector<Sounding> soundings(const ISO8211::Record &r, uint COMF,
uint SOMF);
static QVector<Sounding> soundings(const ISO8211::Record &r, uint comf,
uint somf);
static QVector<Sounding> soundingGeometry(const ISO8211::Record &r,
const RecordMap &vi, const RecordMap &vc, uint COMF, uint SOMF);
const RecordMap &vi, const RecordMap &vc, uint comf, uint somf);
static Coordinates pointGeometry(const ISO8211::Record &r,
const RecordMap &vi, const RecordMap &vc, uint COMF);
const RecordMap &vi, const RecordMap &vc, uint comf);
static QVector<Coordinates> lineGeometry(const ISO8211::Record &r,
const RecordMap &vc, const RecordMap &ve, uint COMF);
const RecordMap &vc, const RecordMap &ve, uint comf);
static Polygon polyGeometry(const ISO8211::Record &r, const RecordMap &vc,
const RecordMap &ve, uint COMF);
const RecordMap &ve, uint comf);
static Attributes attributes(const ISO8211::Record &r);
static Point *pointObject(const Sounding &s);
static Point *pointObject(const ISO8211::Record &r, const RecordMap &vi,
const RecordMap &vc, uint COMF, uint OBJL, uint HUNI);
const RecordMap &vc, uint comf, uint objl, uint huni);
static Line *lineObject(const ISO8211::Record &r, const RecordMap &vc,
const RecordMap &ve, uint COMF, uint OBJL);
const RecordMap &ve, uint comf, uint objl);
static Poly *polyObject(const ISO8211::Record &r, const RecordMap &vc,
const RecordMap &ve, uint COMF, uint OBJL, uint HUNI);
const RecordMap &ve, uint comf, uint objl, uint huni);
static bool processRecord(const ISO8211::Record &record,
QVector<ISO8211::Record> &fe, RecordMap &vi, RecordMap &vc, RecordMap &ve,
RecordMap &vf, uint &COMF, uint &SOMF, uint &HUNI);
RecordMap &vf, uint &comf, uint &somf, uint &huni);
PolygonTree _areas;
LineTree _lines;

View File

@ -133,9 +133,7 @@ bool RGNFile::readBuoyInfo(Handle &hdl, quint8 flags, quint32 size,
bool RGNFile::readLightInfo(Handle &hdl, quint8 flags, quint32 size,
MapData::Point *point) const
{
quint16 flags1;
quint8 flags2;
quint32 unused;
quint32 flags1, flags2, unused;
if (!(size >= 3 && readUInt16(hdl, flags1) && readUInt8(hdl, flags2)))
return false;

View File

@ -12,6 +12,14 @@ using namespace ENC;
#define EPSILON 1e-6
#define TILE_SIZE 512
constexpr quint32 CATD = ISO8211::NAME("CATD");
constexpr quint32 IMPL = ISO8211::NAME("IMPL");
constexpr quint32 F1LE = ISO8211::NAME("FILE");
constexpr quint32 SLAT = ISO8211::NAME("SLAT");
constexpr quint32 WLON = ISO8211::NAME("WLON");
constexpr quint32 NLAT = ISO8211::NAME("NLAT");
constexpr quint32 ELON = ISO8211::NAME("ELON");
Range ENCAtlas::zooms(IntendedUsage usage)
{
switch (usage) {
@ -60,35 +68,34 @@ bool ENCAtlas::processRecord(const ISO8211::Record &record, QByteArray &file,
return false;
const ENC::ISO8211::Field &f = record.at(1);
const QByteArray &ba = f.tag();
if (ba == "CATD") {
QByteArray FILE, IMPL;
if (f.tag() == CATD) {
QByteArray impl;
if (!f.subfield("IMPL", &IMPL))
if (!f.subfield(IMPL, &impl))
return false;
if (!f.subfield("FILE", &FILE))
if (!f.subfield(F1LE, &file))
return false;
if (IMPL == "BIN" && FILE.endsWith("000")) {
QByteArray SLAT, WLON, NLAT, ELON;
if (impl == "BIN" && file.endsWith("000")) {
QByteArray slat, wlon, nlat, elon;
if (!f.subfield("SLAT", &SLAT))
if (!f.subfield(SLAT, &slat))
return false;
if (!f.subfield("WLON", &WLON))
if (!f.subfield(WLON, &wlon))
return false;
if (!f.subfield("NLAT", &NLAT))
if (!f.subfield(NLAT, &nlat))
return false;
if (!f.subfield("ELON", &ELON))
if (!f.subfield(ELON, &elon))
return false;
bool ok1, ok2, ok3, ok4;
bounds = RectC(Coordinates(WLON.toDouble(&ok1), NLAT.toDouble(&ok2)),
Coordinates(ELON.toDouble(&ok3), SLAT.toDouble(&ok4)));
bounds = RectC(Coordinates(wlon.toDouble(&ok1), nlat.toDouble(&ok2)),
Coordinates(elon.toDouble(&ok3), slat.toDouble(&ok4)));
if (!(ok1 && ok2 && ok3 && ok4))
return false;
file = FILE.replace('\\', '/');
file.replace('\\', '/');
return true;
}

View File

@ -15,6 +15,14 @@ using namespace ENC;
#define EPSILON 1e-6
#define TILE_SIZE 512
constexpr quint32 SG2D = ISO8211::NAME("SG2D");
constexpr quint32 SG3D = ISO8211::NAME("SG3D");
constexpr quint32 VRID = ISO8211::NAME("VRID");
constexpr quint32 DSID = ISO8211::NAME("DSID");
constexpr quint32 DSNM = ISO8211::NAME("DSNM");
constexpr quint32 DSPM = ISO8211::NAME("DSPM");
constexpr quint32 COMF = ISO8211::NAME("COMF");
static Range zooms(const RectC &bounds)
{
double size = qMin(bounds.width(), bounds.height());
@ -57,9 +65,9 @@ static const ISO8211::Field *SGXD(const ISO8211::Record &r)
{
const ISO8211::Field *f;
if ((f = ISO8211::field(r, "SG2D")))
if ((f = ISO8211::field(r, SG2D)))
return f;
else if ((f = ISO8211::field(r, "SG3D")))
else if ((f = ISO8211::field(r, SG3D)))
return f;
else
return 0;
@ -97,23 +105,21 @@ bool ENCMap::bounds(const QVector<ISO8211::Record> &gv, Rect &b)
}
bool ENCMap::processRecord(const ISO8211::Record &record,
QVector<ISO8211::Record> &rv, uint &COMF, QString &name)
QVector<ISO8211::Record> &rv, uint &comf, QByteArray &dsnm)
{
if (record.size() < 2)
return false;
const ISO8211::Field &f = record.at(1);
const QByteArray &ba = f.tag();
quint32 tag = f.tag();
if (ba == "VRID") {
if (tag == VRID) {
rv.append(record);
} else if (ba == "DSID") {
QByteArray DSNM;
if (!f.subfield("DSNM", &DSNM))
} else if (tag == DSID) {
if (!f.subfield(DSNM, &dsnm))
return false;
name = DSNM;
} else if (ba == "DSPM") {
if (!f.subfield("COMF", &COMF))
} else if (tag == DSPM) {
if (!f.subfield(COMF, &comf))
return false;
}
@ -127,14 +133,15 @@ ENCMap::ENCMap(const QString &fileName, QObject *parent)
QVector<ISO8211::Record> gv;
ISO8211 ddf(fileName);
ISO8211::Record record;
uint COMF = 1;
uint comf = 1;
QByteArray dsnm;
if (!ddf.readDDR()) {
_errorString = ddf.errorString();
return;
}
while (ddf.readRecord(record)) {
if (!processRecord(record, gv, COMF, _name)) {
if (!processRecord(record, gv, comf, dsnm)) {
_errorString = "Invalid S-57 record";
return;
}
@ -144,13 +151,15 @@ ENCMap::ENCMap(const QString &fileName, QObject *parent)
return;
}
_name = dsnm;
Rect b;
if (!bounds(gv, b)) {
_errorString = "Error fetching geometries bounds";
return;
}
Coordinates tl(b.minX() / (double)COMF, b.maxY() / (double)COMF);
Coordinates br(b.maxX() / (double)COMF, b.minY() / (double)COMF);
Coordinates tl(b.minX() / (double)comf, b.maxY() / (double)comf);
Coordinates br(b.maxX() / (double)comf, b.minY() / (double)comf);
_llBounds = RectC(tl, br);
if (!_llBounds.isValid()) {
_errorString = "Invalid geometries bounds";

View File

@ -97,7 +97,7 @@ private:
static bool bounds(const ENC::ISO8211::Record &record, Rect &rect);
static bool bounds(const QVector<ENC::ISO8211::Record> &gv, Rect &b);
static bool processRecord(const ENC::ISO8211::Record &record,
QVector<ENC::ISO8211::Record> &rv, uint &COMF, QString &name);
QVector<ENC::ISO8211::Record> &rv, uint &comf, QByteArray &dsnm);
QString _name;
ENC::MapData *_data;

View File

@ -188,7 +188,7 @@ void RasterTile::processLineLabels(const QVector<PainterPath> &paths,
if (l.ti) {
limit = (l.ti->key() == ID_ELE || l.ti->key() == ID_REF
|| (!l.si && l.ti->shield()));
if (limit && set.contains(*l.lbl))
if (limit && l.lbl && set.contains(*l.lbl))
continue;
}
@ -214,7 +214,7 @@ void RasterTile::processLineLabels(const QVector<PainterPath> &paths,
color, hColor, rotate);
if (item->isValid() && !item->collides(textItems)) {
textItems.append(item);
if (limit)
if (limit && l.lbl)
set.insert(*l.lbl);
} else {
delete item;

View File

@ -116,13 +116,15 @@ QSet<QString> Style::Menu::cats() const
}
Style::Rule::Filter::Filter(const MapData &data, const QList<QByteArray> &keys,
const QList<QByteArray> &vals) : _neg(false)
const QList<QByteArray> &vals) : _neg(false), _excl(false)
{
_keys = keyList(data, keys);
QList<QByteArray> vc(vals);
if (vc.removeAll("~"))
_neg = true;
if (vc.removeAll("-"))
_excl = true;
_vals = valList(vc);
}

View File

@ -38,7 +38,7 @@ public:
class Filter {
public:
Filter() : _neg(false) {}
Filter() : _neg(false), _excl(false) {}
Filter(const MapData &data, const QList<QByteArray> &keys,
const QList<QByteArray> &vals);
@ -47,14 +47,15 @@ public:
if (_neg) {
if (!keyMatches(tags))
return true;
return valueMatches(tags);
return valueMatches(tags) ^ _excl;
} else
return (keyMatches(tags) && valueMatches(tags));
return (keyMatches(tags) && (valueMatches(tags) ^ _excl));
}
bool isTautology() const
{
return (!_neg && _keys.contains(0u) && _vals.contains(QByteArray()));
return (!_neg && !_excl && _keys.contains(0u)
&& _vals.contains(QByteArray()));
}
private:
@ -86,7 +87,7 @@ public:
QList<unsigned> _keys;
QList<QByteArray> _vals;
bool _neg;
bool _neg, _excl;
};
void setType(Type type)