[qmapshack] 01/05: Imported Upstream version 1.6.1

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Thu Mar 24 20:48:14 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository qmapshack.

commit 125f98c9eb8cba08f56a92f27ab73188d5794d87
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Mar 24 20:11:37 2016 +0100

    Imported Upstream version 1.6.1
---
 CMakeLists.txt                                     |    5 +-
 CMakeLists.txt.user                                |    4 +-
 MacOSX/HowtoBuildOSX.txt                           |    6 +-
 MacOSX/build-routino.sh                            |    1 +
 MacOSX/bundle.sh                                   |   15 +-
 MacOSX/env-path.sh                                 |    1 +
 README.md                                          |    4 +-
 call_Uncrustify.cfg                                |    9 +-
 changelog.txt                                      |   17 +-
 features.txt                                       |    2 +-
 {nsi => msvc_64}/3rdparty.txt                      |   11 +-
 {nsi => msvc_64}/Help.ico                          |  Bin
 {nsi => msvc_64}/MUI_HEADERIMAGE.bmp               |  Bin
 {nsi => msvc_64}/MUI_WELCOMEFINISHPAGE.bmp         |  Bin
 {nsi => msvc_64}/QMapShack.ico                     |  Bin
 {nsi => msvc_64}/QMapShack_Installer.nsi           |    8 +-
 {nsi => msvc_64}/build_routino.bat                 |    0
 {nsi => msvc_64}/copyfiles.bat                     |   24 +-
 {nsi => msvc_64}/gdalicon.ico                      |  Bin
 {nsi => msvc_64}/kfm_home.ico                      |  Bin
 nsi/HOWTO-BUILD.txt                                |  169 --
 nsi/QMapShack_Installer32.nsi                      |  266 ---
 nsi/copyfiles32.bat                                |   92 -
 qmapshack.1                                        |    2 +-
 src/CMainWindow.cpp                                |   39 +-
 src/CMainWindow.h                                  |    1 +
 src/CMakeLists.txt                                 |   39 +-
 src/GeoMath.cpp                                    |   80 +-
 src/GeoMath.h                                      |   33 +-
 src/IMainWindow.ui                                 |   15 +-
 src/canvas/CCanvas.cpp                             |  140 +-
 src/canvas/CCanvas.h                               |   32 +-
 src/canvas/IDrawContext.cpp                        |  175 +-
 src/canvas/IDrawContext.h                          |  105 +-
 src/cursors/cursorSelectArea.png                   |  Bin 0 -> 1209 bytes
 src/dem/CDemDraw.cpp                               |   10 +-
 src/dem/CDemList.cpp                               |    2 +-
 src/dem/CDemPathSetup.cpp                          |    2 +-
 src/dem/IDem.cpp                                   |   51 +-
 src/dem/IDem.h                                     |    4 +-
 src/dem/IDemList.ui                                |    2 +-
 src/device/CDeviceGarmin.cpp                       |   12 +-
 src/device/CDeviceGarminArchive.cpp                |    2 +-
 src/device/CDeviceTwoNav.cpp                       |    6 +-
 src/device/CDeviceWatcherLinux.cpp                 |    6 +-
 src/device/CDeviceWatcherMac.cpp                   |    4 +-
 src/device/CDeviceWatcherWindows.cpp               |  148 +-
 src/device/IDevice.cpp                             |   40 +
 src/device/IDevice.h                               |    2 +
 src/gis/CGisListDB.cpp                             |   14 +-
 src/gis/CGisListWks.cpp                            |  144 +-
 src/gis/CGisWidget.cpp                             |  211 +-
 src/gis/CGisWidget.h                               |   43 +-
 src/gis/IGisItem.cpp                               |   45 +-
 src/gis/IGisItem.h                                 |   22 +-
 src/gis/IGisLine.cpp                               |    6 +-
 src/gis/WptIcons.cpp                               |    9 +-
 src/gis/db/CDBProject.cpp                          |   14 +-
 src/gis/db/CSelectDBFolder.cpp                     |    2 +-
 src/gis/db/IDBFolderSql.cpp                        |    6 +-
 src/gis/db/IDBSqlite.cpp                           |    8 +-
 src/gis/fit/CFitProject.cpp                        |   85 +-
 src/gis/fit/CFitProject.h                          |    5 +-
 src/gis/fit/CFitStream.cpp                         |    6 +-
 src/gis/fit/CFitStream.h                           |    6 +-
 src/gis/fit/decoder/CFitByteDataTransformer.cpp    |    8 +-
 src/gis/fit/decoder/CFitCrcState.h                 |    2 +-
 src/gis/fit/decoder/CFitDefinitionMessage.cpp      |   23 +-
 src/gis/fit/decoder/CFitDefinitionMessage.h        |    9 +-
 src/gis/fit/decoder/CFitFieldDataState.cpp         |    2 +-
 src/gis/fit/decoder/CFitFieldDataState.h           |    2 +-
 src/gis/fit/decoder/CFitFieldDefinitionState.cpp   |    5 -
 src/gis/fit/decoder/CFitFieldDefinitionState.h     |    2 +-
 src/gis/fit/decoder/CFitHeaderState.cpp            |   13 +-
 src/gis/fit/decoder/CFitHeaderState.h              |    2 +-
 src/gis/fit/decoder/CFitMessage.cpp                |   14 +-
 src/gis/fit/decoder/CFitMessage.h                  |    7 +-
 src/gis/fit/decoder/CFitRecordContentState.cpp     |    2 +-
 src/gis/fit/decoder/CFitRecordContentState.h       |    2 +-
 src/gis/fit/decoder/CFitRecordHeaderState.cpp      |    4 +-
 src/gis/fit/decoder/CFitRecordHeaderState.h        |    2 +-
 src/gis/fit/decoder/IFitDecoderState.cpp           |   24 +-
 src/gis/fit/decoder/IFitDecoderState.h             |   12 +-
 src/gis/fit/defs/fit_const.h                       |    6 +-
 src/gis/fit/serialization.cpp                      |  210 +-
 src/gis/gpx/CGpxProject.h                          |    2 +-
 src/gis/gpx/serialization.cpp                      |   21 +-
 src/gis/ovl/CDetailsOvlArea.cpp                    |    2 +-
 src/gis/ovl/CGisItemOvlArea.cpp                    |   15 +-
 src/gis/ovl/CGisItemOvlArea.h                      |    1 +
 src/gis/ovl/CScrOptOvlArea.cpp                     |    3 +-
 src/gis/prj/CDetailsPrj.cpp                        |   24 +-
 src/gis/prj/IGisProject.cpp                        |   47 +-
 src/gis/prj/IGisProject.h                          |    3 +
 src/gis/qms/CQmsProject.cpp                        |    6 +-
 src/gis/qms/CQmsProject.h                          |    2 +-
 src/gis/rte/CCreateRouteFromWpt.cpp                |    2 +-
 src/gis/rte/CDetailsRte.cpp                        |    8 +-
 src/gis/rte/CGisItemRte.cpp                        |   32 +-
 src/gis/rte/CGisItemRte.h                          |    1 +
 src/gis/rte/CScrOptRte.cpp                         |    4 +-
 src/gis/rte/router/CRouterMapQuest.cpp             |    2 +-
 src/gis/rte/router/CRouterRoutino.cpp              |   24 +-
 src/gis/rte/router/CRouterRoutinoPathSetup.cpp     |    2 +-
 src/gis/rte/router/IRouterRoutino.ui               |    2 +-
 src/gis/slf/CSlfProject.cpp                        |    4 -
 src/gis/slf/CSlfProject.h                          |    2 +-
 src/gis/slf/CSlfReader.cpp                         |   78 +-
 src/gis/slf/CSlfReader.h                           |   24 +-
 src/gis/tnv/CTwoNavProject.cpp                     |    8 +-
 src/gis/tnv/serialization.cpp                      |   12 +-
 src/gis/trk/CActivityTrk.cpp                       |   28 +-
 src/gis/trk/CCombineTrk.cpp                        |   80 +-
 src/gis/trk/CCombineTrk.h                          |   13 +-
 src/gis/trk/CDetailsTrk.cpp                        |   18 +-
 src/gis/trk/CGisItemTrk.cpp                        |  795 +++-----
 src/gis/trk/CGisItemTrk.h                          |  324 ++-
 src/gis/trk/CKnownExtension.cpp                    |   16 +-
 src/gis/trk/CKnownExtension.h                      |    6 +-
 src/gis/trk/CPropertyTrk.cpp                       |   29 +-
 src/gis/trk/CPropertyTrk.h                         |   53 +-
 src/gis/trk/CScrOptTrk.cpp                         |   10 +-
 src/gis/trk/filter/CFilterDelete.cpp               |    4 -
 src/gis/trk/filter/CFilterDelete.h                 |    2 +-
 src/gis/trk/filter/CFilterDeleteExtension.cpp      |    6 +-
 src/gis/trk/filter/CFilterDeleteExtension.h        |    2 +-
 src/gis/trk/filter/CFilterInvalid.cpp              |    4 -
 src/gis/trk/filter/CFilterInvalid.h                |    2 +-
 src/gis/trk/filter/CFilterNewDate.cpp              |    5 -
 src/gis/trk/filter/CFilterNewDate.h                |    2 +-
 src/gis/trk/filter/CFilterReplaceElevation.cpp     |    4 -
 src/gis/trk/filter/CFilterReplaceElevation.h       |    2 +-
 src/gis/trk/filter/CFilterReset.cpp                |    4 -
 src/gis/trk/filter/CFilterReset.h                  |    2 +-
 src/gis/trk/filter/CFilterSplitSegment.cpp         |    4 -
 src/gis/trk/filter/CFilterSplitSegment.h           |    2 +-
 src/gis/trk/filter/filter.cpp                      |    6 +-
 src/gis/wpt/CDetailsGeoCache.cpp                   |   13 +-
 src/gis/wpt/CGisItemWpt.cpp                        |   10 +-
 src/gis/wpt/CGisItemWpt.h                          |    1 +
 src/gis/wpt/CScrOptWpt.cpp                         |    3 +-
 src/grid/CGrid.cpp                                 |   38 +-
 src/grid/CGrid.h                                   |    4 +-
 src/grid/CProjWizard.cpp                           |   10 +-
 src/grid/IProjWizard.ui                            |    4 +-
 src/helpers/CAppSetup.cpp                          |  342 ----
 src/helpers/CAppSetup.h                            |   92 -
 src/helpers/CFileExt.h                             |    2 +-
 src/helpers/CLimit.cpp                             |    2 +-
 src/helpers/CLinksDialog.cpp                       |    2 +-
 src/helpers/CSettings.h                            |    2 +-
 src/helpers/CValue.cpp                             |    2 +-
 src/helpers/CValue.h                               |    2 +-
 src/helpers/CWptIconDialog.cpp                     |    7 +-
 src/helpers/Signals.h                              |    4 +-
 src/icons/32x32/Area.png                           |  Bin 1105 -> 1772 bytes
 src/icons/32x32/SelectArea.png                     |  Bin 0 -> 290 bytes
 src/icons/32x32/SelectExactArea.png                |  Bin 0 -> 686 bytes
 src/icons/32x32/SelectIntersectArea.png            |  Bin 0 -> 779 bytes
 src/icons/32x32/Track.png                          |  Bin 790 -> 1052 bytes
 src/icons/48x48/Area.png                           |  Bin 1823 -> 2854 bytes
 src/icons/48x48/SelectArea.png                     |  Bin 0 -> 428 bytes
 src/icons/48x48/SelectExactArea.png                |  Bin 0 -> 849 bytes
 src/icons/48x48/SelectIntersectArea.png            |  Bin 0 -> 1133 bytes
 src/icons/48x48/Track.png                          |  Bin 1174 -> 1613 bytes
 src/icons/Area.svg                                 |   30 +-
 src/icons/SelectArea.svg                           |  152 ++
 src/icons/SelectExactArea.svg                      |  164 ++
 src/icons/SelectIntersectArea.svg                  |  164 ++
 src/icons/Track.svg                                |   61 +-
 src/locale/qmapshack.ts                            | 1373 +++++++------
 src/locale/qmapshack_cs.ts                         | 2082 ++++++++++++--------
 src/locale/qmapshack_de.ts                         | 1264 +++++++-----
 src/locale/qmapshack_es.ts                         | 1409 ++++++++-----
 src/locale/qmapshack_fr.ts                         | 1417 ++++++++-----
 src/locale/qmapshack_nl.ts                         | 1429 +++++++++-----
 src/main.cpp                                       |   18 +-
 src/map/CMapDraw.cpp                               |   27 +-
 src/map/CMapGEMF.cpp                               |  134 +-
 src/map/CMapGEMF.h                                 |    5 +-
 src/map/CMapIMG.cpp                                |  923 +++------
 src/map/CMapIMG.h                                  |  128 +-
 src/map/CMapJNX.cpp                                |    2 +-
 src/map/CMapPathSetup.cpp                          |    2 +-
 src/map/CMapRMAP.cpp                               |    2 +-
 src/map/CMapTMS.cpp                                |    8 +-
 src/map/CMapVRT.cpp                                |    1 -
 src/map/CMapWMTS.cpp                               |   10 +-
 src/map/IMap.cpp                                   |    6 +-
 src/map/IMap.h                                     |    6 +-
 src/map/IMapList.ui                                |    2 +-
 src/map/cache/CDiskCache.cpp                       |    6 +-
 src/map/garmin/CGarminPoint.cpp                    |   62 +-
 src/map/garmin/CGarminPoint.h                      |    7 +
 src/map/garmin/CGarminPolygon.cpp                  |   37 +-
 src/map/garmin/CGarminPolygon.h                    |   41 +-
 src/mouse/CMouseDummy.cpp                          |    2 +-
 src/mouse/CMouseEditArea.cpp                       |    2 +-
 src/mouse/CMouseEditArea.h                         |    2 +-
 src/mouse/CMouseEditRte.cpp                        |    2 +-
 src/mouse/CMouseEditRte.h                          |    3 +-
 src/mouse/CMouseEditTrk.cpp                        |   12 +-
 src/mouse/CMouseEditTrk.h                          |    2 +-
 src/mouse/CMouseMoveWpt.cpp                        |   32 +-
 src/mouse/CMouseNormal.cpp                         |   56 +-
 src/mouse/CMouseNormal.h                           |   15 +-
 src/mouse/CMousePrint.cpp                          |  295 +--
 src/mouse/CMousePrint.h                            |   49 +-
 src/mouse/CMouseRangeTrk.h                         |    2 +-
 src/mouse/CMouseSelect.cpp                         |  155 ++
 src/mouse/{CMouseWptBubble.h => CMouseSelect.h}    |   49 +-
 src/mouse/CMouseWptBubble.cpp                      |    6 +-
 src/mouse/CMouseWptBubble.h                        |    1 -
 src/mouse/{CMouseDummy.cpp => CScrOptPrint.cpp}    |   16 +-
 src/{units/CUnitsSetup.h => mouse/CScrOptPrint.h}  |   24 +-
 src/mouse/CScrOptSelect.cpp                        |  142 ++
 .../CScrOptSelect.h}                               |   36 +-
 src/mouse/CScrOptUnclutter.cpp                     |    6 +-
 src/mouse/IMouse.h                                 |    7 -
 src/mouse/{CMousePrint.cpp => IMouseSelect.cpp}    |  112 +-
 src/mouse/{CMousePrint.h => IMouseSelect.h}        |   35 +-
 src/mouse/IScrOpt.cpp                              |    2 -
 src/mouse/IScrOpt.h                                |    4 +-
 src/mouse/IScrOptPrint.ui                          |   78 +
 src/mouse/IScrOptSelect.ui                         |  372 ++++
 src/mouse/line/CLineOpAddPoint.cpp                 |    6 +-
 src/mouse/line/CLineOpDeletePoint.cpp              |    7 +-
 src/mouse/line/CLineOpDeletePoint.h                |    4 +-
 src/mouse/line/CLineOpSelectRange.cpp              |   12 +-
 src/mouse/line/ILineOp.cpp                         |   81 +-
 src/mouse/line/ILineOp.h                           |   17 +-
 src/mouse/line/IMouseEditLine.cpp                  |   52 +-
 src/mouse/line/IMouseEditLine.h                    |   17 +-
 src/plot/CPlot.cpp                                 |   44 +-
 src/plot/CPlot.h                                   |    3 +-
 src/plot/CPlotAxis.cpp                             |   17 +-
 src/plot/CPlotAxis.h                               |   11 +-
 src/plot/CPlotProfile.cpp                          |   21 +-
 src/plot/IPlot.cpp                                 |   67 +-
 src/plot/IPlot.h                                   |    9 +-
 src/plot/ITrack.cpp                                |   16 +-
 src/plot/ITrack.h                                  |    6 +-
 src/print/CPrintDialog.cpp                         |    2 +-
 src/qlgt/CQlgtDb.cpp                               |    6 +-
 src/qlgt/CQlgtDiary.cpp                            |    6 +-
 src/qlgt/CQlgtFolder.cpp                           |    2 +-
 src/qlgt/CQlgtTrack.cpp                            |    4 +-
 src/qlgt/CQlgtTrack.h                              |    4 +-
 src/qlgt/CQlgtWpt.cpp                              |    2 +-
 src/qlgt/CQmsDb.cpp                                |    2 +-
 src/qlgt/converter.cpp                             |   15 +-
 src/resources.qrc                                  |    7 +
 src/{helpers => setup}/CAppOpts.h                  |    0
 src/setup/CAppSetupLinux.cpp                       |   68 +
 .../CFitCrcState.h => setup/CAppSetupLinux.h}      |   23 +-
 src/setup/CAppSetupMac.cpp                         |  144 ++
 .../CFitHeaderState.h => setup/CAppSetupMac.h}     |   29 +-
 src/setup/CAppSetupWin.cpp                         |   73 +
 .../CFitCrcState.h => setup/CAppSetupWin.h}        |   22 +-
 src/{helpers => setup}/CCommandProcessor.cpp       |   10 +-
 src/{helpers => setup}/CCommandProcessor.h         |    5 +-
 src/setup/CLogHandler.cpp                          |  121 ++
 .../CLogHandler.h}                                 |   32 +-
 src/setup/IAppSetup.cpp                            |  125 ++
 .../CCommandProcessor.h => setup/IAppSetup.h}      |   27 +-
 src/test/CGisItemTrk.cpp                           |   56 +
 src/test/CGpxProject.cpp                           |   52 +-
 src/test/CKnownExtension.cpp                       |   95 +
 .../CQmsProject.cpp}                               |   47 +-
 src/test/CSlfReader.cpp                            |   46 +-
 src/test/TestHelper.cpp                            |  159 ++
 src/test/TestHelper.h                              |   90 +
 src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx   |  117 ++
 .../input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx.xml    |   25 +
 src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx      |  117 ++
 src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx.xml  |   25 +
 src/test/input/{ => gpx}/qtt_gpx_file0.gpx         |    0
 src/test/input/gpx/qtt_gpx_file0.gpx.xml           |   23 +
 src/test/input/qms/V1.6.0_file1.qms                |  Bin 0 -> 8012 bytes
 src/test/input/qms/V1.6.0_file1.qms.xml            |   26 +
 src/test/input/qms/V1.6.0_file2.qms                |  Bin 0 -> 6168 bytes
 src/test/input/qms/V1.6.0_file2.qms.xml            |   26 +
 src/test/input/qtt_gpx_file0.gpx.xml               |   23 -
 src/test/input/qtt_slf_file0.slf.xml               |   27 -
 src/test/input/{ => slf}/qtt_slf_file0.slf         |    0
 src/test/input/slf/qtt_slf_file0.slf.xml           |   27 +
 src/test/main.cpp                                  |  272 +--
 src/test/test_QMapShack.h                          |   58 +-
 src/tool/CMapVrtBuilder.cpp                        |    5 +-
 src/tool/CRoutinoDatabaseBuilder.cpp               |    8 +-
 src/units/CCoordFormatSetup.cpp                    |    3 +-
 src/units/CUnitImperial.cpp                        |   44 +-
 src/units/CUnitImperial.h                          |   10 +-
 src/units/CUnitMetric.cpp                          |   19 +-
 src/units/CUnitMetric.h                            |    7 +-
 src/units/CUnitNautic.cpp                          |   11 +-
 src/units/CUnitNautic.h                            |    5 +-
 src/units/CUnitsSetup.cpp                          |    4 -
 src/units/CUnitsSetup.h                            |    2 +-
 src/units/IUnit.cpp                                |   30 +-
 src/units/IUnit.h                                  |   30 +-
 src/widgets/CHistoryListWidget.cpp                 |    2 +-
 src/widgets/CPhotoAlbum.cpp                        |    4 +-
 303 files changed, 11623 insertions(+), 8339 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index cae108c..0565c54 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,10 +13,9 @@ if (COMMAND CMAKE_POLICY)
 endif()
 
 if(WIN32)
-set(QT_DEV_PATH   "C:\\Qt\\5.4\\msvc2013_64" CACHE PATH "Path to directory containing Qt5 include and lib, e.g. C:\\Qt5\\5.3\\msvc2013_64")
+set(QT_DEV_PATH   "C:\\Qt5\\5.5\\msvc2013_64" CACHE PATH "Path to directory containing Qt5 include and lib, e.g. C:\\Qt5\\5.5\\msvc2013_64")
 set(GDAL_DEV_PATH "C:\\GDAL" CACHE PATH "Path to directory containing GDAL include and lib, e.g. M:\\lib\\gdal")
 set(PROJ_DEV_PATH "C:\\PROJ" CACHE PATH "Path to directory containing PROJ.4 include and lib, e.g. M:\\lib\\PROJ")
-set(ZLIB_DEV_PATH "C:\\zlib" CACHE PATH "Path to directory containing zlib include and lib, e.g. M:\\lib\\zlib")
 set(ROUTINO_DEV_PATH "C:\\temp\\routino" CACHE PATH "Path to directory containing zlib include and lib, e.g. M:\\lib\\zlib")
 set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_DEV_PATH})
 endif(WIN32)
@@ -26,7 +25,7 @@ set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "1")
 set(APPLICATION_VERSION_MINOR "6")
-set(APPLICATION_VERSION_PATCH "0")
+set(APPLICATION_VERSION_PATCH "1")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index 19abeef..881c0a4 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.6.0, 2016-02-22T13:02:45. -->
+<!-- Written by QtCreator 3.6.0, 2016-03-24T13:27:15. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -162,7 +162,7 @@
      <value type="int">14</value>
     </valuelist>
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
     <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory">/home/oeichler/Code/cpp/build_QMapShack/</value>
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
diff --git a/MacOSX/HowtoBuildOSX.txt b/MacOSX/HowtoBuildOSX.txt
index 8dc27dc..ff2649f 100644
--- a/MacOSX/HowtoBuildOSX.txt
+++ b/MacOSX/HowtoBuildOSX.txt
@@ -49,7 +49,7 @@ variables in advanced:
 ROUTINO_LIB_DIR=... (absolute path to directory where the build library and other files will be stored)
 ROUTINO_SRC_DIR=... (absolute path to directory where the source code will be checked out)
 
-the call the script:
+Now call the script:
 
 ./build-routino.sh routino-build
 
@@ -86,8 +86,8 @@ PROJ_DIR=...          (absolute path to the proj4 library base package)
 ROUTINO_LIB_DIR=..    (absolute path to the routino library base package, same as ROUTINO_LIB_DIR / ROUTINO_DEV_PATH)
 BUILD_DIR=..          (absolute path to the QMapShack build directory, the created directory "build_QMapShack" for the cmake build)
 QMS_SRC_DIR=...       (absolute path to the QMapShack source, the directory "QMapShack" used by cmake)
-BUILD_BIN_DIR=...     (absolute path to the direcotry with the qmapshack binary, typically build_QMapShack/bin for cmake build; depends on IDE)
-BUILD_RELEASE_DIR=... (absolute path to the direcotry where the application bundle should be placed)
+BUILD_BIN_DIR=...     (absolute path to the directory with the qmapshack binary, typically build_QMapShack/bin for cmake build; depends on IDE)
+BUILD_RELEASE_DIR=... (absolute path to the directory where the application bundle should be placed)
 
 ./bundle.sh bundle
 
diff --git a/MacOSX/build-routino.sh b/MacOSX/build-routino.sh
index ead034c..eebd0ab 100644
--- a/MacOSX/build-routino.sh
+++ b/MacOSX/build-routino.sh
@@ -77,6 +77,7 @@ function releaseRoutino {
     cp $ROUTINO_SRC_DIR/xml/routino-profiles.xml      $ROUTINO_LIB_XML_DIR
     cp $ROUTINO_SRC_DIR/xml/routino-tagging.xml       $ROUTINO_LIB_XML_DIR
     cp $ROUTINO_SRC_DIR/xml/routino-translations.xml  $ROUTINO_LIB_XML_DIR
+    cp $ROUTINO_SRC_DIR/src/planetsplitter            $ROUTINO_LIB_LIB_DIR
     
     cp $ROUTINO_LIB_LIB_DIR/libroutino.so             $ROUTINO_LIB_LIB_DIR/routino
     cp $ROUTINO_LIB_LIB_DIR/libroutino.so             $ROUTINO_LIB_LIB_DIR/routino.so
diff --git a/MacOSX/bundle.sh b/MacOSX/bundle.sh
index b3cd17b..8583a2d 100755
--- a/MacOSX/bundle.sh
+++ b/MacOSX/bundle.sh
@@ -59,6 +59,7 @@ function buildAppStructure {
     mkdir $BUILD_BUNDLE_RES_GDAL_DIR
     mkdir $BUILD_BUNDLE_RES_PROJ_DIR
     mkdir $BUILD_BUNDLE_RES_ROUTINO_DIR
+    mkdir $BUILD_BUNDLE_RES_BIN_DIR
     cp $BUILD_BIN_DIR/*.qm $BUILD_BUNDLE_RES_QM_DIR
 }
 
@@ -96,12 +97,14 @@ function adjustLinking {
     for F in `find $BUILD_BUNDLE_FRW_DIR/Qt*.framework/Versions/5 -type f -maxdepth 1` 
     do 
         adjustLinkQt $F "Qt"
+        adjustLinkQt $F "libdbus"
     done
 
     for F in `find $BUILD_BUNDLE_FRW_DIR -type f -type f \( -iname "*.dylib" -o -iname "*.so" \)` 
     do 
         adjustLinkQt $F "Qt"
         adjustLinkQt $F "libroutino"
+        adjustLinkQt $F "libdbus"
     done
 
     adjustLinkQt $BUILD_BUNDLE_APP_FILE "Qt"
@@ -170,16 +173,24 @@ function copyAdditionalLibraries {
 }
 
 function copyExternalFiles {
+    cp $QT_DIR/translations/*_cs.qm $BUILD_BUNDLE_RES_QM_DIR
     cp $QT_DIR/translations/*_de.qm $BUILD_BUNDLE_RES_QM_DIR
+    cp $QT_DIR/translations/*_en.qm $BUILD_BUNDLE_RES_QM_DIR
+    cp $QT_DIR/translations/*_es.qm $BUILD_BUNDLE_RES_QM_DIR
     cp $QT_DIR/translations/*_fr.qm $BUILD_BUNDLE_RES_QM_DIR
-    cp $QT_DIR/translations/*_cs.qm $BUILD_BUNDLE_RES_QM_DIR
-    
+    cp $QT_DIR/translations/*_nl.qm $BUILD_BUNDLE_RES_QM_DIR
+
     cp $GDAL_DIR/share/gdal/* $BUILD_BUNDLE_RES_GDAL_DIR
     cp $PROJ_DIR/share/proj/* $BUILD_BUNDLE_RES_PROJ_DIR
     
     cp $ROUTINO_LIB_XML_DIR/profiles.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
     cp $ROUTINO_LIB_XML_DIR/translations.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
     cp $ROUTINO_LIB_XML_DIR/tagging.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
+
+    # at least gdalbuildvrt is used
+    cp $GDAL_DIR/bin/*  $BUILD_BUNDLE_RES_BIN_DIR
+    cp $PROJ_DIR/bin/proj  $BUILD_BUNDLE_RES_BIN_DIR
+    cp $ROUTINO_LIB_LIB_DIR/planetsplitter $BUILD_BUNDLE_RES_BIN_DIR
 }
 
 
diff --git a/MacOSX/env-path.sh b/MacOSX/env-path.sh
index aa0a781..e242745 100644
--- a/MacOSX/env-path.sh
+++ b/MacOSX/env-path.sh
@@ -45,6 +45,7 @@ BUILD_BUNDLE_RES_QM_DIR=$BUILD_BUNDLE_RES_DIR/translations
 BUILD_BUNDLE_RES_GDAL_DIR=$BUILD_BUNDLE_RES_DIR/gdal
 BUILD_BUNDLE_RES_PROJ_DIR=$BUILD_BUNDLE_RES_DIR/proj
 BUILD_BUNDLE_RES_ROUTINO_DIR=$BUILD_BUNDLE_RES_DIR/routino
+BUILD_BUNDLE_RES_BIN_DIR=$BUILD_BUNDLE_RES_DIR/bin
 
 ROUTINO_LIB_LIB_DIR=$ROUTINO_LIB_DIR/lib
 ROUTINO_LIB_H_DIR=$ROUTINO_LIB_DIR/include
diff --git a/README.md b/README.md
index bfaffdb..0c6d8ab 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-You need a working mercurial, g++, cmake and QT5 installation to compile QMapShack on your computer. Clone and compile the code base by:
+You need a working mercurial, g++, cmake and QT5 (at least 5.4) installation to compile QMapShack on your computer. Clone and compile the code base by:
 
         hg clone https://bitbucket.org/maproom/qmapshack QMapShack
         mkdir build_QMapShack
@@ -25,4 +25,4 @@ Next to QT5 you will need the development packages of:
 * GDAL
 * Routino
 
-If you want to compile QMapShack for Windows have a look at nsi/3rdparty.txt and nsi/HOWTO-BUILD.txt in the source tree.
\ No newline at end of file
+If you want to compile QMapShack for Windows have a look [at the wiki](https://bitbucket.org/maproom/qmapshack/wiki/BuildWindowsVisualStudio).
\ No newline at end of file
diff --git a/call_Uncrustify.cfg b/call_Uncrustify.cfg
index 6ae3d5d..6ec12b6 100644
--- a/call_Uncrustify.cfg
+++ b/call_Uncrustify.cfg
@@ -1,3 +1,4 @@
+newlines=lf
 tok_split_gte=false
 utf8_byte=false
 utf8_force=false
@@ -84,12 +85,12 @@ eat_blanks_before_close_brace=true
 mod_full_brace_if_chain=false
 mod_pawn_semicolon=false
 mod_full_paren_if_bool=false
-mod_remove_extra_semicolon=false
+mod_remove_extra_semicolon=true
 mod_sort_import=false
-mod_sort_using=false
+mod_sort_using=true
 mod_sort_include=true
 mod_move_case_break=false
-mod_remove_empty_return=false
+mod_remove_empty_return=true
 cmt_indent_multi=true
 cmt_c_group=false
 cmt_c_nl_start=false
@@ -143,4 +144,4 @@ mod_full_brace_while=add
 mod_full_brace_using=add
 mod_paren_on_return=remove
 sp_func_proto_paren=remove
-sp_func_def_paren=remove
\ No newline at end of file
+sp_func_def_paren=remove
diff --git a/changelog.txt b/changelog.txt
index 8edc1fd..f324d24 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,18 @@
+V 1.6.1
+* GUI improvements
+* Improve render perfomance of DEM layer
+* Fix: Geocache image download
+* Fix: OS X: Add planetsplitter
+* Fix: Bad elevation data if track is created without DEM data loaded
+* Add: item selection via selection rectangle in the map view
+* Add: Make combine tracks work over several projects
+* Add: Add a waypoint by context menu in plots
+* Add: Read FIT segments and other fixes of reading FIT format
+* [Issue #109] Implement choosing canvas background color
+* [Issue #125] Graph issue : previous graph remain displayed when [nothing] is selected
+* [Issue #121] Distance Values Choose Km/m Miles/feet
+* [Issue #126] No Printing on Windows
+
 V 1.6.0
 * Fix: Toggle key focus of on-screen profile
 * Fix: Printing correct unit in a plot's xLabel instead of `distance [%1]`
@@ -290,4 +305,4 @@ V 0.3.0
 * Add a lot of cursor stuff to select items and to display on-screen-options
 * Add timezone support
 * Add dialog to view/edit waypoint data
-* Add 'moving waypoint' and 'project waypoint' as functions to on-screen-options
\ No newline at end of file
+* Add 'moving waypoint' and 'project waypoint' as functions to on-screen-options
diff --git a/features.txt b/features.txt
index 1fe3575..1f0cb18 100644
--- a/features.txt
+++ b/features.txt
@@ -33,6 +33,6 @@ System:
   Probably on OS X, too, but so far no one volunteers to 
   maintain a binary.
 * GUI has been translated to Czech, French, German and Spanish
-* Wiki dokumentation is English 
+* Wiki documentation is English 
 * Needs Qt5, GDAL, Proj4 installed
 * For device support on Linux DBus and UDisk2 must be installed
diff --git a/nsi/3rdparty.txt b/msvc_64/3rdparty.txt
similarity index 76%
rename from nsi/3rdparty.txt
rename to msvc_64/3rdparty.txt
index c4816da..8be88b7 100644
--- a/nsi/3rdparty.txt
+++ b/msvc_64/3rdparty.txt
@@ -1,9 +1,11 @@
 #############################################################
-#			QMapShack for Windows (short: QMS)				#
+#			QMapShack for Windows dependencies				#
 #############################################################
-QMS is build with Visual Studio 2013 as 64bit application.
+This installation of QMapShack for Windows (short: QMS) 
+has been build with Visual Studio 2013 as 64bit application.
 
-It can be build with Visual Studio 2013 Community-Edition, too.
+If you want to build QMS on your own, have a look at
+https://bitbucket.org/maproom/qmapshack/wiki/BuildWindowsVisualStudio
 
 Dependencies
 ============
@@ -35,4 +37,5 @@ QMS depends on the 3rd party software listed below:
  
 7.) MinGW64,  http://mingw-w64.org
   The mingw64 compiler is used to compile the routino library.
-  This results in dependencies from mingw64 runtime libraries such as libwinpthread-1.dll
\ No newline at end of file
+  This resulting library depends from mingw64 runtime libraries such as libwinpthread-1.dll, libz-1.dll
+  which are also included in this installation
\ No newline at end of file
diff --git a/nsi/Help.ico b/msvc_64/Help.ico
similarity index 100%
rename from nsi/Help.ico
rename to msvc_64/Help.ico
diff --git a/nsi/MUI_HEADERIMAGE.bmp b/msvc_64/MUI_HEADERIMAGE.bmp
similarity index 100%
rename from nsi/MUI_HEADERIMAGE.bmp
rename to msvc_64/MUI_HEADERIMAGE.bmp
diff --git a/nsi/MUI_WELCOMEFINISHPAGE.bmp b/msvc_64/MUI_WELCOMEFINISHPAGE.bmp
similarity index 100%
rename from nsi/MUI_WELCOMEFINISHPAGE.bmp
rename to msvc_64/MUI_WELCOMEFINISHPAGE.bmp
diff --git a/nsi/QMapShack.ico b/msvc_64/QMapShack.ico
similarity index 100%
rename from nsi/QMapShack.ico
rename to msvc_64/QMapShack.ico
diff --git a/nsi/QMapShack_Installer.nsi b/msvc_64/QMapShack_Installer.nsi
similarity index 93%
rename from nsi/QMapShack_Installer.nsi
rename to msvc_64/QMapShack_Installer.nsi
index 8165651..49c5ba5 100644
--- a/nsi/QMapShack_Installer.nsi
+++ b/msvc_64/QMapShack_Installer.nsi
@@ -55,7 +55,7 @@ OutFile "QMapShack_Install.exe"
 ; Page welcome description
 !define MUI_WELCOMEPAGE_TITLE "QMapShack"
 !define MUI_WELCOMEPAGE_TITLE_3LINES
-!define MUI_WELCOMEPAGE_TEXT "QMapShack is a consumer grade software to work with data aquired by GPS devices. The data can be displayed on a variety of maps and stored in a database. Additionally new data can be created to plan tours."
+!define MUI_WELCOMEPAGE_TEXT "QMapShack is a consumer grade software to work with data acquired by GPS devices. The data can be displayed on a variety of maps and stored in a database. Additionally new data can be created to plan tours."
 
 !define MUI_LICENSEPAGE_CHECKBOX
 
@@ -158,6 +158,9 @@ Section "QMapShack" QMapShack
   SetOutPath "$INSTDIR\platforms\"
     File Files\platforms\qwindows.dll	
 
+  SetOutPath "$INSTDIR\printsupport\"
+    File Files\printsupport\windowsprintersupport.dll
+    
   SetOutPath "$INSTDIR\translations"
     File Files\translations\qt*.qm	
   ;END Qt Files
@@ -193,6 +196,7 @@ Section "QMapShack" QMapShack
   
   ;BEGIN additional Files    
   SetOutPath $INSTDIR
+    File Files\libmysql.dll  
     File Files\3rdparty.txt
     ;File Files\libexif-12.dll
   ;END additional Files    
@@ -232,7 +236,7 @@ Section "StartMenue" StartMenue
   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\QMapShack" "UninstallString" "$INSTDIR\Uninstall.exe"
 
 SectionEnd
-LangString DESC_StartMenue ${LANG_ENGLISH} "Create Start Menue (deselect if you want install QMapShack as portable app)"
+LangString DESC_StartMenue ${LANG_ENGLISH} "Create Start Menu (deselect if you want install QMapShack as portable app)"
 LangString DESC_StartMenue ${LANG_GERMAN}  "Erzeuge Start Men� (weglassen, wenn QMapShack als portable app installiert werden soll)"
 
 
diff --git a/nsi/build_routino.bat b/msvc_64/build_routino.bat
similarity index 100%
rename from nsi/build_routino.bat
rename to msvc_64/build_routino.bat
diff --git a/nsi/copyfiles.bat b/msvc_64/copyfiles.bat
similarity index 83%
rename from nsi/copyfiles.bat
rename to msvc_64/copyfiles.bat
index 12188f9..86af906 100644
--- a/nsi/copyfiles.bat
+++ b/msvc_64/copyfiles.bat
@@ -15,6 +15,11 @@ set QMSI_PROJ_PATH="M:\lib\PROJ"
 set QMSI_ROUT_PATH="M:\src\routino_pkg"
 rem runtime libraries from mingw/msys - in my installation originally at C:\msys\opt\windows_64\bin
 set QMSI_MGW6_PATH="M:\lib\mingw64"
+rem runtime libraries from mysql/mariadb 
+rem ToDo: describe from where to get - could this be optional?
+set QMSI_MSQL_PATH="M:\lib\mysql"
+rem And finally of courss the path to your build directory!
+set QMSI_BUILD_PATH="..\..\build\"
 
 rem Section 2.) Copy Files
 del /s/q Files
@@ -67,6 +72,10 @@ mkdir platforms
 cd platforms
 copy %QMSI_QT_PATH%\plugins\platforms\qwindows.dll
 cd ..
+mkdir printsupport
+cd printsupport
+copy %QMSI_QT_PATH%\plugins\printsupport\windowsprintersupport.dll
+cd ..
 rem Qt translations
 rem Qt5: see http://doc.qt.io/qt-5/linguist-programmers.html
 mkdir translations
@@ -88,17 +97,18 @@ copy %QMSI_ROUT_PATH%\bin\planetsplitter.exe
 copy %QMSI_MGW6_PATH%\libwinpthread-1.dll
 copy %QMSI_MGW6_PATH%\libz-1.dll
 xcopy %QMSI_ROUT_PATH%\xml routino-xml /s /i
-
+rem section 2.2.6) MySql/MariaDB
+copy %QMSI_MSQL_PATH%\libmysql.dll
 
 rem section 2.3) Copy MSVC Redist Files
 copy %QMSI_VCREDIST_PATH%\vcredist_x64.exe
-rem section 2.4) Copy libexif Files
-rem copy %QLGTI_LIBEXIF_PATH%\libexif-12.dll
-rem section 2.5) Copy QMapShack Files
-copy ..\..\build\bin\Release\qmapshack.exe
-copy ..\..\build\src\*.qm translations
+
+rem section 2.4) Copy QMapShack Files
+copy %QMSI_BUILD_PATH%\bin\Release\qmapshack.exe
+copy %QMSI_BUILD_PATH%\src\*.qm translations
 copy ..\*.ico
-rem section 2.6) 3rd party SW description
+
+rem section 2.5) 3rd party SW description
 copy ..\3rdparty.txt
 
 pause
\ No newline at end of file
diff --git a/nsi/gdalicon.ico b/msvc_64/gdalicon.ico
similarity index 100%
rename from nsi/gdalicon.ico
rename to msvc_64/gdalicon.ico
diff --git a/nsi/kfm_home.ico b/msvc_64/kfm_home.ico
similarity index 100%
rename from nsi/kfm_home.ico
rename to msvc_64/kfm_home.ico
diff --git a/nsi/HOWTO-BUILD.txt b/nsi/HOWTO-BUILD.txt
deleted file mode 100644
index d76259c..0000000
--- a/nsi/HOWTO-BUILD.txt
+++ /dev/null
@@ -1,169 +0,0 @@
-#################################################################
-#   Compiling and Building QMapShack for Windows (short: QMS)   #
-#################################################################
-
-[Please also read the file 3rdparty.txt]
-
-QMS is build with Visual Studio 2013 as 64bit application.
-It can be build with Visual Studio 2013 Community-Edition, too.
-
-Required tools for building and installing
-============================================
-- Microsoft Visual Studio 2013 (short: VS2013)
-  Ensure that you have the latest update installed, see https://support.microsoft.com/en-us/kb/2829760
-- CMake 3.0 or later, available at http://www.cmake.org/
-- NSIS, available at http://nsis.sourceforge.net/Main_Page
-- The mingw64 toolchain (http://mingw-w64.org) is needed to 
-  compile the routino library
-
-Compile instructions - to be verified
-=====================================
-
-C1.) Compile the GDAL library, http://www.gdal.org/
-
-[Build instructions inspired by 
-  http://trac.osgeo.org/gdal/wiki/BuildingOnWindows, 
-  http://dominoc925.blogspot.de/2013/03/build-64-bit-gdal-for-windows.html,]
-
-- Download the source code of the version 1.11 (or latest) 
-  from http://trac.osgeo.org/gdal/wiki/DownloadSource and unzip
-- In nmake.opt, adapt the following lines, 
-  according to your build environment [my settings are given as example]
-  MSVC_VER=1800
-  GDAL_HOME = "M:\lib\gdal"	
-  PYDIR   =	"C:\Python34"
-  SWIG = D:\gdal111\swig.exe 
-  # NOTE: swig.exe is part of precompiled binaries for Windows supplied by http://www.gisinternals.com/
-  WIN64=YES
-   
-- On the Windows Desktop:
-	=> select Start | All Programs | Microsoft Visual Studio 2013 | Visual Studio Tools | VS 2013 x64 Native Tools Command Prompt.
-- in the command prompt:
-	=> change directory to the extracted GDAL source code root folder
-	=> nmake /f makefile.vc
-	=> nmake /f makefile.vc devinstall
-	
-C2.) Compile the PROJ library http://trac.osgeo.org/proj/
-
-- Download the source code of the version 4.8 (or latest) 
-  from http://trac.osgeo.org/proj/ and unzip it
-- In nmake.opt, adapt the following lines, 
-  according to your build environment [my settings are given as example]
-  INSTDIR=M:\lib\PROJ
-- On the Windows Desktop:
-	=> select Start | All Programs | Microsoft Visual Studio 2013 | Visual Studio Tools | VS 2013 x64 Native Tools Command Prompt.
-- in the command prompt:
-	=> change directory to the extracted PROJ4 source code root folder
-	=> nmake /f makefile.vc
-	=> nmake /f makefile.vc install-all
-
-C3.) Compile the routino library
-- Adapt and use the build_routino.bat 
-  which you can find in \nsi directory of your QMS source directory
-    
-C4.) Install Qt5.4 or later 
-- Download and run the Qt5 Windows Online Installer 
-  from http://qt-project.org/downloads
-- Install for VS2013, x64
-  
-  Note: if you prefer offline installation you can choose the right package 
-  in OFFLINE INSTALLERS section of that page
-  
-C5.) Get the QMapshack source from the repository, e.g. 
-   hg clone https://bitbucket.org/maproom/qmapshack QMapShack  
-Note: you might have to install TortoiseHG or any other mercurial client 
-   
-C6.) Start the CMake GUI (you did install CMake before, didn't you)
-- Configure 
-  In the first run there will be errors. 
-  Now enter the directories where you have installed Qt5, GDAL, 
-  PROJ.4, routino to the respective variables.
-  After that, Configure again.
-  Note: in case that you only get some warnings, you anyway can try to GENERATE
-- Generate
-
-C7.) Open the generated QMapShack.sln with VS2013
-- Change solution configuration type to "Release"
-- Set the qmapshack project as start project (may not be necessary)
-- Right-Click on the ALL_BUILD project and select build to start the compilation
-
-
-Creating a Windows binary installer
-===================================
-
-I1.) Download the VC redistributable installer 
-  from http://www.microsoft.com/en-us/download/details.aspx?id=40784
-Note: in case the restributable files are already installed in your system, 
-this step is not necessary.
-
-I2.) Create the installer with NSIS(3.0b1)
--  Execute the copyfiles.bat which you can find in \nsi directory of 
-  your QMS source directory
-  Note: In copyfiles.bat, you may have to adapt the directories 
-  - where you have installed Qt5
-  - where your self compiled binaries of routino, GDAL and PROJ4 are 
-  The copyfiles.bat script will create a new directory "Files" which has 
-  exactly the same content as the final installation directory created 
-  by the NSIS installer will have.
-  Qmapshack does not have any dependencies out of its own installation 
-  directory. So instead of creating an NSIS installer you could just 
-  copy this directory to an other machine for a quick deployment
-
-- [optional] Test whether the deployment is complete: 
-  double-click on Files/qmapshack.exe
-  ==> Qmapshack should start up and be fully operational without any restrictions
-  
-- Run the QMapShack_Installer.nsi script e.g via right click on script file 
-  and choosing "Compile NSIS Script" from contextual menu.
-  Note: there also are the options to run the script on command prompt with 
-  commandline version(makensis.exe). 
-  Or you can start windows version (makensisw.exe) to run the script.
-
-  
-Debugging with VS2013
-=====================
-
-For bug fixing you might want to run QMapshack with the VS2013 debugger.
-This requires some additional configuration
-
-D1.) Set the solution configuration type to "RelWithDebInfo"
-Note: you would expect the solution configuration "Debug" to be used.
-But with "Debug" you will get a crash in pj_init_plus() shortly after
-start as described in 
-http://stackoverflow.com/questions/19197791/projapi-gis-library-heap-overflow
-The reason for this problem is currently unknown. Any help is welcome.
-
-D2.) Right-click on the project qmapshack and open the settings dialogue
-- In C/C++->Optimization: deactivate optimization (/Od)
-- In Debugging->Environment set the path such that all required .dll's are found
-  (see http://stackoverflow.com/questions/2119539/visual-studio-how-to-set-path-to-dll)
-  The path depends on where you have installed/compiled Qt5, gdal, proj.4, routino
-  In my case this is 
-  PATH=%PATH%;M:\lib\gdal\bin;M:\lib\PROJ\bin;M:\src\routino_pkg\lib;C:\Qt5\5.4\msvc2013_64\bin
-
-D3.) Compile
-- Right-Click on the ALL_BUILD project and select build to start the compilation
-
-D4.) Run/Debug preparations
-Now you can in principle run Qmapshack with the VS2013 debugger: 
-step through, inspect variables, see the debug output
-
-But as Qmapshack expects some configuration files for gdal and routino in the
-directory where it's executable is placed. 
-If those files are not there, you will get some strange error messages such as 
-"the specified XML file is not found" at startup and the functionality for 
-map/coordinate transformations will be limited.
-
-The easiest way to provide these files is to copy the whole content of the 
-Files directory created by copyfiles.bat as described in step I2)
-_except the qmapshack.exe_ to the directory where you RelWithDebInfo executable 
-has been created (build\bin\RelWithDebInfo).
-
-Note: If you really copy all those files, then you can skip the step to set the 
-PATH as described in step D2). Alternatively you can set the path as described and
-only copy all those configuration files and resources (i.e. all files which are 
-not .dll's + all directories)
-
-D5.) Run/Debug 
-Congratulations: all preparations finished.
-Now you can _really_ start debugging!
\ No newline at end of file
diff --git a/nsi/QMapShack_Installer32.nsi b/nsi/QMapShack_Installer32.nsi
deleted file mode 100644
index 304d8f6..0000000
--- a/nsi/QMapShack_Installer32.nsi
+++ /dev/null
@@ -1,266 +0,0 @@
-;NSIS Installer Script for https://bitbucket.org/maproom/qmapshack/wiki/Home
-
-;NSIS References/Documentation 
-;http://nsis.sourceforge.net/Docs/Modern%20UI%202/Readme.html
-;http://nsis.sourceforge.net/Docs/Modern%20UI/Readme.html
-;http://nsis.sourceforge.net/Docs/Chapter4.html
-;http://nsis.sourceforge.net/Many_Icons_Many_shortcuts
-
-;Deployment issues
-;Deploying Qt5 for Windows:
-;  http://qt-project.org/doc/qt-5/windows-deployment.html
-;Deploying MSVC runtime libraries
-;  http://msdn.microsoft.com/en-us/library/dd293574.aspx ==> Central Deployment is preferred: by using a redistributable package enables automatic updating by Microsoft.
-;  http://msdn.microsoft.com/en-us/library/8kche8ah.aspx ==> Distribute msvcr120.dll and msvcp120.dll
-;  http://www.microsoft.com/en-us/download/details.aspx?id=40784 ==> Download the vcredist_x64.exe from here !!!
-;  http://msdn.microsoft.com/en-us/vstudio/dn501987.aspx ==> Legal stuff
-
-;Revision Log
-; 14-Nov-2014 32-bit variant Installer forked from 64-bit original
-; 03-Aug-2014 First version of QMapShack installer based on the existing QLandkarteGT installer
-
-;=================== BEGIN SCRIPT ====================
-; Include for nice Setup UI, see http://nsis.sourceforge.net/Docs/Modern%20UI%202/Readme.html
-!include MUI2.nsh
-
-;------------------------------------------------------------------------
-; Modern UI2 definition                                                  -
-;------------------------------------------------------------------------
-; Description
-Name "QMapShack32"
-
-;Default installation folder
-InstallDir "$PROGRAMFiles32\QMapShack32"
-
-;Get installation folder from registry if available
-InstallDirRegKey HKCU "Software\QMapShack32" ""
-
-;Request application privileges for Windows Vista
-RequestExecutionLevel admin
-
-
-; The file to write
-OutFile "QMapShack_Install32.exe"
-
-;------------------------------------------------------------------------
-; Modern UI definition                                                    -
-;------------------------------------------------------------------------
-;!define MUI_COMPONENTSPAGE_SMALLDESC ;No value
-!define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;Two colors
-
-!define MUI_ICON "QMapShack.ico"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "MUI_HEADERIMAGE.bmp"
-!define MUI_WELCOMEFINISHPAGE_BITMAP "MUI_WELCOMEFINISHPAGE.bmp"
-
-; Page welcome description
-!define MUI_WELCOMEPAGE_TITLE "QMapShack"
-!define MUI_WELCOMEPAGE_TITLE_3LINES
-!define MUI_WELCOMEPAGE_TEXT "QMapShack is a consumer grade software to work with data aquired by GPS devices. The data can be displayed on a variety of maps and stored in a database. Additionally new data can be created to plan tours."
-
-!define MUI_LICENSEPAGE_CHECKBOX
-
-;------------------------------------------------------------------------
-; Pages definition order                                                -
-;------------------------------------------------------------------------
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
-!insertmacro MUI_PAGE_COMPONENTS
-!insertmacro MUI_PAGE_DIRECTORY
-Var StartMenuFolder
-!insertmacro MUI_PAGE_STARTMENU "Application" $StartMenuFolder
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-;------------------------------------------------------------------------
-
-;------------------------------------------------------------------------
-;Uninstaller                                                            -
-;------------------------------------------------------------------------
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-
-; Language settings
-!insertmacro MUI_LANGUAGE "English"
-!insertmacro MUI_LANGUAGE "German"
-
-
-;------------------------------------------------------------------------
-; Component add                                                            -
-;------------------------------------------------------------------------
-;Components description
-
-Section "MSVC++ 2013 SP1 Runtime" MSVC
-
-  SetOutPath $INSTDIR
-  File Files32\vcredist_x86.exe
-  ExecWait '"$INSTDIR\vcredist_x86.exe"'
-  Delete "$INSTDIR\vcredist_x86.exe"
-  
-SectionEnd
-LangString DESC_MSVC ${LANG_ENGLISH} "Microsoft Visual C++ 2013 SP1 Runtime Libraries. Typically already installed on your PC. You only need to install them if it doesn't work without ;-)."
-LangString DESC_MSVC ${LANG_GERMAN} "Microsoft Visual C++ 2013 SP1 Laufzeitbibliotheken. Diese sind meist bereits auf dem Rechner installiert. Versuchen Sie die Installation zun�chst einmal ohne dies."
-
-Section "QMapShack" QMapShack
-
-  ;Install for all users
-  SetShellVarContext all
-
-  ;BEGIN QMapShack Files    
-  SetOutPath $INSTDIR
-    File Files32\qmapshack.exe
-    File Files32\qmapshack_*.qm
-	File Files32\*.ico
-	;File Files32\*.png
-    File Files32\qt_??.qm
-  ;END QMapShack Files    
-   
-  ;BEGIN Qt Files
-  SetOutPath $INSTDIR
-    File Files32\Qt5Core.dll
-    File Files32\Qt5Gui.dll
-	File Files32\Qt5Multimedia.dll
-	File Files32\Qt5MultimediaWidgets.dll
-    File Files32\Qt5Network.dll
-    File Files32\Qt5OpenGL.dll
-	File Files32\Qt5Positioning.dll
-	File Files32\Qt5PrintSupport.dll
-	File Files32\Qt5Qml.dll
-	File Files32\Qt5Quick.dll
-    File Files32\Qt5Script.dll
-	File Files32\Qt5Sensors.dll
-    File Files32\Qt5Sql.dll
-    File Files32\Qt5Svg.dll
-	File Files32\Qt5WebChannel.dll
-    File Files32\Qt5WebKit.dll
-    File Files32\Qt5Widgets.dll 
-    File Files32\Qt5WebKitWidgets.dll	
-    File Files32\Qt5Xml.dll
-	File Files32\icudt53.dll
-	File Files32\icuin53.dll
-	File Files32\icuuc53.dll
-	File Files32\libEGL.dll
-	File Files32\libGLESv2.dll
-
-  SetOutPath "$INSTDIR\imageformats\"
-    File Files32\imageformats\qgif.dll
-    File Files32\imageformats\qjpeg.dll
-    File Files32\imageformats\qmng.dll
-    File Files32\imageformats\qsvg.dll
-    File Files32\imageformats\qtiff.dll
-    File Files32\imageformats\qico.dll
-    File Files32\imageformats\qtga.dll
-
-  SetOutPath "$INSTDIR\sqldrivers\"
-    File Files32\sqldrivers\qsqlite.dll
-
-  SetOutPath "$INSTDIR\platforms\"
-    File Files32\platforms\qwindows.dll	
-	
-	;END Qt Files
-    
-  ;BEGIN GDAL and PROJ.4 Files    
-  SetOutPath $INSTDIR
-    File Files32\gdal*.dll
-    File Files32\gdal*.exe
-	File Files32\nearblack.exe
-	File Files32\ogr*.exe
-	File Files32\testepsg.exe
-  SetOutPath "$INSTDIR\data\"
-    File /r Files32\data\*.*
-  ;END GDAL and PROJ.4 Files        
-
-  ;BEGIN PROJ.4 Files    
-  SetOutPath $INSTDIR
-    File Files32\proj*.dll
-    File Files32\proj*.exe
-  SetOutPath "$INSTDIR\share\"
-	File /r Files32\share\*.*
-  ;END PROJ.4 Files        
-
-  
-  ;BEGIN additional Files    
-  SetOutPath $INSTDIR
-    File Files32\3rdparty.txt
-    ;File Files32\libexif-12.dll
-  ;END additional Files    
-    
-  ;the last "SetOutPath" will be the default directory
-  SetOutPath $INSTDIR    
-  
-
-  WriteUninstaller "$INSTDIR\Uninstall.exe"
-SectionEnd
-LangString DESC_QMapShack ${LANG_ENGLISH} "View Raster, Garmin and Online Maps combined with elevation data. Work with GIS data. Synchronize your GPS device."
-LangString DESC_QMapShack ${LANG_GERMAN}  "Raster-, Garmin- und Online Karten mit H�heninformation anzeigen. GIS Daten bearbeiten. GPS Ger�te synchronisieren"
-
-
-Section "StartMenue" StartMenue
-  ;create batch file for a GDAL shell
-  fileOpen $0 "$INSTDIR\gdal_shell.bat" w
-  fileWrite $0 "@cd /D %USERPROFILE%$\r$\n" 
-  fileWrite $0 "@SET PATH=$INSTDIR;%PATH%$\r$\n"
-  fileWrite $0 "@SET GDAL_DATA=$INSTDIR\data$\r$\n"
-  fileWrite $0 "@SET PROJ_LIB=$INSTDIR\share$\r$\n"
-  fileClose $0
-
-  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
-     ;Create shortcuts
-    CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\QMapShack.lnk" "$INSTDIR\qmapshack.exe" "" "$INSTDIR\QMapShack.ico"
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\qmapshack.org.lnk" "https://bitbucket.org/maproom/qmapshack/wiki/Home" "" "$INSTDIR\kfm_home.ico"
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Help.lnk" "https://bitbucket.org/maproom/qmapshack/wiki/DocMain" "" "$INSTDIR\Help.ico"
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\gdal.org.lnk" "http://www.gdal.org/" "" "$INSTDIR\gdalicon.ico"
-    CreateShortCut "$SMPROGRAMS\$StartMenuFolder\GDAL shell.lnk" %COMSPEC% "/k $\"$INSTDIR\gdal_shell.bat$\"" "" "" "" "" "GDAL shell"
-   !insertmacro MUI_STARTMENU_WRITE_END
-
-  ;Create registry entries
-  WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\QMapShack" "DisplayName" "QMapShack (remove only)"
-  WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\QMapShack" "UninstallString" "$INSTDIR\Uninstall.exe"
-
-SectionEnd
-LangString DESC_StartMenue ${LANG_ENGLISH} "Create Start Menue (deselect if you want install QMapShack as portable app)"
-LangString DESC_StartMenue ${LANG_GERMAN}  "Erzeuge Start Men� (weglassen, wenn QMapShack als portable app installiert werden soll)"
-
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-   !insertmacro MUI_DESCRIPTION_TEXT ${QMapShack} $(DESC_QMapShack)
-   !insertmacro MUI_DESCRIPTION_TEXT ${StartMenue} $(DESC_StartMenue)
-   !insertmacro MUI_DESCRIPTION_TEXT ${MSVC} $(DESC_MSVC)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
-
-;------------------------------------------------------------------------
-;Uninstaller Sections                                                    -
-;------------------------------------------------------------------------
-Section "Uninstall"
-
-  ;Install for all users
-  SetShellVarContext all
-
-  Delete "$INSTDIR\Uninstall.exe"
-
-  SetOutPath $TEMP
-
-  RMDir /r $INSTDIR
-
-  !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
-
-  Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
-  Delete "$SMPROGRAMS\$StartMenuFolder\QMapShack.lnk"
-  Delete "$SMPROGRAMS\$StartMenuFolder\qmapshack.org.lnk"
-  Delete "$SMPROGRAMS\$StartMenuFolder\Help.lnk"
-  Delete "$SMPROGRAMS\$StartMenuFolder\gdal.org.lnk"
-  Delete "$SMPROGRAMS\$StartMenuFolder\GDAL shell.lnk"
-  
-  RMDir "$SMPROGRAMS\$StartMenuFolder"
-
-  DeleteRegKey /ifempty HKCU "Software\QMapShack"
-  DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\QMapShack"
-
-SectionEnd
-
-Function .onInit
-  # set section 'MSVC' as unselected
-  SectionSetFlags ${MSVC} 0
-FunctionEnd
-
diff --git a/nsi/copyfiles32.bat b/nsi/copyfiles32.bat
deleted file mode 100644
index 2fdd170..0000000
--- a/nsi/copyfiles32.bat
+++ /dev/null
@@ -1,92 +0,0 @@
-rem Batch file to copy the necessary files for the Windows Installer
-rem Please adapt environment variables in section 1) to your system
-
-rem useful links
-rem http://technet.microsoft.com/en-us/library/bb491035.aspx
-rem http://vlaurie.com/computers2/Articles/environment.htm
-
-rem Section 1.) Define path to Qt, MSVC, .... installations
-set QMSI_QT_PATH="C:\Qt5\5.4\msvc2013"
-rem get the VC redistributable installer from http://www.microsoft.com/en-us/download/details.aspx?id=40784
-set QMSI_VCREDIST_PATH="M:\deploy"
-rem set QLGTI_LIBEXIF_PATH="D:\qlgt\tools\libexif"
-set QMSI_GDAL_PATH="M:\lib32\gdal"
-set QMSI_PROJ_PATH="M:\lib32\PROJ"
-
-rem Section 2.) Copy Files
-del /s/q Files32
-mkdir Files32
-cd Files32
-
-rem Section 2.1) Copy Qt files
-copy %QMSI_QT_PATH%\bin\Qt5Core.dll
-copy %QMSI_QT_PATH%\bin\Qt5Gui.dll
-copy %QMSI_QT_PATH%\bin\Qt5Multimedia.dll
-copy %QMSI_QT_PATH%\bin\Qt5MultimediaWidgets.dll
-copy %QMSI_QT_PATH%\bin\Qt5Network.dll
-copy %QMSI_QT_PATH%\bin\Qt5OpenGL.dll
-copy %QMSI_QT_PATH%\bin\Qt5Positioning.dll
-copy %QMSI_QT_PATH%\bin\Qt5PrintSupport.dll
-copy %QMSI_QT_PATH%\bin\Qt5Qml.dll
-copy %QMSI_QT_PATH%\bin\Qt5Quick.dll
-copy %QMSI_QT_PATH%\bin\Qt5Script.dll
-copy %QMSI_QT_PATH%\bin\Qt5Sensors.dll
-copy %QMSI_QT_PATH%\bin\Qt5Sql.dll
-copy %QMSI_QT_PATH%\bin\Qt5Svg.dll
-copy %QMSI_QT_PATH%\bin\Qt5WebChannel.dll
-copy %QMSI_QT_PATH%\bin\Qt5WebKit.dll
-copy %QMSI_QT_PATH%\bin\Qt5WebKitWidgets.dll
-copy %QMSI_QT_PATH%\bin\Qt5Widgets.dll
-copy %QMSI_QT_PATH%\bin\Qt5Xml.dll
-copy %QMSI_QT_PATH%\bin\icudt53.dll
-copy %QMSI_QT_PATH%\bin\icuin53.dll
-copy %QMSI_QT_PATH%\bin\icuuc53.dll
-copy %QMSI_QT_PATH%\bin\libEGL.dll
-copy %QMSI_QT_PATH%\bin\libGLESv2.dll
-mkdir imageformats
-cd imageformats
-copy %QMSI_QT_PATH%\plugins\imageformats\qgif.dll
-copy %QMSI_QT_PATH%\plugins\imageformats\qjpeg.dll
-copy %QMSI_QT_PATH%\plugins\imageformats\qmng.dll
-copy %QMSI_QT_PATH%\plugins\imageformats\qsvg.dll
-copy %QMSI_QT_PATH%\plugins\imageformats\qtiff.dll
-copy %QMSI_QT_PATH%\plugins\imageformats\qico.dll
-copy %QMSI_QT_PATH%\plugins\imageformats\qtga.dll
-cd ..
-mkdir sqldrivers
-cd sqldrivers
-copy %QMSI_QT_PATH%\plugins\sqldrivers\qsqlite.dll
-cd ..
-mkdir platforms
-cd platforms
-copy %QMSI_QT_PATH%\plugins\platforms\qwindows.dll
-cd ..
-rem The qt_??.qm files must have been created before by
-rem opening a qt shell, going to the translations directory and running
-rem for %f in (qt_??.ts) do lrelease %f
-rem Oops, probably they are already preinstalled for Qt5
-copy %QMSI_QT_PATH%\translations\qt_??.qm
-
-rem section 2.2) Copy GDAL and PROJ.4 Files 
-rem   put them in the same directory as the .exe for better testing
-rem section 2.2.1) GDAL
-xcopy %QMSI_GDAL_PATH%\data data /s /i
-copy %QMSI_GDAL_PATH%\bin\*.dll
-copy %QMSI_GDAL_PATH%\bin\*.exe
-rem section 2.2.4) PROJ.4
-xcopy %QMSI_PROJ_PATH%\share share /s /i
-copy %QMSI_PROJ_PATH%\bin\*.dll
-copy %QMSI_PROJ_PATH%\bin\proj.exe
-
-rem section 2.3) Copy MSVC Redist Files
-copy %QMSI_VCREDIST_PATH%\vcredist_x86.exe
-rem section 2.4) Copy libexif Files
-rem copy %QLGTI_LIBEXIF_PATH%\libexif-12.dll
-rem section 2.5) Copy QMapShack GT Files
-copy ..\..\build32\bin\Release\qmapshack.exe
-copy ..\..\build32\src\*.qm
-copy ..\*.ico
-rem section 2.6) 3rd party SW description
-copy ..\3rdparty.txt
-
-pause
\ No newline at end of file
diff --git a/qmapshack.1 b/qmapshack.1
index 7dc215d..507dd65 100644
--- a/qmapshack.1
+++ b/qmapshack.1
@@ -24,7 +24,7 @@ QMapShack \- GPS mapping (GeoTiff and vector) and GPSr management
 .SH DESCRIPTION
 GPS mapping (GeoTiff and vector) and GPSr management.
 QMapShack provides a versatile tool for GPS maps in GeoTiff format as well as Garmin's img vector map format.
-You can also view and edit your GPX tracks.q QMapShack is the successor of QLandkarteGT.
+You can also view and edit your GPX tracks. QMapShack is the successor of QLandkarteGT.
 .TP
 Main features:
   \- Use of several workspaces.
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index bd67522..84cb090 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -85,7 +85,7 @@ CMainWindow::CMainWindow()
     }
     else
     {
-        setGeometry(0,0,800,600);
+        QTimer::singleShot(500, this, SLOT(showMaximized()));
     }
 
     if ( cfg.contains("MainWindow/state"))
@@ -106,6 +106,7 @@ CMainWindow::CMainWindow()
     connect(actionNightDay,              &QAction::changed,              this,      &CMainWindow::slotUpdateCurrentWidget);
     connect(actionProfileIsWindow,       &QAction::toggled,              this,      &CMainWindow::slotSetProfileMode);
     connect(actionSetupMapFont,          &QAction::triggered,            this,      &CMainWindow::slotSetupMapFont);
+    connect(actionSetupMapBackground,    &QAction::triggered,            this,      &CMainWindow::slotSetupMapBackground);
     connect(actionSetupGrid,             &QAction::triggered,            this,      &CMainWindow::slotSetupGrid);
     connect(actionSetupMapPaths,         &QAction::triggered,            this,      &CMainWindow::slotSetupMapPath);
     connect(actionSetupDEMPaths,         &QAction::triggered,            this,      &CMainWindow::slotSetupDemPath);
@@ -137,7 +138,7 @@ CMainWindow::CMainWindow()
     cfg.beginGroup("Views");
     QStringList names = cfg.childGroups();
 
-    foreach(const QString &name, names)
+    for(const QString &name : names)
     {
         CCanvas * view = new CCanvas(tabWidget, name);
         tabWidget->addTab(view, view->objectName());
@@ -150,13 +151,14 @@ CMainWindow::CMainWindow()
     if(names.isEmpty())
     {
         CCanvas * view = new CCanvas(tabWidget, QString());
+        view->loadConfig(cfg);
         tabWidget->addTab(view, view->objectName());
         connect(view, &CCanvas::sigMousePosition, this, &CMainWindow::slotMousePosition);
     }
     cfg.endGroup(); // Views
 
     actionShowScale->setChecked      (cfg.value("isScaleVisible",   true).toBool());
-    actionShowGrid->setChecked       (cfg.value("isGridVisible",    true).toBool());
+    actionShowGrid->setChecked       (cfg.value("isGridVisible",    false).toBool());
     actionPOIText->setChecked        (cfg.value("POIText",          true).toBool());
     actionMapToolTip->setChecked     (cfg.value("MapToolTip",       true).toBool());
     actionNightDay->setChecked       (cfg.value("isNight",         false).toBool());
@@ -288,8 +290,7 @@ CMainWindow::~CMainWindow()
     cfg.setValue("Units/timezone/mode", tzmode);
     cfg.setValue("Units/time/useShortFormat", useShortFormat);
 
-    IUnit::coord_format_e coordFormat;
-    IUnit::getCoordFormat(coordFormat);
+    IUnit::coord_format_e coordFormat = IUnit::getCoordFormat();
     cfg.setValue("Units/coordFormat", coordFormat);
 }
 
@@ -301,6 +302,12 @@ QWidget * CMainWindow::getBestWidgetForParent()
         return w;
     }
 
+    // this is a workaround for unittesting
+    if(nullptr == pSelf)
+    {
+        return nullptr;
+    }
+
     w = self().getVisibleCanvas();
     if(w)
     {
@@ -539,7 +546,13 @@ void CMainWindow::slotCurrentTabCanvas(int i)
     QString name = tabWidget->tabText(i);
     for(int n = 0; n < tabMaps->count(); n++)
     {
-        if(compareNames(name, tabMaps->tabText(n)))
+        bool isMapView = compareNames(name, tabMaps->tabText(n));
+
+        actionSetupGrid->setEnabled(isMapView);
+        actionSetupMapBackground->setEnabled(isMapView);
+        actionSetupMapView->setEnabled(isMapView);
+
+        if(isMapView)
         {
             tabMaps->setCurrentIndex(n);
             break;
@@ -685,6 +698,16 @@ void CMainWindow::slotSetupMapFont()
     }
 }
 
+void CMainWindow::slotSetupMapBackground()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(nullptr == canvas)
+    {
+        return;
+    }
+    canvas->setupBackgroundColor();
+}
+
 void CMainWindow::slotSetupGrid()
 {
     CCanvas * canvas = getVisibleCanvas();
@@ -785,7 +808,7 @@ void CMainWindow::slotLoadGISData()
 
 void CMainWindow::loadGISData(const QStringList& filenames)
 {
-    foreach(const QString &filename, filenames)
+    for(const QString &filename : filenames)
     {
         gisWidget->loadGisProject(filename);
     }
@@ -970,7 +993,7 @@ void CMainWindow::dropEvent(QDropEvent *event)
     QList<QUrl> urls = event->mimeData()->urls();
 
     QStringList filenames;
-    foreach(const QUrl &url, urls)
+    for(const QUrl &url : urls)
     {
         filenames << url.toLocalFile();
     }
diff --git a/src/CMainWindow.h b/src/CMainWindow.h
index 4c65a62..820d992 100644
--- a/src/CMainWindow.h
+++ b/src/CMainWindow.h
@@ -107,6 +107,7 @@ private slots:
     void slotMousePosition(const QPointF& pos, qreal ele);
     void slotUpdateCurrentWidget();
     void slotSetupMapFont();
+    void slotSetupMapBackground();
     void slotSetupGrid();
     void slotSetupMapPath();
     void slotSetupDemPath();
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 43ca0be..931edb7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -75,8 +75,6 @@ set( SRCS
         helpers/CLinksDialog.cpp
         helpers/CPhotoViewer.cpp
         helpers/CProgressDialog.cpp
-        helpers/CCommandProcessor.cpp
-        helpers/CAppSetup.cpp
         helpers/CDraw.cpp
         helpers/CValue.cpp
         helpers/CLimit.cpp
@@ -129,6 +127,7 @@ set( SRCS
         grid/CProjWizard.cpp
         grid/mitab.cpp
         mouse/IMouse.cpp
+        mouse/IMouseSelect.cpp
         mouse/IScrOpt.cpp
         mouse/CMouseDummy.cpp
         mouse/CMouseNormal.cpp
@@ -139,8 +138,11 @@ set( SRCS
         mouse/CMouseRangeTrk.cpp
         mouse/CMouseWptBubble.cpp
         mouse/CMousePrint.cpp
+        mouse/CMouseSelect.cpp
         mouse/CScrOptUnclutter.cpp
         mouse/CScrOptRangeTrk.cpp
+        mouse/CScrOptSelect.cpp
+        mouse/CScrOptPrint.cpp
         mouse/line/IMouseEditLine.cpp
         mouse/line/CScrOptEditLine.cpp
         mouse/line/CScrOptRangeLine.cpp
@@ -278,6 +280,12 @@ set( SRCS
         tool/CImportDatabase.cpp
         tool/CRoutinoDatabaseBuilder.cpp
         print/CPrintDialog.cpp
+        setup/IAppSetup.cpp
+        setup/CAppSetupLinux.cpp
+        setup/CAppSetupWin.cpp
+        setup/CAppSetupMac.cpp
+        setup/CCommandProcessor.cpp
+        setup/CLogHandler.cpp
 )
 
 if(UNIX AND NOT APPLE)
@@ -318,7 +326,6 @@ set( HDRS
         widgets/CColorChooser.h
         helpers/Platform.h
         helpers/CFileExt.h
-        helpers/CAppOpts.h
         helpers/CSettings.h
         helpers/CInputDialog.h
         helpers/CPositionDialog.h
@@ -329,8 +336,6 @@ set( HDRS
         helpers/CLinksDialog.h
         helpers/CPhotoViewer.h
         helpers/CProgressDialog.h
-        helpers/CCommandProcessor.h
-        helpers/CAppSetup.h
         helpers/CDraw.h
         helpers/CValue.h
         helpers/CLimit.h
@@ -385,6 +390,7 @@ set( HDRS
         grid/CProjWizard.h
         grid/mitab.h
         mouse/IMouse.h
+        mouse/IMouseSelect.h
         mouse/IScrOpt.h
         mouse/CMouseDummy.h
         mouse/CMouseNormal.h
@@ -395,8 +401,11 @@ set( HDRS
         mouse/CMouseRangeTrk.h
         mouse/CMouseWptBubble.h
         mouse/CMousePrint.h
+        mouse/CMouseSelect.h
         mouse/CScrOptUnclutter.h
         mouse/CScrOptRangeTrk.h
+        mouse/CScrOptSelect.h
+        mouse/CScrOptPrint.h
         mouse/line/CScrOptEditLine.h
         mouse/line/CScrOptRangeLine.h
         mouse/line/IMouseEditLine.h
@@ -532,6 +541,13 @@ set( HDRS
         tool/CImportDatabase.h
         tool/CRoutinoDatabaseBuilder.h
         print/CPrintDialog.h
+        setup/CAppOpts.h
+        setup/CAppSetupLinux.h
+        setup/CAppSetupWin.h
+        setup/CAppSetupMac.h
+        setup/CCommandProcessor.h
+        setup/CLogHandler.h
+        setup/IAppSetup.h
 )
 
 if(UNIX AND NOT APPLE)
@@ -579,6 +595,8 @@ set( UIS
     grid/IGridSetup.ui
     grid/IProjWizard.ui
     mouse/IScrOptRangeTrk.ui
+    mouse/IScrOptSelect.ui
+    mouse/IScrOptPrint.ui
     mouse/line/IScrOptEditLine.ui
     mouse/line/IScrOptRangeLine.ui
     gis/IGisWidget.ui
@@ -736,7 +754,16 @@ target_link_libraries(${APPLICATION_NAME}
 )
 
 if(UNIX AND NOT APPLE)
-    add_executable(qttest test/main.cpp test/test_QMapShack.h test/CGpxProject.cpp test/CSlfReader.cpp ${RC_SRCS})
+    add_executable(qttest EXCLUDE_FROM_ALL
+        test/main.cpp
+        test/test_QMapShack.h
+        test/CGpxProject.cpp
+        test/CQmsProject.cpp
+        test/CSlfReader.cpp
+        test/CKnownExtension.cpp
+        test/TestHelper.cpp
+        test/CGisItemTrk.cpp
+        ${RC_SRCS})
 
     # copy the input files required by the unittests to ./bin/input
     file(COPY test/input DESTINATION ../bin)
diff --git a/src/GeoMath.cpp b/src/GeoMath.cpp
index 7459067..6ee7a58 100644
--- a/src/GeoMath.cpp
+++ b/src/GeoMath.cpp
@@ -37,6 +37,12 @@ segment_t::segment_t() : idx11(NOIDX), idx12(NOIDX), idx21(NOIDX)
 {
 }
 
+static inline qreal distance(const QPointF &pa, const QPointF &pb)
+{
+    const qreal &dx = pa.x() - pb.x();
+    const qreal &dy = pa.y() - pb.y();
+    return qSqrt(dx * dx + dy * dy);
+}
 
 void GPS_Math_DegMinSec_To_Deg(bool sign, const qint32 d, const qint32 m, const qreal s, qreal &deg)
 {
@@ -45,21 +51,15 @@ void GPS_Math_DegMinSec_To_Deg(bool sign, const qint32 d, const qint32 m, const
     {
         deg = -deg;
     }
-
-    return;
 }
 
 
-bool GPS_Math_Deg_To_DegMin(qreal v, qint32 *d, qreal *m)
+bool GPS_Math_Deg_To_DegMin(qreal v, qint32 *deg, qreal *min)
 {
-    bool sign = v < 0;
-    qint32 deg = qAbs(v);
-    qreal min = (qAbs(v) - deg) * 60.0;
-
-    *d = deg;
-    *m = min;
+    *deg = qAbs(v);
+    *min = (qAbs(v) - *deg) * 60.0;
 
-    return sign;
+    return v < 0;
 }
 
 
@@ -70,8 +70,6 @@ void GPS_Math_DegMin_To_Deg(bool sign, const qint32 d, const qreal m, qreal& deg
     {
         deg = -deg;
     }
-
-    return;
 }
 
 
@@ -215,26 +213,24 @@ void GPS_Math_Wpt_Projection(const qreal lon1, const qreal lat1, const qreal dis
     lon2 = qCos(lat1) == 0 ? lon1 : fmod(lon1 - qAsin(qSin(-bearing) * qSin(d) / qCos(lat1)) + PI, TWOPI) - PI;
 }
 
-qreal GPS_Math_distPointLine3D(point3D& x1, point3D& x2, point3D& x0)
+static qreal GPS_Math_distPointLine3D(const point3D &x1, const point3D &x2, const point3D &x0)
 {
     point3D v1, v2, v3, v1x2;
 
-    qreal a1x2, a3;
-
     // (x0 - x1)
-    v1.x    = x0.x - x1.x;
-    v1.y    = x0.y - x1.y;
-    v1.z    = x0.z - x1.z;
+    v1.x = x0.x - x1.x;
+    v1.y = x0.y - x1.y;
+    v1.z = x0.z - x1.z;
 
     // (x0 - x2)
-    v2.x    = x0.x - x2.x;
-    v2.y    = x0.y - x2.y;
-    v2.z    = x0.z - x2.z;
+    v2.x = x0.x - x2.x;
+    v2.y = x0.y - x2.y;
+    v2.z = x0.z - x2.z;
 
     // (x2 - x1)
-    v3.x    = x2.x - x1.x;
-    v3.y    = x2.y - x1.y;
-    v3.z    = x2.z - x1.z;
+    v3.x = x2.x - x1.x;
+    v3.y = x2.y - x1.y;
+    v3.z = x2.z - x1.z;
 
     // (x0 - x1)x(x0 - x2)
     v1x2.x  = v1.y * v2.z - v1.z * v2.y;
@@ -242,9 +238,9 @@ qreal GPS_Math_distPointLine3D(point3D& x1, point3D& x2, point3D& x0)
     v1x2.z  = v1.x * v2.y - v1.y * v2.x;
 
     // |(x0 - x1)x(x0 - x2)|
-    a1x2    = v1x2.x*v1x2.x + v1x2.y*v1x2.y + v1x2.z*v1x2.z;
+    qreal a1x2    = v1x2.x*v1x2.x + v1x2.y*v1x2.y + v1x2.z*v1x2.z;
     // |(x2 - x1)|
-    a3      = v3.x*v3.x + v3.y*v3.y + v3.z*v3.z;
+    qreal a3      = v3.x*v3.x + v3.y*v3.y + v3.z*v3.z;
 
     return qSqrt(a1x2/a3);
 }
@@ -407,13 +403,10 @@ bool GPS_Math_LineCrossesRect(const QPointF &p1, const QPointF &p2, const QRectF
 
 void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 threshold, const QPolygonF& pixel, segment_t &result)
 {
-    qint32 i, len;
     projXY p1, p2;
     qreal dx,dy;                // delta x and y defined by p1 and p2
     qreal d_p1_p2;              // distance between p1 and p2
-    qreal u;                    // ratio u the tangent point will divide d_p1_p2
     qreal x,y;                  // coord. (x,y) of the point on line defined by [p1,p2] close to pt
-    qreal distance;             // the distance to the polyline
     qreal shortest1 = threshold;
     qreal shortest2 = threshold;
     qint32 idx11 = NOIDX, idx21 = NOIDX, idx12 = NOIDX;
@@ -421,10 +414,9 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
     QPointF pt11;
     QPointF pt21;
 
-    len = pixel.size();
-
     // find points on line closest to pt1 and pt2
-    for(i=1; i<len; ++i)
+    const qint32 len = pixel.size();
+    for(qint32 i = 1; i < len; ++i)
     {
         p1.u = pixel[i - 1].x();
         p1.v = pixel[i - 1].y();
@@ -436,14 +428,15 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
         d_p1_p2 = qSqrt(dx * dx + dy * dy);
 
         // find point on line closest to pt1
-        u = ((pt1.x() - p1.u) * dx + (pt1.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
+        // ratio u the tangent point will divide d_p1_p2
+        qreal u = ((pt1.x() - p1.u) * dx + (pt1.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
 
         if(u >= 0.0 && u <= 1.0)
         {
             x = p1.u + u * dx;
             y = p1.v + u * dy;
 
-            distance = qSqrt((x - pt1.x())*(x - pt1.x()) + (y - pt1.y())*(y - pt1.y()));
+            qreal distance = qSqrt((x - pt1.x())*(x - pt1.x()) + (y - pt1.y())*(y - pt1.y()));
 
             if(distance < shortest1)
             {
@@ -456,6 +449,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
         }
 
         // find point on line closest to pt2
+        // ratio u the tangent point will divide d_p1_p2
         u = ((pt2.x() - p1.u) * dx + (pt2.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
 
         if(u >= 0.0 && u <= 1.0)
@@ -463,7 +457,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
             x = p1.u + u * dx;
             y = p1.v + u * dy;
 
-            distance = qSqrt((x - pt2.x())*(x - pt2.x()) + (y - pt2.y())*(y - pt2.y()));
+            qreal distance = qSqrt((x - pt2.x())*(x - pt2.x()) + (y - pt2.y())*(y - pt2.y()));
 
             if(distance < shortest2)
             {
@@ -479,8 +473,8 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
     if(idx11 == NOIDX)
     {
         QPointF px = pixel.first();
-        distance = qSqrt((qreal)((px.x() - pt1.x())*(px.x() - pt1.x()) + (px.y() - pt1.y())*(px.y() - pt1.y())));
-        if(distance < (threshold<<1))
+        qreal dist = distance(px, pt1);
+        if(dist < (threshold << 1))
         {
             idx11 = 0;
             idx12 = 1;
@@ -489,8 +483,8 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
         else
         {
             px = pixel.last();
-            distance = qSqrt((qreal)((px.x() - pt1.x())*(px.x() - pt1.x()) + (px.y() - pt1.y())*(px.y() - pt1.y())));
-            if(distance < (threshold<<1))
+            qreal dist = distance(px, pt1);
+            if(dist < (threshold << 1))
             {
                 idx11 = pixel.size() - 2;
                 idx12 = pixel.size() - 1;
@@ -503,9 +497,9 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
     if(idx21 == NOIDX)
     {
         QPointF px = pixel.first();
-        distance = qSqrt((qreal)((px.x() - pt2.x())*(px.x() - pt2.x()) + (px.y() - pt2.y())*(px.y() - pt2.y())));
+        qreal dist = distance(px, pt2);
 
-        if(distance < (threshold<<1))
+        if(dist < (threshold<<1))
         {
             idx21 = 0;
             pt21 = px;
@@ -513,8 +507,8 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
         else
         {
             px = pixel.last();
-            distance = qSqrt((qreal)((px.x() - pt2.x())*(px.x() - pt2.x()) + (px.y() - pt2.y())*(px.y() - pt2.y())));
-            if(distance < (threshold<<1))
+            qreal dist = distance(px, pt2);
+            if(dist < (threshold<<1))
             {
                 idx21 = pixel.size() - 2;
                 pt21 = px;
diff --git a/src/GeoMath.h b/src/GeoMath.h
index 5898853..02c6b29 100644
--- a/src/GeoMath.h
+++ b/src/GeoMath.h
@@ -30,12 +30,9 @@ class IDrawContext;
 
 struct point3D
 {
-    point3D() : x(0), y(0), z(0)
-    {
-    }
-    qreal x;
-    qreal y;
-    qreal z;
+    qreal x = 0;
+    qreal y = 0;
+    qreal z = 0;
 };
 
 struct pointDP : public point3D
@@ -59,20 +56,20 @@ struct segment_t
     QPointF px2;
 };
 
-extern void     GPS_Math_DegMin_To_Deg(bool sign, const qint32 d, const qreal m, qreal& deg);
-extern void     GPS_Math_DegMinSec_To_Deg(bool sign, const qint32 d, const qint32 m, const qreal s, qreal& deg);
-extern bool     GPS_Math_Deg_To_DegMin(qreal v, qint32 *d, qreal *m);
+void    GPS_Math_DegMin_To_Deg(bool sign, const qint32 d, const qreal m, qreal& deg);
+void    GPS_Math_DegMinSec_To_Deg(bool sign, const qint32 d, const qint32 m, const qreal s, qreal& deg);
+bool    GPS_Math_Deg_To_DegMin(qreal v, qint32 *deg, qreal *min);
 /// use for long distances
-extern qreal    GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2, qreal& a1, qreal& a2);
-extern qreal    GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2);
+qreal   GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2, qreal& a1, qreal& a2);
+qreal   GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2);
 /// use for short distances, much quicker processing
-extern qreal    GPS_Math_DistanceQuick(const qreal u1, const qreal v1, const qreal u2, const qreal v2);
-extern void     GPS_Math_Wpt_Projection(const qreal lon1, const qreal lat1, const qreal distance, const qreal bearing, qreal& lon2, qreal& lat2);
-extern void     GPS_Math_DouglasPeucker(QVector<pointDP>& line, qreal d);
-extern QPointF  GPS_Math_Wpt_Projection(const QPointF& pt1, qreal distance, qreal bearing);
-extern bool     GPS_Math_LineCrossesRect(const QPointF& p1, const QPointF& p2, const QRectF& rect);
-extern void     GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 threshold, const QPolygonF& pixel, segment_t& result);
-extern qreal    GPS_Math_DistPointPolyline(const QPolygonF &points, const QPointF &q);
+qreal   GPS_Math_DistanceQuick(const qreal u1, const qreal v1, const qreal u2, const qreal v2);
+void    GPS_Math_Wpt_Projection(const qreal lon1, const qreal lat1, const qreal distance, const qreal bearing, qreal& lon2, qreal& lat2);
+void    GPS_Math_DouglasPeucker(QVector<pointDP>& line, qreal d);
+QPointF GPS_Math_Wpt_Projection(const QPointF& pt1, qreal distance, qreal bearing);
+bool    GPS_Math_LineCrossesRect(const QPointF& p1, const QPointF& p2, const QRectF& rect);
+void    GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 threshold, const QPolygonF& pixel, segment_t& result);
+qreal   GPS_Math_DistPointPolyline(const QPolygonF &points, const QPointF &q);
 
 #endif                           //GEOMATH_H
 
diff --git a/src/IMainWindow.ui b/src/IMainWindow.ui
index da59245..52adda0 100644
--- a/src/IMainWindow.ui
+++ b/src/IMainWindow.ui
@@ -55,7 +55,7 @@
      <x>0</x>
      <y>0</y>
      <width>800</width>
-     <height>20</height>
+     <height>21</height>
     </rect>
    </property>
    <widget class="QMenu" name="menuFile">
@@ -91,6 +91,7 @@
     <addaction name="actionFlipMouseWheel"/>
     <addaction name="actionProfileIsWindow"/>
     <addaction name="actionSetupMapFont"/>
+    <addaction name="actionSetupMapBackground"/>
     <addaction name="actionSetupUnits"/>
     <addaction name="actionSetupGrid"/>
     <addaction name="actionSetupMapView"/>
@@ -755,6 +756,18 @@
     <enum>QAction::NoRole</enum>
    </property>
   </action>
+  <action name="actionSetupMapBackground">
+   <property name="icon">
+    <iconset resource="resources.qrc">
+     <normaloff>:/icons/32x32/SelectColor.png</normaloff>:/icons/32x32/SelectColor.png</iconset>
+   </property>
+   <property name="text">
+    <string>Setup Map Background</string>
+   </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
+  </action>
   <action name="actionSetupWaypointIcons">
    <property name="icon">
     <iconset resource="resources.qrc">
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index 34516c3..c4889b6 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -38,6 +38,7 @@
 #include "mouse/CMouseNormal.h"
 #include "mouse/CMousePrint.h"
 #include "mouse/CMouseRangeTrk.h"
+#include "mouse/CMouseSelect.h"
 #include "mouse/CMouseWptBubble.h"
 #include "plot/CPlotProfile.h"
 #include "units/IUnit.h"
@@ -53,8 +54,7 @@ CCanvas::CCanvas(QWidget *parent, const QString &name)
 
     if(name.isEmpty())
     {
-        int count = 1;
-        while(1)
+        for(int count = 1;; ++count)
         {
             QString name = tr("View %1").arg(count);
             if(nullptr == CMainWindow::self().findChild<CCanvas*>(name))
@@ -62,7 +62,6 @@ CCanvas::CCanvas(QWidget *parent, const QString &name)
                 setObjectName(name);
                 break;
             }
-            count++;
         }
     }
     else
@@ -130,7 +129,7 @@ CCanvas::~CCanvas()
     saveSizeTrackProfile();
 }
 
-void CCanvas::setOverrideCursor(const QCursor& cursor, const QString& src)
+void CCanvas::setOverrideCursor(const QCursor &cursor, const QString&)
 {
 //    qDebug() << "setOverrideCursor" << src;
     QApplication::setOverrideCursor(cursor);
@@ -153,9 +152,10 @@ void CCanvas::saveConfig(QSettings& cfg)
     map->saveConfig(cfg);
     dem->saveConfig(cfg);
     grid->saveConfig(cfg);
-    cfg.setValue("posFocus", posFocus);
-    cfg.setValue("proj", map->getProjection());
-    cfg.setValue("scales", map->getScalesType());
+    cfg.setValue("posFocus",  posFocus);
+    cfg.setValue("proj",      map->getProjection());
+    cfg.setValue("scales",    map->getScalesType());
+    cfg.setValue("backColor", backColor.name());
 }
 
 void CCanvas::loadConfig(QSettings& cfg)
@@ -164,6 +164,9 @@ void CCanvas::loadConfig(QSettings& cfg)
     setProjection(cfg.value("proj", map->getProjection()).toString());
     setScales((CCanvas::scales_type_e)cfg.value("scales",  map->getScalesType()).toInt());
 
+    const QString &backColorStr = cfg.value("backColor", "#FFFFBF").toString();
+    backColor = QColor(backColorStr);
+
     map->loadConfig(cfg);
     dem->loadConfig(cfg);
     grid->loadConfig(cfg);
@@ -186,114 +189,90 @@ void CCanvas::resetMouse()
     }
 }
 
-void CCanvas::setMouseMoveWpt(CGisItemWpt& wpt)
+void CCanvas::setMouseCursor(IMouse& mouse, const QString& src)
 {
-    mouse->deleteLater();
-    mouse = new CMouseMoveWpt(wpt, gis, this);
     if(underMouse())
     {
-        CCanvas::restoreOverrideCursor("setMouseMoveWpt");
-        CCanvas::setOverrideCursor(*mouse, "setMouseMoveWpt");
+        CCanvas::restoreOverrideCursor(src);
+        CCanvas::setOverrideCursor(mouse, src);
     }
 }
 
+void CCanvas::setMouseMoveWpt(CGisItemWpt& wpt)
+{
+    mouse->deleteLater();
+    mouse = new CMouseMoveWpt(wpt, gis, this);
+    setMouseCursor(*mouse, "setMouseMoveWpt");
+}
+
 void CCanvas::setMouseEditTrk(const QPointF &pt)
 {
     mouse->deleteLater();
     mouse = new CMouseEditTrk(pt, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseEditTrk");
-        CCanvas::setOverrideCursor(*mouse, "setMouseEditTrk");
-    }
+    setMouseCursor(*mouse, "setMouseEditTrk");
 }
 
 void CCanvas::setMouseEditRte(const QPointF &pt)
 {
     mouse->deleteLater();
     mouse = new CMouseEditRte(pt, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseEditRte");
-        CCanvas::setOverrideCursor(*mouse, "setMouseEditRte");
-    }
+    setMouseCursor(*mouse, "setMouseEditRte");
 }
 
 void CCanvas::setMouseEditTrk(CGisItemTrk& trk)
 {
     mouse->deleteLater();
     mouse = new CMouseEditTrk(trk, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseEditTrk");
-        CCanvas::setOverrideCursor(*mouse, "setMouseEditTrk");
-    }
+    setMouseCursor(*mouse, "setMouseEditTrk");
 }
 
 void CCanvas::setMouseRangeTrk(CGisItemTrk& trk)
 {
     mouse->deleteLater();
     mouse = new CMouseRangeTrk(trk, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseRangeTrk");
-        CCanvas::setOverrideCursor(*mouse, "setMouseRangeTrk");
-    }
+    setMouseCursor(*mouse, "setMouseRangeTrk");
 }
 
 void CCanvas::setMouseEditArea(const QPointF& pt)
 {
     mouse->deleteLater();
     mouse = new CMouseEditArea(pt, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseEditArea");
-        CCanvas::setOverrideCursor(*mouse, "setMouseEditArea");
-    }
+    setMouseCursor(*mouse, "setMouseEditArea");
 }
 
 void CCanvas::setMouseEditArea(CGisItemOvlArea& area)
 {
     mouse->deleteLater();
     mouse = new CMouseEditArea(area, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseEditArea");
-        CCanvas::setOverrideCursor(*mouse, "setMouseEditArea");
-    }
+    setMouseCursor(*mouse, "setMouseEditArea");
 }
 
 void CCanvas::setMouseEditRte(CGisItemRte& rte)
 {
     mouse->deleteLater();
     mouse = new CMouseEditRte(rte, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseEditRte");
-        CCanvas::setOverrideCursor(*mouse, "setMouseEditRte");
-    }
+    setMouseCursor(*mouse, "setMouseEditRte");
 }
 
 void CCanvas::setMouseWptBubble(const IGisItem::key_t& key)
 {
     mouse->deleteLater();
     mouse = new CMouseWptBubble(key, gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMouseWptBubble");
-        CCanvas::setOverrideCursor(*mouse, "setMouseWptBubble");
-    }
+    setMouseCursor(*mouse, "setMouseWptBubble");
 }
 
 void CCanvas::setMousePrint()
 {
     mouse->deleteLater();
     mouse = new CMousePrint(gis, this);
-    if(underMouse())
-    {
-        CCanvas::restoreOverrideCursor("setMousePrint");
-        CCanvas::setOverrideCursor(*mouse, "setMousePrint");
-    }
+    setMouseCursor(*mouse, "setMousePrint");
+}
+
+void CCanvas::setMouseSelect()
+{
+    mouse->deleteLater();
+    mouse = new CMouseSelect(gis, this);
+    setMouseCursor(*mouse, "setMouseSelect");
 }
 
 void CCanvas::reportStatus(const QString& key, const QString& msg)
@@ -310,7 +289,7 @@ void CCanvas::reportStatus(const QString& key, const QString& msg)
     QString report;
     QStringList keys = statusMessages.keys();
     keys.sort();
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         report += statusMessages[key] + "\n";
     }
@@ -361,7 +340,7 @@ void CCanvas::paintEvent(QPaintEvent * e)
     USE_ANTI_ALIASING(p,true);
 
     // fill the background with default pattern
-    p.fillRect(rect(), "#FFFFBF");
+    p.fillRect(rect(), backColor);
 
     // ----- start to draw thread based content -----
     // move coordinate system to center of the screen
@@ -406,10 +385,9 @@ void CCanvas::mousePressEvent(QMouseEvent * e)
 
 void CCanvas::mouseMoveEvent(QMouseEvent * e)
 {
-    qreal ele = NOFLOAT;
     QPointF pos = e->pos();
     map->convertPx2Rad(pos);
-    ele = dem->getElevationAt(pos);
+    qreal ele = dem->getElevationAt(pos);
     emit sigMousePosition(pos * RAD_TO_DEG, ele);
 
     mouse->mouseMoveEvent(e);
@@ -458,9 +436,8 @@ void CCanvas::enterEvent(QEvent * e)
 }
 
 
-void CCanvas::leaveEvent(QEvent * e)
+void CCanvas::leaveEvent(QEvent *)
 {
-    Q_UNUSED(e);
     // bad hack to stop bad number of override cursors.
     while(QApplication::overrideCursor())
     {
@@ -487,19 +464,19 @@ void CCanvas::keyPressEvent(QKeyEvent * e)
 
     /* move the map with keys up, down, left and right */
     case Qt::Key_Up:
-        moveMap(QPointF(         0,  height()/4));
+        moveMap(QPointF(0,  height()/4));
         break;
 
     case Qt::Key_Down:
-        moveMap(QPointF(         0, -height()/4));
+        moveMap(QPointF(0, -height()/4));
         break;
 
     case Qt::Key_Left:
-        moveMap(QPointF( width()/4,           0));
+        moveMap(QPointF( width()/4, 0));
         break;
 
     case Qt::Key_Right:
-        moveMap(QPointF(-width()/4,           0));
+        moveMap(QPointF(-width()/4, 0));
         break;
 
     case Qt::Key_Escape:
@@ -691,6 +668,18 @@ void CCanvas::setupGrid()
     update();
 }
 
+void CCanvas::setupBackgroundColor()
+{
+    QColorDialog::setCustomColor(0, "#FFFFBF");
+    const QColor &selected = QColorDialog::getColor(backColor, this, tr("Setup Map Background"));
+
+    if(selected.isValid())
+    {
+        backColor = selected;
+        update();
+    }
+}
+
 void CCanvas::convertGridPos2Str(const QPointF& pos, QString& str, bool simple)
 {
     grid->convertPos2Str(pos, str, simple);
@@ -748,17 +737,17 @@ CCanvas::scales_type_e CCanvas::getScalesType()
 }
 
 
-qreal CCanvas::getElevationAt(const QPointF& pos)
+qreal CCanvas::getElevationAt(const QPointF& pos) const
 {
     return dem->getElevationAt(pos);
 }
 
-void CCanvas::getElevationAt(const QPolygonF& pos, QPolygonF& ele)
+void CCanvas::getElevationAt(const QPolygonF& pos, QPolygonF& ele) const
 {
     return dem->getElevationAt(pos, ele);
 }
 
-void CCanvas::getElevationAt(SGisLine& line)
+void CCanvas::getElevationAt(SGisLine& line) const
 {
     return dem->getElevationAt(line);
 }
@@ -857,16 +846,9 @@ void CCanvas::showProfileAsWindow(bool yes)
 
 void CCanvas::showProfile(bool yes)
 {
-    if(plotTrackProfile)
+    if(nullptr != plotTrackProfile)
     {
-        if(yes)
-        {
-            plotTrackProfile->show();
-        }
-        else
-        {
-            plotTrackProfile->hide();
-        }
+        plotTrackProfile->setVisible(yes);
     }
 }
 
diff --git a/src/canvas/CCanvas.h b/src/canvas/CCanvas.h
index 25d0560..3ae8b68 100644
--- a/src/canvas/CCanvas.h
+++ b/src/canvas/CCanvas.h
@@ -45,8 +45,6 @@ class QLabel;
 class IPlot;
 struct SGisLine;
 
-
-
 class CCanvas : public QWidget
 {
     Q_OBJECT
@@ -54,7 +52,7 @@ public:
     CCanvas(QWidget * parent, const QString& name);
     virtual ~CCanvas();
 
-    static void setOverrideCursor(const QCursor& cursor, const QString &src);
+    static void setOverrideCursor(const QCursor &cursor, const QString&);
     static void restoreOverrideCursor(const QString &src);
     static void changeOverrideCursor(const QCursor& cursor, const QString &src);
 
@@ -66,6 +64,8 @@ public:
     void convertRad2Px(QPointF &pos);
     void convertPx2Rad(QPointF& pos);
 
+    void setupBackgroundColor();
+
     void setup();
     QString getProjection();
     void  setProjection(const QString& proj);
@@ -79,9 +79,9 @@ public:
     void  setScales(const scales_type_e type);
     scales_type_e getScalesType();
 
-    qreal getElevationAt(const QPointF &pos);
-    void  getElevationAt(const QPolygonF& pos, QPolygonF &ele);
-    void  getElevationAt(SGisLine &line);
+    qreal getElevationAt(const QPointF &pos) const;
+    void  getElevationAt(const QPolygonF& pos, QPolygonF &ele) const;
+    void  getElevationAt(SGisLine &line) const;
 
     void moveMap(const QPointF &delta);
     void zoomTo(const QRectF& rect);
@@ -109,11 +109,11 @@ public:
     void setMouseEditArea(const QPointF& pt);
     void setMouseWptBubble(const IGisItem::key_t& key);
     void setMousePrint();
+    void setMouseSelect();
 
     void showProfileAsWindow(bool yes);
     void showProfile(bool yes);
 
-
     /**
        @brief Add a message by key to be reported on the canvas
 
@@ -175,17 +175,15 @@ private:
     void setSizeTrackProfile();
     void saveSizeTrackProfile();
     void setDrawContextSize(const QSize& s);
+    void setMouseCursor(IMouse& mouse, const QString& src);
+
+    QColor backColor;     //< the background color used in case of missing map tiles
+    redraw_e needsRedraw; //< set true to initiate a complete redraw of the screen content
+    CMapDraw * map;       //< the map object attached to this canvas
+    CDemDraw * dem;       //< the elevation data layer attached to this canvas
+    CGisDraw * gis;       //< the GIS data layer attached to this canvas
+    CGrid * grid;         //< the grid attached to this canvas
 
-    /// set true to initiate a complete redraw of the screen content
-    redraw_e needsRedraw;
-    /// the map object attached to this canvas
-    CMapDraw * map;
-    /// the elevation data layer attached to this canvas
-    CDemDraw * dem;
-    /// the GIS data layer attached to this canvas
-    CGisDraw * gis;
-    /// the grid attached to this canvas
-    CGrid * grid;
     /// the current point of focus (usually the canvas center)
     QPointF posFocus {12.00 * DEG_TO_RAD, 49.00 * DEG_TO_RAD};
 
diff --git a/src/canvas/IDrawContext.cpp b/src/canvas/IDrawContext.cpp
index 0e372e5..6805bf4 100644
--- a/src/canvas/IDrawContext.cpp
+++ b/src/canvas/IDrawContext.cpp
@@ -16,7 +16,6 @@
 
 **********************************************************************************************/
 
-
 #include "canvas/IDrawContext.h"
 
 #include <QtWidgets>
@@ -28,64 +27,21 @@
 #define N_DEFAULT_ZOOM_LEVELS 31
 const qreal IDrawContext::scalesDefault[N_DEFAULT_ZOOM_LEVELS] =
 {
-    0.10
-    , 0.15
-    , 0.20
-    , 0.30
-    , 0.50
-    , 0.70
-    , 1.0
-    , 1.5
-    , 2.0
-    , 3.0
-    , 5.0
-    , 7.0
-    , 10.0
-    , 15.0
-    , 20.0
-    , 30.0
-    , 50.0
-    , 70.0
-    , 100.0
-    , 150.0
-    , 200.0
-    , 300.0
-    , 500.0
-    , 700.0
-    , 1000.0
-    , 1500.0
-    , 2000.0
-    , 3000.0
-    , 5000.0
-    , 7000.0
-    , 10000.0
-//    , 15000.0
-//    , 20000.0
-//    , 30000.0
-//    , 50000.0
-//    , 70000.0
+    0.10,  0.15,  0.20,  0.30,   0.50,   0.70,   1.0,    1.5,    2.0,    3.0,
+    5.0,   7.0,  10.0,  15.0,   20.0,   30.0,   50.0,   70.0,  100.0,  150.0,
+    200.0, 300.0, 500.0, 700.0, 1000.0, 1500.0, 2000.0, 3000.0, 5000.0, 7000.0,
+    10000.0
+    //, 15000.0, 20000.0, 30000.0, 50000.0, 70000.0
 };
 
 #define N_SQUARE_ZOOM_LEVELS 17
 const qreal IDrawContext::scalesSquare[N_SQUARE_ZOOM_LEVELS] =
 {
-    0.1492910709
-    , 0.2985821417
-    , 0.5971642834
-    , 1.1943285668
-    , 2.3886571336
-    , 4.7773142672
-    , 9.5546285344
-    , 19.1092570688
-    , 38.2185141376
-    , 76.4370282752
-    , 152.8740565504
-    , 305.7481131008
-    , 611.4962262016
-    , 1222.9924524032
-    , 2445.9849048064
-    , 4891.9698096128
-    , 9783.9396192256
+    0.1492910709,    0.2985821417,    0.5971642834,    1.1943285668,
+    2.3886571336,    4.7773142672,    9.5546285344,   19.1092570688,
+    38.2185141376,   76.4370282752,  152.8740565504,  305.7481131008,
+    611.4962262016, 1222.9924524032, 2445.9849048064, 4891.9698096128,
+    9783.9396192256
 };
 
 QPointF operator*(const QPointF& p1, const QPointF& p2)
@@ -137,25 +93,26 @@ void IDrawContext::resize(const QSize& size)
         wait();
     }
     mutex.lock(); // --------- start serialize with thread
-    viewWidth   = size.width();
-    viewHeight  = size.height();
+    viewWidth  = size.width();
+    viewHeight = size.height();
 
-    center      = QPointF(viewWidth/2.0, viewHeight/2.0);
-    bufWidth    = viewWidth  + 2 * BUFFER_BORDER;
-    bufHeight   = viewHeight + 2 * BUFFER_BORDER;
+    center     = QPointF(viewWidth/2.0, viewHeight/2.0);
+    bufWidth   = viewWidth  + 2 * BUFFER_BORDER;
+    bufHeight  = viewHeight + 2 * BUFFER_BORDER;
 
     buffer[0].image = QImage(bufWidth, bufHeight, QImage::Format_ARGB32);
     buffer[1].image = QImage(bufWidth, bufHeight, QImage::Format_ARGB32);
     mutex.unlock(); // --------- stop serialize with thread
 }
 
-QString IDrawContext::getProjection()
+QString IDrawContext::getProjection() const
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return QString::Null();
     }
-    char * p = pj_get_def(pjsrc,0);
+
+    char *p = pj_get_def(pjsrc, 0);
     QString str(p);
     free(p);
 
@@ -164,7 +121,7 @@ QString IDrawContext::getProjection()
 
 void IDrawContext::setProjection(const QString& proj)
 {
-    if(pjsrc != 0)
+    if(pjsrc != nullptr)
     {
         pj_free(pjsrc);
     }
@@ -172,29 +129,18 @@ void IDrawContext::setProjection(const QString& proj)
     pjsrc = pj_init_plus(proj.toLatin1());
 }
 
-CCanvas::scales_type_e IDrawContext::getScalesType() const
-{
-    return scalesType;
-}
-
 void IDrawContext::setScales(const CCanvas::scales_type_e type)
 {
     switch (type)
     {
     case CCanvas::eScalesDefault:
-        for (int i=0; i < N_DEFAULT_ZOOM_LEVELS; i++)
-        {
-            scales[i] = scalesDefault[i];
-        }
+        scales = scalesDefault;
         zoomLevels = N_DEFAULT_ZOOM_LEVELS;
         scalesType = type;
         break;
 
     case CCanvas::eScalesSquare:
-        for (int i=0; i < N_SQUARE_ZOOM_LEVELS; i++)
-        {
-            scales[i] = scalesSquare[i];
-        }
+        scales = scalesSquare;
         zoomLevels = N_SQUARE_ZOOM_LEVELS;
         scalesType = type;
         break;
@@ -204,18 +150,17 @@ void IDrawContext::setScales(const CCanvas::scales_type_e type)
     }
 }
 
-bool IDrawContext::needsRedraw()
+bool IDrawContext::needsRedraw() const
 {
-    bool res = false;
     mutex.lock();
-    res = intNeedsRedraw;
+    bool res = intNeedsRedraw;
     mutex.unlock();
     return res;
 }
 
 void IDrawContext::zoom(const QRectF& rect)
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
@@ -247,7 +192,7 @@ void IDrawContext::zoom(const QRectF& rect)
 
 void IDrawContext::zoom(bool in, CCanvas::redraw_e& needsRedraw)
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
@@ -257,15 +202,8 @@ void IDrawContext::zoom(bool in, CCanvas::redraw_e& needsRedraw)
 
 void IDrawContext::zoom(int idx)
 {
-    if(idx < 0)
-    {
-        idx = 0;
-    }
-
-    if(idx >= zoomLevels)
-    {
-        idx = zoomLevels -1;
-    }
+    idx = qMax(idx, 0);
+    idx = qMin(idx, zoomLevels - 1);
 
     mutex.lock(); // --------- start serialize with thread
     if((zoomIndex != idx) || (zoomFactor.x() != scales[idx]))
@@ -280,9 +218,9 @@ void IDrawContext::zoom(int idx)
     mutex.unlock(); // --------- stop serialize with thread
 }
 
-void IDrawContext::convertRad2M(QPointF &p)
+void IDrawContext::convertRad2M(QPointF &p) const
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
@@ -297,7 +235,7 @@ void IDrawContext::convertRad2M(QPointF &p)
     bool fixWest = p.x() < (-180*DEG_TO_RAD);
     bool fixEast = p.x() > ( 180*DEG_TO_RAD);
 
-    pj_transform(pjtar,pjsrc,1,0,&p.rx(),&p.ry(),0);
+    pj_transform(pjtar, pjsrc, 1, 0, &p.rx(), &p.ry(), 0);
 
     /*
         The idea of the fix is to calculate a point
@@ -319,17 +257,17 @@ void IDrawContext::convertRad2M(QPointF &p)
     }
 }
 
-void IDrawContext::convertM2Rad(QPointF &p)
+void IDrawContext::convertM2Rad(QPointF &p) const
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
 
-    pj_transform(pjsrc,pjtar,1,0,&p.rx(),&p.ry(),0);
+    pj_transform(pjsrc, pjtar, 1, 0, &p.rx(), &p.ry(), 0);
 }
 
-void IDrawContext::convertPx2Rad(QPointF &p)
+void IDrawContext::convertPx2Rad(QPointF &p) const
 {
     mutex.lock(); // --------- start serialize with thread
 
@@ -343,7 +281,7 @@ void IDrawContext::convertPx2Rad(QPointF &p)
     mutex.unlock(); // --------- stop serialize with thread
 }
 
-void IDrawContext::convertRad2Px(QPointF &p)
+void IDrawContext::convertRad2Px(QPointF &p) const
 {
     mutex.lock(); // --------- start serialize with thread
 
@@ -356,7 +294,7 @@ void IDrawContext::convertRad2Px(QPointF &p)
     mutex.unlock(); // --------- stop serialize with thread
 }
 
-void IDrawContext::convertRad2Px(QPolygonF& poly)
+void IDrawContext::convertRad2Px(QPolygonF& poly) const
 {
     mutex.lock(); // --------- start serialize with thread
 
@@ -375,7 +313,7 @@ void IDrawContext::convertRad2Px(QPolygonF& poly)
 
 void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPointF& f)
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
@@ -389,17 +327,15 @@ void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPoint
     QPointF bufferScale = scale * zoomFactor;
 
     mutex.lock(); // --------- start serialize with thread
-    // derive top left reference coordinate of map buffer
+
+    // derive references for all corners coordinate of map buffer
     ref1 = f1 + QPointF(-bufWidth/2, -bufHeight/2) * bufferScale;
-    convertM2Rad(ref1);
-    // derive top right reference coordinate of map buffer
     ref2 = f1 + QPointF( bufWidth/2, -bufHeight/2) * bufferScale;
-    convertM2Rad(ref2);
-    // derive bottom right reference coordinate of map buffer
     ref3 = f1 + QPointF( bufWidth/2,  bufHeight/2) * bufferScale;
-    convertM2Rad(ref3);
-    // derive bottom left reference coordinate of map buffer
     ref4 = f1 + QPointF(-bufWidth/2,  bufHeight/2) * bufferScale;
+    convertM2Rad(ref1);
+    convertM2Rad(ref2);
+    convertM2Rad(ref3);
     convertM2Rad(ref4);
 
     // adjust west <-> east boundaries
@@ -454,7 +390,7 @@ void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPoint
     }
     mutex.unlock(); // --------- stop serialize with thread
 
-    if((needsRedraw  & maskRedraw) && !isRunning())
+    if((needsRedraw & maskRedraw) && !isRunning())
     {
         emit sigStartThread();
         start();
@@ -466,22 +402,22 @@ void IDrawContext::run()
     mutex.lock();
     QTime t;
     t.start();
-    qDebug() << "start thread";
+    qDebug() << "start thread" << objectName();
 
     IDrawContext::buffer_t& currentBuffer = buffer[!bufIndex];
     while(intNeedsRedraw)
     {
         // copy all projection information need by the
         // map render objects to buffer structure
-        currentBuffer.pjsrc         = pjsrc;
-        currentBuffer.zoomFactor    = zoomFactor;
-        currentBuffer.scale         = scale;
-        currentBuffer.ref1          = ref1;
-        currentBuffer.ref2          = ref2;
-        currentBuffer.ref3          = ref3;
-        currentBuffer.ref4          = ref4;
-        currentBuffer.focus         = focus;
-        intNeedsRedraw              = false;
+        currentBuffer.pjsrc      = pjsrc;
+        currentBuffer.zoomFactor = zoomFactor;
+        currentBuffer.scale      = scale;
+        currentBuffer.ref1       = ref1;
+        currentBuffer.ref2       = ref2;
+        currentBuffer.ref3       = ref3;
+        currentBuffer.ref4       = ref4;
+        currentBuffer.focus      = focus;
+        intNeedsRedraw           = false;
 
         mutex.unlock();
 
@@ -495,7 +431,8 @@ void IDrawContext::run()
     }
     // ----- switch buffer ------
     bufIndex = !bufIndex;
-    qDebug() << objectName() << "stop thread" << t.elapsed();
+    qDebug() << "stop thread" << objectName() << "after" << t.elapsed() << "ms";
+
     mutex.unlock();
 }
 
diff --git a/src/canvas/IDrawContext.h b/src/canvas/IDrawContext.h
index 0c41668..0fcae38 100644
--- a/src/canvas/IDrawContext.h
+++ b/src/canvas/IDrawContext.h
@@ -42,26 +42,19 @@ public:
     {
         /// @note: all coordinate values are long/lat WGS84 [rad]
 
-        /// the canvas buffer
-        QImage image;
-        /// the used projection
-        projPJ pjsrc;
-        /// the zoomfactor used to draw the canvas
-        QPointF zoomFactor {1.0,1.0};
-        /// the number of zoom levels
-        int zoomLevels;
-        /// the scale of the global viewport
-        QPointF scale {1.0,1.0};
-        /// top left corner
-        QPointF ref1;
-        /// top right corner
-        QPointF ref2;
-        /// bottom right corner
-        QPointF ref3;
-        /// bottom left corner
-        QPointF ref4;
-        /// point of focus
-        QPointF focus;
+        QImage image; //< the canvas buffer
+        projPJ pjsrc; //< the used projection
+
+        int zoomLevels; //< the number of zoom levels
+
+        QPointF zoomFactor {1.0,1.0}; //< the zoomfactor used to draw the canvas
+        QPointF scale {1.0,1.0}; //< the scale of the global viewport
+
+        QPointF ref1;  //< top left corner
+        QPointF ref2;  //< top right corner
+        QPointF ref3;  //< bottom right corner
+        QPointF ref4;  //< bottom left corner
+        QPointF focus; //< point of focus
     };
 
     /**
@@ -87,30 +80,30 @@ public:
        @note  The unit is dependent on the currently used projection and must not necessarily be meter
        @param p             the point to convert
      */
-    void convertRad2M(QPointF &p);
+    void convertRad2M(QPointF &p) const;
     /**
        @brief Convert a geo coordinate of the currently used projection/datum to lon/lat WGS84
        @note  The unit is dependent on the currently used projection and must not necessarily be meter
        @param p             the point to convert
      */
-    void convertM2Rad(QPointF &p);
+    void convertM2Rad(QPointF &p) const;
     /**
        @brief Convert a pixel coordinate from the viewport to a geo coordinate in [rad]
        @param p             the point to convert
      */
-    void convertPx2Rad(QPointF& p);
+    void convertPx2Rad(QPointF& p) const;
     /**
        @brief Convert a geo coordinate in [rad] to a pixel coordinate of the viewport
        @param p             the point to convert
      */
-    void convertRad2Px(QPointF& p);
-    void convertRad2Px(QPolygonF& poly);
+    void convertRad2Px(QPointF& p) const;
+    void convertRad2Px(QPolygonF& poly) const;
 
     /**
        @brief Check if the internal needs redraw flag is set
        @return intNeedsRedraw is returned
      */
-    bool needsRedraw();
+    bool needsRedraw() const;
 
     /**
         @brief Draw the active map buffer to the painter
@@ -124,8 +117,11 @@ public:
        @brief Get the projection string of this map object
        @return A proj4 string.
      */
-    QString getProjection();
-    CCanvas::scales_type_e getScalesType() const;
+    QString getProjection() const;
+    CCanvas::scales_type_e getScalesType() const
+    {
+        return scalesType;
+    }
 
     /**
        @brief Set the projection of the draw context
@@ -170,7 +166,7 @@ protected:
     static const qreal scalesSquare[];
 
     /// the mutex to serialize access
-    QMutex mutex;
+    mutable QMutex mutex;
 
     /// internal needs redraw flag
     bool intNeedsRedraw;
@@ -183,44 +179,39 @@ protected:
     buffer_t buffer[2];
     /// the main threads currently used map canvas buffer
     bool bufIndex = false;
-    /// buffer width [px]
-    int bufWidth = 100;
-    /// buffer height [px]
-    int bufHeight = 100;
-    /// the viewports width [px]
-    int viewWidth = 100;
-    /// the viewports height [px]
-    int viewHeight = 100;
-    /// the center of the viewport
-    QPointF center;
-
-    /// source projection should be the same for all maps
-    projPJ pjsrc;
-    /// target projection is always WGS84
-    projPJ pjtar;
+
+    int bufWidth   = 100; //< buffer width [px]
+    int bufHeight  = 100; //< buffer height [px]
+    int viewWidth  = 100; //< the viewports width [px]
+    int viewHeight = 100; //< the viewports height [px]
+
+    QPointF center; /// the center of the viewport
+
+    projPJ pjsrc; //< source projection should be the same for all maps
+    projPJ pjtar; //< target projection is always WGS84
+
+    /// index into scales table
+    int zoomIndex = 0;
+
+private:
     /// the used scales and the type of scale levels
-    qreal scales[CANVAS_MAX_ZOOM_LEVELS];
+    const qreal *scales = nullptr;
     CCanvas::scales_type_e scalesType;
     /// the number of zoom levels
     int zoomLevels = 0;
 
     /// the basic scale of the map canvas
     QPointF scale {1.0,-1.0};
-    /// index into scales table
-    int zoomIndex = 0;
+
     /// the actual used scaleFactor
     QPointF zoomFactor;
 
-    /// the next point of focus that will be displayed right in the middle of the viewport
-    QPointF focus;
-    /// top left corner of next buffer
-    QPointF ref1;
-    /// top right corner of next buffer
-    QPointF ref2;
-    /// bottom right corner of next buffer
-    QPointF ref3;
-    /// bottom left corner of next buffer
-    QPointF ref4;
+    QPointF focus; //< the next point of focus that will be displayed right in the middle of the viewport
+
+    QPointF ref1; //< top left corner of next buffer
+    QPointF ref2; //< top right corner of next buffer
+    QPointF ref3; //< bottom right corner of next buffer
+    QPointF ref4; //< bottom left corner of next buffer
 };
 
 extern QPointF operator*(const QPointF& p1, const QPointF& p2);
diff --git a/src/cursors/cursorSelectArea.png b/src/cursors/cursorSelectArea.png
new file mode 100644
index 0000000..1648397
Binary files /dev/null and b/src/cursors/cursorSelectArea.png differ
diff --git a/src/dem/CDemDraw.cpp b/src/dem/CDemDraw.cpp
index 114709f..5bb59b3 100644
--- a/src/dem/CDemDraw.cpp
+++ b/src/dem/CDemDraw.cpp
@@ -82,7 +82,7 @@ void CDemDraw::setupDemPath(const QStringList &paths)
 {
     demPaths = paths;
 
-    foreach(CDemDraw * dem, dems)
+    for(CDemDraw * dem : dems)
     {
         QStringList keys;
         dem->saveActiveMapsList(keys);
@@ -138,11 +138,11 @@ void CDemDraw::buildMapList()
     QMutexLocker lock(&CDemItem::mutexActiveDems);
     demList->clear();
 
-    foreach(const QString &path, demPaths)
+    for(const QString &path : demPaths)
     {
         QDir dir(path);
         // find available maps
-        foreach(const QString &filename, dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
+        for(const QString &filename : dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
         {
             QFileInfo fi(filename);
 
@@ -209,7 +209,7 @@ void CDemDraw::restoreActiveMapsList(const QStringList& keys)
 {
     QMutexLocker lock(&CDemItem::mutexActiveDems);
 
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         for(int i = 0; i < demList->count(); i++)
         {
@@ -234,7 +234,7 @@ void CDemDraw::restoreActiveMapsList(const QStringList& keys, QSettings& cfg)
 {
     QMutexLocker lock(&CDemItem::mutexActiveDems);
 
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         for(int i = 0; i < demList->count(); i++)
         {
diff --git a/src/dem/CDemList.cpp b/src/dem/CDemList.cpp
index 2139657..85c3b2b 100644
--- a/src/dem/CDemList.cpp
+++ b/src/dem/CDemList.cpp
@@ -204,7 +204,7 @@ void CDemList::slotContextMenu(const QPoint& point)
     if(itemIsSelected)
     {
         CDemItem * item1 = dynamic_cast<CDemItem*>(treeWidget->itemBelow(item));
-        actionMoveUp->setEnabled(itemIsActivated && (treeWidget->itemAbove(item) != 0));
+        actionMoveUp->setEnabled(itemIsActivated && (treeWidget->itemAbove(item) != nullptr));
         actionMoveDown->setEnabled(itemIsActivated && item1 && item1->isActivated());
     }
 
diff --git a/src/dem/CDemPathSetup.cpp b/src/dem/CDemPathSetup.cpp
index 4142987..0b2ce9e 100644
--- a/src/dem/CDemPathSetup.cpp
+++ b/src/dem/CDemPathSetup.cpp
@@ -32,7 +32,7 @@ CDemPathSetup::CDemPathSetup(QStringList &paths)
     connect(toolDelete, &QToolButton::clicked,              this, &CDemPathSetup::slotDelPath);
     connect(listWidget, &QListWidget::itemSelectionChanged, this, &CDemPathSetup::slotItemSelectionChanged);
 
-    foreach(const QString &path, paths)
+    for(const QString &path : paths)
     {
         QListWidgetItem * item = new QListWidgetItem(listWidget);
         item->setText(path);
diff --git a/src/dem/IDem.cpp b/src/dem/IDem.cpp
index b940bbb..645419c 100644
--- a/src/dem/IDem.cpp
+++ b/src/dem/IDem.cpp
@@ -182,31 +182,31 @@ int IDem::getFactorHillshading()
 void IDem::hillshading(QVector<qint16>& data, qreal w, qreal h, QImage& img)
 {
     int wp2 = w + 2;
-    qint16 win[9];
-    qreal dx, dy, aspect, xx_plus_yy, cang;
 
 #define ZFACT           0.125
 #define ZFACT_BY_ZFACT  (ZFACT*ZFACT)
 #define SIN_ALT         (qSin(45*DEG_TO_RAD))
 #define ZFACT_COS_ALT   (ZFACT*qCos(45*DEG_TO_RAD))
 #define AZ              (315 * DEG_TO_RAD)
-    for(int m = 1; m <= h; m++)
+    for(unsigned int m = 1; m <= h; m++)
     {
-        for(int n = 1; n <= w; n++)
+        unsigned char* scan = img.scanLine(m - 1);
+        for(unsigned int n = 1; n <= w; n++)
         {
+            qint16 win[9];
             fillWindow(data, n, m, wp2, win);
 
             if(hasNoData && win[4] == noData)
             {
-                img.setPixel(n - 1, m - 1, 255);
+                scan[n - 1] = 255;
                 continue;
             }
 
-            dx          = ((win[0] + win[3] + win[3] + win[6]) - (win[2] + win[5] + win[5] + win[8])) / (xscale*factorHillshading);
-            dy          = ((win[6] + win[7] + win[7] + win[8]) - (win[0] + win[1] + win[1] + win[2])) / (yscale*factorHillshading);
-            aspect      = qAtan2(dy, dx);
-            xx_plus_yy  = dx * dx + dy * dy;
-            cang        = (SIN_ALT - ZFACT_COS_ALT * qSqrt(xx_plus_yy) * qSin(aspect - AZ)) / qSqrt(1+ZFACT_BY_ZFACT*xx_plus_yy);
+            qreal dx         = ((win[0] + win[3] + win[3] + win[6]) - (win[2] + win[5] + win[5] + win[8])) / (xscale*factorHillshading);
+            qreal dy         = ((win[6] + win[7] + win[7] + win[8]) - (win[0] + win[1] + win[1] + win[2])) / (yscale*factorHillshading);
+            qreal aspect     = qAtan2(dy, dx);
+            qreal xx_plus_yy = dx * dx + dy * dy;
+            qreal cang       = (SIN_ALT - ZFACT_COS_ALT * qSqrt(xx_plus_yy) * qSin(aspect - AZ)) / qSqrt(1+ZFACT_BY_ZFACT*xx_plus_yy);
 
             if (cang <= 0.0)
             {
@@ -217,7 +217,7 @@ void IDem::hillshading(QVector<qint16>& data, qreal w, qreal h, QImage& img)
                 cang = 1.0 + (254.0 * cang);
             }
 
-            img.setPixel(n - 1, m - 1, cang);
+            scan[n - 1] = cang;
         }
     }
 }
@@ -225,44 +225,45 @@ void IDem::hillshading(QVector<qint16>& data, qreal w, qreal h, QImage& img)
 void IDem::slopecolor(QVector<qint16>& data, qreal w, qreal h, QImage &img)
 {
     int wp2 = w + 2;
-    qint16 win[9];
-    qreal dx, dy, k, slope;
 
-    for(int m = 1; m <= h; m++)
+    for(unsigned int m = 1; m <= h; m++)
     {
-        for(int n = 1; n <= w; n++)
+        unsigned char* scan = img.scanLine(m - 1);
+        for(unsigned int n = 1; n <= w; n++)
         {
+            qint16 win[9];
             fillWindow(data, n, m, wp2, win);
-            dx  = ((win[0] + win[3] + win[3] + win[6]) - (win[2] + win[5] + win[5] + win[8])) / (xscale);
-            dy  = ((win[6] + win[7] + win[7] + win[8]) - (win[0] + win[1] + win[1] + win[2])) / (yscale);
-            k   = (dx * dx + dy * dy);
-            slope =  qAtan(qSqrt(k) / (8 * 1.0)) * 180.0 / M_PI;
+
+            qreal dx    = ((win[0] + win[3] + win[3] + win[6]) - (win[2] + win[5] + win[5] + win[8])) / (xscale);
+            qreal dy    = ((win[6] + win[7] + win[7] + win[8]) - (win[0] + win[1] + win[1] + win[2])) / (yscale);
+            qreal k     = dx * dx + dy * dy;
+            qreal slope =  qAtan(qSqrt(k) / (8 * 1.0)) * 180.0 / M_PI;
 
             const qreal *currentSlopeStepTable = getCurrentSlopeStepTable();
 
             if(slope > currentSlopeStepTable[4])
             {
-                img.setPixel(n - 1, m - 1, 5);
+                scan[n - 1] = 5;
             }
             else if(slope > currentSlopeStepTable[3])
             {
-                img.setPixel(n - 1, m - 1, 4);
+                scan[n - 1] = 4;
             }
             else if(slope > currentSlopeStepTable[2])
             {
-                img.setPixel(n - 1, m - 1, 3);
+                scan[n - 1] = 3;
             }
             else if(slope > currentSlopeStepTable[1])
             {
-                img.setPixel(n - 1, m - 1, 2);
+                scan[n - 1] = 2;
             }
             else if(slope > currentSlopeStepTable[0])
             {
-                img.setPixel(n - 1, m - 1, 1);
+                scan[n - 1] = 1;
             }
             else
             {
-                img.setPixel(n - 1, m - 1, 0);
+                scan[n - 1] = 0;
             }
         }
     }
diff --git a/src/dem/IDem.h b/src/dem/IDem.h
index 13d3154..372fc70 100644
--- a/src/dem/IDem.h
+++ b/src/dem/IDem.h
@@ -130,12 +130,12 @@ protected:
         Has to be set by subclass. Destruction has to be
         handled by subclass.
      */
-    projPJ pjsrc = 0;
+    projPJ pjsrc = nullptr;
     /// target projection
     /**
         Is set by IMap() to WGS84. Will be freed by ~IMap()
      */
-    projPJ pjtar = 0;
+    projPJ pjtar = nullptr;
 
     /// width in number of px
     quint32 xsize_px = 0;
diff --git a/src/dem/IDemList.ui b/src/dem/IDemList.ui
index bedbe0c..24641ce 100644
--- a/src/dem/IDemList.ui
+++ b/src/dem/IDemList.ui
@@ -115,7 +115,7 @@
        <item>
         <widget class="QLabel" name="labelHelpFillMapList">
          <property name="text">
-          <string>To add files with elevation data use File->Setup DEM Paths. </string>
+          <string>To add files with elevation data use <b>File->Setup DEM Paths</b>. </string>
          </property>
          <property name="alignment">
           <set>Qt::AlignJustify|Qt::AlignVCenter</set>
diff --git a/src/device/CDeviceGarmin.cpp b/src/device/CDeviceGarmin.cpp
index ab12500..81b87c6 100644
--- a/src/device/CDeviceGarmin.cpp
+++ b/src/device/CDeviceGarmin.cpp
@@ -133,7 +133,7 @@ void CDeviceGarmin::createProjectsFromFiles(QString subdirecoty, QString fileEnd
     QDir dirLoop(dir.absoluteFilePath(subdirecoty));
     qDebug() << "reading files from device: " << dirLoop.path();
     QStringList entries = dirLoop.entryList(QStringList("*." + fileEnding));
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         const QString filename = dirLoop.absoluteFilePath(entry);
         IGisProject * project = nullptr;
@@ -224,7 +224,7 @@ void CDeviceGarmin::saveImages(CGisItemWpt& wpt)
         }
 
         QString filename;
-        foreach(const CGisItemWpt::image_t& image, images)
+        for(const CGisItemWpt::image_t& image : images)
         {
             filename = image.info;
             filename = filename.remove(QRegExp("[^A-Za-z0-9_]"));
@@ -244,7 +244,7 @@ void CDeviceGarmin::saveImages(CGisItemWpt& wpt)
         QList<IGisItem::link_t> links;
 
         QString filename;
-        foreach(const CGisItemWpt::image_t& image, images)
+        for(const CGisItemWpt::image_t& image : images)
         {
             filename = QString("%1.%2.jpg").arg(key).arg(cntImages);
             image.pixmap.save(dirImages.absoluteFilePath(filename));
@@ -276,7 +276,7 @@ void CDeviceGarmin::loadImages(CGisItemWpt& wpt)
 
         QList<CGisItemWpt::image_t> images;
         QStringList entries = dirCache.entryList(QStringList("*.jpg"), QDir::Files);
-        foreach(const QString &file, entries)
+        for(const QString &file : entries)
         {
             CGisItemWpt::image_t image;
             image.pixmap.load(dirCache.absoluteFilePath(file));
@@ -299,7 +299,7 @@ void CDeviceGarmin::loadImages(CGisItemWpt& wpt)
         const QList<IGisItem::link_t>& links = wpt.getLinks();
         QList<CGisItemWpt::image_t> images;
 
-        foreach(const IGisItem::link_t& link, links)
+        for(const IGisItem::link_t& link : links)
         {
             if(link.type != "Garmin")
             {
@@ -331,7 +331,7 @@ void CDeviceGarmin::aboutToRemoveProject(IGisProject * project)
     const QString& key = project->getKey();
     const QDir dirImages(dir.absoluteFilePath(pathPictures));
     QStringList entries = dirImages.entryList(QStringList("*.jpg"), QDir::Files);
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         QString filename = dirImages.absoluteFilePath(entry);
         QFileInfo fi(filename);
diff --git a/src/device/CDeviceGarminArchive.cpp b/src/device/CDeviceGarminArchive.cpp
index a1e931b..e83f6a8 100644
--- a/src/device/CDeviceGarminArchive.cpp
+++ b/src/device/CDeviceGarminArchive.cpp
@@ -47,7 +47,7 @@ void CDeviceGarminArchive::slotExpanded(QTreeWidgetItem * item)
     mount();
     qDebug() << "reading files from device: " << dir.path();
     QStringList entries = dir.entryList(QStringList("*.gpx"));
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         const QString filename = dir.absoluteFilePath(entry);
         IGisProject * project = new CGpxProject(filename, this);
diff --git a/src/device/CDeviceTwoNav.cpp b/src/device/CDeviceTwoNav.cpp
index ef211d1..1aafa99 100644
--- a/src/device/CDeviceTwoNav.cpp
+++ b/src/device/CDeviceTwoNav.cpp
@@ -52,7 +52,7 @@ CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QStr
     }
 
     QStringList entries = dirData.entryList(QStringList("*.gpx"));
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         IGisProject * project =  new CGpxProject(dirData.absoluteFilePath(entry), this);
         if(!project->isValid())
@@ -62,7 +62,7 @@ CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QStr
     }
 
     entries = dirData.entryList(QDir::NoDotAndDotDot|QDir::Dirs);
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         IGisProject * project =  new CTwoNavProject(dirData.absoluteFilePath(entry), this);
         if(!project->isValid())
@@ -74,7 +74,7 @@ CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QStr
     // special case: read the gpx files in the track log directory.
     dirData = dir.absoluteFilePath(pathData + "Tracklog");
     entries = dirData.entryList(QStringList("*.gpx"));
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         IGisProject * project =  new CGpxProject(dirData.absoluteFilePath(entry), this);
         if(!project->isValid())
diff --git a/src/device/CDeviceWatcherLinux.cpp b/src/device/CDeviceWatcherLinux.cpp
index e07e293..bf02fe1 100644
--- a/src/device/CDeviceWatcherLinux.cpp
+++ b/src/device/CDeviceWatcherLinux.cpp
@@ -125,7 +125,7 @@ void CDeviceWatcherLinux::slotUpdate()
     }
 
 
-    foreach (QDBusObjectPath path, paths)
+    for(const QDBusObjectPath &path : paths)
     {
         QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks2", path.path(), "org.freedesktop.DBus.Introspectable","Introspect");
         QDBusPendingReply<QString> reply = QDBusConnection::systemBus().call(call);
@@ -168,12 +168,12 @@ QString CDeviceWatcherLinux::readMountPoint(const QString& path)
     QDBusMessage reply = QDBusConnection::systemBus().call(message);
 
     QList<QByteArray> list;
-    foreach (QVariant arg, reply.arguments())
+    for(const QVariant &arg : reply.arguments())
     {
         arg.value<QDBusVariant>().variant().value<QDBusArgument>() >> list;
     }
 
-    foreach (QByteArray point, list)
+    for(const QByteArray &point : list)
     {
         points.append(point);
     }
diff --git a/src/device/CDeviceWatcherMac.cpp b/src/device/CDeviceWatcherMac.cpp
index 04bcfd3..912fdd6 100644
--- a/src/device/CDeviceWatcherMac.cpp
+++ b/src/device/CDeviceWatcherMac.cpp
@@ -61,7 +61,7 @@ void CDeviceWatcherMac::slotEndListing()
 void CDeviceWatcherMac::slotUpdate()
 {
     qDebug() << "slotUpdate";
-    foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
+    for(const QStorageInfo &storage : QStorageInfo::mountedVolumes())
     {
         addDevice(storage);
     }
@@ -72,7 +72,7 @@ void CDeviceWatcherMac::slotDeviceAdded(QString dev)
 {
     // get mount point
     QStorageInfo storageInfo;
-    foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
+    for(const QStorageInfo &storage : QStorageInfo::mountedVolumes())
     {
         QString diskName = QString(storage.device()).section('/', -1);
         if(dev == diskName)
diff --git a/src/device/CDeviceWatcherWindows.cpp b/src/device/CDeviceWatcherWindows.cpp
index 9c8b1ff..05d9478 100644
--- a/src/device/CDeviceWatcherWindows.cpp
+++ b/src/device/CDeviceWatcherWindows.cpp
@@ -1,74 +1,74 @@
-/**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-**********************************************************************************************/
-
-#include "device/CDeviceWatcherWindows.h"
-#include "gis/CGisListWks.h"
-
-#include "CMainWindow.h"
-#include <QtCore>
-
-CDeviceWatcherWindows * CDeviceWatcherWindows::pSelf = nullptr;
-
-CDeviceWatcherWindows::CDeviceWatcherWindows(CGisListWks *parent)
-    : IDeviceWatcher(parent)
-{
-    pSelf = this;
-}
-
-CDeviceWatcherWindows::~CDeviceWatcherWindows()
-{
-}
-
-void CDeviceWatcherWindows::slotUpdate()
-{
-    QApplication::setOverrideCursor(Qt::WaitCursor);
-    foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
-    {
-        if (storage.isValid() && storage.isReady())
-        {
-            probeForDevice(storage.rootPath(), storage.rootPath(), storage.name());
-        }
-    }
-    QApplication::restoreOverrideCursor();
-}
-
-bool CDeviceWatcherWindows::event(QEvent * e)
-{
-    if (e->type() == CEventDevice::eEvtDeviceWindows)
-    {
-        CEventDevice * evt = (CEventDevice*)e;
-        qDebug() << "CDeviceWatcherWindows::event()" << evt->path << evt->add;
-
-        if (evt->add)
-        {
-            QStorageInfo storage(evt->path);
-            if (storage.isValid() && storage.isReady())
-            {
-                QApplication::setOverrideCursor(Qt::WaitCursor);
-                probeForDevice(evt->path, evt->path, storage.name());
-                QApplication::restoreOverrideCursor();
-            }
-        }
-        else
-        {
-            listWks->removeDevice(evt->path);
-        }
-    }
-
-    return QObject::event(e);
-}
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "device/CDeviceWatcherWindows.h"
+#include "gis/CGisListWks.h"
+
+#include "CMainWindow.h"
+#include <QtCore>
+
+CDeviceWatcherWindows * CDeviceWatcherWindows::pSelf = nullptr;
+
+CDeviceWatcherWindows::CDeviceWatcherWindows(CGisListWks *parent)
+    : IDeviceWatcher(parent)
+{
+    pSelf = this;
+}
+
+CDeviceWatcherWindows::~CDeviceWatcherWindows()
+{
+}
+
+void CDeviceWatcherWindows::slotUpdate()
+{
+    QApplication::setOverrideCursor(Qt::WaitCursor);
+    for(const QStorageInfo &storage : QStorageInfo::mountedVolumes())
+    {
+        if (storage.isValid() && storage.isReady())
+        {
+            probeForDevice(storage.rootPath(), storage.rootPath(), storage.name());
+        }
+    }
+    QApplication::restoreOverrideCursor();
+}
+
+bool CDeviceWatcherWindows::event(QEvent * e)
+{
+    if (e->type() == CEventDevice::eEvtDeviceWindows)
+    {
+        CEventDevice * evt = (CEventDevice*)e;
+        qDebug() << "CDeviceWatcherWindows::event()" << evt->path << evt->add;
+
+        if (evt->add)
+        {
+            QStorageInfo storage(evt->path);
+            if (storage.isValid() && storage.isReady())
+            {
+                QApplication::setOverrideCursor(Qt::WaitCursor);
+                probeForDevice(evt->path, evt->path, storage.name());
+                QApplication::restoreOverrideCursor();
+            }
+        }
+        else
+        {
+            listWks->removeDevice(evt->path);
+        }
+    }
+
+    return QObject::event(e);
+}
diff --git a/src/device/IDevice.cpp b/src/device/IDevice.cpp
index 99bca38..269f4cf 100644
--- a/src/device/IDevice.cpp
+++ b/src/device/IDevice.cpp
@@ -97,6 +97,26 @@ void IDevice::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
     }
 }
 
+void IDevice::getItemsByArea(const QRectF& area, IGisItem::selflags_t flags, QList<IGisItem *> &items)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project != nullptr)
+        {
+            project->getItemsByArea(area, flags, items);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->getItemsByArea(area, flags, items);
+        }
+    }
+}
+
 IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
 {
     IGisItem * item = nullptr;
@@ -131,6 +151,26 @@ IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
     return item;
 }
 
+void IDevice::getItemsByKeys(const QList<IGisItem::key_t>& keys, QList<IGisItem*>& items)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project != nullptr)
+        {
+            project->getItemsByKeys(keys, items);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->getItemsByKeys(keys, items);
+        }
+    }
+}
+
 IGisProject * IDevice::getProjectByKey(const QString& key)
 {
     const int N = childCount();
diff --git a/src/device/IDevice.h b/src/device/IDevice.h
index 452adf3..9c698b2 100644
--- a/src/device/IDevice.h
+++ b/src/device/IDevice.h
@@ -67,7 +67,9 @@ public:
     QString getName() const;
 
     void getItemsByPos(const QPointF& pos, QList<IGisItem *> &items);
+    void getItemsByArea(const QRectF& area, IGisItem::selflags_t flags, QList<IGisItem *> &items);
     IGisItem * getItemByKey(const IGisItem::key_t& key);
+    void getItemsByKeys(const QList<IGisItem::key_t>& keys, QList<IGisItem*>& items);
     void editItemByKey(const IGisItem::key_t& key);
 
     void drawItem(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
diff --git a/src/gis/CGisListDB.cpp b/src/gis/CGisListDB.cpp
index 2a583fb..9782ded 100644
--- a/src/gis/CGisListDB.cpp
+++ b/src/gis/CGisListDB.cpp
@@ -69,7 +69,7 @@ CGisListDB::CGisListDB(QWidget *parent)
     QString path = cfg.value("lastDatabasePath", QDir::homePath()).toString();
     QStringList names = cfg.value("names").toStringList();
     cfg.beginGroup("Entries");
-    foreach(const QString &name, names)
+    for(const QString &name : names)
     {
         cfg.beginGroup(name);
         QString type = cfg.value("type", "SQLite").toString();
@@ -531,7 +531,7 @@ void CGisListDB::slotDelLostFoundItem()
     QSet<CDBFolderLostFound*> folders;
     QList<QTreeWidgetItem*> delItems;
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         CDBItem * dbItem            = dynamic_cast<CDBItem*>(item);
         if(dbItem == nullptr)
@@ -553,7 +553,7 @@ void CGisListDB::slotDelLostFoundItem()
     }
 
     qDeleteAll(delItems);
-    foreach(CDBFolderLostFound* folder, folders)
+    for(CDBFolderLostFound* folder : folders)
     {
         folder->update();
 
@@ -592,7 +592,7 @@ void CGisListDB::slotDelItem()
 
 
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         CDBItem * dbItem = dynamic_cast<CDBItem*>(item);
         if(dbItem == nullptr)
@@ -628,14 +628,14 @@ void CGisListDB::slotDelItem()
     }
 
     qDeleteAll(dbItems);
-    foreach(IDBFolderSql * dbFolder, dbFolders)
+    for(IDBFolderSql * dbFolder : dbFolders)
     {
         dbFolder->updateLostFound();
         dbFolder->announceChange();
     }
 
     // tell all folders to update their statistics and waypoint/track correlations
-    foreach(IDBFolder * folder, folders)
+    for(IDBFolder * folder : folders)
     {
         folder->updateItemsOnWks();
     }
@@ -682,7 +682,7 @@ void CGisListDB::slotUpdateDatabase()
     CGisListDBEditLock lock(true, this, "slotUpdateDatabase");
 
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem* item, items)
+    for(QTreeWidgetItem* item : items)
     {
         IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
         if(folder == nullptr)
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index c8be2a8..8a31a5c 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -42,17 +42,16 @@
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
 #include "gis/qms/CQmsProject.h"
-#include "gis/rte/CCreateRouteFromWpt.h"
 #include "gis/rte/CGisItemRte.h"
 #include "gis/search/CSearchGoogle.h"
 #include "gis/slf/CSlfProject.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CAppSetup.h"
 #include "helpers/CProgressDialog.h"
 #include "helpers/CSelectCopyAction.h"
 #include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
+#include "setup/IAppSetup.h"
 
 #include <QApplication>
 #include <QtSql>
@@ -90,7 +89,7 @@ CGisListWks::CGisListWks(QWidget *parent)
     : QTreeWidget(parent)
 {
     db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
-    QString config = CAppSetup::getPlattformInstance()->configDir().filePath("workspace.db");
+    QString config = QDir(IAppSetup::getPlatformInstance()->userDataPath()).filePath("workspace.db");
     db.setDatabaseName(config);
     db.open();
     configDB();
@@ -625,7 +624,7 @@ void CGisListWks::dropEvent( QDropEvent  * e )
         int N   = items.size();
         PROGRESS_SETUP(tr("Drop items..."), 0, N, this);
 
-        foreach(QTreeWidgetItem * item, items)
+        for(QTreeWidgetItem * item : items)
         {
             PROGRESS(cnt++, break);
 
@@ -681,7 +680,7 @@ void CGisListWks::addProject(IGisProject *proj)
     for(int i = myIdx - 1; i >= 0; i--)
     {
         IDevice * device = dynamic_cast<IDevice*>(topLevelItem(i));
-        if(0 == device)
+        if(nullptr == device)
         {
             break;
         }
@@ -933,7 +932,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
     bool allUnchecked = true;
     bool allCantSave  = true;
 
-    foreach(QTreeWidgetItem *item, selectedItems())
+    for(QTreeWidgetItem *item : selectedItems())
     {
         IGisProject *project = dynamic_cast<IGisProject*>(item);
         if(nullptr != project)
@@ -983,7 +982,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         {
             bool onlyWpts = true;
             bool onlyTrks = true;
-            foreach(QTreeWidgetItem *item, selectedItems())
+            for(QTreeWidgetItem *item : selectedItems())
             {
                 if(item->type() != IGisItem::eTypeWpt)
                 {
@@ -1043,13 +1042,23 @@ void CGisListWks::slotContextMenu(const QPoint& point)
             switch(gisItem->type())
             {
             case IGisItem::eTypeTrk:
-                actionCombineTrk->setEnabled(true); // might be disabled by menuItem
+            {
+                IGisProject * project = gisItem->getParentProject();
+                if(project != nullptr)
+                {
+                    actionCombineTrk->setEnabled(project->getItemCountByType(IGisItem::eTypeTrk) > 1);
+                }
+                else
+                {
+                    actionCombineTrk->setEnabled(false);
+                }
                 actionRangeTrk->setDisabled(isOnDevice);
                 actionReverseTrk->setDisabled(isOnDevice);
                 actionEditTrk->setDisabled(isOnDevice);
                 actionFocusTrk->setChecked(gisItem->hasUserFocus());
                 menuItemTrk->exec(p);
                 break;
+            }
 
             case IGisItem::eTypeWpt:
                 actionBubbleWpt->setChecked(dynamic_cast<CGisItemWpt*>(gisItem)->hasBubble());
@@ -1078,7 +1087,7 @@ void CGisListWks::setVisibilityOnMap(bool visible)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem *item, items)
+    for(QTreeWidgetItem *item : items)
     {
         IGisProject *project = dynamic_cast<IGisProject*>(item);
         if(nullptr != project)
@@ -1101,7 +1110,7 @@ void CGisListWks::slotHideFrMap()
 
 static void closeProjects(const QList<QTreeWidgetItem*> &items)
 {
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         IGisProject *project = dynamic_cast<IGisProject*>(item);
         if(nullptr != project)
@@ -1147,7 +1156,7 @@ void CGisListWks::slotDeleteProject()
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(item);
         if(nullptr != project)
@@ -1175,7 +1184,7 @@ void CGisListWks::slotSaveProject()
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(item);
         if(nullptr != project)
@@ -1197,7 +1206,7 @@ void CGisListWks::slotSaveAsProject()
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(item);
         if(nullptr != project)
@@ -1256,63 +1265,17 @@ void CGisListWks::slotDeleteItem()
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items       = selectedItems();
-    QMessageBox::StandardButtons last   = QMessageBox::NoButton;
-
-    QSet<CDBProject*>   projects;
-    QSet<IGisProject*>  projectsAll;
-
-    foreach(QTreeWidgetItem * item, items)
+    QList<IGisItem::key_t>  keys;
+    for(QTreeWidgetItem * item : items)
     {
         IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(nullptr != gisItem)
+        if(gisItem != nullptr)
         {
-            bool yes = false;
-            IGisProject *project = dynamic_cast<IGisProject*>(gisItem->parent());
-            if(nullptr != project)
-            {
-                project->blockUpdateItems(true);
-                yes = project->delItemByKey(gisItem->getKey(), last);
-
-
-                /*
-                    collect database projects to update their counterpart in
-                    the database view, after all operations are done.
-                 */
-                if(yes && project->getType() == IGisProject::eTypeDb)
-                {
-                    projects << dynamic_cast<CDBProject*>(project);
-                }
-
-                /*
-                    Collect all projects to unblock update later on.
-                 */
-                projectsAll << project;
-            }
-
-            if(last == QMessageBox::Cancel)
-            {
-                break;
-            }
+            keys << gisItem->getKey();
         }
     }
 
-    // make all database projects that are changed to post their new status
-    // this will update the database view.
-    foreach(CDBProject * project, projects)
-    {
-        project->postStatus(true);
-    }
-    // unblock update for all projects seen
-    foreach(IGisProject * project, projectsAll)
-    {
-        project->blockUpdateItems(false);
-    }
-
-    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-    }
+    CGisWidget::self().delItemsByKey(keys);
 }
 
 void CGisListWks::slotCopyItem()
@@ -1330,7 +1293,7 @@ void CGisListWks::slotCopyItem()
      */
     QList<QTreeWidgetItem*> items = selectedItems();
     QList<IGisItem::key_t>  keys;
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
         if(gisItem != nullptr)
@@ -1339,33 +1302,7 @@ void CGisListWks::slotCopyItem()
         }
     }
 
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(nullptr == project)
-    {
-        return;
-    }
-
-    int lastResult = CSelectCopyAction::eResultNone;
-
-    project->blockUpdateItems(true);
-    int cnt = 1;
-    PROGRESS_SETUP(tr("Copy items..."), 0, items.count(), this);
-    foreach(const IGisItem::key_t& key, keys)
-    {
-        PROGRESS(cnt++, break);
-        IGisItem * gisItem = CGisWidget::self().getItemByKey(key);
-        if(nullptr != gisItem)
-        {
-            project->insertCopyOfItem(gisItem, NOIDX, lastResult);
-        }
-    }
-    project->blockUpdateItems(false);
-
-    CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
-    if(nullptr != canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-    }
+    CGisWidget::self().copyItemsByKey(keys);
 }
 
 void CGisListWks::slotProjWpt()
@@ -1440,7 +1377,7 @@ void CGisListWks::slotCombineTrk()
 
     QList<IGisItem::key_t>  keys;
     QList<QTreeWidgetItem*> items = selectedItems();
-    foreach(QTreeWidgetItem * item, items)
+    for(QTreeWidgetItem * item : items)
     {
         CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(item);
         if(gisItem)
@@ -1451,7 +1388,14 @@ void CGisListWks::slotCombineTrk()
 
     if(!keys.isEmpty())
     {
-        CGisWidget::self().combineTrkByKey(keys);
+        if(keys.size() == 1)
+        {
+            CGisWidget::self().combineTrkByKey(keys.first());
+        }
+        else
+        {
+            CGisWidget::self().combineTrkByKey(keys, keys);
+        }
     }
 }
 
@@ -1817,7 +1761,7 @@ bool CGisListWks::event(QEvent * e)
                 }
             }
 
-            foreach(CDBProject * project, projects)
+            for(CDBProject * project : projects)
             {
                 project->blockUpdateItems(false);
             }
@@ -1836,7 +1780,7 @@ void CGisListWks::slotRteFromWpt()
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     QList<IGisItem::key_t> keys;
-    foreach(QTreeWidgetItem * item, selectedItems())
+    for(QTreeWidgetItem * item : selectedItems())
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
         if(nullptr != wpt)
@@ -1845,15 +1789,17 @@ void CGisListWks::slotRteFromWpt()
         }
     }
 
-    CCreateRouteFromWpt dlg(keys, this);
-    dlg.exec();
+    if(!keys.isEmpty())
+    {
+        CGisWidget::self().makeRteFromWpt(keys);
+    }
 }
 
 void CGisListWks::slotSyncDB()
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
-    foreach(QTreeWidgetItem * item, selectedItems())
+    for(QTreeWidgetItem * item : selectedItems())
     {
         CDBProject * project = dynamic_cast<CDBProject*>(item);
         if(project == nullptr)
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index e248204..43a637d 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -29,11 +29,14 @@
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
 #include "gis/qms/CQmsProject.h"
+#include "gis/rte/CCreateRouteFromWpt.h"
 #include "gis/rte/CGisItemRte.h"
 #include "gis/slf/CSlfProject.h"
+#include "gis/trk/CCombineTrk.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/wpt/CProjWpt.h"
+#include "helpers/CProgressDialog.h"
 #include "helpers/CSelectCopyAction.h"
 #include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
@@ -270,6 +273,48 @@ void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
     }
 }
 
+void CGisWidget::getItemsByKeys(const QList<IGisItem::key_t>& keys, QList<IGisItem*>& items)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
+        {
+            project->getItemsByKeys(keys, items);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device)
+        {
+            device->getItemsByKeys(keys, items);
+            continue;
+        }
+    }
+}
+
+void CGisWidget::getItemsByArea(const QRectF& area, IGisItem::selflags_t flags, QList<IGisItem *> &items)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
+        {
+            project->getItemsByArea(area, flags, items);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device)
+        {
+            device->getItemsByArea(area, flags, items);
+            continue;
+        }
+    }
+}
+
 void CGisWidget::mouseMove(const QPointF& pos)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
@@ -360,6 +405,67 @@ void CGisWidget::delItemByKey(const IGisItem::key_t& key)
     emit sigChanged();
 }
 
+void CGisWidget::delItemsByKey(const QList<IGisItem::key_t> &keys)
+{
+    QMessageBox::StandardButtons last   = QMessageBox::NoButton;
+
+    QSet<CDBProject*>   projects;
+    QSet<IGisProject*>  projectsAll;
+
+    for(const IGisItem::key_t key : keys)
+    {
+        IGisItem * gisItem = getItemByKey(key);
+        if(nullptr != gisItem)
+        {
+            bool yes = false;
+            IGisProject *project = dynamic_cast<IGisProject*>(gisItem->parent());
+            if(nullptr != project)
+            {
+                project->blockUpdateItems(true);
+                yes = project->delItemByKey(gisItem->getKey(), last);
+
+
+                /*
+                    collect database projects to update their counterpart in
+                    the database view, after all operations are done.
+                 */
+                if(yes && project->getType() == IGisProject::eTypeDb)
+                {
+                    projects << dynamic_cast<CDBProject*>(project);
+                }
+
+                /*
+                    Collect all projects to unblock update later on.
+                 */
+                projectsAll << project;
+            }
+
+            if(last == QMessageBox::Cancel)
+            {
+                break;
+            }
+        }
+    }
+
+    // make all database projects that are changed to post their new status
+    // this will update the database view.
+    for(CDBProject * project : projects)
+    {
+        project->postStatus(true);
+    }
+    // unblock update for all projects seen
+    for(IGisProject * project : projectsAll)
+    {
+        project->blockUpdateItems(false);
+    }
+
+    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+    }
+}
+
 void CGisWidget::editItemByKey(const IGisItem::key_t& key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
@@ -406,6 +512,39 @@ void CGisWidget::copyItemByKey(const IGisItem::key_t &key)
     emit sigChanged();
 }
 
+void CGisWidget::copyItemsByKey(const QList<IGisItem::key_t> &keys)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+
+    IGisProject * project = selectProject();
+    if(nullptr == project)
+    {
+        return;
+    }
+
+    int lastResult = CSelectCopyAction::eResultNone;
+
+    project->blockUpdateItems(true);
+    int cnt = 1;
+    PROGRESS_SETUP(tr("Copy items..."), 0, keys.count(), this);
+    for(const IGisItem::key_t& key : keys)
+    {
+        PROGRESS(cnt++, break);
+        IGisItem * gisItem = getItemByKey(key);
+        if(nullptr != gisItem)
+        {
+            project->insertCopyOfItem(gisItem, NOIDX, lastResult);
+        }
+    }
+    project->blockUpdateItems(false);
+
+    CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
+    if(nullptr != canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+    }
+}
+
 void CGisWidget::projWptByKey(const IGisItem::key_t& key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
@@ -450,6 +589,26 @@ void CGisWidget::toggleWptBubble(const IGisItem::key_t &key)
     }
 }
 
+void CGisWidget::addWptByPos(QPointF pt) const
+{
+    QString name;
+    QString icon;
+    if(!CGisItemWpt::getNewWptData(pt, icon, name))
+    {
+        return;
+    }
+
+    IGisProject * project = CGisWidget::self().selectProject();
+    if(nullptr == project)
+    {
+        return;
+    }
+
+    QMutexLocker lock(&IGisItem::mutexItems);
+    CGisItemWpt * wpt = new CGisItemWpt(pt, name, icon, project);
+    wpt->edit();
+}
+
 void CGisWidget::focusTrkByKey(bool yes, const IGisItem::key_t& key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
@@ -506,14 +665,43 @@ void CGisWidget::reverseTrkByKey(const IGisItem::key_t& key)
     emit sigChanged();
 }
 
-void CGisWidget::combineTrkByKey(const IGisItem::key_t& key)
+void CGisWidget::combineTrkByKey(const IGisItem::key_t& keyTrk)
 {
+    QMutexLocker lock(&IGisItem::mutexItems);
+
     QList<IGisItem::key_t> keys;
-    keys << key;
-    combineTrkByKey(keys);
+    IGisItem * item = dynamic_cast<IGisItem*>(getItemByKey(keyTrk));
+    if(item == nullptr)
+    {
+        return;
+    }
+
+    keys << keyTrk;
+
+    IGisProject * project = dynamic_cast<IGisProject*>(item->parent());
+    if(project == nullptr)
+    {
+        return;
+    }
+
+    const int N = project->childCount();
+    for(int i = 0; i < N; i++)
+    {
+        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(project->child(i));
+        if(trk != nullptr)
+        {
+            const IGisItem::key_t& key = trk->getKey();
+            if(key != keyTrk)
+            {
+                keys << key;
+            }
+        }
+    }
+
+    combineTrkByKey(keys, {keyTrk});
 }
 
-void CGisWidget::combineTrkByKey(const QList<IGisItem::key_t>& keys)
+void CGisWidget::combineTrkByKey(const QList<IGisItem::key_t>& keys, const QList<IGisItem::key_t>& keysPreSel)
 {
     if(keys.isEmpty())
     {
@@ -522,11 +710,8 @@ void CGisWidget::combineTrkByKey(const QList<IGisItem::key_t>& keys)
 
     QMutexLocker lock(&IGisItem::mutexItems);
 
-    CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(getItemByKey(keys.first()));
-    if(trk)
-    {
-        trk->combine(keys);
-    }
+    CCombineTrk dlg(keys, keysPreSel, this);
+    dlg.exec();
 
     emit sigChanged();
 }
@@ -629,6 +814,14 @@ void CGisWidget::editAreaByKey(const IGisItem::key_t& key)
     }
 }
 
+void CGisWidget::makeRteFromWpt(const QList<IGisItem::key_t>& keys)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+
+    CCreateRouteFromWpt dlg(keys, this);
+    dlg.exec();
+}
+
 void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
 {
     QFontMetricsF fm(CMainWindow::self().getMapFont());
diff --git a/src/gis/CGisWidget.h b/src/gis/CGisWidget.h
index 43773e9..1999245 100644
--- a/src/gis/CGisWidget.h
+++ b/src/gis/CGisWidget.h
@@ -249,12 +249,22 @@ public:
     void getItemsByPos(const QPointF& pos, QList<IGisItem *> &items);
 
     /**
+       @brief Get items matching the given area
+
+       @param area      a rectangle in screen pixel coordinates
+       @param flags     flag field with IGisItem::selection_e flags set
+       @param items     a list to receive the temporary pointers to the found items
+     */
+    void getItemsByArea(const QRectF& area, IGisItem::selflags_t flags, QList<IGisItem *> &items);
+
+    /**
        @brief Find first item with matching key
        @param key       the item's key as it is returned from IGisItem::getKey()
        @return If no item is found 0 is returned.
      */
     IGisItem * getItemByKey(const IGisItem::key_t &key);
 
+    void getItemsByKeys(const QList<IGisItem::key_t>& keys, QList<IGisItem*>& items);
     /**
        @brief Delete all items with matching key from workspace
 
@@ -262,6 +272,8 @@ public:
      */
     void delItemByKey(const IGisItem::key_t &key);
 
+    void delItemsByKey(const QList<IGisItem::key_t> &keys);
+
     /**
        @brief Edit / view item details
        @param key       the item's key as it is returned from IGisItem::getKey()
@@ -275,6 +287,12 @@ public:
     void copyItemByKey(const IGisItem::key_t &key);
 
     /**
+       @brief Select a project and add a copy of all items in the list
+       @param keys      a list of item keys to copy
+     */
+    void copyItemsByKey(const QList<IGisItem::key_t> &keys);
+
+    /**
        @brief Clone waypoint and move clone
        @param key       the item's key as it is returned from IGisItem::getKey()
      */
@@ -286,6 +304,12 @@ public:
      */
     void moveWptByKey(const IGisItem::key_t &key);
 
+    /**
+       @brief Add a new waypoint by Position
+       @param pt    the position in [�]
+     */
+    void addWptByPos(QPointF pt) const;
+
     void toggleWptBubble(const IGisItem::key_t &key);
 
     /**
@@ -304,9 +328,22 @@ public:
 
     void reverseTrkByKey(const IGisItem::key_t &key);
 
-    void combineTrkByKey(const IGisItem::key_t &key);
+    /**
+       @brief Combine all tracks in a given track's project
 
-    void combineTrkByKey(const QList<IGisItem::key_t>& keys);
+       This will collect all tracks in a project and pass them
+       to the track combine dialog.
+
+       @param keyTrk    the key of the first track
+     */
+    void combineTrkByKey(const IGisItem::key_t &keyTrk);
+
+    /**
+       @brief Combine al tracks in the given list of keys.
+
+       @param keys  a list of GIS item keys
+     */
+    void combineTrkByKey(const QList<IGisItem::key_t>& keys, const QList<IGisItem::key_t> &keysPreSel);
 
     void rangeTrkByKey(const IGisItem::key_t &key);
 
@@ -318,6 +355,8 @@ public:
 
     void editAreaByKey(const IGisItem::key_t &key);
 
+    void makeRteFromWpt(const QList<IGisItem::key_t>& keys);
+
     /**
        @brief Select a project via dialog
 
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index 5ede1dc..751d169 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -162,6 +162,11 @@ IGisItem::~IGisItem()
 {
 }
 
+IGisProject * IGisItem::getParentProject() const
+{
+    return dynamic_cast<IGisProject*>(parent());
+}
+
 void IGisItem::genKey() const
 {
     if(key.item.isEmpty())
@@ -179,7 +184,7 @@ void IGisItem::genKey() const
     }
     if(key.project.isEmpty())
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(parent());
+        IGisProject * project = getParentProject();
         if(project)
         {
             key.project = project->getKey();
@@ -258,7 +263,7 @@ void IGisItem::updateFromDB(quint64 id, QSqlDatabase& db)
 QString IGisItem::getNameEx() const
 {
     QString str = getName();
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(project)
     {
         str += " @ " + project->getName();
@@ -281,7 +286,7 @@ void IGisItem::updateDecoration(quint32 enable, quint32 disable)
     setSymbol();
 
     // update project if necessary
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(project && (enable & (eMarkChanged|eMarkNotPart|eMarkNotInDB)))
     {
         project->setChanged();
@@ -483,7 +488,7 @@ bool IGisItem::isTainted() const
 
 qint32 IGisItem::isOnDevice() const
 {
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(nullptr == project)
     {
         return false;
@@ -711,7 +716,7 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
         }
         else
         {
-            foreach(const link_t &link, links)
+            for(const link_t &link : links)
             {
                 if(link.text.isEmpty())
                 {
@@ -756,7 +761,7 @@ QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<l
         }
         else
         {
-            foreach(const link_t &link, links)
+            for(const link_t &link : links)
             {
                 if(link.text.isEmpty())
                 {
@@ -803,3 +808,31 @@ bool IGisItem::isChanged() const
 {
     return text(CGisListWks::eColumnDecoration).contains('*');
 }
+
+bool IGisItem::isWithin(const QRectF& area, selflags_t flags, const QPolygonF& points)
+{
+    if(flags & eSelectionExact)
+    {
+        for(const QPointF &point : points)
+        {
+            if(!area.contains(point))
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+    else if(flags & eSelectionIntersect)
+    {
+        for(const QPointF &point : points)
+        {
+            if(area.contains(point))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    return false;
+}
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index f98b7c5..557ba2f 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -140,6 +140,19 @@ public:
         ,eMarkNotInDB   = 0x00000004
     };
 
+    enum selection_e
+    {
+        eSelectionNone          = 0
+        , eSelectionExact       = 0x00000001
+        , eSelectionIntersect   = 0x00000002
+        , eSelectionTrk         = 0x80000000
+        , eSelectionWpt         = 0x40000000
+        , eSelectionRte         = 0x20000000
+        , eSelectionOvl         = 0x10000000
+    };
+
+    using selflags_t = quint32;
+
     struct key_t
     {
         bool operator==(const key_t& k) const
@@ -301,6 +314,8 @@ public:
      */
     virtual bool isCloseTo(const QPointF& pos) = 0;
 
+    virtual bool isWithin(const QRectF& area, selflags_t mode) = 0;
+
     /**
        @brief Receive the current mouse position
 
@@ -428,6 +443,8 @@ public:
     virtual IGisItem * createClone() = 0;
 
 
+    IGisProject * getParentProject() const;
+
     /**
        @brief Remove all HTML tags from a string
        @param str the string
@@ -509,11 +526,10 @@ protected:
     /// call when ever you make a change to the item's data
     virtual void changed(const QString& what, const QString& icon);
 
-
     void loadFromDb(quint64 id, QSqlDatabase& db);
-
     bool isVisible(const QRectF& rect, const QPolygonF& viewport, CGisDraw * gis);
     bool isVisible(const QPointF& point, const QPolygonF& viewport, CGisDraw * gis);
+    bool isWithin(const QRectF& area, selflags_t flags, const QPolygonF& points);
 
     /**
        @brief Converts a string with HTML tags to a string without HTML depending on the device
@@ -548,7 +564,7 @@ protected:
 
     static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
     {
-        foreach(const QRectF &r, blockedAreas)
+        for(const QRectF &r : blockedAreas)
         {
             if(rect.intersects(r))
             {
diff --git a/src/gis/IGisLine.cpp b/src/gis/IGisLine.cpp
index b92f926..b3b6658 100644
--- a/src/gis/IGisLine.cpp
+++ b/src/gis/IGisLine.cpp
@@ -46,12 +46,14 @@ void SGisLine::updateElevation(CDemDraw * dem)
     for(int i = 0; i < size(); i++)
     {
         IGisLine::point_t& pt = (*this)[i];
-        pt.ele = dem->getElevationAt(pt.coord);
+        qreal ele = dem->getElevationAt(pt.coord);
+        pt.ele = (ele == NOFLOAT) ? NOINT : qRound(ele);
 
         for(int n = 0; n < pt.subpts.size(); n++)
         {
             IGisLine::subpt_t& sub = pt.subpts[n];
-            sub.ele = dem->getElevationAt(sub.coord);
+            qreal ele = dem->getElevationAt(sub.coord);
+            sub.ele = (ele == NOFLOAT) ? NOINT : qRound(ele);
         }
     }
 }
diff --git a/src/gis/WptIcons.cpp b/src/gis/WptIcons.cpp
index 0e5dfd2..a5a18b6 100644
--- a/src/gis/WptIcons.cpp
+++ b/src/gis/WptIcons.cpp
@@ -18,8 +18,8 @@
 
 
 #include "WptIcons.h"
-#include "helpers/CAppSetup.h"
 #include "helpers/CSettings.h"
+#include "setup/IAppSetup.h"
 
 #include <QtGui>
 
@@ -68,12 +68,11 @@ void initWptIcons()
     setWptIconByName("Webcam Cache", "://icons/cache/32x32/webcam.png");
 
     SETTINGS;
-    QDir dirIcon(cfg.value("Paths/externalWptIcons",CAppSetup::getPlattformInstance()->configDir("WaypointIcons").absolutePath()).toString());
+    QDir dirIcon(cfg.value("Paths/externalWptIcons", IAppSetup::getPlatformInstance()->userDataPath("WaypointIcons")).toString());
 
-    QString filename;
     QStringList filenames = dirIcon.entryList(QStringList("*.bmp"), QDir::Files);
 
-    foreach(filename, filenames)
+    for(const QString &filename : filenames)
     {
         QFileInfo fi(filename);
         QString name = fi.baseName();
@@ -97,7 +96,7 @@ void setWptIconByName(const QString& name, const QString& filename)
 void setWptIconByName(const QString& name, const QPixmap& icon)
 {
     SETTINGS;
-    QDir dirIcon(cfg.value("Paths/externalWptIcons",CAppSetup::getPlattformInstance()->configDir("WaypointIcons").absolutePath()).toString());
+    QDir dirIcon(cfg.value("Paths/externalWptIcons", IAppSetup::getPlatformInstance()->userDataPath("WaypointIcons")).toString());
     QString filename = dirIcon.filePath(name + ".png");
 
     icon.save(filename);
diff --git a/src/gis/db/CDBProject.cpp b/src/gis/db/CDBProject.cpp
index ffa4cc1..e613b37 100644
--- a/src/gis/db/CDBProject.cpp
+++ b/src/gis/db/CDBProject.cpp
@@ -437,19 +437,19 @@ int CDBProject::checkForAction1(IGisItem * item, quint64& idItem, int& lastResul
                 switch(typeItem)
                 {
                 case IGisItem::eTypeWpt:
-                    item1 = new CGisItemWpt(idItem, db, 0);
+                    item1 = new CGisItemWpt(idItem, db, nullptr);
                     break;
 
                 case IGisItem::eTypeTrk:
-                    item1 = new CGisItemTrk(idItem, db, 0);
+                    item1 = new CGisItemTrk(idItem, db, nullptr);
                     break;
 
                 case IGisItem::eTypeRte:
-                    item1 = new CGisItemRte(idItem, db, 0);
+                    item1 = new CGisItemRte(idItem, db, nullptr);
                     break;
 
                 case IGisItem::eTypeOvl:
-                    item1 = new CGisItemOvlArea(idItem, db, 0);
+                    item1 = new CGisItemOvlArea(idItem, db, nullptr);
                     break;
 
                 default:
@@ -644,9 +644,9 @@ void CDBProject::showItems(CEvtD2WShowItems * evt)
         qDeleteAll(takeChildren());
     }
 
-    foreach(const evt_item_t &item, evt->items)
+    for(const evt_item_t &item : evt->items)
     {
-        IGisItem * gisItem = 0;
+        IGisItem * gisItem = nullptr;
         switch(item.type)
         {
         case IGisItem::eTypeWpt:
@@ -707,7 +707,7 @@ void CDBProject::hideItems(CEvtD2WHideItems * evt)
 
     QMessageBox::StandardButtons last = QMessageBox::YesToAll;
 
-    foreach(const QString &k, evt->keys)
+    for(const QString &k : evt->keys)
     {
         key.item = k;
         delItemByKey(key, last);
diff --git a/src/gis/db/CSelectDBFolder.cpp b/src/gis/db/CSelectDBFolder.cpp
index 235a674..646909e 100644
--- a/src/gis/db/CSelectDBFolder.cpp
+++ b/src/gis/db/CSelectDBFolder.cpp
@@ -38,7 +38,7 @@ CSelectDBFolder::CSelectDBFolder(quint64 &id, QString &db, QString &host, QWidge
     cfg.beginGroup("Database");
     QStringList names = cfg.value("names").toStringList();
     cfg.beginGroup("Entries");
-    foreach(const QString &name, names)
+    for(const QString &name : names)
     {
         cfg.beginGroup(name);
         QString type = cfg.value("type", "SQLite").toString();
diff --git a/src/gis/db/IDBFolderSql.cpp b/src/gis/db/IDBFolderSql.cpp
index da1361e..23884a7 100644
--- a/src/gis/db/IDBFolderSql.cpp
+++ b/src/gis/db/IDBFolderSql.cpp
@@ -141,12 +141,10 @@ void IDBFolderSql::announceChange() const
     stream << getDBHost();
 
     QList<QNetworkInterface> netdevices = QNetworkInterface::allInterfaces();
-    QNetworkInterface netdevice;
-    foreach(netdevice, netdevices)
+    for(const QNetworkInterface &netdevice : netdevices)
     {
         QList<QNetworkAddressEntry> networks = netdevice.addressEntries();
-        QNetworkAddressEntry network;
-        foreach(network, networks)
+        for(const QNetworkAddressEntry &network : networks)
         {
             socket->writeDatagram(msg, network.broadcast(), port);
             socket->writeDatagram(msg, network.broadcast(), port);
diff --git a/src/gis/db/IDBSqlite.cpp b/src/gis/db/IDBSqlite.cpp
index 544d07b..05e052a 100644
--- a/src/gis/db/IDBSqlite.cpp
+++ b/src/gis/db/IDBSqlite.cpp
@@ -289,19 +289,19 @@ bool IDBSqlite::migrateDB2to3()
         switch(typeItem)
         {
         case IGisItem::eTypeWpt:
-            item = new CGisItemWpt(idItem, db, 0);
+            item = new CGisItemWpt(idItem, db, nullptr);
             break;
 
         case IGisItem::eTypeTrk:
-            item = new CGisItemTrk(idItem, db, 0);
+            item = new CGisItemTrk(idItem, db, nullptr);
             break;
 
         case IGisItem::eTypeRte:
-            item = new CGisItemRte(idItem, db, 0);
+            item = new CGisItemRte(idItem, db, nullptr);
             break;
 
         case IGisItem::eTypeOvl:
-            item = new CGisItemOvlArea(idItem, db, 0);
+            item = new CGisItemOvlArea(idItem, db, nullptr);
             break;
 
         default:
diff --git a/src/gis/fit/CFitProject.cpp b/src/gis/fit/CFitProject.cpp
index d488859..7ab3c25 100644
--- a/src/gis/fit/CFitProject.cpp
+++ b/src/gis/fit/CFitProject.cpp
@@ -32,40 +32,45 @@
 CFitProject::CFitProject(const QString &filename, CGisListWks *parent)
     : IGisProject(eTypeFit, filename, parent)
 {
-    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/FitProject.png"));
-    blockUpdateItems(true);
-    try
-    {
-        loadFit(filename);
-    }
-    catch(QString &errormsg)
-    {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
-                              tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
-        valid = false;
-    }
-    blockUpdateItems(false);
+    loadFitFromFile(filename, true);
 }
 
 CFitProject::CFitProject(const QString &filename, IDevice *parent)
     : IGisProject(eTypeFit, filename, parent)
 {
+    // this constructor is used when opening files from the garmin device.
+    // this means several files are opened at the same time. For that case we don not show an error message if a file
+    // can not be opened.
+    loadFitFromFile(filename, false);
+}
+
+
+void CFitProject::loadFitFromFile(const QString &filename, bool showErrorMsg)
+{
     setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/FitProject.png"));
     blockUpdateItems(true);
     try
     {
-        loadFit(filename);
+        tryOpeningFitFile(filename);
     }
     catch(QString &errormsg)
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
-                              tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
+        if(showErrorMsg)
+        {
+            QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
+                                  tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
+        }
+        else
+        {
+            qWarning() << "Failed to load FIT file:" << errormsg;
+        }
         valid = false;
     }
     blockUpdateItems(false);
 }
 
-void CFitProject::loadFit(const QString & filename)
+
+void CFitProject::tryOpeningFitFile(const QString &filename)
 {
     // create file instance
     QFile file(filename);
@@ -86,10 +91,9 @@ void CFitProject::loadFit(const QString & filename)
         throw tr("Failed to open FIT file %1.").arg(filename);
     }
 
-    CFitStream in(file);
     try
     {
-        in.decodeFile();
+        createGisItems(file);
     }
     catch(QString& errormsg)
     {
@@ -98,26 +102,53 @@ void CFitProject::loadFit(const QString & filename)
     }
     file.close();
 
+    markAsSaved();
+
+    setToolTip(CGisListWks::eColumnName, getInfo());
+    valid = true;
+}
+
+
+
+void CFitProject::createGisItems(QFile& file)
+{
+    CFitStream in(file);
+    in.decodeFile();
+
+    QString name = "";
+
+    // remark: we consider activity and course files types. trk is for both types. There is one trk per fit file
     const CFitMessage& mesg = in.firstMesgOf(eMesgNumFileId);
-    if(mesg.getFieldValue(eFileIdType).toUInt() == eFileActivity || mesg.getFieldValue(eFileIdType).toUInt() == eFileCourse)
+    if(mesg.getFieldValue(eFileIdType).toUInt() == eFileActivity || mesg.getFieldValue(eFileIdType).toUInt() == eFileCourse
+       || mesg.getFieldValue(eFileIdType).toUInt() == eFileSegment)
     {
-        new CGisItemTrk(in, this);
+        CGisItemTrk* trk = new CGisItemTrk(in, this);
+        name = trk->getName();
     }
     // fit does not have routes
     // new CGisItemRte(in, this);
 
     in.reset();
+    // course point is a message of a course file. Thus, wpt is only for a course file. There might be n wpt per fit file
     while(in.nextMesgOf(eMesgNumCoursePoint).isValid())
     {
-        new CGisItemWpt(in, this);
+        CGisItemWpt* wpt = new CGisItemWpt(in, this);
+        if (name.length() == 0)
+        {
+            name = wpt->getName();
+        }
     }
     // ql:area is not directly available in FIT (could be calculated)
 
-    markAsSaved();
-
-    setupName(QFileInfo(filename).baseName().replace("_", " "));
-    setToolTip(CGisListWks::eColumnName, getInfo());
-    valid = true;
+    // use name of first trk
+    if(name.length() > 0)
+    {
+        setupName(name);
+    }
+    else
+    {
+        setupName(QFileInfo(filename).baseName().replace("_", " "));
+    }
 }
 
 CFitProject::~CFitProject()
diff --git a/src/gis/fit/CFitProject.h b/src/gis/fit/CFitProject.h
index f492164..88888d8 100644
--- a/src/gis/fit/CFitProject.h
+++ b/src/gis/fit/CFitProject.h
@@ -23,6 +23,7 @@
 
 #include <QtCore>
 
+class CFitStream;
 
 class CFitProject final : public IGisProject
 {
@@ -49,7 +50,9 @@ public:
 
 
 private:
-    void loadFit(const QString & filename);
+    void loadFitFromFile(const QString &filename, bool showErrorMsg);
+    void tryOpeningFitFile(const QString &filename);
+    void createGisItems(QFile& file);
 };
 
 #endif //CFITPROJECT_H
diff --git a/src/gis/fit/CFitStream.cpp b/src/gis/fit/CFitStream.cpp
index c0823b6..3676f4e 100644
--- a/src/gis/fit/CFitStream.cpp
+++ b/src/gis/fit/CFitStream.cpp
@@ -36,7 +36,7 @@ const CFitMessage& CFitStream::nextMesg()
 }
 
 
-const CFitMessage& CFitStream::lastMesg()
+const CFitMessage& CFitStream::lastMesg() const
 {
     int pos = readPos-1;
     if(pos < 0)
@@ -47,7 +47,7 @@ const CFitMessage& CFitStream::lastMesg()
 }
 
 
-bool CFitStream::hasMoreMesg()
+bool CFitStream::hasMoreMesg() const
 {
     return readPos < decode.getMessages().size();
 }
@@ -63,7 +63,7 @@ const CFitMessage& CFitStream::nextMesgOf(quint16 mesgNum)
         }
     }
 
-    static CFitMessage dummyMessage {};
+    static const CFitMessage dummyMessage;
     return dummyMessage;
 }
 
diff --git a/src/gis/fit/CFitStream.h b/src/gis/fit/CFitStream.h
index c98344a..2a5983c 100644
--- a/src/gis/fit/CFitStream.h
+++ b/src/gis/fit/CFitStream.h
@@ -53,12 +53,12 @@ public:
     /**
        return: the last read message again
      */
-    const CFitMessage& lastMesg();
+    const CFitMessage& lastMesg() const;
 
     /**
        return: true if there a further FIT message is available
      */
-    bool hasMoreMesg();
+    bool hasMoreMesg() const;
 
     /**
        return: the next message of the given message type (xx_MESG_NUM) beginning reading at the current position
@@ -74,7 +74,7 @@ public:
     int countMesgOf(quint16 mesgNr);
 
 
-    QString getFileName() { return file.fileName(); }
+    QString getFileName() const { return file.fileName(); }
 
 private:
     QFile& file;
diff --git a/src/gis/fit/decoder/CFitByteDataTransformer.cpp b/src/gis/fit/decoder/CFitByteDataTransformer.cpp
index df3613a..316a9ce 100644
--- a/src/gis/fit/decoder/CFitByteDataTransformer.cpp
+++ b/src/gis/fit/decoder/CFitByteDataTransformer.cpp
@@ -109,7 +109,7 @@ qint32 CFitByteDataTransformer::getSint32(quint8* rawData)
 qreal CFitByteDataTransformer::getFloat32(quint8* rawData)
 {
     qint32 fValue = (qint32) (((qint32)rawData[3] << 24) | ((qint32)rawData[2] << 16) | ((qint32)rawData[1] << 8) | rawData[0]);
-    // comment: qreal is a double type (on allmost all systems). Here we need to go through a 32 bit flaoting type.
+    // comment: qreal is a double type (on almost all systems). Here we need to go through a 32 bit floating type.
     float tmp;
     memcpy(&tmp, &fValue, sizeof(tmp));
     qreal value = tmp;
@@ -122,7 +122,7 @@ qreal CFitByteDataTransformer::getFloat64(quint8* rawData)
                                 | ((unsigned long long) rawData[5] << 40) | ((unsigned long long) rawData[4] << 32)
                                 | ((unsigned long long) rawData[3] << 24) | ((unsigned long long) rawData[2] << 16)
                                 | ((unsigned long long) rawData[1] << 8) | rawData[0];
-    // comment: qreal is a double type (on allmost all systems). Here we need to go through a 64 bit flaoting type.
+    // comment: qreal is a double type (on almost all systems). Here we need to go through a 64 bit floating type.
     double tmp;
     memcpy(&tmp, &dValue, sizeof(tmp));
     qreal value = tmp;
@@ -136,7 +136,7 @@ QString CFitByteDataTransformer::getString(quint8* rawData, quint8 length)
     while(rawData[i] != 0 )
     {
         i++;
-        // no 0 termination found, but length exceded
+        // no 0 termination found, but length exceeded
         if(i > length)
         {
             break;
@@ -169,4 +169,4 @@ void CFitByteDataTransformer::swapFieldData(const CFitFieldDefinition& fieldDef,
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/gis/fit/decoder/CFitCrcState.h b/src/gis/fit/decoder/CFitCrcState.h
index 98bead3..c803687 100644
--- a/src/gis/fit/decoder/CFitCrcState.h
+++ b/src/gis/fit/decoder/CFitCrcState.h
@@ -24,7 +24,7 @@
 class CFitCrcState final : public IFitDecoderState
 {
 public:
-    CFitCrcState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileCrc) { reset(); }
+    CFitCrcState(shared_state_data_t &data) : IFitDecoderState(data) { reset(); }
     virtual ~CFitCrcState() {}
 
     void reset() override;
diff --git a/src/gis/fit/decoder/CFitDefinitionMessage.cpp b/src/gis/fit/decoder/CFitDefinitionMessage.cpp
index 5c36960..bcaf016 100644
--- a/src/gis/fit/decoder/CFitDefinitionMessage.cpp
+++ b/src/gis/fit/decoder/CFitDefinitionMessage.cpp
@@ -62,35 +62,16 @@ void CFitDefinitionMessage::setNrOfFields(quint8 nrOfFields)
     this->nrOfFields = nrOfFields;
 }
 
-quint16 CFitDefinitionMessage::getGlobalMesgNr() const
-{
-    return globalMesgNr;
-}
-
-quint8 CFitDefinitionMessage::getLocalMesgNr() const
-{
-    return localMesgNr;
-}
-
 quint8 CFitDefinitionMessage::getArchitectureBit() const
 {
     return architecture & fitArchitecureEndianMask;
 }
-quint8 CFitDefinitionMessage::getNrOfFields() const
-{
-    return nrOfFields;
-}
 
 void CFitDefinitionMessage::addField(CFitFieldDefinition fieldDef)
 {
     fields.append(fieldDef);
 }
 
-const QList<CFitFieldDefinition>&CFitDefinitionMessage::getFields() const
-{
-    return fields;
-}
-
 bool CFitDefinitionMessage::hasField(const quint8 fieldNum) const
 {
     for (int i=0; i< fields.size(); i++)
@@ -113,7 +94,7 @@ const CFitFieldDefinition& CFitDefinitionMessage::getField(const quint8 fieldNum
         }
     }
     // dummy field for unknown field nr.
-    static CFitFieldDefinition dummyDefinitionField {};
+    static const CFitFieldDefinition dummyDefinitionField;
 
     return dummyDefinitionField;
 }
@@ -126,7 +107,7 @@ const CFitFieldDefinition& CFitDefinitionMessage::getFieldByIndex(const quint16
         return fields[index];
     }
     // dummy field for unknown field nr.
-    static CFitFieldDefinition dummyDefinitionField {};
+    static const CFitFieldDefinition dummyDefinitionField;
 
     return dummyDefinitionField;
 }
diff --git a/src/gis/fit/decoder/CFitDefinitionMessage.h b/src/gis/fit/decoder/CFitDefinitionMessage.h
index 8711a47..71c0dcd 100644
--- a/src/gis/fit/decoder/CFitDefinitionMessage.h
+++ b/src/gis/fit/decoder/CFitDefinitionMessage.h
@@ -38,14 +38,15 @@ public:
     void setGlobalMesgNr(quint16 globalMesgNr);
     void setNrOfFields(quint8 nrOfFields);
 
-    quint16 getGlobalMesgNr() const;
     quint8 getArchitectureBit() const;
-    quint8 getNrOfFields() const;
-    quint8 getLocalMesgNr() const;
+    quint16 getGlobalMesgNr()   const { return globalMesgNr; }
+    quint8 getNrOfFields()      const { return nrOfFields;   }
+    quint8 getLocalMesgNr()     const { return localMesgNr;  }
 
     const CFitProfile& profile() const { return *messageProfile; }
 
-    const QList<CFitFieldDefinition>& getFields() const;
+    const QList<CFitFieldDefinition>& getFields() const { return fields; }
+
     void addField(CFitFieldDefinition field);
     bool hasField(const quint8 fieldNum) const;
     const CFitFieldDefinition& getField(const quint8 fieldNum) const;
diff --git a/src/gis/fit/decoder/CFitFieldDataState.cpp b/src/gis/fit/decoder/CFitFieldDataState.cpp
index 405c872..055050b 100644
--- a/src/gis/fit/decoder/CFitFieldDataState.cpp
+++ b/src/gis/fit/decoder/CFitFieldDataState.cpp
@@ -45,7 +45,7 @@ decode_state_e CFitFieldDataState::process(quint8 &dataByte)
         mesg.addField(f);
 
         // The special case time record.
-        // timestamp has always the same value for all enums. it does not matter againts which we're comparing.
+        // timestamp has always the same value for all enums. it does not matter against which we're comparing.
         if (fieldDef.getDefNr() == eRecordTimestamp)
         {
             setTimestamp(f.getValue().toUInt());
diff --git a/src/gis/fit/decoder/CFitFieldDataState.h b/src/gis/fit/decoder/CFitFieldDataState.h
index a429496..f10159e 100644
--- a/src/gis/fit/decoder/CFitFieldDataState.h
+++ b/src/gis/fit/decoder/CFitFieldDataState.h
@@ -26,7 +26,7 @@ static const int fitMaxFieldSize =255;
 class CFitFieldDataState final : public IFitDecoderState
 {
 public:
-    CFitFieldDataState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFieldData) { reset(); }
+    CFitFieldDataState(shared_state_data_t &data) : IFitDecoderState(data) { reset(); }
     virtual ~CFitFieldDataState() {}
     void reset() override;
     decode_state_e process(quint8 &dataByte) override;
diff --git a/src/gis/fit/decoder/CFitFieldDefinitionState.cpp b/src/gis/fit/decoder/CFitFieldDefinitionState.cpp
index 501f31a..7713812 100644
--- a/src/gis/fit/decoder/CFitFieldDefinitionState.cpp
+++ b/src/gis/fit/decoder/CFitFieldDefinitionState.cpp
@@ -24,7 +24,6 @@
  * 0: field definition number
  * 1: size in bytes of field data
  * 2: base type
- *
  */
 
 void CFitFieldDefinitionState::reset()
@@ -60,10 +59,6 @@ decode_state_e CFitFieldDefinitionState::process(quint8 &dataByte)
             endDefintion();
             return eDecoderStateRecord;
         }
-        else
-        {
-            return eDecoderStateFieldDef;
-        }
     }
 
     return eDecoderStateFieldDef;
diff --git a/src/gis/fit/decoder/CFitFieldDefinitionState.h b/src/gis/fit/decoder/CFitFieldDefinitionState.h
index f052cf7..6f605c8 100644
--- a/src/gis/fit/decoder/CFitFieldDefinitionState.h
+++ b/src/gis/fit/decoder/CFitFieldDefinitionState.h
@@ -24,7 +24,7 @@
 class CFitFieldDefinitionState final : public IFitDecoderState
 {
 public:
-    CFitFieldDefinitionState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFieldDef) { reset(); }
+    CFitFieldDefinitionState(shared_state_data_t &data) : IFitDecoderState(data) { reset(); }
     virtual ~CFitFieldDefinitionState() {}
 
     void reset() override;
diff --git a/src/gis/fit/decoder/CFitHeaderState.cpp b/src/gis/fit/decoder/CFitHeaderState.cpp
index f4e3613..f2b9bbe 100644
--- a/src/gis/fit/decoder/CFitHeaderState.cpp
+++ b/src/gis/fit/decoder/CFitHeaderState.cpp
@@ -21,7 +21,7 @@
 
 /**
  * byte
- * 0: the header size wihtout crc (12 for the current version)
+ * 0: the header size without crc (12 for the current version)
  * 1: protocol version
  * 2: profil version LSB
  * 3: profil version MSB
@@ -37,10 +37,9 @@
  * 13: CRC MSB
  */
 
-static const quint8 fitProtocolVersionMajor =1;
-
-static const quint8 fitProtocolMajerVersionShift = 4;
-static const quint8 fitProtocolMajorVersionMask = 0x0F << fitProtocolMajerVersionShift;
+static const quint8 fitProtocolVersionMajor = 1;
+static const quint8 fitProtocolMajorVersionShift = 4;
+static const quint8 fitProtocolMajorVersionMask = 0x0F << fitProtocolMajorVersionShift;
 
 void CFitHeaderState::reset()
 {
@@ -65,7 +64,7 @@ decode_state_e CFitHeaderState::process(quint8 &dataByte)
     case 1:
         // protocol version
         if ((dataByte & fitProtocolMajorVersionMask) >
-            (fitProtocolVersionMajor << fitProtocolMajerVersionShift))
+            (fitProtocolVersionMajor << fitProtocolMajorVersionShift))
         {
             throw tr("FIT decoding error: protocol %1 version not supported.").arg(dataByte & fitProtocolMajorVersionMask);
         }
@@ -127,4 +126,4 @@ decode_state_e CFitHeaderState::process(quint8 &dataByte)
         return eDecoderStateRecord;
     }
     return eDecoderStateFileHeader;
-}
\ No newline at end of file
+}
diff --git a/src/gis/fit/decoder/CFitHeaderState.h b/src/gis/fit/decoder/CFitHeaderState.h
index fb00090..dc15b95 100644
--- a/src/gis/fit/decoder/CFitHeaderState.h
+++ b/src/gis/fit/decoder/CFitHeaderState.h
@@ -24,7 +24,7 @@
 class CFitHeaderState final : public IFitDecoderState
 {
 public:
-    CFitHeaderState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileHeader) { reset(); }
+    CFitHeaderState(shared_state_data_t &data) : IFitDecoderState(data) { reset(); }
     virtual ~CFitHeaderState() {}
 
     void reset() override;
diff --git a/src/gis/fit/decoder/CFitMessage.cpp b/src/gis/fit/decoder/CFitMessage.cpp
index 7886319..d5a0075 100644
--- a/src/gis/fit/decoder/CFitMessage.cpp
+++ b/src/gis/fit/decoder/CFitMessage.cpp
@@ -52,23 +52,13 @@ QStringList CFitMessage::messageInfo() const
         .arg(getGlobalMesgNr())
         .arg(getLocalMesgNr());
 
-    for(const CFitField &  field: fields)
+    for(const CFitField &field : fields)
     {
         list << field.fieldInfo();
     }
     return list;
 }
 
-quint16 CFitMessage::getGlobalMesgNr() const
-{
-    return globalMesgNr;
-}
-
-quint8 CFitMessage::getLocalMesgNr() const
-{
-    return localMesgNr;
-}
-
 bool CFitMessage::hasField(const quint8 fieldDefNum) const
 {
     return fields.contains(fieldDefNum);
@@ -88,7 +78,7 @@ bool CFitMessage::isFieldValueValid(const quint8 fieldDefNum) const
     return fields[fieldDefNum].isValidValue();
 }
 
-const QVariant& CFitMessage::getFieldValue(const quint8 fieldDefNum) const
+const QVariant CFitMessage::getFieldValue(const quint8 fieldDefNum) const
 {
     return fields[fieldDefNum].getValue();
 }
diff --git a/src/gis/fit/decoder/CFitMessage.h b/src/gis/fit/decoder/CFitMessage.h
index b69bde6..810c6ca 100644
--- a/src/gis/fit/decoder/CFitMessage.h
+++ b/src/gis/fit/decoder/CFitMessage.h
@@ -23,7 +23,6 @@
 
 #include <QtCore>
 
-class MesgDefinition;
 class CFitDefinitionMessage;
 class CFitProfile;
 class CFitFieldProfile;
@@ -35,13 +34,13 @@ public:
     CFitMessage();
 
     bool isValid() const;
-    quint16 getGlobalMesgNr() const;
-    quint8 getLocalMesgNr() const;
+    quint16 getGlobalMesgNr() const { return globalMesgNr; }
+    quint8 getLocalMesgNr()   const { return localMesgNr; }
 
     bool hasField(const quint8 fieldDefNum) const;
 
     bool isFieldValueValid(const quint8 fieldDefNum) const;
-    const QVariant& getFieldValue(const quint8 fieldDefNum) const;
+    const QVariant getFieldValue(const quint8 fieldDefNum) const;
     void addField(CFitField & field);
 
     const CFitProfile& profile() const { return *messageProfile; }
diff --git a/src/gis/fit/decoder/CFitRecordContentState.cpp b/src/gis/fit/decoder/CFitRecordContentState.cpp
index a1d0d65..1cbf998 100644
--- a/src/gis/fit/decoder/CFitRecordContentState.cpp
+++ b/src/gis/fit/decoder/CFitRecordContentState.cpp
@@ -76,7 +76,7 @@ decode_state_e CFitRecordContentState::process(quint8 &dataByte)
         reset();
         if (nrOfFields == 0)
         {
-            // no fields, records may follow (either for a data message or defninition message)
+            // no fields, records may follow (either for a data message or definition message)
             return eDecoderStateRecord;
         }
         // the fields definitions follows
diff --git a/src/gis/fit/decoder/CFitRecordContentState.h b/src/gis/fit/decoder/CFitRecordContentState.h
index aad6bc9..91b8458 100644
--- a/src/gis/fit/decoder/CFitRecordContentState.h
+++ b/src/gis/fit/decoder/CFitRecordContentState.h
@@ -24,7 +24,7 @@
 class CFitRecordContentState final : public IFitDecoderState
 {
 public:
-    CFitRecordContentState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateRecordContent) { reset(); }
+    CFitRecordContentState(shared_state_data_t &data) : IFitDecoderState(data) { reset(); }
     virtual ~CFitRecordContentState() {}
 
     void reset() override;
diff --git a/src/gis/fit/decoder/CFitRecordHeaderState.cpp b/src/gis/fit/decoder/CFitRecordHeaderState.cpp
index a318b7a..211d1a4 100644
--- a/src/gis/fit/decoder/CFitRecordHeaderState.cpp
+++ b/src/gis/fit/decoder/CFitRecordHeaderState.cpp
@@ -64,7 +64,7 @@ decode_state_e CFitRecordHeaderState::process(quint8 &dataByte)
         {
             // create dummy definition field for timestamp
             // later on passed timestamp is a uint32, therefore a 4 byte type is created.
-            // remark on enum for timestamp (RecordTimestamp:
+            // remark on enum for timestamp (RecordTimestamp):
             // the timestamp field has for all message types the same number (253) therefore it does not matter which
             // enum is taken here.
             def->addField(CFitFieldDefinition(def, eRecordTimestamp, sizeof(quint32), eBaseTypeNrUint8));
@@ -95,4 +95,4 @@ decode_state_e CFitRecordHeaderState::process(quint8 &dataByte)
             return eDecoderStateFieldData;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/gis/fit/decoder/CFitRecordHeaderState.h b/src/gis/fit/decoder/CFitRecordHeaderState.h
index 747a0fb..69acf9a 100644
--- a/src/gis/fit/decoder/CFitRecordHeaderState.h
+++ b/src/gis/fit/decoder/CFitRecordHeaderState.h
@@ -24,7 +24,7 @@
 class CFitRecordHeaderState final : public IFitDecoderState
 {
 public:
-    CFitRecordHeaderState(shared_state_data_t & data) : IFitDecoderState(data, eDecoderStateRecord) { reset(); }
+    CFitRecordHeaderState(shared_state_data_t & data) : IFitDecoderState(data) { reset(); }
     virtual ~CFitRecordHeaderState() {}
 
     decode_state_e process(quint8 &dataByte) override;
diff --git a/src/gis/fit/decoder/IFitDecoderState.cpp b/src/gis/fit/decoder/IFitDecoderState.cpp
index 2d3cc97..6c48e6b 100644
--- a/src/gis/fit/decoder/IFitDecoderState.cpp
+++ b/src/gis/fit/decoder/IFitDecoderState.cpp
@@ -58,23 +58,6 @@ void IFitDecoderState::buildCrc(quint8 byte)
     data.crc = crc;
 }
 
-
-quint16 IFitDecoderState::getCrc()
-{
-    return data.crc;
-}
-
-CFitMessage*IFitDecoderState::latestMessage()
-{
-    return data.lastMessage;
-}
-
-CFitDefinitionMessage*IFitDecoderState::latestDefinition()
-{
-    return data.lastDefintion;
-}
-
-
 static const quint8 fitRecordHeaderTimeOffsetMask = 0x1F; // bit 0-4: 0001 1111
 
 void IFitDecoderState::setTimestamp(quint32 fullTimestamp)
@@ -90,18 +73,13 @@ void IFitDecoderState::setTimestampOffset(quint32 offsetTimestamp)
     data.lastTimeOffset = timeOffset;
 }
 
-quint32 IFitDecoderState::getTimestamp()
-{
-    return data.timestamp;
-}
-
 void IFitDecoderState::addMessage(const CFitDefinitionMessage& definition)
 {
     data.messages.append(CFitMessage(definition));
     data.lastMessage = &data.messages.last();
 }
 
-void IFitDecoderState::addDefinition(CFitDefinitionMessage definition)
+void IFitDecoderState::addDefinition(const CFitDefinitionMessage &definition)
 {
     data.defintions[definition.getLocalMesgNr()] = definition;
     data.lastDefintion = &data.defintions[definition.getLocalMesgNr()];
diff --git a/src/gis/fit/decoder/IFitDecoderState.h b/src/gis/fit/decoder/IFitDecoderState.h
index 0d1fa58..26fd3e5 100644
--- a/src/gis/fit/decoder/IFitDecoderState.h
+++ b/src/gis/fit/decoder/IFitDecoderState.h
@@ -54,7 +54,7 @@ public:
         QList<CFitMessage> messages;
     };
 
-    IFitDecoderState(shared_state_data_t &data, decode_state_e stateClass) : data(data) { }
+    IFitDecoderState(shared_state_data_t &data) : data(data) { }
     virtual ~IFitDecoderState() {}
 
     virtual void reset() = 0;
@@ -63,7 +63,7 @@ public:
 protected:
     virtual decode_state_e process(quint8 &dataByte) = 0;
 
-    CFitMessage* latestMessage();
+    CFitMessage* latestMessage() const { return data.lastMessage; }
     void addMessage(const CFitDefinitionMessage& definition);
 
     void setFileLength(quint32 fileLength);
@@ -71,15 +71,15 @@ protected:
     void incFileBytesRead();
     quint32 bytesLeftToRead();
 
-    CFitDefinitionMessage* latestDefinition();
+    CFitDefinitionMessage* latestDefinition() const { return data.lastDefintion; }
     CFitDefinitionMessage* defintion(quint32 localMessageType);
-    void addDefinition(CFitDefinitionMessage definition);
+    void addDefinition(const CFitDefinitionMessage &definition);
     void endDefintion();
 
     void setTimestamp(quint32 fullTimestamp);
     void setTimestampOffset(quint32 offsetTimestamp);
-    quint32 getTimestamp();
-    quint16 getCrc();
+    quint32 getTimestamp() const { return data.timestamp; }
+    quint16 getCrc() const { return data.crc; }
 
 private:
     void buildCrc(quint8 byte);
diff --git a/src/gis/fit/defs/fit_const.h b/src/gis/fit/defs/fit_const.h
index 21ebca2..39c36ed 100644
--- a/src/gis/fit/defs/fit_const.h
+++ b/src/gis/fit/defs/fit_const.h
@@ -22,9 +22,9 @@
 #include <QtCore>
 
 /*
- * 0: does not print any decoded fit messages and defintions
- * 1: prints fit messages and defintions after finishing decoding
- * 2: 1 + prints fit messages and defintions during decoing (just after finshing one)
+ * 0: does not print any decoded fit messages and definitions
+ * 1: prints fit messages and definitions after finishing decoding
+ * 2: 1 + prints fit messages and definitions during decoding (just after finishing one)
  */
 #define FITDEBUGLVL 1
 
diff --git a/src/gis/fit/serialization.cpp b/src/gis/fit/serialization.cpp
index 0c063e6..76b2062 100644
--- a/src/gis/fit/serialization.cpp
+++ b/src/gis/fit/serialization.cpp
@@ -16,8 +16,6 @@
 
 **********************************************************************************************/
 
-#include "CMainWindow.h"
-#include "gis/fit/CFitProject.h"
 #include "gis/fit/defs/fit_enums.h"
 #include "gis/fit/defs/fit_fields.h"
 #include "gis/rte/CGisItemRte.h"
@@ -28,78 +26,82 @@ static const qreal degrees = 180.0;
 static const qreal twoPow31 = qPow(2, 31);
 static const uint sec1970to1990 = QDateTime(QDate(1989, 12, 31), QTime(0, 0, 0),Qt::UTC).toTime_t();
 
+/**
+ * converts the semicircle to the WGS-84 geoids (Degrees Decimal Minutes (DDD MM.MMM)).
+ * North latitude +, South latitude -
+ * East longitude +, West longitude -
+ *
+   return: the given semicircle value converted to degree.
+ */
+static qreal toDegree(qint32 semicircles)
+{
+    return semicircles * (degrees / twoPow31);
+}
 
-class CFitDataConverter
+/**
+   timestamp: seconds since UTC 00:00 Dec 31 1989
+ */
+static QDateTime toDateTime(quint32 timestamp)
 {
-public:
+    QDateTime dateTime;
+    dateTime.setTime_t(sec1970to1990 + timestamp);
+    dateTime.setTimeSpec(Qt::UTC);
+    return dateTime;
+}
 
-    /**
-     * converts the semicircle to the WGS-84 geoids (Degrees Decimal Minutes (DDD MM.MMM)).
-     * North latitude +, South latitute -
-     * East longitude +, West longitude -
-     *
-       return: the given semicircle value converted to degree.
-     */
-    static qreal toDegree(qint32 semicircles)
+static QString dateTimeAsString(quint32 timestamp)
+{
+    QDateTime dateTime = toDateTime(timestamp);
+    return dateTime.toString("yyyy-dd-MM-HH-mm-ss");
+}
+
+template<typename T>
+static void readKnownExtensions(T &exts, const CFitMessage &mesg)
+{
+    // see gis/trk/CKnownExtension for the keys of the extensions
+    if(mesg.isFieldValueValid(eRecordHeartRate))
     {
-        qreal degree = 0;
-        degree = semicircles * (degrees / twoPow31);
-        return degree;
+        exts["gpxtpx:TrackPointExtension|gpxtpx:hr"] = mesg.getFieldValue(eRecordHeartRate);
     }
-
-    /**
-       timestamp: seconds since UTC 00:00 Dec 31 1989
-     */
-    static QDateTime toDateTime(quint32 timestamp)
+    if(mesg.isFieldValueValid(eRecordTemperature))
     {
-        QDateTime dateTime;
-        dateTime.setTime_t(sec1970to1990 + timestamp);
-        dateTime.setTimeSpec(Qt::UTC);
-        return dateTime;
+        exts["gpxtpx:TrackPointExtension|gpxtpx:atemp"] = mesg.getFieldValue(eRecordTemperature);
     }
-};
-
+    if(mesg.isFieldValueValid(eRecordCadence))
+    {
+        exts["gpxtpx:TrackPointExtension|gpxtpx:cad"] = mesg.getFieldValue(eRecordCadence);
+    }
+    if(mesg.isFieldValueValid(eRecordSpeed))
+    {
+        const QVariant &speed = mesg.getFieldValue(eRecordSpeed);
+        exts["speed"] = speed.toDouble() / 1000.;
+    }
+}
 
-bool readFitRecord(const CFitMessage &mesg, IGisItem::wpt_t &pt)
+static bool readFitRecord(const CFitMessage &mesg, IGisItem::wpt_t &pt)
 {
     if(mesg.isFieldValueValid(eRecordPositionLong) && mesg.isFieldValueValid(eRecordPositionLat))
     {
-        pt.lon = CFitDataConverter::toDegree(mesg.getFieldValue(eRecordPositionLong).toInt());
-        pt.lat = CFitDataConverter::toDegree(mesg.getFieldValue(eRecordPositionLat).toInt());
+        pt.lon = toDegree(mesg.getFieldValue(eRecordPositionLong).toInt());
+        pt.lat = toDegree(mesg.getFieldValue(eRecordPositionLat).toInt());
         // QVariant.toInt() does not convert double to int but return 0.
         pt.ele = (int) mesg.getFieldValue(eRecordEnhancedAltitude).toDouble();
-        pt.time = CFitDataConverter::toDateTime(mesg.getFieldValue(eRecordTimestamp).toUInt());
+        pt.time = toDateTime(mesg.getFieldValue(eRecordTimestamp).toUInt());
 
-        // see gis/trk/CKnownExtension for the keys of the extensions
-        if(mesg.isFieldValueValid(eRecordHeartRate))
-        {
-            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:hr"] = mesg.getFieldValue(eRecordHeartRate);
-        }
-        if(mesg.isFieldValueValid(eRecordTemperature))
-        {
-            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:atemp"] = mesg.getFieldValue(eRecordTemperature);
-        }
+        readKnownExtensions(pt.extensions, mesg);
 
         return true;
     }
     return false;
 }
 
-bool readFitRecord(const CFitMessage &mesg, CGisItemTrk::trkpt_t &pt)
+static bool readFitRecord(const CFitMessage &mesg, CGisItemTrk::trkpt_t &pt)
 {
     if(readFitRecord(mesg, (IGisItem::wpt_t &)pt))
     {
         pt.speed = mesg.getFieldValue(eRecordSpeed).toDouble();
 
-        // see gis/trk/CKnownExtension for the keys of the extensions
-        if(mesg.isFieldValueValid(eRecordHeartRate))
-        {
-            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:hr"] = mesg.getFieldValue(eRecordHeartRate);
-        }
-        if(mesg.isFieldValueValid(eRecordTemperature))
-        {
-            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:atemp"] = mesg.getFieldValue(eRecordTemperature);
-        }
+        readKnownExtensions(pt.extensions, mesg);
 
         pt.extensions.squeeze();
         return true;
@@ -107,65 +109,114 @@ bool readFitRecord(const CFitMessage &mesg, CGisItemTrk::trkpt_t &pt)
     return false;
 }
 
-void readFitCoursePoint(const CFitMessage &mesg, IGisItem::wpt_t &wpt)
+static void readFitCoursePoint(const CFitMessage &mesg, IGisItem::wpt_t &wpt)
 {
     if(mesg.isFieldValueValid(eCoursePointName))
     {
-        wpt.name = mesg.getFieldValue(eCoursePointName).toString();
+        wpt.name =  mesg.getFieldValue(eCoursePointName).toString();
     }
     if(mesg.isFieldValueValid(eCoursePointTimestamp))
     {
-        wpt.time = CFitDataConverter::toDateTime(mesg.getFieldValue(eCoursePointTimestamp).toUInt());
+        wpt.time = toDateTime(mesg.getFieldValue(eCoursePointTimestamp).toUInt());
     }
 
     if(mesg.isFieldValueValid(eCoursePointPositionLong) && mesg.isFieldValueValid(eCoursePointPositionLat))
     {
-        wpt.lon = CFitDataConverter::toDegree(mesg.getFieldValue(eCoursePointPositionLong).toInt());
-        wpt.lat = CFitDataConverter::toDegree(mesg.getFieldValue(eCoursePointPositionLat).toInt());
+        wpt.lon = toDegree(mesg.getFieldValue(eCoursePointPositionLong).toInt());
+        wpt.lat = toDegree(mesg.getFieldValue(eCoursePointPositionLat).toInt());
     }
     // TODO find appropriate icon for different CoursePointType (CoursePoint***)
     // see WptIcons.initWptIcons() for all values
     wpt.sym = "Waypoint";
 }
 
-void CGisItemTrk::readTrkFromFit(CFitStream &stream)
+
+static bool readFitSegmentPoint(const CFitMessage &mesg, CGisItemTrk::trkpt_t &pt, quint32 timeCreated)
+{
+    if(mesg.isFieldValueValid(eSegmentPointPositionLong) && mesg.isFieldValueValid(eSegmentPointPositionLat))
+    {
+        pt.lon = toDegree(mesg.getFieldValue(eSegmentPointPositionLong).toInt());
+        pt.lat = toDegree(mesg.getFieldValue(eSegmentPointPositionLat).toInt());
+        pt.ele = (int) mesg.getFieldValue(eSegmentPointAltitude).toDouble();
+        // sum with file_id time_created
+        pt.time = toDateTime(timeCreated + mesg.getFieldValue(eSegmentPointLeaderTime).toUInt());
+        return true;
+    }
+    return false;
+}
+
+
+static QString evaluateTrkName(CFitStream &stream)
 {
-    const CFitMessage& mesg = stream.firstMesgOf(eMesgNumCourse);
-    if(mesg.isValid() && mesg.isFieldValueValid(eCourseName))
+    const CFitMessage& segmentIdMesg = stream.firstMesgOf(eMesgNumSegmentId);
+    if(segmentIdMesg.isFieldValueValid(eSegmentIdName))
+    {
+        return segmentIdMesg.getFieldValue(eSegmentIdName).toString();
+    }
+
+    const CFitMessage& courseMesg = stream.firstMesgOf(eMesgNumCourse);
+    if(courseMesg.isFieldValueValid(eCourseName))
     {
-        trk.name = mesg.getFieldValue(eCourseName).toString();
+        // first place: take the course name
+        // course files can have a name but activities don't.
+        return courseMesg.getFieldValue(eCourseName).toString();
     }
-    else
+
+    const CFitMessage& sessionMesg = stream.firstMesgOf(eMesgNumSession);
+    if(sessionMesg.isFieldValueValid(eSessionStartTime))
+    {
+        // second place: take the session start time
+        return dateTimeAsString(sessionMesg.getFieldValue(eSessionStartTime).toUInt());
+    }
+
+    const CFitMessage& fileidMesg = stream.firstMesgOf(eMesgNumFileId);
+    if(fileidMesg.isFieldValueValid(eFileIdTimeCreated))
+    {
+        // third place: take the file created timestamp
+        // (is typically the same as the start time with a offset of several seconds)
+        return dateTimeAsString(fileidMesg.getFieldValue(eFileIdTimeCreated).toUInt());
+    }
+
+    // fourth place: take the filename of the fit file
+    return QFileInfo(stream.getFileName()).baseName().replace("_", " ");
+}
+
+
+void CGisItemTrk::readTrkFromFit(CFitStream &stream)
+{
+    trk.name = evaluateTrkName(stream);
+
+    quint32 timeCreated = 0;
+    const CFitMessage& fileIdMesg = stream.firstMesgOf(eMesgNumFileId);
+    if(fileIdMesg.isFieldValueValid(eFileIdTimeCreated))
     {
-        // course files can have a name but activities don't, so use just the filename
-        trk.name = QFileInfo(stream.getFileName()).baseName().replace("_", " ");
+        timeCreated = fileIdMesg.getFieldValue(eFileIdTimeCreated).toUInt();
     }
+    stream.reset();
 
-    trk.name = QFileInfo(stream.getFileName()).baseName().replace("_", " ");
-    // note to the FIT specification: the specification alllows different ordering of the messages.
+    // note to the FIT specification: the specification allows different ordering of the messages.
     // Record messages can either be at the beginning or in chronological order within the record
     // messages. Garmin devices uses the chronological ordering. We only consider the chronological
     // order, otherwise timestamps (of records and events) must be compared to each other.
-    trkseg_t seg = trkseg_t();
+    trkseg_t seg;
     do
     {
         const CFitMessage& mesg = stream.nextMesg();
         if(mesg.getGlobalMesgNr() == eMesgNumRecord)
         {
             // for documentation: MesgNumActivity, MesgNumSession, MesgNumLap, MesgNumLength could also contain data
-            CGisItemTrk::trkpt_t pt = CGisItemTrk::trkpt_t();
+            CGisItemTrk::trkpt_t pt;
             if(readFitRecord(mesg, pt))
             {
-                seg.pts.append(pt);
+                seg.pts.append(std::move(pt));
             }
         }
         else if(mesg.getGlobalMesgNr() ==  eMesgNumEvent)
         {
             if(mesg.getFieldValue(eEventEvent).toUInt() == eEventTimer)
             {
-                if(mesg.getFieldValue(eEventEventType).toUInt() == eEventTypeStop ||
-                   mesg.getFieldValue(eEventEventType).toUInt() == eEventTypeStopAll ||
-                   mesg.getFieldValue(eEventEventType).toUInt() == eEventTypeStopDisableAll)
+                uint event = mesg.getFieldValue(eEventEventType).toUInt();
+                if(event == eEventTypeStop || event == eEventTypeStopAll || event == eEventTypeStopDisableAll)
                 {
                     if(!seg.pts.isEmpty())
                     {
@@ -175,6 +226,14 @@ void CGisItemTrk::readTrkFromFit(CFitStream &stream)
                 }
             }
         }
+        else if(mesg.getGlobalMesgNr() == eMesgNumSegmentPoint)
+        {
+            CGisItemTrk::trkpt_t pt;
+            if(readFitSegmentPoint(mesg, pt, timeCreated))
+            {
+                seg.pts.append(std::move(pt));
+            }
+        }
     }
     while (stream.hasMoreMesg());
 
@@ -200,24 +259,19 @@ void CGisItemWpt::readWptFromFit(CFitStream &stream)
 void CGisItemRte::readRteFromFit(CFitStream &stream)
 {
     // a course file could be considered as a route...
-    const CFitMessage& mesg = stream.firstMesgOf(eMesgNumCourse);
-    if(mesg.isFieldValueValid(eCourseName))
-    {
-        rte.name = mesg.getFieldValue(eCourseName).toString();
-    }
+    rte.name =  evaluateTrkName(stream);
+    stream.reset();
     do
     {
         const CFitMessage& mesg = stream.nextMesg();
         if(mesg.getGlobalMesgNr() == eMesgNumRecord)
         {
-            rtept_t pt = rtept_t();
+            rtept_t pt;
             if(readFitRecord(mesg, pt))
             {
-                rte.pts.append(pt);
+                rte.pts.append(std::move(pt));
             }
         }
     }
     while (stream.hasMoreMesg());
 }
-
-
diff --git a/src/gis/gpx/CGpxProject.h b/src/gis/gpx/CGpxProject.h
index 1495013..3aa34c2 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/gis/gpx/CGpxProject.h
@@ -26,7 +26,7 @@ class CGisDraw;
 
 class CGpxProject : public IGisProject
 {
-    Q_DECLARE_TR_FUNCTIONS(CGpsProject)
+    Q_DECLARE_TR_FUNCTIONS(CGpxProject)
 public:
     CGpxProject(const QString &filename, CGisListWks * parent);
     CGpxProject(const QString &filename, IDevice * parent);
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index 50a8710..fba4db8 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -254,7 +254,7 @@ static void writeXml(QDomNode& xml, const QString& tag, const QList<IGisItem::li
 {
     if(!links.isEmpty())
     {
-        foreach(const IGisItem::link_t& link, links)
+        for(const IGisItem::link_t& link : links)
         {
             QDomElement elem = xml.ownerDocument().createElement(tag);
             xml.appendChild(elem);
@@ -344,7 +344,7 @@ static void writeXml(QDomNode& ext, const QHash<QString, QVariant>& extensions)
         return CKnownExtension::get(k1).order < CKnownExtension::get(k2).order;
     });
 
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         QStringList tags = key.split('|', QString::SkipEmptyParts);
 
@@ -361,7 +361,7 @@ static void writeXml(QDomNode& ext, const QHash<QString, QVariant>& extensions)
 
             QString lastTag = tags.last();
             tags.pop_back();
-            foreach(const QString &tag, tags)
+            for(const QString &tag : tags)
             {
                 QDomNode child = node.firstChildElement(tag);
                 if(child.isNull())
@@ -677,7 +677,7 @@ void CGisItemWpt::writeGcExt(QDomNode& xmlCache)
         QDomElement xmlLogs = xmlCache.ownerDocument().createElement("groundspeak:logs");
         xmlCache.appendChild(xmlLogs);
 
-        foreach(const geocachelog_t &log, geocache.logs)
+        for(const geocachelog_t &log : geocache.logs)
         {
             QDomElement xmlLog = xmlCache.ownerDocument().createElement("groundspeak:log");
             xmlLogs.appendChild(xmlLog);
@@ -780,12 +780,12 @@ void CGisItemTrk::save(QDomNode& gpx)
     xmlExt.appendChild(gpxx);
     writeXml(gpxx, "gpxx:DisplayColor", trk.color);
 
-    foreach(const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
         QDomElement xmlTrkseg = doc.createElement("trkseg");
         xmlTrk.appendChild(xmlTrkseg);
 
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
             QDomElement xmlTrkpt = doc.createElement("trkpt");
             xmlTrkseg.appendChild(xmlTrkpt);
@@ -849,7 +849,7 @@ void CGisItemRte::save(QDomNode& gpx)
     xmlRte.appendChild(xmlExt);
     writeXml(xmlExt, "ql:key", key.item);
 
-    foreach(const rtept_t &pt, rte.pts)
+    for(const rtept_t &pt : rte.pts)
     {
         QDomElement xmlRtept = doc.createElement("rtept");
         xmlRte.appendChild(xmlRtept);
@@ -911,8 +911,7 @@ void CGisItemOvlArea::save(QDomNode& gpx)
     writeXml(xmlArea, "ql:flags",   flags);
     writeXml(xmlArea, history);
 
-
-    foreach(const pt_t &pt, area.pts)
+    for(const pt_t &pt : area.pts)
     {
         QDomElement xmlPt = doc.createElement("ql:point");
         xmlArea.appendChild(xmlPt);
@@ -1048,9 +1047,9 @@ void CDeviceGarmin::createAdventureFromProject(IGisProject * project, const QStr
             QDomElement waypointOrder = doc.createElement("WaypointOrder");
             adventure.appendChild(waypointOrder);
 
-            foreach(const CGisItemTrk::trkseg_t& seg, trk.segs)
+            for(const CGisItemTrk::trkseg_t& seg : trk.segs)
             {
-                foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+                for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
                 {
                     if(trkpt.keyWpt.item.isEmpty())
                     {
diff --git a/src/gis/ovl/CDetailsOvlArea.cpp b/src/gis/ovl/CDetailsOvlArea.cpp
index eca9d6a..37c431a 100644
--- a/src/gis/ovl/CDetailsOvlArea.cpp
+++ b/src/gis/ovl/CDetailsOvlArea.cpp
@@ -221,7 +221,7 @@ void CDetailsOvlArea::setupGui()
     int idx = 0;
     QList<QTreeWidgetItem*> items;
     const CGisItemOvlArea::area_t& a = area.getAreaData();
-    foreach(const CGisItemOvlArea::pt_t& pt, a.pts)
+    for(const CGisItemOvlArea::pt_t& pt : a.pts)
     {
         QTreeWidgetItem * item = new QTreeWidgetItem();
 
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index 9c9fe92..5249928 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -135,7 +135,7 @@ CGisItemOvlArea::~CGisItemOvlArea()
 IGisItem * CGisItemOvlArea::createClone()
 {
     int idx = -1;
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(project)
     {
         idx = project->indexOfChild(this);
@@ -156,6 +156,11 @@ bool CGisItemOvlArea::isCloseTo(const QPointF& pos)
     return dist < 20;
 }
 
+bool CGisItemOvlArea::isWithin(const QRectF& area, selflags_t flags)
+{
+    return (flags & eSelectionOvl) ? IGisItem::isWithin(area, flags, polygonArea) : false;
+}
+
 QPointF CGisItemOvlArea::getPointCloseBy(const QPoint& screenPos)
 {
     QMutexLocker lock(&mutexItems);
@@ -163,7 +168,7 @@ QPointF CGisItemOvlArea::getPointCloseBy(const QPoint& screenPos)
     qint32 i    = 0;
     qint32 idx  = NOIDX;
     qint32 d    = NOINT;
-    foreach(const QPointF &point, polygonArea)
+    for(const QPointF &point : polygonArea)
     {
         int tmp = (screenPos - point).manhattanLength();
         if(tmp < d)
@@ -223,7 +228,7 @@ void CGisItemOvlArea::deriveSecondaryData()
     qreal south =  90;
     qreal west  =  180;
 
-    foreach(const pt_t &pt, area.pts)
+    for(const pt_t &pt : area.pts)
     {
         if(pt.lon < west)
         {
@@ -284,7 +289,7 @@ void CGisItemOvlArea::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRe
 
     QPointF pt1;
 
-    foreach(const pt_t &pt, area.pts)
+    for(const pt_t &pt : area.pts)
     {
         pt1.setX(pt.lon);
         pt1.setY(pt.lat);
@@ -425,7 +430,7 @@ void CGisItemOvlArea::getPolylineFromData(SGisLine &l)
     QMutexLocker lock(&mutexItems);
 
     l.clear();
-    foreach(const pt_t &pt, area.pts)
+    for(const pt_t &pt : area.pts)
     {
         l << point_t(QPointF(pt.lon * DEG_TO_RAD, pt.lat * DEG_TO_RAD));
     }
diff --git a/src/gis/ovl/CGisItemOvlArea.h b/src/gis/ovl/CGisItemOvlArea.h
index 745f7eb..8913724 100644
--- a/src/gis/ovl/CGisItemOvlArea.h
+++ b/src/gis/ovl/CGisItemOvlArea.h
@@ -106,6 +106,7 @@ public:
     IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse) override;
     QPointF getPointCloseBy(const QPoint& screenPos) override;
     bool isCloseTo(const QPointF& pos) override;
+    bool isWithin(const QRectF& area, selflags_t flags) override;
 
     void gainUserFocus(bool yes) override;
 
diff --git a/src/gis/ovl/CScrOptOvlArea.cpp b/src/gis/ovl/CScrOptOvlArea.cpp
index 44e654f..bbdd816 100644
--- a/src/gis/ovl/CScrOptOvlArea.cpp
+++ b/src/gis/ovl/CScrOptOvlArea.cpp
@@ -25,9 +25,8 @@
 
 CScrOptOvlArea::CScrOptOvlArea(CGisItemOvlArea *area, const QPoint &point, IMouse *parent)
     : IScrOpt(parent)
+    , key(area->getKey())
 {
-    key = area->getKey();
-
     setupUi(this);
     setOrigin(point);
     label->setFont(CMainWindow::self().getMapFont());
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index 0691360..f2aa803 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -164,7 +164,7 @@ void CDetailsPrj::slotSetupGui()
     textDesc->document()->setTextWidth(textDesc->size().width() - 20);
     draw(*textDesc->document(), false);
 
-    QTabWidget * tabWidget = dynamic_cast<QTabWidget*>(parentWidget() ? parentWidget()->parentWidget() : 0);
+    QTabWidget * tabWidget = dynamic_cast<QTabWidget*>(parentWidget() ? parentWidget()->parentWidget() : nullptr);
     if(tabWidget)
     {
         int idx = tabWidget->indexOf(this);
@@ -379,7 +379,7 @@ void CDetailsPrj::drawTrackSummary(QTextCursor& cursor, const QList<CGisItemTrk*
 {
     quint32 flags = 0;
     QVector<CActivityTrk::activity_summary_t> summaries(CGisItemTrk::trkpt_t::eActMaxNum + 1);
-    foreach(const CGisItemTrk* trk, trks)
+    for(const CGisItemTrk* trk : trks)
     {
         const CActivityTrk& activities = trk->getActivities();
         flags |= activities.getAllFlags();
@@ -410,12 +410,12 @@ void CDetailsPrj::addIcon(QTextTable * table, int col, int row, IGisItem * item,
     if(trk)
     {
         QSet<QString> icons;
-        foreach(const CActivityTrk::activity_range_t& range, trk->getActivities().getActivityRanges())
+        for(const CActivityTrk::activity_range_t& range : trk->getActivities().getActivityRanges())
         {
             icons << range.icon;
         }
 
-        foreach(const QString &icon, icons)
+        for(const QString &icon : icons)
         {
             if(!icon.isEmpty())
             {
@@ -454,7 +454,7 @@ void CDetailsPrj::drawByGroup(QTextCursor &cursor, QList<CGisItemTrk*>& trks, QL
         table->cellAt(0,eComment1).firstCursorPosition().insertText(tr("Comment"));
 
         cnt = 1;
-        foreach(CGisItemWpt * wpt, wpts)
+        for(CGisItemWpt * wpt : wpts)
         {
             PROGRESS(n++, return );
 
@@ -481,7 +481,7 @@ void CDetailsPrj::drawByGroup(QTextCursor &cursor, QList<CGisItemTrk*>& trks, QL
 
         cnt = 1;
 
-        foreach(CGisItemTrk * trk, trks)
+        for(CGisItemTrk * trk : trks)
         {
             PROGRESS(n++, return );
 
@@ -550,13 +550,13 @@ void CDetailsPrj::drawByTrack(QTextCursor& cursor, QList<CGisItemTrk *> &trks, Q
     const qreal h1 = qRound(w1/2.0);
 
 
-    foreach(CGisItemTrk * trk, trks)
+    for(CGisItemTrk * trk : trks)
     {
         QList<wpt_info_t> wptInfo;
         const CGisItemTrk::trk_t& t = trk->getTrackData();
-        foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+        for(const CGisItemTrk::trkseg_t& seg : t.segs)
         {
-            foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+            for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
             {
                 if((trkpt.flags & CGisItemTrk::trkpt_t::eHidden) || trkpt.keyWpt.item.isEmpty())
                 {
@@ -585,7 +585,7 @@ void CDetailsPrj::drawByTrack(QTextCursor& cursor, QList<CGisItemTrk *> &trks, Q
 
         cnt = 1;
 
-        foreach(const wpt_info_t &info, wptInfo)
+        for(const wpt_info_t &info : wptInfo)
         {
             PROGRESS(n++, return );
 
@@ -674,7 +674,7 @@ void CDetailsPrj::drawArea(QTextCursor& cursor, QList<CGisItemOvlArea *> &areas,
     table->cellAt(0,eComment1).firstCursorPosition().insertText(tr("Comment"));
 
     int cnt = 1;
-    foreach(CGisItemOvlArea * area, areas)
+    for(CGisItemOvlArea * area : areas)
     {
         PROGRESS(n++, return );
 
@@ -704,7 +704,7 @@ void CDetailsPrj::drawRoute(QTextCursor& cursor, QList<CGisItemRte *> &rtes, CPr
     table->cellAt(0,eComment1).firstCursorPosition().insertText(tr("Comment"));
 
     int cnt = 1;
-    foreach(CGisItemRte * rte, rtes)
+    for(CGisItemRte * rte : rtes)
     {
         PROGRESS(n++, return );
 
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index b74e378..284fa62 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -243,17 +243,14 @@ void IGisProject::updateItems()
         return;
     }
 
+
     updateItemCounters();
 
-    if(noCorrelation || getItemCountByType(IGisItem::eTypeTrk) == 0 || getItemCountByType(IGisItem::eTypeWpt) == 0)
+    if(noCorrelation || (hashTrkWpt[0] == hashTrkWpt[1]) || (getItemCountByType(IGisItem::eTypeTrk) == 0))
     {
         return;
     }
 
-    if(hashTrkWpt[0] == hashTrkWpt[1])
-    {
-        return;
-    }
 
     quint32 total   = cntTrkPts * cntWpts;
     quint32 current = 0;
@@ -443,6 +440,7 @@ QString IGisProject::getInfo() const
     return str;
 }
 
+
 IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
 {
     for(int i = 0; i < childCount(); i++)
@@ -461,6 +459,23 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
     return nullptr;
 }
 
+void IGisProject::getItemsByKeys(const QList<IGisItem::key_t>& keys, QList<IGisItem*>& items)
+{
+    for(int i = 0; i < childCount(); i++)
+    {
+        IGisItem *item = dynamic_cast<IGisItem*>(child(i));
+        if(nullptr == item)
+        {
+            continue;
+        }
+
+        if(keys.contains(item->getKey()))
+        {
+            items << item;
+        }
+    }
+}
+
 void IGisProject::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
     if(!isVisible())
@@ -483,6 +498,28 @@ void IGisProject::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
     }
 }
 
+void IGisProject::getItemsByArea(const QRectF& area, IGisItem::selflags_t flags, QList<IGisItem *> &items)
+{
+    if(!isVisible())
+    {
+        return;
+    }
+
+    for(int i = 0; i < childCount(); i++)
+    {
+        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
+        if(nullptr == item)
+        {
+            continue;
+        }
+
+        if(item->isWithin(area, flags))
+        {
+            items << item;
+        }
+    }
+}
+
 void IGisProject::mouseMove(const QPointF& pos)
 {
     if(!isVisible())
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index 990fa1e..4f88eb5 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -257,6 +257,7 @@ public:
      */
     IGisItem * getItemByKey(const IGisItem::key_t &key);
 
+    void getItemsByKeys(const QList<IGisItem::key_t>& keys, QList<IGisItem*>& items);
     /**
        @brief Get a list of items that are close to a given pixel coordinate of the screen
 
@@ -267,6 +268,8 @@ public:
      */
     void getItemsByPos(const QPointF& pos, QList<IGisItem*>& items);
 
+    void getItemsByArea(const QRectF& area, IGisItem::selflags_t flags, QList<IGisItem *> &items);
+
 
     int getItemCountByType(IGisItem::type_e type) const
     {
diff --git a/src/gis/qms/CQmsProject.cpp b/src/gis/qms/CQmsProject.cpp
index 7d41705..d9b52f5 100644
--- a/src/gis/qms/CQmsProject.cpp
+++ b/src/gis/qms/CQmsProject.cpp
@@ -30,7 +30,7 @@ CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
 {
     setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/QmsProject.png"));
 
-    // cerate file instance
+    // create file instance
     QFile file(filename);
 
     // if the file does not exist, the filename is assumed to be a name for a new project
@@ -63,10 +63,6 @@ CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
     valid = true;
 }
 
-CQmsProject::~CQmsProject()
-{
-}
-
 bool CQmsProject::saveAs(const QString& fn, IGisProject& project)
 {
     QString _fn_ = fn;
diff --git a/src/gis/qms/CQmsProject.h b/src/gis/qms/CQmsProject.h
index c7eceae..355b111 100644
--- a/src/gis/qms/CQmsProject.h
+++ b/src/gis/qms/CQmsProject.h
@@ -26,7 +26,7 @@ class CQmsProject : public IGisProject
     Q_DECLARE_TR_FUNCTIONS(CQmsProject)
 public:
     CQmsProject(const QString& filename, CGisListWks * parent);
-    virtual ~CQmsProject();
+    virtual ~CQmsProject() = default;
 
     const QString getFileDialogFilter() const override
     {
diff --git a/src/gis/rte/CCreateRouteFromWpt.cpp b/src/gis/rte/CCreateRouteFromWpt.cpp
index cb38a4f..638b78c 100644
--- a/src/gis/rte/CCreateRouteFromWpt.cpp
+++ b/src/gis/rte/CCreateRouteFromWpt.cpp
@@ -34,7 +34,7 @@ CCreateRouteFromWpt::CCreateRouteFromWpt(const QList<IGisItem::key_t> &keys, QWi
 {
     setupUi(this);
 
-    foreach(const IGisItem::key_t& key, keys)
+    for(const IGisItem::key_t& key : keys)
     {
         CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
         if(nullptr == wpt)
diff --git a/src/gis/rte/CDetailsRte.cpp b/src/gis/rte/CDetailsRte.cpp
index 547440a..95ce66d 100644
--- a/src/gis/rte/CDetailsRte.cpp
+++ b/src/gis/rte/CDetailsRte.cpp
@@ -74,13 +74,13 @@ void CDetailsRte::setupGui()
 
 //    treeWidget->clear();
 //    QString val, unit;
-//    foreach(const CGisItemRte::rtept_t& rtept, rte.getRoute().pts)
+//    for(const CGisItemRte::rtept_t& rtept : rte.getRoute().pts)
 //    {
 //        QTreeWidgetItem * item = new QTreeWidgetItem(treeWidget);
 
 //        item->setText(0, tr("Route waypoint"));
 
-//        foreach(const CGisItemRte::subpt_t& subpt, rtept.subpts)
+//        for(const CGisItemRte::subpt_t& subpt : rtept.subpts)
 //        {
 //            if(subpt.type != CGisItemRte::subpt_t::eTypeJunct)
 //            {
@@ -130,7 +130,7 @@ void CDetailsRte::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(nullptr);
         dlg.setHtml(rte.getComment());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -140,7 +140,7 @@ void CDetailsRte::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(nullptr);
         dlg.setHtml(rte.getDescription());
         if(dlg.exec() == QDialog::Accepted)
         {
diff --git a/src/gis/rte/CGisItemRte.cpp b/src/gis/rte/CGisItemRte.cpp
index ac4bf21..62f7e40 100644
--- a/src/gis/rte/CGisItemRte.cpp
+++ b/src/gis/rte/CGisItemRte.cpp
@@ -152,7 +152,7 @@ CGisItemRte::~CGisItemRte()
 IGisItem * CGisItemRte::createClone()
 {
     int idx = -1;
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(project)
     {
         idx = project->indexOfChild(this);
@@ -164,7 +164,7 @@ IGisItem * CGisItemRte::createClone()
 bool CGisItemRte::isCalculated()
 {
     bool yes = true;
-    foreach(const rtept_t &pt, rte.pts)
+    for(const rtept_t &pt : rte.pts)
     {
         if((pt.fakeSubpt.lat == NOFLOAT) || (pt.fakeSubpt.lon == NOFLOAT))
         {
@@ -182,7 +182,7 @@ void CGisItemRte::deriveSecondaryData()
     qreal south =  90;
     qreal west  =  180;
 
-    //foreach(const rtept_t &rtept, rte.pts)
+    //for(const rtept_t &rtept : rte.pts)
     const int N = rte.pts.count();
 
     for(int i = 0; i < N; i++)
@@ -205,7 +205,7 @@ void CGisItemRte::deriveSecondaryData()
             north   = rtept.lat;
         }
 
-        foreach(const subpt_t &subpt, rtept.subpts)
+        for(const subpt_t &subpt : rtept.subpts)
         {
             if(subpt.lon < west)
             {
@@ -325,7 +325,7 @@ QPointF CGisItemRte::getPointCloseBy(const QPoint& screenPos)
 
     qint32 d    = NOINT;
     QPointF pt  = NOPOINTF;
-    foreach(const QPointF &point, line)
+    for(const QPointF &point : line)
     {
         int tmp = (screenPos - point).manhattanLength();
         if(tmp < d)
@@ -348,6 +348,12 @@ bool CGisItemRte::isCloseTo(const QPointF& pos)
     return dist < 20;
 }
 
+bool CGisItemRte::isWithin(const QRectF& area, selflags_t flags)
+{
+    return (flags & eSelectionRte) ? IGisItem::isWithin(area, flags, line) : false;
+}
+
+
 void CGisItemRte::gainUserFocus(bool yes)
 {
     keyUserFocus = yes ? key : key_t();
@@ -384,7 +390,7 @@ void CGisItemRte::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     QVector<QPixmap> icons;
     QVector<QPointF> focus;
 
-    foreach(const rtept_t &rtept, rte.pts)
+    for(const rtept_t &rtept : rte.pts)
     {
         QPointF pt(rtept.lon * DEG_TO_RAD, rtept.lat * DEG_TO_RAD);
 
@@ -396,7 +402,7 @@ void CGisItemRte::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
         focus << rtept.focus;
 
         blockedAreas << QRectF(pt - rtept.focus, rtept.icon.size());
-        foreach(const subpt_t &subpt, rtept.subpts)
+        for(const subpt_t &subpt : rtept.subpts)
         {
             QPointF pt(subpt.lon * DEG_TO_RAD, subpt.lat * DEG_TO_RAD);
             gis->convertRad2Px(pt);
@@ -508,7 +514,7 @@ void CGisItemRte::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
     }
 
 
-    foreach(const rtept_t &rtept, rte.pts)
+    for(const rtept_t &rtept : rte.pts)
     {
         QPointF pt(rtept.lon * DEG_TO_RAD, rtept.lat * DEG_TO_RAD);
 
@@ -599,14 +605,14 @@ void CGisItemRte::getPolylineFromData(SGisLine& l)
 {
     QMutexLocker lock(&mutexItems);
     l.clear();
-    foreach(const rtept_t &rtept, rte.pts)
+    for(const rtept_t &rtept : rte.pts)
     {
         l << point_t(QPointF(rtept.lon * DEG_TO_RAD, rtept.lat * DEG_TO_RAD));
 
         point_t& pt = l.last();
 
         pt.subpts.clear();
-        foreach(const subpt_t &subpt, rtept.subpts)
+        for(const subpt_t &subpt : rtept.subpts)
         {
             pt.subpts << IGisLine::subpt_t(QPointF(subpt.lon * DEG_TO_RAD, subpt.lat * DEG_TO_RAD));
         }
@@ -662,7 +668,7 @@ QPointF CGisItemRte::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
         quint32 i = 0;
         qint32 d1 = NOINT;
 
-        foreach(const QPointF &point, line)
+        for(const QPointF &point : line)
         {
             int tmp = (pt - point).manhattanLength();
             if(tmp <= d1)
@@ -690,14 +696,14 @@ QPointF CGisItemRte::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
 const CGisItemRte::subpt_t * CGisItemRte::getSubPtByIndex(quint32 idx)
 {
     quint32 cnt = 0;
-    foreach(const rtept_t &rtept, rte.pts)
+    for(const rtept_t &rtept : rte.pts)
     {
         if(cnt == idx)
         {
             return &rtept.fakeSubpt;
         }
 
-        foreach(const subpt_t &subpt, rtept.subpts)
+        for(const subpt_t &subpt : rtept.subpts)
         {
             cnt++;
             if(cnt == idx)
diff --git a/src/gis/rte/CGisItemRte.h b/src/gis/rte/CGisItemRte.h
index 2d6c615..9bef285 100644
--- a/src/gis/rte/CGisItemRte.h
+++ b/src/gis/rte/CGisItemRte.h
@@ -123,6 +123,7 @@ public:
     void drawHighlight(QPainter& p) override;
     void save(QDomNode& gpx) override;
     bool isCloseTo(const QPointF& pos) override;
+    bool isWithin(const QRectF& area, selflags_t flags) override;
     /**
        @brief Switch user focus on and off.
 
diff --git a/src/gis/rte/CScrOptRte.cpp b/src/gis/rte/CScrOptRte.cpp
index ec1b170..984dbc8 100644
--- a/src/gis/rte/CScrOptRte.cpp
+++ b/src/gis/rte/CScrOptRte.cpp
@@ -26,10 +26,8 @@
 
 CScrOptRte::CScrOptRte(CGisItemRte *rte, const QPoint& point, IMouse *parent)
     : IScrOpt(parent)
-
+    , key(rte->getKey())
 {
-    key = rte->getKey();
-
     setupUi(this);
     setOrigin(point);
     label->setFont(CMainWindow::self().getMapFont());
diff --git a/src/gis/rte/router/CRouterMapQuest.cpp b/src/gis/rte/router/CRouterMapQuest.cpp
index b1e8760..5859286 100644
--- a/src/gis/rte/router/CRouterMapQuest.cpp
+++ b/src/gis/rte/router/CRouterMapQuest.cpp
@@ -177,7 +177,7 @@ void CRouterMapQuest::addMapQuestLocations(QDomDocument& xml, QDomElement& locat
     SGisLine line;
     rte.getPolylineFromData(line);
 
-    foreach(const IGisLine::point_t &pt, line)
+    for(const IGisLine::point_t &pt : line)
     {
         QDomElement location = xml.createElement("location");
         location.appendChild(xml.createTextNode(QString("%1,%2").arg(pt.coord.y()*RAD_TO_DEG).arg(pt.coord.x()*RAD_TO_DEG)));
diff --git a/src/gis/rte/router/CRouterRoutino.cpp b/src/gis/rte/router/CRouterRoutino.cpp
index 883b027..4687216 100644
--- a/src/gis/rte/router/CRouterRoutino.cpp
+++ b/src/gis/rte/router/CRouterRoutino.cpp
@@ -22,9 +22,9 @@
 #include "gis/rte/CGisItemRte.h"
 #include "gis/rte/router/CRouterRoutino.h"
 #include "gis/rte/router/CRouterRoutinoPathSetup.h"
-#include "helpers/CAppSetup.h"
 #include "helpers/CProgressDialog.h"
 #include "helpers/CSettings.h"
+#include "setup/IAppSetup.h"
 #include <QtWidgets>
 #include <proj_api.h>
 #include <routino.h>
@@ -60,7 +60,7 @@ CRouterRoutino::CRouterRoutino(QWidget *parent)
     comboMode->addItem(tr("Quickest"));
 
     int res = 0;
-    CAppSetup *setup = CAppSetup::getPlattformInstance();
+    IAppSetup *setup = IAppSetup::getPlatformInstance();
     res = Routino_ParseXMLProfiles(setup->routinoPath("profiles.xml").toUtf8());
     if(res)
     {
@@ -216,10 +216,10 @@ void CRouterRoutino::buildDatabaseList()
     QRegExp re("(.*)-segments.mem");
     freeDatabaseList();
 
-    foreach(const QString &path, dbPaths)
+    for(const QString &path : dbPaths)
     {
         QDir dir(path);
-        foreach(const QString &filename, dir.entryList(QStringList("*segments.mem"), QDir::Files|QDir::Readable, QDir::Name))
+        for(const QString &filename : dir.entryList(QStringList("*segments.mem"), QDir::Files|QDir::Readable, QDir::Name))
         {
             QString prefix;
             if(re.exactMatch(filename))
@@ -330,8 +330,8 @@ void CRouterRoutino::calcRoute(const IGisItem::key_t& key)
         rte->getPolylineFromData(line);
 
         int idx = 0;
-        QVector<Routino_Waypoint*> waypoints(line.size(), 0);
-        foreach(const IGisLine::point_t &pt, line)
+        QVector<Routino_Waypoint*> waypoints(line.size(), nullptr);
+        for(const IGisLine::point_t &pt : line)
         {
             waypoints[idx] = Routino_FindWaypoint(data, profile, pt.coord.y()*RAD_TO_DEG, pt.coord.x()*RAD_TO_DEG);
             if(waypoints[idx] == nullptr)
@@ -417,13 +417,13 @@ int CRouterRoutino::calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& c
 
         Routino_Waypoint* waypoints[2] = {0};
         waypoints[0] = Routino_FindWaypoint(data, profile, p1.y()*RAD_TO_DEG, p1.x()*RAD_TO_DEG);
-        if(waypoints[0] == NULL)
+        if(waypoints[0] == nullptr)
         {
             throw xlateRoutinoError(Routino_errno);
         }
 
         waypoints[1] = Routino_FindWaypoint(data, profile, p2.y()*RAD_TO_DEG, p2.x()*RAD_TO_DEG);
-        if(waypoints[1] == NULL)
+        if(waypoints[1] == nullptr)
         {
             throw xlateRoutinoError(Routino_errno);
         }
@@ -434,7 +434,7 @@ int CRouterRoutino::calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& c
 
         delete progress;
 
-        if(route != NULL)
+        if(route != nullptr)
         {
             Routino_Output * next = route;
             while(next)
@@ -461,11 +461,13 @@ int CRouterRoutino::calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& c
     }
     catch(const QString& msg)
     {
+        coords.clear();
+
         if(!msg.isEmpty())
         {
-            QMessageBox::critical(this, "Routino...", msg, QMessageBox::Abort);
+            mutex.unlock();
+            throw msg;
         }
-        coords.clear();
     }
 
     mutex.unlock();
diff --git a/src/gis/rte/router/CRouterRoutinoPathSetup.cpp b/src/gis/rte/router/CRouterRoutinoPathSetup.cpp
index 817cd82..f657f68 100644
--- a/src/gis/rte/router/CRouterRoutinoPathSetup.cpp
+++ b/src/gis/rte/router/CRouterRoutinoPathSetup.cpp
@@ -31,7 +31,7 @@ CRouterRoutinoPathSetup::CRouterRoutinoPathSetup(QStringList &paths)
     connect(toolDelete, &QToolButton::clicked,              this, &CRouterRoutinoPathSetup::slotDelPath);
     connect(listWidget, &QListWidget::itemSelectionChanged, this, &CRouterRoutinoPathSetup::slotItemSelectionChanged);
 
-    foreach(const QString &path, paths)
+    for(const QString &path : paths)
     {
         QListWidgetItem * item = new QListWidgetItem(listWidget);
         item->setText(path);
diff --git a/src/gis/rte/router/IRouterRoutino.ui b/src/gis/rte/router/IRouterRoutino.ui
index 7700ca7..d9a325f 100644
--- a/src/gis/rte/router/IRouterRoutino.ui
+++ b/src/gis/rte/router/IRouterRoutino.ui
@@ -128,7 +128,7 @@
         <item>
          <widget class="QLabel" name="label_4">
           <property name="text">
-           <string>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</string>
+           <string>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</string>
           </property>
           <property name="alignment">
            <set>Qt::AlignJustify|Qt::AlignTop</set>
diff --git a/src/gis/slf/CSlfProject.cpp b/src/gis/slf/CSlfProject.cpp
index 8399218..05b2181 100644
--- a/src/gis/slf/CSlfProject.cpp
+++ b/src/gis/slf/CSlfProject.cpp
@@ -51,7 +51,3 @@ CSlfProject::CSlfProject(const QString &filename, bool readFile)
     setupName(QFileInfo(filename).baseName().replace("_", " "));
 }
 
-CSlfProject::~CSlfProject()
-{
-}
-
diff --git a/src/gis/slf/CSlfProject.h b/src/gis/slf/CSlfProject.h
index fac8fe1..7d69a72 100644
--- a/src/gis/slf/CSlfProject.h
+++ b/src/gis/slf/CSlfProject.h
@@ -26,7 +26,7 @@ class CSlfProject : public IGisProject
     Q_DECLARE_TR_FUNCTIONS(CSlfProject)
 public:
     CSlfProject(const QString &filename, bool readFile = true);
-    virtual ~CSlfProject();
+    virtual ~CSlfProject() = default;
 
     const QString getFileDialogFilter() const override
     {
diff --git a/src/gis/slf/CSlfReader.cpp b/src/gis/slf/CSlfReader.cpp
index 8223610..03c7df9 100644
--- a/src/gis/slf/CSlfReader.cpp
+++ b/src/gis/slf/CSlfReader.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -28,12 +28,23 @@
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 
+// .slf does not know extensions, but we are using them internally.
+// This makes saving as .gpx easy and conforms to the internal way of doing
+// things.
+const QHash<QString, QString> CSlfReader::attrToExt =
+{
+    {"temperature", "gpxtpx:TrackPointExtension|gpxtpx:atemp"},
+    {"heartrate",   "gpxtpx:TrackPointExtension|gpxtpx:hr"   },
+    {"cadence",     "gpxtpx:TrackPointExtension|gpxtpx:cad"  },
+    {"speed",       "speed"}
+};
+
 void CSlfReader::readFile(const QString &file, CSlfProject *proj)
 {
     CSlfReader reader(file, proj);
 }
 
-static QDateTime parseSlfTimestamp(const QString &ts)
+QDateTime CSlfReader::parseTimestamp(const QString &ts)
 {
     int posOfGMT = ts.indexOf("GMT");
     int deltaGMT = 0;
@@ -44,7 +55,13 @@ static QDateTime parseSlfTimestamp(const QString &ts)
     }
 
     QString pts = ts.left(posOfGMT - 1) + ts.mid(posOfGMT + 8);
-    const QDateTime &baseTime = QDateTime::fromString(pts, "ddd MMM d HH:mm:ss yyyy");
+
+    QLocale locale(QLocale::C);
+    const QDateTime &baseTime = locale.toDateTime(pts, "ddd MMM d HH:mm:ss yyyy");
+    if(!baseTime.isValid())
+    {
+        throw tr("Failed to parse timestamp `%1`").arg(ts);
+    }
 
     return baseTime.addSecs( (deltaGMT / 100) * 60 * 60 );
 }
@@ -92,7 +109,7 @@ CSlfReader::CSlfReader(const QString &filename, CSlfProject *proj) : proj(proj)
     // Parse the file's dateCode
     // This is a crucial step, as all the other timestamps are relative to this one
     const QString &dateCode = xmlAct.namedItem("Computer").attributes().namedItem("dateCode").nodeValue();
-    baseTime = parseSlfTimestamp(dateCode);
+    baseTime = parseTimestamp(dateCode);
 
     const QDomNode& xmlGI = xmlAct.namedItem("GeneralInformation");
     if(xmlGI.isElement())
@@ -128,7 +145,7 @@ void CSlfReader::readMarkers(const QDomNode& xml)
     }
 
     offsetsTime.append(0);
-    foreach(const QDomNode &marker, markers)
+    for(const QDomNode &marker : markers)
     {
         const QDomNamedNodeMap& attr = marker.attributes();
 
@@ -169,7 +186,7 @@ void CSlfReader::readMarkers(const QDomNode& xml)
                 }
             }
 
-            qreal ele             = attr.namedItem("altitude"   ).nodeValue().toDouble() / 1000.;
+            qreal ele             = attr.namedItem("altitude").nodeValue().toDouble() / 1000.;
             const QDateTime &time = baseTime.addSecs(attr.namedItem("timeAbsolute").nodeValue().toDouble() / 100.);
             new CGisItemWpt(QPointF(lon, lat), ele, time, name, "", proj);
         }
@@ -179,30 +196,14 @@ void CSlfReader::readMarkers(const QDomNode& xml)
     laps.append(std::numeric_limits<long>::max());
 }
 
-void CSlfReader::readEntries(const QDomNode& xml)
+QSet<QString> CSlfReader::findUsedAttributes(const QDomNodeList &xmlEntrs)
 {
-    const QDomNodeList& xmlEntrs = xml.childNodes();
-
-    // .slf does not know extensions, but we are using them internally.
-    // This makes saving as .gpx easy and conforms to the internal way of doing
-    // things.
-    const QHash<QString, QString> attrToExt =
-    {
-        {"temperature", "gpxtpx:TrackPointExtension|gpxtpx:atemp"},
-        {"heartrate",   "gpxtpx:TrackPointExtension|gpxtpx:hr"   },
-        {"cadence",     "gpxtpx:TrackPointExtension|gpxtpx:cad"  },
-        {"speed",       "speed"}
-    };
-
-    // Iterate over all entries and search for 0-only attributes.
-    // Sigma Data Center seems to store even non-used values (as 0),
-    // but we do not want to include that within our extensions
     QSet<QString> usedAttr;
     for(int i = 0; i < xmlEntrs.count(); i++)
     {
         const QDomNamedNodeMap &attr = xmlEntrs.item(i).attributes();
 
-        foreach(const QString &key, attrToExt.keys())
+        for(const QString &key : attrToExt.keys())
         {
             if(attr.contains(key) && ("0" != attr.namedItem(key).nodeValue()))
             {
@@ -211,6 +212,15 @@ void CSlfReader::readEntries(const QDomNode& xml)
         }
     }
 
+    return usedAttr;
+}
+
+void CSlfReader::readEntries(const QDomNode& xml)
+{
+    const QDomNodeList& xmlEntrs = xml.childNodes();
+
+    QSet<QString> usedAttr = findUsedAttributes(xmlEntrs);
+
     // Now generate the track / segments
     int lap = 0;
 
@@ -239,9 +249,9 @@ void CSlfReader::readEntries(const QDomNode& xml)
 
         trkpt.ele  = attr.namedItem("altitude" ).nodeValue().toDouble() / 1000.;
 
-        foreach(const QString &key, usedAttr)
+        for(const QString &key : usedAttr)
         {
-            if(attr.contains(key))
+            if(attr.contains(key) && attrToExt.contains(key))
             {
                 trkpt.extensions[attrToExt[key]] = attr.namedItem(key).nodeValue().toDouble();
             }
@@ -260,16 +270,7 @@ void CSlfReader::readEntries(const QDomNode& xml)
         seg->pts.append(trkpt);
     }
 
-    // Remove empty segments
-    for(int i = 0; i < trk.segs.count(); i++)
-    {
-        if(trk.segs[i].pts.isEmpty())
-        {
-            trk.segs.remove(i);
-            i--;
-        }
-    }
-
+    trk.name = proj->metadata.name;
     new CGisItemTrk(trk, proj);
     proj->updateItemCounters();
 }
@@ -281,8 +282,3 @@ void CSlfReader::readMetadata(const QDomNode& xml, IGisProject::metadata_t& meta
     metadata.keywords = xml.namedItem("sport"      ).firstChild().nodeValue();
 }
 
-CSlfProject* CSlfReader::getProject()
-{
-    return proj;
-}
-
diff --git a/src/gis/slf/CSlfReader.h b/src/gis/slf/CSlfReader.h
index f1f3c99..91c680e 100644
--- a/src/gis/slf/CSlfReader.h
+++ b/src/gis/slf/CSlfReader.h
@@ -40,12 +40,26 @@ private:
     void readEntries(const QDomNode& xml);
     void readMetadata(const QDomNode& xml, IGisProject::metadata_t& metadata);
 
-    CSlfProject* getProject();
+    /**
+       @brief Search for attributes that are not 0-only.
 
-    CSlfProject   *proj = nullptr; /// the resulting project after construction
-    QDateTime baseTime;            /// the time all entries refer to
-    QList<long>    offsetsTime;    /// an additional offset, required to take breaks into account
-    QList<long>    laps;           /// the distances a new lap starts at (a lap is a .slf segment)
+       Sigma Data Center even stores non-used values (as 0) within the .slf file.
+       As we do not want to include those 0-only values as extensions, we need to
+       search for used attributes first.
+
+       @param xmlEntrs  List of nodes
+       @return  Set of used attributes
+     */
+    QSet<QString> findUsedAttributes(const QDomNodeList &xmlEntrs);
+
+    static QDateTime parseTimestamp(const QString &ts);
+
+    CSlfProject   *proj = nullptr; //< the resulting project after construction
+    QDateTime baseTime;            //< the time all entries refer to
+    QList<long>    offsetsTime;    //< an additional offset, required to take breaks into account
+    QList<long>    laps;           //< the distances a new lap starts at (a lap is a .slf segment)
+
+    static const QHash<QString, QString> attrToExt;
 };
 
 #endif // CSLFREADER_H
diff --git a/src/gis/tnv/CTwoNavProject.cpp b/src/gis/tnv/CTwoNavProject.cpp
index 2ce14d7..158d58d 100644
--- a/src/gis/tnv/CTwoNavProject.cpp
+++ b/src/gis/tnv/CTwoNavProject.cpp
@@ -199,7 +199,7 @@ bool CTwoNavProject::saveWpts(QList<CGisItemWpt*>& wpts, const QString& filename
     qreal west = 180.0;
     qreal east = -180.0;
 
-    foreach(CGisItemWpt * wpt, wpts)
+    for(CGisItemWpt * wpt : wpts)
     {
         QPointF pt = wpt->getPosition();
 
@@ -227,7 +227,7 @@ bool CTwoNavProject::saveWpts(QList<CGisItemWpt*>& wpts, const QString& filename
     out << "U  1" << endl;
     out << "z " << west << ", " << south << ", " << east << ", " << north << endl;
 
-    foreach(CGisItemWpt * wpt, wpts)
+    for(CGisItemWpt * wpt : wpts)
     {
         wpt->saveTwoNav(out, dir);
     }
@@ -244,7 +244,7 @@ bool CTwoNavProject::load(const QString& filename)
     QDir dir(filename);
 
     QStringList entries = dir.entryList(QDir::NoDotAndDotDot|QDir::Dirs|QDir::Files);
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         QFileInfo fi(entry);
 
@@ -255,7 +255,7 @@ bool CTwoNavProject::load(const QString& filename)
         }
     }
 
-    foreach(const QString &entry, entries)
+    for(const QString &entry : entries)
     {
         QFileInfo fi(entry);
 
diff --git a/src/gis/tnv/serialization.cpp b/src/gis/tnv/serialization.cpp
index d77fa5f..c7c665e 100644
--- a/src/gis/tnv/serialization.cpp
+++ b/src/gis/tnv/serialization.cpp
@@ -213,7 +213,7 @@ bool CGisItemTrk::saveTwoNav(const QString &filename)
     }
 
     QDir dir(QFileInfo(filename).absoluteDir());
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
 
     QTextStream out(&file);
     out.setCodec(QTextCodec::codecForName("UTF-8"));
@@ -240,9 +240,9 @@ bool CGisItemTrk::saveTwoNav(const QString &filename)
     out << "y " << getKey().item << endl;
 
 
-    foreach(const CGisItemTrk::trkseg_t& seg, trk.segs)
+    for(const CGisItemTrk::trkseg_t& seg : trk.segs)
     {
-        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+        for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
         {
             list.clear();
 
@@ -289,7 +289,7 @@ bool CGisItemTrk::saveTwoNav(const QString &filename)
                     list << wpt->getName();
                     out << "a " << list.join(",") << endl;
 
-                    foreach(const CGisItemWpt::image_t& img, wpt->getImages())
+                    for(const CGisItemWpt::image_t& img : wpt->getImages())
                     {
                         QString fn = img.info;
                         if(fn.isEmpty())
@@ -516,7 +516,7 @@ void CGisItemWpt::saveTwoNav(QTextStream& out, const QDir& dir)
     }
 
 
-    foreach(const image_t &img, images)
+    for(const image_t &img : images)
     {
         QString fn = img.info;
         if(fn.isEmpty())
@@ -760,7 +760,7 @@ void CGisItemWpt::readTwoNav(const CTwoNavProject::wpt_t &tnvWpt)
     wpt.sym     = tnvWpt.symbol;
     key.item    = tnvWpt.key;
 
-    foreach(const CTwoNavProject::img_t& img, tnvWpt.images)
+    for(const CTwoNavProject::img_t& img : tnvWpt.images)
     {
         CGisItemWpt::image_t image;
         image.fileName  = img.filename;
diff --git a/src/gis/trk/CActivityTrk.cpp b/src/gis/trk/CActivityTrk.cpp
index 1b7df2d..0e7a023 100644
--- a/src/gis/trk/CActivityTrk.cpp
+++ b/src/gis/trk/CActivityTrk.cpp
@@ -23,7 +23,7 @@
 
 CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
 {
-    {
+    { // 0
         "Foot"
         , CGisItemTrk::trkpt_t::eActFoot
         , tr("Foot")
@@ -31,7 +31,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActFoot.png"
         , IGisItem::colorMap[0].color
     },
-    {
+    { // 1
         "Cycle"
         , CGisItemTrk::trkpt_t::eActCycle
         , tr("Bicycle")
@@ -39,7 +39,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActCycle.png"
         , IGisItem::colorMap[1].color
     },
-    {
+    { // 2
         "Bike"
         , CGisItemTrk::trkpt_t::eActBike
         , tr("Motor Bike")
@@ -47,7 +47,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActBike.png"
         , IGisItem::colorMap[2].color
     },
-    {
+    { // 3
         "Car"
         , CGisItemTrk::trkpt_t::eActCar
         , tr("Car")
@@ -55,7 +55,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActCar.png"
         , IGisItem::colorMap[3].color
     },
-    {
+    { // 4
         "Cable"
         , CGisItemTrk::trkpt_t::eActCable
         , tr("Cable Car")
@@ -63,7 +63,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActCable.png"
         , IGisItem::colorMap[4].color
     },
-    {
+    { // 5
         "Swim"
         , CGisItemTrk::trkpt_t::eActSwim
         , tr("Swim")
@@ -71,7 +71,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActSwim.png"
         , IGisItem::colorMap[5].color
     },
-    {
+    { // 6
         "Ship"
         , CGisItemTrk::trkpt_t::eActShip
         , tr("Ship")
@@ -79,7 +79,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActShip.png"
         , IGisItem::colorMap[6].color
     },
-    {
+    { // 7
         "Aeronautik"
         , CGisItemTrk::trkpt_t::eActAero
         , tr("Aeronautik")
@@ -87,7 +87,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActAero.png"
         , IGisItem::colorMap[7].color
     },
-    {
+    { // 8
         "Ski/Winter"
         , CGisItemTrk::trkpt_t::eActSki
         , tr("Ski/Winter")
@@ -95,7 +95,7 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
         , "://icons/16x16/ActSki.png"
         , IGisItem::colorMap[8].color
     },
-    {
+    { // 9
         QString()
         , 0
         , QString()
@@ -161,9 +161,9 @@ void CActivityTrk::update()
     const CGisItemTrk::trkpt_t *    startTrkpt = nullptr;
 
     quint32 lastFlag = 0xFFFFFFFF;
-    foreach(const CGisItemTrk::trkseg_t &seg, data.segs)
+    for(const CGisItemTrk::trkseg_t &seg : data.segs)
     {
-        foreach(const CGisItemTrk::trkpt_t &pt, seg.pts)
+        for(const CGisItemTrk::trkpt_t &pt : seg.pts)
         {
             allFlags |= pt.flags;
 
@@ -476,7 +476,7 @@ void CActivityTrk::sumUp(QVector<activity_summary_t> &summary) const
 const CActivityTrk::activity_summary_t &CActivityTrk::getSummary(const QVector<activity_summary_t>& summary, quint32 flag)
 {
     qint32 cnt = 0;
-    flag >>= 24;
+    flag >>= 32 - CGisItemTrk::trkpt_t::eActMaxNum;
 
     while(((flag & 0x01) == 0) && (cnt < qMin((int)CGisItemTrk::trkpt_t::eActMaxNum,summary.size())))
     {
@@ -491,7 +491,7 @@ const CActivityTrk::activity_summary_t &CActivityTrk::getSummary(const QVector<a
 CActivityTrk::activity_summary_t& CActivityTrk::getSummary(QVector<activity_summary_t> &summary, quint32 flag)
 {
     qint32 cnt = 0;
-    flag >>= 24;
+    flag >>= 32 - CGisItemTrk::trkpt_t::eActMaxNum;
 
     while(((flag & 0x01) == 0) && (cnt < qMin((int)CGisItemTrk::trkpt_t::eActMaxNum,summary.size())))
     {
diff --git a/src/gis/trk/CCombineTrk.cpp b/src/gis/trk/CCombineTrk.cpp
index 3b43bed..9ea318a 100644
--- a/src/gis/trk/CCombineTrk.cpp
+++ b/src/gis/trk/CCombineTrk.cpp
@@ -16,54 +16,31 @@
 
 **********************************************************************************************/
 
-#include "gis/prj/IGisProject.h"
+
+#include "gis/CGisWidget.h"
 #include "gis/trk/CCombineTrk.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "plot/CPlotTrack.h"
 
 #include <QtWidgets>
 
-CCombineTrk::CCombineTrk(CGisItemTrk& trk, const QList<IGisItem::key_t> &keysPreSel, IGisProject& project, QWidget * parent)
+CCombineTrk::CCombineTrk(const QList<IGisItem::key_t> &keys, const QList<IGisItem::key_t> &keysPreSel, QWidget * parent)
     : QDialog(parent)
-    , trk(trk)
-    , project(project)
 {
     setupUi(this);
 
-    const int N = project.childCount();
-    for(int i = 0; i < N; i++)
+    CGisWidget& gis = CGisWidget::self();
+    for(const IGisItem::key_t& key : keys)
     {
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(project.child(i));
-        if(nullptr == trk1)
+        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(gis.getItemByKey(key));
+        if(nullptr == trk)
         {
             continue;
         }
 
-        if(keysPreSel.contains(trk1->getKey()))
-        {
-            continue;
-        }
-
-        const IGisItem::key_t& key = trk1->getKey();
-        QListWidgetItem * item = new QListWidgetItem(listAvailable);
-        item->setText(trk1->getName());
-        item->setIcon(trk1->getIcon());
-        item->setData(Qt::UserRole + 1, key.item);
-        item->setData(Qt::UserRole + 2, key.project);
-        item->setData(Qt::UserRole + 3, key.device);
-    }
-
-    foreach(const IGisItem::key_t& key, keysPreSel)
-    {
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(project.getItemByKey(key));
-        if(nullptr == gisItem)
-        {
-            continue;
-        }
-
-        QListWidgetItem * item = new QListWidgetItem(listSelected);
-        item->setText(gisItem->getName());
-        item->setIcon(gisItem->getIcon());
+        QListWidgetItem * item = new QListWidgetItem(keysPreSel.contains(key) ? listSelected : listAvailable);
+        item->setText(trk->getName());
+        item->setIcon(trk->getIcon());
         item->setData(Qt::UserRole + 1, key.item);
         item->setData(Qt::UserRole + 2, key.project);
         item->setData(Qt::UserRole + 3, key.device);
@@ -76,8 +53,8 @@ CCombineTrk::CCombineTrk(CGisItemTrk& trk, const QList<IGisItem::key_t> &keysPre
     connect(toolUp,        &QToolButton::clicked,              this, &CCombineTrk::slotUp);
     connect(toolDown,      &QToolButton::clicked,              this, &CCombineTrk::slotDown);
 
-    listAvailable->setCurrentItem(0);
-    listSelected->setCurrentItem(0);
+    listAvailable->setCurrentItem(nullptr);
+    listSelected->setCurrentItem(nullptr);
 
     slotSelectionChanged();
     updatePreview();
@@ -89,20 +66,34 @@ CCombineTrk::~CCombineTrk()
 
 void CCombineTrk::accept()
 {
+    CGisWidget& gis = CGisWidget::self();
+
+    // get name of first track in list
+    IGisItem::key_t key;
+    key.item    = listSelected->item(0)->data(Qt::UserRole + 1).toString();
+    key.project = listSelected->item(0)->data(Qt::UserRole + 2).toString();
+    key.device  = listSelected->item(0)->data(Qt::UserRole + 3).toString();
+
+    CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(gis.getItemByKey(key));
+    if(nullptr == trk)
+    {
+        return;
+    }
+
+    QList<IGisItem::key_t> keys;
+    // copy the segments of all tracks to new track
     for(int i = 0; i < listSelected->count(); i++)
     {
         IGisItem::key_t key;
         key.item    = listSelected->item(i)->data(Qt::UserRole + 1).toString();
         key.project = listSelected->item(i)->data(Qt::UserRole + 2).toString();
         key.device  = listSelected->item(i)->data(Qt::UserRole + 3).toString();
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(project.getItemByKey(key));
-        if(nullptr == trk1)
-        {
-            continue;
-        }
+
         keys << key;
     }
 
+    trk->combine(keys);
+
     QDialog::accept();
 }
 
@@ -161,11 +152,6 @@ void CCombineTrk::slotRemove()
     key.project = item->data(Qt::UserRole + 2).toString();
     key.device  = item->data(Qt::UserRole + 3).toString();
 
-    if(key == trk.getKey())
-    {
-        return;
-    }
-
 
     listSelected->takeItem(listSelected->row(item));
     listAvailable->addItem(item);
@@ -213,6 +199,8 @@ void CCombineTrk::slotDown()
 
 void CCombineTrk::updatePreview()
 {
+    CGisWidget& gis = CGisWidget::self();
+
     QPolygonF line;
     for(int i = 0; i < listSelected->count(); i++)
     {
@@ -222,7 +210,7 @@ void CCombineTrk::updatePreview()
         key.device  = listSelected->item(i)->data(Qt::UserRole + 3).toString();
 
 
-        CGisItemTrk *trk1 = dynamic_cast<CGisItemTrk*>(project.getItemByKey(key));
+        CGisItemTrk *trk1 = dynamic_cast<CGisItemTrk*>(gis.getItemByKey(key));
         if(nullptr == trk1)
         {
             continue;
diff --git a/src/gis/trk/CCombineTrk.h b/src/gis/trk/CCombineTrk.h
index 3bff716..a8e8f82 100644
--- a/src/gis/trk/CCombineTrk.h
+++ b/src/gis/trk/CCombineTrk.h
@@ -23,21 +23,14 @@
 #include "ui_ICombineTrk.h"
 #include <QDialog>
 
-class CGisItemTrk;
-class IGisProject;
 
 class CCombineTrk : public QDialog, private Ui::ICombineTrk
 {
     Q_OBJECT
 public:
-    CCombineTrk(CGisItemTrk& trk, const QList<IGisItem::key_t>& keysPreSel, IGisProject &project, QWidget * parent);
+    CCombineTrk(const QList<IGisItem::key_t> &keys, const QList<IGisItem::key_t> &keysPreSel, QWidget * parent);
     virtual ~CCombineTrk();
 
-    const QList<IGisItem::key_t>& getTrackKeys()
-    {
-        return keys;
-    }
-
 public slots:
     void accept() override;
 
@@ -50,10 +43,6 @@ private slots:
 
 private:
     void updatePreview();
-    CGisItemTrk& trk;
-    IGisProject& project;
-
-    QList<IGisItem::key_t> keys;
 };
 
 #endif //CCOMBINETRK_H
diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
index d2d1caf..4554404 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/src/gis/trk/CDetailsTrk.cpp
@@ -265,15 +265,15 @@ void CDetailsTrk::setupGraphLimits(CLimit& limit, QToolButton * toolLimitAutoGra
     auto limitUserFunc = bind(&CDetailsTrk::slotSetLimitModeGraph, this, CLimit::eModeUser, &limit, spinMinGraph, spinMaxGraph, std::placeholders::_1);
     auto limitSysFunc  = bind(&CDetailsTrk::slotSetLimitModeGraph, this, CLimit::eModeSys,  &limit, spinMinGraph, spinMaxGraph, std::placeholders::_1);
 
-    connect(toolLimitAutoGraph, &QToolButton::toggled, limitAutoFunc);
-    connect(toolLimitUsrGraph,  &QToolButton::toggled, limitUserFunc);
-    connect(toolLimitSysGraph,  &QToolButton::toggled, limitSysFunc);
+    connect(toolLimitAutoGraph, &QToolButton::toggled, this, limitAutoFunc);
+    connect(toolLimitUsrGraph,  &QToolButton::toggled, this, limitUserFunc);
+    connect(toolLimitSysGraph,  &QToolButton::toggled, this, limitSysFunc);
 
     connect(spinMinGraph, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), &limit, &CLimit::setMin);
     connect(spinMaxGraph, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), &limit, &CLimit::setMax);
 
     auto limitChangedFunc = bind(&CDetailsTrk::setupLimits, this, &limit, spinMinGraph, spinMaxGraph);
-    connect(&limit, &CLimit::sigChanged, limitChangedFunc);
+    connect(&limit, &CLimit::sigChanged, this, limitChangedFunc);
 }
 
 void CDetailsTrk::setupStyleLimits(CLimit& limit, QToolButton *toolLimitAuto, QToolButton *toolLimitUsr, QToolButton *toolLimitSys, CDoubleSpinBox *spinMin, CDoubleSpinBox *spinMax)
@@ -316,7 +316,7 @@ void CDetailsTrk::setupStyleLimits(CLimit& limit, QToolButton *toolLimitAuto, QT
     connect(spinMin,       &CDoubleSpinBox::editingFinished,    this, &CDetailsTrk::slotColorLimitLowChanged);
 
     auto limitChangedFunc = bind(&CDetailsTrk::setupLimits, this, &limit, spinMin, spinMax);
-    connect(&limit,        &CLimit::sigChanged, limitChangedFunc);
+    connect(&limit,        &CLimit::sigChanged, this, limitChangedFunc);
 }
 
 void CDetailsTrk::loadGraphSource(QComboBox * comboBox, qint32 n, const QString cfgDefault)
@@ -376,9 +376,9 @@ void CDetailsTrk::updateData()
 
     QList<QTreeWidgetItem*> items;
     const CGisItemTrk::trk_t& t = trk.getTrackData();
-    foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+    for(const CGisItemTrk::trkseg_t& seg : t.segs)
     {
-        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+        for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
         {
             QString val, unit;
 
@@ -483,7 +483,7 @@ void CDetailsTrk::updateData()
     plotTrack->setTrack(&trk);
     listHistory->setupHistory(trk);
 
-    QTabWidget * tabWidget = dynamic_cast<QTabWidget*>(parentWidget() ? parentWidget()->parentWidget() : 0);
+    QTabWidget * tabWidget = dynamic_cast<QTabWidget*>(parentWidget() ? parentWidget()->parentWidget() : nullptr);
     if(nullptr != tabWidget)
     {
         int idx = tabWidget->indexOf(this);
@@ -506,7 +506,7 @@ void CDetailsTrk::updateData()
     // the first entry `solid color`, it is always available
     comboColorSource->addItem(QIcon("://icons/32x32/CSrcSolid.png"), tr("Color"));
     comboColorSource->addItem(QIcon("://icons/32x32/Activity.png"), tr("Activity"), "activity");
-    foreach(const QString &key, trk.getExistingDataSources())
+    for(const QString &key : trk.getExistingDataSources())
     {
         const CKnownExtension &ext = CKnownExtension::get(key);
         QIcon icon(ext.icon);
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index 12a43a8..247228a 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -1,4 +1,4 @@
-/**********************************************************************************************
+/**********************************************************************************************
     Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
@@ -21,7 +21,6 @@
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/trk/CCombineTrk.h"
 #include "gis/trk/CCutTrk.h"
 #include "gis/trk/CDetailsTrk.h"
 #include "gis/trk/CGisItemTrk.h"
@@ -33,7 +32,6 @@
 #include "helpers/CDraw.h"
 #include "helpers/CProgressDialog.h"
 #include "helpers/CSettings.h"
-#include "plot/IPlot.h"
 
 #include <QtWidgets>
 #include <QtXml>
@@ -50,13 +48,9 @@ using std::numeric_limits;
 
 struct trkwpt_t
 {
-    trkwpt_t() : x(0), y(0)
-    {
-    }
-
     QString name;
-    qreal x;
-    qreal y;
+    qreal x = 0;
+    qreal y = 0;
     IGisItem::key_t key;
 };
 
@@ -74,10 +68,10 @@ CGisItemTrk::CGisItemTrk(const QString &name, qint32 idx1, qint32 idx2, const tr
 {
     flags = eFlagCreatedInQms;
 
-    foreach(const trkseg_t &srcseg, srctrk.segs)
+    for(const trkseg_t &srcseg : srctrk.segs)
     {
         trkseg_t seg;
-        foreach(const trkpt_t &srcpt, srcseg.pts)
+        for(const trkpt_t &srcpt : srcseg.pts)
         {
             if(srcpt.idxTotal < idx1)
             {
@@ -201,9 +195,8 @@ CGisItemTrk::CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project)
 
 CGisItemTrk::CGisItemTrk(trk_t& trkdata, IGisProject *project)
     : IGisItem(project, eTypeTrk, NOIDX)
+    , trk(std::move(trkdata))
 {
-    trk = std::move(trkdata);
-
     setupHistory();
     deriveSecondaryData();
     updateDecoration(eMarkNone, eMarkNone);
@@ -246,10 +239,16 @@ CGisItemTrk::~CGisItemTrk()
     delete propHandler;
 }
 
+template<typename T>
+static inline bool isInRange(const T &val, const T &rangeStart, const T &rangeEnd)
+{
+    return (rangeStart <= val) && (val <= rangeEnd);
+}
+
 IGisItem * CGisItemTrk::createClone()
 {
     int idx = -1;
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(project)
     {
         idx = project->indexOfChild(this);
@@ -291,16 +290,16 @@ void CGisItemTrk::setDataFromPolyline(const SGisLine &l)
     changed(tr("Changed trackpoints, sacrificed all previous data."), "://icons/48x48/LineMove.png");
 }
 
-void CGisItemTrk::getPolylineFromData(QPolygonF &l)
+void CGisItemTrk::getPolylineFromData(QPolygonF &l) const
 {
     QMutexLocker lock(&mutexItems);
 
     l.clear();
-    foreach (const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
-            if(!(pt.flags & trkpt_t::eHidden))
+            if(!pt.isHidden())
             {
                 l << QPointF(pt.lon * DEG_TO_RAD, pt.lat * DEG_TO_RAD);
             }
@@ -313,11 +312,11 @@ void CGisItemTrk::getPolylineFromData(SGisLine &l)
     QMutexLocker lock(&mutexItems);
 
     l.clear();
-    foreach (const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
-            if(!(pt.flags & trkpt_t::eHidden))
+            if(!pt.isHidden())
             {
                 l << point_t(QPointF(pt.lon*DEG_TO_RAD, pt.lat * DEG_TO_RAD));
             }
@@ -325,6 +324,18 @@ void CGisItemTrk::getPolylineFromData(SGisLine &l)
     }
 }
 
+bool CGisItemTrk::getNameAndProject(QString &name, IGisProject *&project)
+{
+    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name);
+    if(name.isEmpty())
+    {
+        return false;
+    }
+
+    project = CGisWidget::self().selectProject();
+    return nullptr != project;
+}
+
 void CGisItemTrk::readTrackDataFromGisLine(const SGisLine &l)
 {
     QMutexLocker lock(&mutexItems);
@@ -373,21 +384,17 @@ void CGisItemTrk::unregisterVisual(INotifyTrk * visual)
 QString CGisItemTrk::getInfo(bool showName) const
 {
     QString val1, unit1, val2, unit2;
-    QString str = "<div>";
-
-    if(showName)
-    {
-        str += "<b>" + getName() + "</b>";
-    }
 
     if(cntVisiblePoints == 0)
     {
-        return str + "</div>";
+        return showName ? QString("<div><b>%1</b></div>").arg(getName()) : QString("<div></div>");
     }
 
+    QString str = "<div>";
+
     if(showName)
     {
-        str += "<br />";
+        str += "<b>" + getName() + "</b><br />";
     }
 
     IUnit::self().meter2distance(totalDistance, val1, unit1);
@@ -395,54 +402,43 @@ QString CGisItemTrk::getInfo(bool showName) const
 
     if(totalAscend != NOFLOAT && totalDescend != NOFLOAT)
     {
-        IUnit::self().meter2elevation(totalAscend, val1, unit1);
+        IUnit::self().meter2elevation(totalAscend,  val1, unit1);
         IUnit::self().meter2elevation(totalDescend, val2, unit2);
 
         str += tr(", %1%2 %3, %4%5 %6").arg(QChar(0x2197)).arg(val1).arg(unit1).arg(QChar(0x2198)).arg(val2).arg(unit2);
     }
-
+    str += "<br />";
 
     if(totalElapsedSeconds != NOTIME)
     {
         IUnit::self().seconds2time(totalElapsedSeconds, val1, unit1);
-        str += "<br/>\n";
-        str += tr("Time: %1").arg(val1);
-
-        IUnit::self().meter2speed(totalDistance / totalElapsedSeconds, val1, unit1);
-        str += tr(", Speed: %1 %2").arg(val1).arg(unit1);
+        IUnit::self().meter2speed(totalDistance / totalElapsedSeconds, val2, unit2);
+        str += tr("Time: %1, Speed: %2 %3").arg(val1).arg(val2).arg(unit2) + "<br />";
     }
 
     if(totalElapsedSecondsMoving != NOTIME)
     {
         IUnit::self().seconds2time(totalElapsedSecondsMoving, val1, unit1);
-        str += "<br/>\n";
-        str += tr("Moving: %1").arg(val1);
-
-        IUnit::self().meter2speed(totalDistance / totalElapsedSecondsMoving, val1, unit1);
-        str += tr(", Speed: %1 %2").arg(val1).arg(unit1);
+        IUnit::self().meter2speed(totalDistance / totalElapsedSecondsMoving, val2, unit2);
+        str += tr("Moving: %1, Speed: %2 %3").arg(val1).arg(val2).arg(unit2) + "<br />";
     }
 
     if(timeStart.isValid())
     {
-        str += "<br/>\n";
-        str += tr("Start: %1").arg(IUnit::datetime2string(timeStart, false, boundingRect.center()));
+        str += tr("Start: %1").arg(IUnit::datetime2string(timeStart, false, boundingRect.center())) + "<br />";
     }
     if(timeEnd.isValid())
     {
-        str += "<br/>\n";
-        str += tr("End: %1").arg(IUnit::datetime2string(timeEnd, false, boundingRect.center()));
+        str += tr("End: %1").arg(IUnit::datetime2string(timeEnd, false, boundingRect.center())) + "<br />";
     }
 
-    str += "<br/>\n";
     str += tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
-
-    str += "</div>";
-    return str;
+    return str + "</div>";
 }
 
-QString CGisItemTrk::getInfoRange()
+QString CGisItemTrk::getInfoRange() const
 {
-    qreal tmp, d, slope1, slope2;
+    qreal tmp, slope1, slope2;
     QString str, val, unit;
     if(mouseRange1 == nullptr || mouseRange2 == nullptr)
     {
@@ -451,53 +447,38 @@ QString CGisItemTrk::getInfoRange()
 
     int idx1 = mouseRange1->idxTotal;
     int idx2 = mouseRange2->idxTotal;
-    const trkpt_t * pt1, * pt2;
-    if(idx1 < idx2)
-    {
-        pt1 = mouseRange1;
-        pt2 = mouseRange2;
-    }
-    else
+    const trkpt_t *pt1 = mouseRange1;
+    const trkpt_t *pt2 = mouseRange2;
+    if(idx1 >= idx2)
     {
         pt1 = mouseRange2;
         pt2 = mouseRange1;
     }
 
-    while(pt1->flags & trkpt_t::eHidden)
+    for(; pt1->isHidden() && (pt1->idxTotal < cntTotalPoints); ++pt1)
     {
-        if(pt1->idxTotal == (cntTotalPoints - 1))
-        {
-            break;
-        }
-        pt1++;
     }
-
-    while(pt2->flags & trkpt_t::eHidden)
+    for(; pt2->isHidden() && (pt2->idxTotal > 0); --pt2)
     {
-        if(pt2->idxTotal == 0)
-        {
-            break;
-        }
-        pt2--;
     }
 
     bool timeIsValid = pt1->time.isValid() && pt2->time.isValid();
     qreal deltaTime  = pt2->time.toTime_t() - pt1->time.toTime_t();
 
-    d = tmp = pt2->distance - pt1->distance;
+    const qreal distance = pt2->distance - pt1->distance;
 
-    IUnit::self().meter2distance(tmp, val, unit);
+    IUnit::self().meter2distance(distance, val, unit);
     str += QString("%3 %1%2 ").arg(val).arg(unit).arg(QChar(0x21A6));
     if(timeIsValid)
     {
         quint32 t  = pt2->time.toTime_t() - pt1->time.toTime_t();
-        quint32 hh = t / 3600;
-        quint32 mm = (t - hh * 3600) / 60;
-        quint32 ss = (t - hh * 3600 - mm * 60);
+        quint32 hh =  t / 3600;
+        quint32 mm = (t % 3600) / 60;
+        quint32 ss =  t % 60;
 
-        str += QString("%4 %1:%2:%3").arg(hh,2,10,QChar('0')).arg(mm,2,10,QChar('0')).arg(ss,2,10,QChar('0')).arg(QChar(0x231a));
+        str += QString("%4 %1:%2:%3").arg(hh, 2, 10, QChar('0')).arg(mm, 2, 10, QChar('0')).arg(ss, 2, 10, QChar('0')).arg(QChar(0x231a));
 
-        IUnit::self().meter2speed(d/deltaTime, val, unit);
+        IUnit::self().meter2speed(distance/deltaTime, val, unit);
         str += QString(", %3 %1%2").arg(val).arg(unit).arg(QChar(0x21A3));
     }
     str += "\n";
@@ -505,7 +486,7 @@ QString CGisItemTrk::getInfoRange()
     qreal deltaAscend  = pt2->ascend  - pt1->ascend;
     qreal deltaDescend = pt2->descend - pt1->descend;
 
-    tmp    = qAtan(deltaAscend/d);
+    tmp    = qAtan(deltaAscend/distance);
     slope1 = qAbs(tmp * 360.0/(2 * M_PI));
     slope2 = qTan(slope1 * DEG_TO_RAD) * 100;
 
@@ -518,9 +499,9 @@ QString CGisItemTrk::getInfoRange()
     }
     str += "\n";
 
-    tmp       = qAtan(deltaDescend/d);
-    slope1    = qAbs(tmp * 360.0/(2 * M_PI));
-    slope2    = qTan(slope1 * DEG_TO_RAD) * 100;
+    tmp    = qAtan(deltaDescend/distance);
+    slope1 = qAbs(tmp * 360.0/(2 * M_PI));
+    slope2 = qTan(slope1 * DEG_TO_RAD) * 100;
 
     IUnit::self().meter2elevation(deltaDescend, val, unit);
     str += QString("%3 %1%2 (%4%5, %6%)").arg(val).arg(unit).arg(QChar(0x2198)).arg(qRound(slope1)).arg(QChar(0260)).arg(qRound(slope2));
@@ -533,7 +514,7 @@ QString CGisItemTrk::getInfoRange()
     return str + "\n";
 }
 
-QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
+QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt) const
 {
     QString str, val1, unit1;
     if(totalElapsedSeconds != 0)
@@ -563,12 +544,12 @@ QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
         keys = keys.mid(0, 10);
     }
 
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         const CKnownExtension &ext = CKnownExtension::get(key);
         if(ext.known)
         {
-            str += "\n" + ext.name + ": " + QString("%1%2").arg(ext.valueFunc(pt)*ext.factor,0,'f',1).arg(ext.unit);
+            str += "\n" + ext.name + ": " + QString("%1%2").arg(ext.valueFunc(pt)*ext.factor, 0, 'f', 1).arg(ext.unit);
         }
         else
         {
@@ -585,56 +566,45 @@ QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
     return str;
 }
 
-QString CGisItemTrk::getInfoProgress(const trkpt_t& pt)
+QString CGisItemTrk::getInfoProgress(const trkpt_t& pt) const
 {
-    QString str, val, unit;
+    QString val, unit;
+
+    QString asc = tr("Ascend: - (-)");
+    QString dsc = tr("Descend: - (-)");
+    QString dst = tr("Distance: - (-)");
+    QString mov = tr("Moving: - (-)");
+
     if(pt.ascend != NOFLOAT)
     {
         IUnit::self().meter2elevation(pt.ascend, val, unit);
-        str += tr("Ascend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.ascend * 100/totalAscend, 2,'f',0);
-    }
-    else
-    {
-        str += tr("Ascend: - (-)");
+        asc = tr("Ascend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.ascend * 100/totalAscend, 2, 'f', 0);
     }
 
     if(pt.descend != NOFLOAT)
     {
         IUnit::self().meter2elevation(pt.descend, val, unit);
-        str += tr(" Descend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.descend * 100/totalDescend, 2,'f',0);
-    }
-    else
-    {
-        str += tr(" Descend: - (-) ");
+        dsc = tr(" Descend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.descend * 100/totalDescend, 2, 'f', 0);
     }
 
-    str += "\n";
     if(pt.distance != NOFLOAT)
     {
         IUnit::self().meter2distance(pt.distance, val, unit);
-        str += tr("Dist.: %1%2 (%3%)").arg(val).arg(unit).arg(pt.distance * 100/totalDistance, 2,'f',0);
-    }
-    else
-    {
-        str += tr("Dist.: - (-)");
+        dst = tr("Distance: %1%2 (%3%)").arg(val).arg(unit).arg(pt.distance * 100/totalDistance, 2, 'f', 0);
     }
 
     if(pt.elapsedSeconds != NOFLOAT)
     {
         IUnit::self().seconds2time(pt.elapsedSecondsMoving, val, unit);
-        str += tr(" Moving: %1%2 (%3%)").arg(val).arg(unit).arg(pt.elapsedSecondsMoving * 100/totalElapsedSecondsMoving, 2,'f',0);
-    }
-    else
-    {
-        str += tr(" Moving: - (-) ");
+        mov = tr(" Moving: %1%2 (%3%)").arg(val).arg(unit).arg(pt.elapsedSecondsMoving * 100/totalElapsedSecondsMoving, 2, 'f', 0);
     }
 
-    return str;
+    return QString("%1 %2\n%3 %4").arg(asc).arg(dsc).arg(dst).arg(mov);
 }
 
-QString CGisItemTrk::getInfoRange(const trkpt_t& pt1, const trkpt_t& pt2)
+QString CGisItemTrk::getInfoRange(const trkpt_t& pt1, const trkpt_t& pt2) const
 {
-    QString str, val, unit;
+    QString val, unit;
     qreal dt = NOFLOAT;
 
     if(pt1.time.isValid() && pt2.time.isValid())
@@ -642,51 +612,43 @@ QString CGisItemTrk::getInfoRange(const trkpt_t& pt1, const trkpt_t& pt2)
         dt = pt2.time.toTime_t() - pt1.time.toTime_t();
     }
 
+    QString asc = tr("Ascend: -");
+    QString dsc = tr("Descend: -");
+
     if((pt1.ascend != NOFLOAT) && (pt2.ascend != NOFLOAT))
     {
         IUnit::self().meter2elevation(pt2.ascend - pt1.ascend, val, unit);
-        str += tr("Ascend: %1%2").arg(val).arg(unit);
+        asc = tr("Ascend: %1%2").arg(val).arg(unit);
 
         if(dt != NOFLOAT)
         {
             IUnit::self().meter2speed((pt2.ascend - pt1.ascend)/dt, val, unit);
-            str += tr(", %1%2").arg(val).arg(unit);
+            asc += tr(", %1%2").arg(val).arg(unit);
         }
     }
-    else
-    {
-        str += tr("Ascend: -");
-    }
-
 
     if((pt1.descend != NOFLOAT) && (pt2.descend != NOFLOAT))
     {
         IUnit::self().meter2elevation(pt2.descend - pt1.descend, val, unit);
-        str += tr(" Descend: %1%2").arg(val).arg(unit);
+        dsc = tr(" Descend: %1%2").arg(val).arg(unit);
 
         if(dt != NOFLOAT)
         {
             IUnit::self().meter2speed((pt2.descend - pt1.descend)/dt, val, unit);
-            str += tr(", %1%2").arg(val).arg(unit);
+            dsc += tr(", %1%2").arg(val).arg(unit);
         }
     }
-    else
-    {
-        str += tr("Descend: -");
-    }
-
-    str += "\n";
 
     IUnit::self().meter2distance(pt2.distance - pt1.distance, val, unit);
-    str += tr("Dist.: %1%2").arg(val).arg(unit);
+    QString dsttme = tr("Distance: %1%2").arg(val).arg(unit);
 
     if(dt != NOFLOAT)
     {
         IUnit::self().seconds2time(dt, val, unit);
-        str += tr(" Time: %1%2").arg(val).arg(unit);
+        dsttme += tr(" Time: %1%2").arg(val).arg(unit);
     }
 
-    return str;
+    return QString("%1 %2\n%3").arg(asc).arg(dsc).arg(dsttme);
 }
 
 IScrOpt * CGisItemTrk::getScreenOptions(const QPoint& origin, IMouse * mouse)
@@ -698,33 +660,34 @@ IScrOpt * CGisItemTrk::getScreenOptions(const QPoint& origin, IMouse * mouse)
     return scrOpt;
 }
 
-QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
+static qint32 getIdxPointCloseBy(const QPoint &pos, const QPolygonF &line)
 {
-    QMutexLocker lock(&mutexItems);
-
-    qint32 i    = 0;
-    qint32 idx  = NOIDX;
-    qint32 d    = NOINT;
-    foreach(const QPointF &point, lineSimple)
+    qint32 idx     = 0;
+    qint32 bestIdx = NOIDX;
+    qint32 bestDst = NOINT;
+    for(const QPointF &pt : line)
     {
-        int tmp = (screenPos - point).manhattanLength();
-        if(tmp < d)
+        int dst = (pos - pt).manhattanLength();
+        if(dst < bestDst)
         {
-            idx = i;
-            d   = tmp;
+            bestIdx = idx;
+            bestDst = dst;
         }
-        i++;
+        ++idx;
     }
 
-    if(idx < 0)
-    {
-        return NOPOINTF;
-    }
+    return bestIdx;
+}
+
+QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
+{
+    QMutexLocker lock(&mutexItems);
 
-    return lineSimple[idx];
+    qint32 bestIdx = getIdxPointCloseBy(screenPos, lineSimple);
+    return (NOIDX == bestIdx) ? NOPOINTF : lineSimple[bestIdx];
 }
 
-void CGisItemTrk::getSelectedVisiblePoints(qint32& idx1, qint32& idx2)
+void CGisItemTrk::getSelectedVisiblePoints(qint32& idx1, qint32& idx2) const
 {
     if((nullptr == mouseRange1) || (nullptr == mouseRange2))
     {
@@ -761,18 +724,18 @@ void CGisItemTrk::updateExtremaAndExtensions()
     existingExtensions = QSet<QString>();
     QSet<QString> nonRealExtensions;
 
-    foreach(const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
-            if(pt.flags & trkpt_t::eHidden)
+            if(pt.isHidden())
             {
                 continue;
             }
 
             existingExtensions.unite(pt.extensions.keys().toSet());
 
-            foreach(const QString &key, pt.extensions.keys())
+            for(const QString &key : pt.extensions.keys())
             {
                 bool isReal = false;
                 qreal val = pt.extensions.value(key).toReal(&isReal);
@@ -788,9 +751,9 @@ void CGisItemTrk::updateExtremaAndExtensions()
                 }
             }
 
-            updateExtrema(extremaSpeed, pt.speed);
-            updateExtrema(extremaEle,   pt.ele);
-            updateExtrema(extremaSlope, pt.slope1);
+            updateExtrema(extremaSpeed,    pt.speed);
+            updateExtrema(extremaEle,      pt.ele);
+            updateExtrema(extremaSlope,    pt.slope1);
             updateExtrema(extremaProgress, pt.distance);
         }
     }
@@ -826,9 +789,7 @@ void CGisItemTrk::resetInternalData()
 {
     mouseClickFocus = nullptr;
     mouseMoveFocus  = nullptr;
-    mouseRange1     = nullptr;
-    mouseRange2     = nullptr;
-    rangeState      = eRangeStateIdle;
+    resetMouseRange();
 
     delete dlgDetails;
 }
@@ -888,7 +849,7 @@ void CGisItemTrk::deriveSecondaryData()
             trkpt_t& trkpt = seg.pts[p];
 
             trkpt.idxTotal = cntTotalPoints++;
-            if(trkpt.flags & trkpt_t::eHidden)
+            if(trkpt.isHidden())
             {
                 trkpt.reset();
                 continue;
@@ -896,22 +857,10 @@ void CGisItemTrk::deriveSecondaryData()
             trkpt.idxVisible = cntVisiblePoints++;
             lintrk << &trkpt;
 
-            if(trkpt.lon < west)
-            {
-                west    = trkpt.lon;
-            }
-            if(trkpt.lon > east)
-            {
-                east    = trkpt.lon;
-            }
-            if(trkpt.lat < south)
-            {
-                south   = trkpt.lat;
-            }
-            if(trkpt.lat > north)
-            {
-                north   = trkpt.lat;
-            }
+            west  = qMin(west,  trkpt.lon);
+            east  = qMax(east,  trkpt.lon);
+            south = qMin(south, trkpt.lat);
+            north = qMax(north, trkpt.lat);
 
             if(lastTrkpt != nullptr)
             {
@@ -922,13 +871,12 @@ void CGisItemTrk::deriveSecondaryData()
                 // ascend descend
                 if(lastEle != NOFLOAT)
                 {
-                    qreal delta     = trkpt.ele - lastEle;
-                    qreal absDelta  = qAbs(delta);
+                    qreal delta   = trkpt.ele - lastEle;
 
                     trkpt.ascend  = lastTrkpt->ascend;
                     trkpt.descend = lastTrkpt->descend;
 
-                    if(absDelta > ASCEND_THRESHOLD)
+                    if(qAbs(delta) > ASCEND_THRESHOLD)
                     {
                         if(delta > 0)
                         {
@@ -952,9 +900,9 @@ void CGisItemTrk::deriveSecondaryData()
             }
             else
             {
-                timeStart       = trkpt.time;
-                timestampStart  = timeStart.toMSecsSinceEpoch()/1000.0;
-                lastEle         = trkpt.ele;
+                timeStart      = trkpt.time;
+                timestampStart = timeStart.toMSecsSinceEpoch()/1000.0;
+                lastEle        = trkpt.ele;
 
                 trkpt.deltaDistance        = 0;
                 trkpt.distance             = 0;
@@ -1073,7 +1021,7 @@ void CGisItemTrk::deriveSecondaryData()
 
 void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& current)
 {
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(nullptr == project)
     {
         return;
@@ -1095,7 +1043,7 @@ void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& curre
         {
             trkpt_t& pt = seg.pts[n];
             pt.keyWpt.clear();
-            if(pt.flags & CGisItemTrk::trkpt_t::eHidden)
+            if(pt.isHidden())
             {
                 continue;
             }
@@ -1153,12 +1101,12 @@ void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& curre
         pt1.y = qSin(a1 * DEG_TO_RAD) * d;
     }
 
-    foreach(const trkwpt_t &trkwpt, trkwpts)
+    for(const trkwpt_t &trkwpt : trkwpts)
     {
         qreal minD   = WPT_FOCUS_DIST_IN;
         qint32 index = NOIDX;
 
-        foreach(const pointDP &pt, line)
+        for(const pointDP &pt : line)
         {
             current++;
             qreal d = (trkwpt.x - pt.x)*(trkwpt.x - pt.x) + (trkwpt.y - pt.y)*(trkwpt.y - pt.y);
@@ -1208,10 +1156,15 @@ bool CGisItemTrk::isCloseTo(const QPointF& pos)
 {
     QMutexLocker lock(&mutexItems);
 
-    qreal dist = GPS_Math_DistPointPolyline(lineSimple, pos);
-    return dist < 20;
+    return GPS_Math_DistPointPolyline(lineSimple, pos) < 20;
 }
 
+bool CGisItemTrk::isWithin(const QRectF& area, selflags_t flags)
+{
+    return (flags & eSelectionTrk) ? IGisItem::isWithin(area, flags, lineSimple) : false;
+}
+
+
 void CGisItemTrk::gainUserFocus(bool yes)
 {
     keyUserFocus = yes ? key : key_t();
@@ -1230,7 +1183,7 @@ void CGisItemTrk::edit()
 {
     if(dlgDetails.isNull())
     {
-        dlgDetails = new CDetailsTrk(*this, 0);
+        dlgDetails = new CDetailsTrk(*this, nullptr);
         dlgDetails->setObjectName(getName());
     }
 
@@ -1265,39 +1218,27 @@ bool CGisItemTrk::cut()
         // clone first part?
         if((mode & (CCutTrk::eModeKeepBoth|CCutTrk::eModeKeepFirst)) != 0)
         {
-            QString name1 = getName() + QString(" (%1 - %2)").arg(0).arg(idxMouse);
-            name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name1);
-            if(name1.isEmpty())
+            QString name = getName() + QString(" (%1 - %2)").arg(0).arg(idxMouse);
+            IGisProject *project = nullptr;
+            if(!getNameAndProject(name, project))
             {
                 return false;
             }
 
-            IGisProject *project = CGisWidget::self().selectProject();
-            if(nullptr == project)
-            {
-                return false;
-            }
-
-            new CGisItemTrk(name1, 0, idxMouse, trk, project);
+            new CGisItemTrk(name, 0, idxMouse, trk, project);
         }
 
         // clone second part?
         if((mode & (CCutTrk::eModeKeepBoth|CCutTrk::eModeKeepSecond)) != 0)
         {
-            QString name1 = getName() + QString(" (%1 - %2)").arg(idxMouse).arg(cntTotalPoints-1);
-            name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name1);
-            if(name1.isEmpty())
-            {
-                return false;
-            }
-
-            IGisProject *project = CGisWidget::self().selectProject();
-            if(nullptr == project)
+            QString name = getName() + QString(" (%1 - %2)").arg(idxMouse).arg(cntTotalPoints-1);
+            IGisProject *project = nullptr;
+            if(!getNameAndProject(name, project))
             {
                 return false;
             }
 
-            new CGisItemTrk(name1, idxMouse, cntTotalPoints-1, trk, project);
+            new CGisItemTrk(name, idxMouse, cntTotalPoints-1, trk, project);
         }
     }
     else
@@ -1305,55 +1246,44 @@ bool CGisItemTrk::cut()
         // if the result is not a clone, the track's list of segments and trackpoints
         // has to be reduced. This is done by copying points into a new trackpoint list
         // that replaces the original one.
+        int removeStart = ((mode & CCutTrk::eModeKeepFirst) != 0) ? idxMouse + 1   : 0;
+        int removeEnd   = ((mode & CCutTrk::eModeKeepFirst) != 0) ? cntTotalPoints : idxMouse - 1;
 
-        if((mode & CCutTrk::eModeKeepFirst) != 0)
+        for(int i = 0; i < trk.segs.size(); ++i)
         {
-            for(int i = 0; i < trk.segs.size(); i++)
-            {
-                QVector<trkpt_t> pts;
-                trkseg_t& seg = trk.segs[i];
+            trkseg_t& seg = trk.segs[i];
 
-                for(int n = 0; n < seg.pts.size(); n++)
-                {
-                    trkpt_t& pt = seg.pts[n];
-
-                    if(pt.idxTotal > idxMouse)
-                    {
-                        break;
-                    }
-
-                    pts << pt;
-                }
+            if(seg.pts.empty())
+            {
+                continue;
+            }
 
-                seg.pts = pts;
+            if(removeStart <= seg.pts.first().idxTotal && seg.pts.last().idxTotal <= removeEnd)
+            {
+                // remove all points for segments, that are completely in [removeStart; removeEnd]
+                seg.pts.clear();
             }
-            deriveSecondaryData();
-            changed(tr("Permanently removed points %1..%2").arg(idxMouse+1).arg(cntTotalPoints-1), "://icons/48x48/TrkCut.png");
-        }
-        else if((mode & CCutTrk::eModeKeepSecond) != 0)
-        {
-            for(int i = 0; i < trk.segs.size(); i++)
+            else if( isInRange(removeStart, seg.pts.first().idxTotal, seg.pts.last().idxTotal)
+                     || isInRange(removeEnd,   seg.pts.first().idxTotal, seg.pts.last().idxTotal) )
             {
                 QVector<trkpt_t> pts;
-                trkseg_t& seg = trk.segs[i];
 
                 for(int n = 0; n < seg.pts.size(); n++)
                 {
                     trkpt_t& pt = seg.pts[n];
 
-                    if(pt.idxTotal < idxMouse)
+                    if(!(removeStart <= pt.idxTotal && pt.idxTotal <= removeEnd) )
                     {
-                        continue;
+                        pts << pt;
                     }
-
-                    pts << pt;
                 }
 
                 seg.pts = pts;
             }
-            deriveSecondaryData();
-            changed(tr("Permanently removed points %1..%2").arg(0).arg(idxMouse-1), "://icons/48x48/TrkCut.png");
+            // else: keep any segments, that are not in [removeStart; removeEnd]
         }
+        deriveSecondaryData();
+        changed(tr("Permanently removed points %1..%2").arg(removeStart).arg(removeEnd), "://icons/48x48/TrkCut.png");
     }
 
     return askToDeleteOriginal;
@@ -1361,21 +1291,16 @@ bool CGisItemTrk::cut()
 
 void CGisItemTrk::reverse()
 {
-    QString name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
-    if(name1.isEmpty())
-    {
-        return;
-    }
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(nullptr == project)
+    QString name = getName() + "_rev";
+    IGisProject *project = nullptr;
+    if(!getNameAndProject(name, project))
     {
         return;
     }
 
     // start with a 1:1 copy of the first track
     CGisItemTrk * trk1 = new CGisItemTrk(*this, project, NOIDX, false);
-    trk1->trk.name = name1;
+    trk1->trk.name = name;
     /*
         clear track data, item key and history. To clear the history is important as
         the original track's history would restore the original key
@@ -1385,10 +1310,10 @@ void CGisItemTrk::reverse()
     trk1->key.clear();
     trk1->history.events.clear();
 
-    foreach(const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
         trkseg_t seg1;
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
             trkpt_t pt1     = pt;
             pt1.time        = QDateTime();
@@ -1403,31 +1328,16 @@ void CGisItemTrk::reverse()
     trk1->updateDecoration(eMarkChanged, eMarkNone);
 }
 
-void CGisItemTrk::combine(const QList<IGisItem::key_t>& keysPreSel)
+void CGisItemTrk::combine(const QList<IGisItem::key_t>& keys)
 {
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(nullptr == project)
-    {
-        return;
-    }
-
-    CCombineTrk dlg(*this, keysPreSel, *project, CMainWindow::getBestWidgetForParent());
-    dlg.exec();
-
-    QList<IGisItem::key_t> keys = dlg.getTrackKeys();
     if(keys.isEmpty())
     {
         return;
     }
 
-    QString name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, getName() + " & other");
-    if(name1.isEmpty())
-    {
-        return;
-    }
-
-    IGisProject * projectNew = CGisWidget::self().selectProject();
-    if(nullptr == projectNew)
+    QString name = getName() + " & other";
+    IGisProject *projectNew = nullptr;
+    if(!getNameAndProject(name, projectNew))
     {
         return;
     }
@@ -1435,7 +1345,7 @@ void CGisItemTrk::combine(const QList<IGisItem::key_t>& keysPreSel)
     // start with a 1:1 copy of the first track
     CGisItemTrk * trk1 = new CGisItemTrk(*this, projectNew, NOIDX, false);
     // replace name
-    trk1->trk.name = name1;
+    trk1->trk.name = name;
 
     /*
         clear track data, item key and history. To clear the history is important as
@@ -1447,9 +1357,10 @@ void CGisItemTrk::combine(const QList<IGisItem::key_t>& keysPreSel)
     trk1->history.events.clear();
 
     // copy the segments of all tracks to new track
-    foreach(const IGisItem::key_t &key, keys)
+    CGisWidget& gis = CGisWidget::self();
+    for(const IGisItem::key_t &key : keys)
     {
-        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(project->getItemByKey(key));
+        CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(gis.getItemByKey(key));
         if(nullptr == trk2)
         {
             continue;
@@ -1496,45 +1407,43 @@ void CGisItemTrk::hideSelectedPoints()
         idx2++;
     }
 
+    // abort if there is no point between idx1 and idx2
+    if(idx1 + 1 == idx2)
+    {
+        return;
+    }
+
     // special case for a single point
     if(idx1 == idx2)
     {
-        for(int s = 0; s < trk.segs.size(); s++)
-        {
-            trkseg_t& seg = trk.segs[s];
-            for(int i = 0; i < seg.pts.size(); i++)
-            {
-                trkpt_t& trkpt = seg.pts[i];
-
-                if(idx1 == trkpt.idxTotal)
-                {
-                    trkpt.flags |= trkpt_t::eHidden;
-                }
-            }
-        }
+        --idx1;
+        ++idx2;
     }
-    else
+
+    // iterate over all segments and delete points between idx1 and idx2
+    for(int s = 0; s < trk.segs.size(); s++)
     {
-        // iterate over all segments and delete points between idx1 and idx2
-        for(int s = 0; s < trk.segs.size(); s++)
+        trkseg_t& seg = trk.segs[s];
+        for(int i = 0; i < seg.pts.size(); i++)
         {
-            trkseg_t& seg = trk.segs[s];
-            for(int i = 0; i < seg.pts.size(); i++)
-            {
-                trkpt_t& trkpt = seg.pts[i];
+            trkpt_t& trkpt = seg.pts[i];
 
-                if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal < idx2))
-                {
-                    trkpt.flags |= trkpt_t::eHidden;
-                }
+            if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal < idx2))
+            {
+                trkpt.setFlag(trkpt_t::eHidden);
             }
         }
     }
-    mouseRange1 = 0;
-    mouseRange2 = 0;
-    rangeState  = eRangeStateIdle;
+    resetMouseRange();
     deriveSecondaryData();
-    changed(tr("Hide points."), "://icons/48x48/PointHide.png");
+    if(idx1 + 1 == idx2 - 1)
+    {
+        changed(tr("Hide point %1.").arg(idx1 + 1), "://icons/48x48/PointHide.png");
+    }
+    else
+    {
+        changed(tr("Hide points %1..%2.").arg(idx1 + 1).arg(idx2 - 1), "://icons/48x48/PointHide.png");
+    }
 }
 
 void CGisItemTrk::showSelectedPoints()
@@ -1566,18 +1475,17 @@ void CGisItemTrk::showSelectedPoints()
 
             if((idx1 <= trkpt.idxTotal) && (trkpt.idxTotal <= idx2))
             {
-                trkpt.flags &= ~trkpt_t::eHidden;
+                trkpt.unsetFlag(trkpt_t::eHidden);
             }
         }
     }
-    mouseRange1 = 0;
-    mouseRange2 = 0;
-    rangeState  = eRangeStateIdle;
+
+    resetMouseRange();
     deriveSecondaryData();
     changed(tr("Show points."), "://icons/48x48/PointShow.png");
 }
 
-void CGisItemTrk::copySelectedPoints()
+void CGisItemTrk::copySelectedPoints() const
 {
     if((mouseRange1 == nullptr) || (mouseRange2 == nullptr))
     {
@@ -1592,19 +1500,14 @@ void CGisItemTrk::copySelectedPoints()
         qSwap(idx1,idx2);
     }
 
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(nullptr == project)
+    QString name = getName() + QString(" (%1 - %2)").arg(idx1).arg(idx2);
+    IGisProject *project = nullptr;
+    if(!getNameAndProject(name, project))
     {
         return;
     }
 
-    QString name1 = getName() + QString(" (%1 - %2)").arg(idx1).arg(idx2);
-    name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name1);
-    if(name1.isEmpty())
-    {
-        return;
-    }
-    new CGisItemTrk(name1, idx1, idx2, trk, project);
+    new CGisItemTrk(name, idx1, idx2, trk, project);
 }
 
 void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF> &blockedAreas, CGisDraw *gis)
@@ -1634,11 +1537,11 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     if(mode == eModeNormal)
     {
         // in normal mode the trackline without points marked as deleted is drawn
-        foreach (const trkseg_t &seg, trk.segs)
+        for(const trkseg_t &seg : trk.segs)
         {
-            foreach(const trkpt_t &pt, seg.pts)
+            for(const trkpt_t &pt : seg.pts)
             {
-                if(pt.flags & trkpt_t::eHidden)
+                if(pt.isHidden())
                 {
                     continue;
                 }
@@ -1655,9 +1558,9 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
         // in full mode the complete track including points marked as deleted
         // is drawn as gray line first. Then the track without points marked as
         // deleted is drawn with it's configured color
-        foreach (const trkseg_t &seg, trk.segs)
+        for(const trkseg_t &seg : trk.segs)
         {
-            foreach(const trkpt_t &pt, seg.pts)
+            for(const trkpt_t &pt : seg.pts)
             {
                 pt1.setX(pt.lon);
                 pt1.setY(pt.lat);
@@ -1665,7 +1568,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
                 lineFull << pt1;
 
-                if(pt.flags & trkpt_t::eHidden)
+                if(pt.isHidden())
                 {
                     continue;
                 }
@@ -1685,15 +1588,15 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
         p.setPen(QPen(Qt::lightGray, penWidthBg, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
 
-        foreach(const QPolygonF &l, lines)
+        for(const QPolygonF &l : lines)
         {
             p.drawPolyline(l);
         }
 
         QPixmap bullet("://icons/8x8/bullet_dark_gray.png");
-        foreach(const QPolygonF &l, lines)
+        for(const QPolygonF &l : lines)
         {
-            foreach(const QPointF &pt, l)
+            for(const QPointF &pt : l)
             {
                 p.drawPixmap(pt.x() - 3, pt.y() - 3, bullet);
             }
@@ -1708,7 +1611,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     if(key == keyUserFocus)
     {
         p.setPen(QPen(Qt::red, penWidthHi, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-        foreach(const QPolygonF &l, lines)
+        for(const QPolygonF &l : lines)
         {
             p.drawPolyline(l);
         }
@@ -1716,7 +1619,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
     p.setBrush(color);
     p.setPen(penBackground);
-    foreach(const QPolygonF &l, lines)
+    for(const QPolygonF &l : lines)
     {
         p.drawPolyline(l);
         if(showArrows.val().toBool())
@@ -1730,7 +1633,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
         // use the track's ordinary color
         penForeground.setColor(color);
         p.setPen(penForeground);
-        foreach(const QPolygonF &l, lines)
+        for(const QPolygonF &l : lines)
         {
             p.drawPolyline(l);
         }
@@ -1746,37 +1649,30 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     // -------------------------
 }
 
-void CGisItemTrk::setPen(QPainter& p, QPen& pen, quint32 flag)
+void CGisItemTrk::setPen(QPainter& p, QPen& pen, quint32 flag) const
 {
     flag &= trkpt_t::eActMask;
-    if(flag == 0)
-    {
-        pen.setColor(color);
-    }
-    else
-    {
-        pen.setColor(CActivityTrk::getDescriptor(flag).color);
-    }
+    pen.setColor((flag == 0) ? color : CActivityTrk::getDescriptor(flag).color);
     p.setPen(pen);
 }
 
-void CGisItemTrk::drawColorizedByActivity(QPainter& p)
+void CGisItemTrk::drawColorizedByActivity(QPainter& p) const
 {
     QPen pen;
     pen.setWidth(penWidthFg);
     pen.setCapStyle(Qt::RoundCap);
 
-    foreach(const trkseg_t &segment, trk.segs)
+    for(const trkseg_t &segment : trk.segs)
     {
-        const trkpt_t *ptPrev = NULL;
+        const trkpt_t *ptPrev = nullptr;
 
-        foreach(const trkpt_t &pt, segment.pts)
+        for(const trkpt_t &pt : segment.pts)
         {
-            if(pt.flags & trkpt_t::eHidden)
+            if(pt.isHidden())
             {
                 continue;
             }
-            if(NULL == ptPrev)
+            if(nullptr == ptPrev)
             {
                 setPen(p, pen, pt.flags);
                 ptPrev = &pt;
@@ -1794,7 +1690,7 @@ void CGisItemTrk::drawColorizedByActivity(QPainter& p)
     }
 }
 
-void CGisItemTrk::drawColorized(QPainter &p)
+void CGisItemTrk::drawColorized(QPainter &p) const
 {
     auto valueFunc = CKnownExtension::get(getColorizeSource()).valueFunc;
 
@@ -1810,32 +1706,25 @@ void CGisItemTrk::drawColorized(QPainter &p)
 
     const qreal factor = CKnownExtension::get(getColorizeSource()).factor;
 
-    foreach(const trkseg_t &segment, trk.segs)
+    for(const trkseg_t &segment : trk.segs)
     {
-        const trkpt_t *ptPrev = NULL;
+        const trkpt_t *ptPrev = nullptr;
         QColor colorStart;
 
-        foreach(const trkpt_t &pt, segment.pts)
+        for(const trkpt_t &pt : segment.pts)
         {
-            if(pt.flags & trkpt_t::eHidden)
+            if(pt.isHidden())
             {
                 continue;
             }
-            if(NULL == ptPrev)
+            if(nullptr == ptPrev)
             {
                 ptPrev = &pt;
                 continue;
             }
 
             float colorAt = ( factor * valueFunc(pt) - getColorizeLimitLow() ) / (getColorizeLimitHigh() - getColorizeLimitLow());
-            if(colorAt > 1.f)
-            {
-                colorAt = 1.f;
-            }
-            if(colorAt < 0.f)
-            {
-                colorAt = 0.f;
-            }
+            colorAt = qMin(qMax(colorAt, 0.f), 1.f);
 
             const QColor &colorEnd = colors.pixel(0, ((1.f - colorAt) * 255.f));
             if(!colorStart.isValid())
@@ -1905,7 +1794,7 @@ QStringList CGisItemTrk::getExistingDataSources() const
     QStringList known;
     QStringList unknown;
 
-    foreach(const QString &key, existingExtensions)
+    for(const QString &key : existingExtensions)
     {
         if(CKnownExtension::isKnown(key))
         {
@@ -1978,8 +1867,8 @@ void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
         gis->convertRad2Px(anchor);
 
         // create trackpoint info text
-        QString str, val1, unit1, val2, unit2;
-        str = getInfoTrkPt(*mouseMoveFocus);
+        QString val1, unit1, val2, unit2;
+        QString str = getInfoTrkPt(*mouseMoveFocus);
 
         // calculate bounding box of text
         QFont f = CMainWindow::self().getMapFont();
@@ -2069,7 +1958,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
     drawRange(p);
 }
 
-void CGisItemTrk::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF> &blockedAreas, const QFontMetricsF &fm, CGisDraw *gis)
+void CGisItemTrk::drawLabel(QPainter&, const QPolygonF&, QList<QRectF>&, const QFontMetricsF&, CGisDraw*)
 {
     // tracks have no labels
 }
@@ -2083,8 +1972,18 @@ void CGisItemTrk::drawHighlight(QPainter& p)
     {
         return;
     }
+
+
+    // draw the reduced track line
+    QList<QPolygonF> lines;
+    splitLineToViewport(lineSimple, p.viewport(), lines);
+
     p.setPen(QPen(QColor(255,0,0,100), penWidthHi, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-    p.drawPolyline(lineSimple);
+
+    for(const QPolygonF &line : lines)
+    {
+        p.drawPolyline(line);
+    }
 }
 
 void CGisItemTrk::drawRange(QPainter& p)
@@ -2121,14 +2020,12 @@ bool CGisItemTrk::setMode(mode_e m, const QString& owner)
 
     mode            = m;
     // always reset the range statemachine
-    rangeState      = eRangeStateIdle;
-    mouseRange1     = nullptr;
-    mouseRange2     = nullptr;
-    mouseFocusOwner = mode == eModeRange ? owner : "";
+    resetMouseRange();
+    mouseFocusOwner = (mode == eModeRange) ? owner : "";
 
 
     CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-    if(canvas)
+    if(nullptr != canvas)
     {
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
     }
@@ -2179,8 +2076,8 @@ void CGisItemTrk::setActivity(quint32 flag, const QString& name, const QString&
         for(int i = 0; i < seg.pts.size(); i++)
         {
             trkpt_t& trkpt = seg.pts[i];
-            trkpt.flags &= ~trkpt_t::eActMask;
-            trkpt.flags |= flag;
+            trkpt.unsetFlag(trkpt_t::eActMask);
+            trkpt.setFlag((enum CGisItemTrk::trkpt_t::flag_e) flag);
         }
     }
 
@@ -2222,42 +2119,26 @@ void CGisItemTrk::setActivity()
     // special case for a single point
     if(idx1 == idx2)
     {
-        for(int s = 0; s < trk.segs.size(); s++)
-        {
-            trkseg_t& seg = trk.segs[s];
-            for(int i = 0; i < seg.pts.size(); i++)
-            {
-                trkpt_t& trkpt = seg.pts[i];
-
-                if(idx1 == trkpt.idxTotal)
-                {
-                    trkpt.flags &= ~trkpt_t::eActMask;
-                    trkpt.flags |= flag;
-                }
-            }
-        }
+        --idx1;
     }
-    else
+
+    // iterate over all segments and set activity flag for points between idx1 and idx2
+    for(int s = 0; s < trk.segs.size(); s++)
     {
-        // iterate over all segments and delete points between idx1 and idx2
-        for(int s = 0; s < trk.segs.size(); s++)
+        trkseg_t& seg = trk.segs[s];
+        for(int i = 0; i < seg.pts.size(); i++)
         {
-            trkseg_t& seg = trk.segs[s];
-            for(int i = 0; i < seg.pts.size(); i++)
-            {
-                trkpt_t& trkpt = seg.pts[i];
+            trkpt_t& trkpt = seg.pts[i];
 
-                if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal <= idx2))
-                {
-                    trkpt.flags &= ~trkpt_t::eActMask;
-                    trkpt.flags |= flag;
-                }
+            if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal <= idx2))
+            {
+                trkpt.unsetFlag(trkpt_t::eActMask);
+                trkpt.setFlag((enum CGisItemTrk::trkpt_t::flag_e) flag);
             }
         }
     }
-    mouseRange1 = nullptr;
-    mouseRange2 = nullptr;
-    rangeState  = eRangeStateIdle;
+
+    resetMouseRange();
     deriveSecondaryData();
     changed(tr("Changed activity to '%1' for range(%2..%3).").arg(name).arg(idx1).arg(idx2), icon);
 }
@@ -2295,7 +2176,6 @@ void CGisItemTrk::setIcon(const QString& iconColor)
 }
 
 
-
 bool CGisItemTrk::setMouseFocusByDistance(qreal dist, focusmode_e fmode, const QString &owner)
 {
     const trkpt_t * newPointOfFocus = nullptr;
@@ -2306,11 +2186,11 @@ bool CGisItemTrk::setMouseFocusByDistance(qreal dist, focusmode_e fmode, const Q
 
         /// @todo: optimize search by single out segment and then do a binary search
 
-        foreach (const trkseg_t &seg, trk.segs)
+        for(const trkseg_t &seg : trk.segs)
         {
-            foreach(const trkpt_t &pt, seg.pts)
+            for(const trkpt_t &pt : seg.pts)
             {
-                if(pt.flags & trkpt_t::eHidden)
+                if(pt.isHidden())
                 {
                     continue;
                 }
@@ -2342,11 +2222,11 @@ bool CGisItemTrk::setMouseFocusByTime(quint32 time, focusmode_e fmode, const QSt
 
         qreal delta = totalElapsedSeconds;
 
-        foreach (const trkseg_t &seg, trk.segs)
+        for(const trkseg_t &seg : trk.segs)
         {
-            foreach(const trkpt_t &pt, seg.pts)
+            for(const trkpt_t &pt : seg.pts)
             {
-                if(pt.flags & trkpt_t::eHidden)
+                if(pt.isHidden())
                 {
                     continue;
                 }
@@ -2388,19 +2268,7 @@ QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
             getTrkPtByTotalIndex(). Depending on the current mode.
          */
 
-        quint32 i   = 0;
-        qint32 d1   = NOINT;
-        foreach(const QPointF &point, line)
-        {
-            int tmp = (pt - point).manhattanLength();
-            if(tmp < d1)
-            {
-                idx = i;
-                d1  = tmp;
-            }
-            i++;
-        }
-
+        idx = getIdxPointCloseBy(pt, line);
         newPointOfFocus = (mode == eModeRange) ? getTrkPtByTotalIndex(idx) : getTrkPtByVisibleIndex(idx);
     }
     if(!publishMouseFocus(newPointOfFocus, fmode, owner))
@@ -2418,34 +2286,22 @@ QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
 
 bool CGisItemTrk::setMouseFocusByTotalIndex(qint32 idx, focusmode_e fmode, const QString &owner)
 {
-    const trkpt_t * newPointOfFocus = nullptr;
-
-    foreach (const trkseg_t &seg, trk.segs)
+    const trkpt_t *newPointOfFocus = getTrkPtByTotalIndex(idx);
+    if(nullptr != newPointOfFocus)
     {
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            if(pt.idxTotal == idx)
-            {
-                newPointOfFocus = &pt;
-                return publishMouseFocus(newPointOfFocus, fmode, owner);
-            }
-        }
+        return publishMouseFocus(newPointOfFocus, fmode, owner);
     }
+
     return false;
 }
 
-const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByVisibleIndex(qint32 idx)
+const CGisItemTrk::trkpt_t* CGisItemTrk::getTrkPtByCondition(std::function<bool(const trkpt_t&)> cond) const
 {
-    if(idx == NOIDX)
-    {
-        return nullptr;
-    }
-
-    foreach (const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
-            if(pt.idxVisible == idx)
+            if(cond(pt))
             {
                 return &pt;
             }
@@ -2454,45 +2310,38 @@ const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByVisibleIndex(qint32 idx)
     return nullptr;
 }
 
-const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByTotalIndex(qint32 idx)
+const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByVisibleIndex(qint32 idx) const
 {
-    foreach (const trkseg_t &seg, trk.segs)
+    if(idx == NOIDX)
     {
-        foreach(const trkpt_t &pt, seg.pts)
-        {
-            if(pt.idxTotal == idx)
-            {
-                return &pt;
-            }
-        }
+        return nullptr;
     }
-    return nullptr;
+
+    auto condition = [idx](const trkpt_t &pt) { return pt.idxVisible == idx;  };
+    return getTrkPtByCondition(condition);
 }
 
-bool CGisItemTrk::isTrkPtLastVisible(qint32 idxTotal)
+const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByTotalIndex(qint32 idx) const
 {
-    foreach (const trkseg_t &seg, trk.segs)
-    {
-        foreach(const trkpt_t &pt1, seg.pts)
-        {
-            if((pt1.idxTotal > idxTotal) && !(pt1.flags & trkpt_t::eHidden))
-            {
-                return false;
-            }
-        }
-    }
-    return true;
+    auto condition = [idx](const trkpt_t &pt) { return pt.idxTotal == idx;  };
+    return getTrkPtByCondition(condition);
 }
 
-bool CGisItemTrk::isTrkPtFirstVisible(qint32 idxTotal)
+bool CGisItemTrk::isTrkPtLastVisible(qint32 idxTotal) const
 {
-    foreach (const trkseg_t &seg, trk.segs)
+    auto condition = [idxTotal](const trkpt_t &pt) { return (pt.idxTotal > idxTotal) && !pt.isHidden();  };
+    return nullptr == getTrkPtByCondition(condition);
+}
+
+bool CGisItemTrk::isTrkPtFirstVisible(qint32 idxTotal) const
+{
+    for(const trkseg_t &seg : trk.segs)
     {
-        foreach(const trkpt_t &pt1, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
-            if((pt1.idxTotal < idxTotal))
+            if((pt.idxTotal < idxTotal))
             {
-                if(!(pt1.flags & trkpt_t::eHidden))
+                if(!pt.isHidden())
                 {
                     return false;
                 }
@@ -2506,6 +2355,12 @@ bool CGisItemTrk::isTrkPtFirstVisible(qint32 idxTotal)
     return true;
 }
 
+void CGisItemTrk::resetMouseRange()
+{
+    mouseRange1 = nullptr;
+    mouseRange2 = nullptr;
+    rangeState  = eRangeStateIdle;
+}
 
 bool CGisItemTrk::publishMouseFocus(const trkpt_t * pt, focusmode_e fmode, const QString& owner)
 {
@@ -2555,9 +2410,7 @@ void CGisItemTrk::publishMouseFocusRangeMode(const trkpt_t * pt, focusmode_e fmo
     {
         if(fmode == eFocusMouseClick)
         {
-            mouseRange1 = nullptr;
-            mouseRange2 = nullptr;
-            rangeState  = eRangeStateIdle;
+            resetMouseRange();
         }
         break;
     }
@@ -2613,7 +2466,7 @@ void CGisItemTrk::updateVisuals(quint32 visuals, const QString& who)
         dlgDetails->updateData();
     }
 
-    foreach(INotifyTrk * visual, registeredVisuals)
+    for(INotifyTrk * visual : registeredVisuals)
     {
         if(visuals & visual->mask)
         {
@@ -2622,40 +2475,40 @@ void CGisItemTrk::updateVisuals(quint32 visuals, const QString& who)
     }
 }
 
-void CGisItemTrk::setMouseFocusVisuals(const CGisItemTrk::trkpt_t * pt)
+void CGisItemTrk::setMouseFocusVisuals(const trkpt_t * pt)
 {
     if(!dlgDetails.isNull())
     {
         dlgDetails->setMouseFocus(pt);
     }
 
-    foreach(INotifyTrk * visual, registeredVisuals)
+    for(INotifyTrk * visual : registeredVisuals)
     {
         visual->setMouseFocus(pt);
     }
 }
 
-void CGisItemTrk::setMouseRangeFocusVisuals(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2)
+void CGisItemTrk::setMouseRangeFocusVisuals(const trkpt_t * pt1, const trkpt_t * pt2)
 {
     if(!dlgDetails.isNull())
     {
         dlgDetails->setMouseRangeFocus(pt1, pt2);
     }
 
-    foreach(INotifyTrk * visual, registeredVisuals)
+    for(INotifyTrk * visual : registeredVisuals)
     {
         visual->setMouseRangeFocus(pt1, pt2);
     }
 }
 
-void CGisItemTrk::setMouseClickFocusVisuals(const CGisItemTrk::trkpt_t * pt)
+void CGisItemTrk::setMouseClickFocusVisuals(const trkpt_t * pt)
 {
     if(!dlgDetails.isNull())
     {
         dlgDetails->setMouseClickFocus(pt);
     }
 
-    foreach(INotifyTrk * visual, registeredVisuals)
+    for(INotifyTrk * visual : registeredVisuals)
     {
         visual->setMouseClickFocus(pt);
     }
diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
index 41f9e81..b1530ce 100644
--- a/src/gis/trk/CGisItemTrk.h
+++ b/src/gis/trk/CGisItemTrk.h
@@ -25,6 +25,7 @@
 #include "helpers/CLimit.h"
 #include "helpers/CValue.h"
 
+#include <QDebug>
 #include <QPen>
 #include <QPointer>
 #include <functional>
@@ -32,6 +33,7 @@
 class QDomNode;
 class IGisProject;
 class IPlot;
+class INotifyTrk;
 class CDetailsTrk;
 class CScrOptTrk;
 class QSqlDatabase;
@@ -46,10 +48,6 @@ class CFitStream;
 #define TRK_N_COLORS          17
 #define ASCEND_THRESHOLD       5
 
-#include <QDebug>
-
-class INotifyTrk;
-
 class CGisItemTrk : public IGisItem, public IGisLine
 {
     Q_DECLARE_TR_FUNCTIONS(CGisItemTrk)
@@ -80,60 +78,28 @@ public:
         , eVisualAll         = -1
     };
 
-    /**
-       @brief Used to create a new track from a part of an existing track
-       @param name
-       @param idx1
-       @param idx2
-       @param srctrk
-       @param project
-     */
+    /** @brief Used to create a new track from a part of an existing track */
     CGisItemTrk(const QString& name, qint32 idx1, qint32 idx2, const trk_t &srctrk, IGisProject *project);
-    /**
-       @brief Used to create a copy of track with new parent
-       @param parentTrk
-       @param project
-       @param idx
-       @param clone
-     */
+
+    /** @brief Used to create a copy of track with new parent */
     CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject * project, int idx, bool clone);
-    /**
-       @brief Used to restore a track from a line of coordinates
-       @param l
-       @param name
-       @param project
-       @param idx
-     */
+
+    /** @brief Used to restore a track from a line of coordinates */
     CGisItemTrk(const SGisLine &l, const QString &name, IGisProject *project, int idx);
-    /**
-       @brief Used to create track from GPX file
-       @param xml
-       @param project
-     */
+
+    /** @brief Used to create track from GPX file */
     CGisItemTrk(const QDomNode &xml, IGisProject *project);
-    /**
-       @brief Used to restore track from history structure
-       @param hist
-       @param project
-     */
+
+    /** @brief Used to restore track from history structure */
     CGisItemTrk(const history_t& hist, const QString& dbHash, IGisProject * project);
-    /**
-       @brief Used to restore track from database
-       @param id
-       @param db
-       @param project
-     */
+
+    /** @brief Used to restore track from database */
     CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
-    /**
-       @brief Clone QLandkarte GT track
-       @param trk1
-     */
+
+    /** @brief Clone QLandkarte GT track */
     CGisItemTrk(const CQlgtTrack& trk1);
-    /**
-       @brief Load track from file (e.g. TwoNav *trk)
-       @param filename
-       @param project
-     */
+
+    /** @brief Load track from file (e.g. TwoNav *trk) */
     CGisItemTrk(const QString& filename, IGisProject * project);
 
     CGisItemTrk(const IQlgtOverlay& ovl);
@@ -158,9 +124,9 @@ public:
     void updateHistory(quint32 visuals);
 
     /**
-       @brief Update all registered visuals viw the INotifyTrk interface
+       @brief Update all registered visuals via the INotifyTrk interface
        @param a bit field of visuals to be updated
-       @param who a string for debug puposes
+       @param who a string for debug purposes
      */
     void updateVisuals(quint32 visuals, const QString &who);
 
@@ -218,20 +184,20 @@ public:
      */
     QString getInfo(bool showName = true) const override;
     /// get a summary of a selected range
-    QString getInfoRange();
+    QString getInfoRange() const;
     /// get a summary of a selected range defined by two track points
-    QString getInfoRange(const trkpt_t& pt1, const trkpt_t& pt2);
+    QString getInfoRange(const trkpt_t& pt1, const trkpt_t& pt2) const;
     /// get a summary for a track point
-    QString getInfoTrkPt(const trkpt_t& pt);
+    QString getInfoTrkPt(const trkpt_t& pt) const;
     /// get a progress summary for a selected track point
-    QString getInfoProgress(const trkpt_t& pt);
+    QString getInfoProgress(const trkpt_t& pt) const;
 
     quint32 getTotalElapsedSeconds() const
     {
         return totalElapsedSeconds;
     }
 
-    quint32 getTotalElapsedSecondsMoving()
+    quint32 getTotalElapsedSecondsMoving() const
     {
         return totalElapsedSecondsMoving;
     }
@@ -264,7 +230,7 @@ public:
         return trk.links;
     }
     /// get the track as a simple coordinate polyline
-    void getPolylineFromData(QPolygonF &l);
+    void getPolylineFromData(QPolygonF &l) const;
     /// get the track as polyline with elevation, pixel and GIS coordinates.
     void getPolylineFromData(SGisLine& l) override;
 
@@ -288,6 +254,11 @@ public:
         return propHandler;
     }
 
+    const trkpt_t * getMouseMoveFocusPoint() const
+    {
+        return mouseMoveFocus;
+    }
+
 
     /** @defgroup ColorSource Stuff related to coloring tracks using data from different sources
 
@@ -333,9 +304,9 @@ public:
     qreal getMax(const QString& source) const;
 
 private:
-    void drawColorized(QPainter &p);
-    void drawColorizedByActivity(QPainter& p);
-    void setPen(QPainter& p, QPen& pen, quint32 flag);
+    void drawColorized(QPainter &p) const;
+    void drawColorizedByActivity(QPainter& p) const;
+    void setPen(QPainter& p, QPen& pen, quint32 flag) const;
     /**@}*/
 
 
@@ -349,16 +320,16 @@ public:
        @param idx1 a reference to receive the first index
        @param idx2 a reference to receive the second index
      */
-    void getSelectedVisiblePoints(qint32& idx1, qint32& idx2);
+    void getSelectedVisiblePoints(qint32& idx1, qint32& idx2) const;
 
     void setName(const QString& str);
     void setColor(int idx);
     /// set the width of the inner track line by factor
     bool setMode(mode_e m, const QString &owner);
     void setComment(const QString& str)         override;
-    void setDescription(const QString& str)         override;
-    void setLinks(const QList<link_t>& links) override;
-    void setDataFromPolyline(const SGisLine &l)          override;
+    void setDescription(const QString& str)     override;
+    void setLinks(const QList<link_t>& links)   override;
+    void setDataFromPolyline(const SGisLine &l) override;
 
     /**
        @brief display the track screen options
@@ -381,9 +352,11 @@ public:
      */
     bool isCloseTo(const QPointF& pos) override;
 
+    bool isWithin(const QRectF& area, selflags_t flags) override;
+
     void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) override;
     void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis) override;
-    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) override;
+    void drawLabel(QPainter&, const QPolygonF&, QList<QRectF>&, const QFontMetricsF&, CGisDraw*) override;
     void drawHighlight(QPainter& p) override;
     void drawRange(QPainter& p);
 
@@ -429,7 +402,7 @@ public:
        Handle the complete process of selecting tracks, choosing the order and
        the final name with dialogs.
      */
-    void combine(const QList<key_t> &keysPreSel);
+    void combine(const QList<key_t> &keys);
 
     /**
        @brief Set the trkpt_t::eHidden flag
@@ -473,7 +446,7 @@ public:
        including the hidden (trkpt_t::eHidden) ones.
 
      */
-    void copySelectedPoints();
+    void copySelectedPoints() const;
 
     /**
        @brief Check for user focus
@@ -542,89 +515,44 @@ public:
      */
     bool setMouseFocusByTotalIndex(qint32 idx, focusmode_e fmode, const QString& owner);
 
-    /**
-       @brief Reduce the amount of visible track points with the help of the Douglas Peuker algorithm
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+    /** @defgroup Filter All filters implemented by CGisItemTrks.
 
-       @param dist the Douglas Peuker distance in meters
-     */
-    void filterReducePoints(qreal dist);
-
-    /**
-       @brief Remove track points without valid location at the beginning of the track
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-     */
-    void filterRemoveNullPoints();
-    /**
-       @brief filterReset
+        @note All filter implementations are found in src/gis/trk/filter/filter.cpp
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+        @{
      */
-    void filterReset();
     /**
-       @brief filterDelete
+       @brief Reduce the amount of visible track points with the help of the Douglas Peuker algorithm
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+       @param dist the Douglas Peuker distance in meters
      */
-    void filterDelete();
-    /**
-       @brief filterSmoothProfile
+    void filterReducePoints(qreal dist);
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+    /** @brief Remove track points without valid location at the beginning of the track */
+    void filterRemoveNullPoints();
 
-       @param points  size of Median filter
-     */
+    /** @param points  size of Median filter */
     void filterSmoothProfile(int points);
-    /**
-       @brief filterReplaceElevation
-     */
-    void filterReplaceElevation();
-    /**
-       @brief filterOffsetElevation
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param offset elevation offset in meters
-     */
+    /** @param offset elevation offset in meters */
     void filterOffsetElevation(int offset);
-    /**
-       @brief filterNewDate
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param date new date for start of track
-     */
+    /** @param date new date for start of track */
     void filterNewDate(const QDateTime& date);
-    /**
-       @brief filterObscureDate
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param delta intervall to increase timestamps in seconds
-     */
+    /** @param delta interval to increase timestamps in seconds a*/
     void filterObscureDate(int delta);
-    /**
-       @brief filterSpeed
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-
-       @param speed speed in meter per seconds
-     */
+    /** @param speed speed in meter per seconds */
     void filterSpeed(qreal speed);
-    /**
-       @brief filterSplitSegment
 
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-     */
+    void filterReplaceElevation();
+    void filterReset();
+    void filterDelete();
     void filterSplitSegment();
-    /**
-       @brief filterDeleteExtension
-
-       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
-     */
     void filterDeleteExtension(const QString &ext);
+    /** @} */
 
     /**
        @brief Correlate waypoints with the track points
@@ -676,7 +604,7 @@ private:
     void resetInternalData();
 
 
-    /** @defgroup ExtremaExtensions Stuff related to calculation of extremas/extensions
+    /** @defgroup ExtremaExtensions Stuff related to calculation of extrema/extensions
 
         @{
      */
@@ -693,6 +621,10 @@ private:
     QHash<QString, limits_t> extrema;
     void updateExtremaAndExtensions();
 
+    static bool getNameAndProject(QString &name, IGisProject *&project);
+
+    const trkpt_t* getTrkPtByCondition(std::function<bool(const trkpt_t&)> cond) const;
+
     /**
        @brief Try to get access Nth visible point matching the idx
 
@@ -702,7 +634,7 @@ private:
        @param idx The index into all visible points
        @return A null pointer of no point is found.
      */
-    const trkpt_t *getTrkPtByVisibleIndex(qint32 idx);
+    const trkpt_t *getTrkPtByVisibleIndex(qint32 idx) const;
     /**
        @brief Try to get access Nth point
 
@@ -712,21 +644,21 @@ private:
        @param idx The index into all points
        @return A null pointer of no point is found.
      */
-    const trkpt_t *getTrkPtByTotalIndex(qint32 idx);
+    const trkpt_t *getTrkPtByTotalIndex(qint32 idx) const;
 
     /**
        @brief Check if the track point at index it the last one visible
        @param idxTotal  The point's index
        @return True if it is the last one visible
      */
-    bool isTrkPtLastVisible(qint32 idxTotal);
+    bool isTrkPtLastVisible(qint32 idxTotal) const;
 
     /**
        @brief Check if the track point at index it the first one visible
        @param idxTotal  The point's index
        @return True if it is the first one visible
      */
-    bool isTrkPtFirstVisible(qint32 idxTotal);
+    bool isTrkPtFirstVisible(qint32 idxTotal) const;
     /**
        @brief Tell the point of focus to all plots and the detail dialog
 
@@ -737,6 +669,8 @@ private:
     bool publishMouseFocus(const trkpt_t * pt, focusmode_e fmode, const QString &owner);
     void publishMouseFocusNormalMode(const trkpt_t * pt, focusmode_e fmode);
     void publishMouseFocusRangeMode(const trkpt_t * pt, focusmode_e fmode);
+    void resetMouseRange();
+
     /**
        @brief Replace all trackpoints by the coordinates stored in the polyline
 
@@ -746,7 +680,7 @@ private:
      */
     void readTrackDataFromGisLine(const SGisLine &l);
     /**
-       @brief Overide IGisItem::changed() method
+       @brief Override IGisItem::changed() method
 
        As the CDetailsTrk is no modal dialog that blocks the GUI from any other input the track
        can be changed while the widget is visible. Therefore it needs some feedback to update the
@@ -764,9 +698,9 @@ private:
     /// setup track icon by color
     void setIcon(const QString& iconColor);
 
-    void setMouseFocusVisuals(const CGisItemTrk::trkpt_t * pt);
-    void setMouseRangeFocusVisuals(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2);
-    void setMouseClickFocusVisuals(const CGisItemTrk::trkpt_t * pt);
+    void setMouseFocusVisuals(const trkpt_t * pt);
+    void setMouseRangeFocusVisuals(const trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2);
+    void setMouseClickFocusVisuals(const trkpt_t * pt);
 
 public:
     struct trkpt_t : public wpt_t
@@ -809,34 +743,40 @@ public:
             ,eActMaxNum = 9             ///< maximum number of activity flags. this is defined by the mask
         };
 
+        inline bool isHidden() const
+        {
+            return hasFlag(trkpt_t::eHidden);
+        }
+
+        inline bool hasFlag(enum flag_e flag) const
+        {
+            return flags & flag;
+        }
+
+        inline void setFlag(enum flag_e flag)
+        {
+            flags |= flag;
+        }
+
+        inline void unsetFlag(enum flag_e flag)
+        {
+            flags &= ~flag;
+        }
+
         quint32 flags = 0;
-        /// index within the complete track
-        qint32 idxTotal = NOIDX;
-        /// offset into lineSimple
-        qint32 idxVisible;
-
-        /// the distance to the last point
-        qreal deltaDistance;
-        /// the distance from the start of the track
-        qreal distance;
-        /// the ascend from the start of the track
-        qreal ascend;
-        /// the descend from the start of the track
-        qreal descend;
-        /// the slope [°] over several points close by
-        qreal slope1;
-        /// the slope [%] over several points close by
-        qreal slope2;
-        /// the speed over several points close by
-        qreal speed;
-        /// the seconds since the start of the track
-        qreal elapsedSeconds;
-        /// the seconds since the start of the track with moving speed
-        qreal elapsedSecondsMoving;
-        /// the key of an attached waypoint
-        key_t keyWpt;
-        /// track point extensions
-        QHash<QString,QVariant> extensions;
+        qint32 idxTotal = NOIDX;            //< index within the complete track
+        qint32 idxVisible;                  //< offset into lineSimple
+        qreal deltaDistance;                //< the distance to the last point
+        qreal distance;                     //< the distance from the start of the track
+        qreal ascend;                       //< the ascend from the start of the track
+        qreal descend;                      //< the descend from the start of the track
+        qreal slope1;                       //< the slope [°] over several points close by
+        qreal slope2;                       //< the slope [%] over several points close by
+        qreal speed;                        //< the speed over several points close by
+        qreal elapsedSeconds;               //< the seconds since the start of the track
+        qreal elapsedSecondsMoving;         //< the seconds since the start of the track with moving speed
+        key_t keyWpt;                       //< the key of an attached waypoint
+        QHash<QString,QVariant> extensions; //< track point extensions
     };
 
     struct trkseg_t
@@ -944,25 +884,18 @@ private:
         \defgroup DrawUtilies Objects used to draw the track
      */
     /**@{*/
-    /// the track line color by index
-    unsigned colorIdx = 4;
-    /// the track line color
-    QColor color;
-
-    /// the trackpoint bullet icon
-    QPixmap bullet;
-    /// the current track line as screen pixel coordinates
-    QPolygonF lineSimple;
-    /// visible and invisible points
-    QPolygonF lineFull;
-
-
-    /// inner trackline width
-    qint32 penWidthFg = 3;
-    /// outer trackline width
-    qint32 penWidthBg = 5;
-    /// highlighted trackline width
-    qint32 penWidthHi = 11;
+
+    unsigned colorIdx = 4;  //< the track line color by index
+    QColor color;           //< the track line color
+
+    QPixmap bullet;         //< the trackpoint bullet icon
+    QPolygonF lineSimple;   //< the current track line as screen pixel coordinates
+    QPolygonF lineFull;     //< visible and invisible points
+
+    qint32 penWidthFg = 3;  //< inner trackline width
+    qint32 penWidthBg = 5;  //< outer trackline width
+    qint32 penWidthHi = 11; //< highlighted trackline width
+
     /// the pen with the actual track color
     QPen penForeground {Qt::blue, qreal(penWidthFg), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
     /// background (border) color of all tracks
@@ -1037,21 +970,14 @@ private:
      */
     QString mouseFocusOwner;
 
-    /// the current track point selected by mouse movement
-    const trkpt_t * mouseMoveFocus  = nullptr;
-    /// the last track point the user clicked on
-    const trkpt_t * mouseClickFocus = nullptr;
-    /// the first point of a range selection
-    const trkpt_t * mouseRange1     = nullptr;
-    /// the second point of a range selection
-    const trkpt_t * mouseRange2     = nullptr;
+    const trkpt_t *mouseMoveFocus  = nullptr; //< the current track point selected by mouse movement
+    const trkpt_t *mouseClickFocus = nullptr; //< the last track point the user clicked on
+    const trkpt_t *mouseRange1     = nullptr; //< the first point of a range selection
+    const trkpt_t *mouseRange2     = nullptr; //< the second point of a range selection
     /**@}*/
 
-    /// the track's details dialog if any
-    QPointer<CDetailsTrk> dlgDetails;
-
-    /// the track's screen option if visible
-    QPointer<CScrOptTrk>  scrOpt;
+    QPointer<CDetailsTrk> dlgDetails; //< the track's details dialog if any
+    QPointer<CScrOptTrk>  scrOpt;     //< the track's screen option if visible
 
     /// all function concerning track activities have been moved to CActivityTrk
     CActivityTrk activities = {this};
diff --git a/src/gis/trk/CKnownExtension.cpp b/src/gis/trk/CKnownExtension.cpp
index e7dead2..678bf31 100644
--- a/src/gis/trk/CKnownExtension.cpp
+++ b/src/gis/trk/CKnownExtension.cpp
@@ -37,32 +37,32 @@ static fTrkPtGetVal getExtensionValueFunc(const QString ext)
            };
 }
 
-void CKnownExtension::initGarminTPXv1(IUnit &units, const QString &ns)
+void CKnownExtension::initGarminTPXv1(const IUnit &units, const QString &ns)
 {
     // support for the Garmin TrackPointExtension v1
     //  https://www8.garmin.com/xmlschemas/TrackPointExtensionv1.xsd
     knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":atemp",
                            { tr("Air Temperature"), 0, -100., 100., 1., "°C", "://icons/32x32/CSrcATemp.png", true, false,
-                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:atemp")});
+                             getExtensionValueFunc(ns % ":TrackPointExtension|" % ns % ":atemp")});
 
     knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":wtemp",
                            { tr("Water Temperature"), 1, -100., 100., 1., "°C", "://icons/32x32/CSrcWTemp.png", true, false,
-                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:wtemp")});
+                             getExtensionValueFunc(ns % ":TrackPointExtension|" % ns % ":wtemp")});
 
     knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":depth",
                            { tr("Depth"), 2, 0., 12000., units.basefactor, units.baseunit, "://icons/32x32/CSrcDepth.png", true, false,
-                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:depth")});
+                             getExtensionValueFunc(ns % ":TrackPointExtension|" % ns % ":depth")});
 
     knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":hr",
                            { tr("Heart Rate"), 3, 0., 300., 1., "bpm", "://icons/32x32/CSrcHR.png", true, false,
-                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:hr")});
+                             getExtensionValueFunc(ns % ":TrackPointExtension|" % ns % ":hr")});
 
     knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":cad",
                            { tr("Cadence"), 4, 0., 500., 1., "rpm", "://icons/32x32/CSrcCAD.png", true, false,
-                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:cad")});
+                             getExtensionValueFunc(ns % ":TrackPointExtension|" % ns % ":cad")});
 }
 
-void CKnownExtension::initMioTPX(IUnit &units)
+void CKnownExtension::initMioTPX(const IUnit &units)
 {
     // support for extensions used by MIO Cyclo ver. 4.2 (who needs xml namespaces?!)
     knownExtensions.insert("heartrate",
@@ -86,7 +86,7 @@ void CKnownExtension::initMioTPX(IUnit &units)
                              getExtensionValueFunc("course")});
 }
 
-void CKnownExtension::init(IUnit &units)
+void CKnownExtension::init(const IUnit &units)
 {
     knownExtensions =
     {
diff --git a/src/gis/trk/CKnownExtension.h b/src/gis/trk/CKnownExtension.h
index 4b23d6a..906b3e4 100644
--- a/src/gis/trk/CKnownExtension.h
+++ b/src/gis/trk/CKnownExtension.h
@@ -26,7 +26,7 @@ class CKnownExtension
 {
     Q_DECLARE_TR_FUNCTIONS(CKnownExtension)
 public:
-    static void init(IUnit &units);
+    static void init(const IUnit &units);
 
     static const QString internalSlope;
     static const QString internalSpeed;
@@ -61,8 +61,8 @@ private:
     {
     }
 
-    static void initGarminTPXv1(IUnit &units, const QString &ns);
-    static void initMioTPX(IUnit &units);
+    static void initGarminTPXv1(const IUnit &units, const QString &ns);
+    static void initMioTPX(const IUnit &units);
 };
 
 #endif // CKNOWNEXTENSION_H
diff --git a/src/gis/trk/CPropertyTrk.cpp b/src/gis/trk/CPropertyTrk.cpp
index 2d0b7a8..cd34497 100644
--- a/src/gis/trk/CPropertyTrk.cpp
+++ b/src/gis/trk/CPropertyTrk.cpp
@@ -38,19 +38,18 @@ void CPropertyTrk::setupData()
     {
         QString()
         , QString()
-        , QString()
         , QIcon()
-        , CPlotData::eAxisLinear
+        , property_t::eAxisDistance
+        , nullptr
         , QString()
         , QString()
-        , 1.0
-        , nullptr
+        , 1.0        
         , nullptr
     };
     properties << propNull;
 
     QStringList keys = trk.getExistingDataSources();
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         const CKnownExtension &ext = CKnownExtension::get(key);
         QString name = (ext.known ? ext.name : key);
@@ -59,13 +58,12 @@ void CPropertyTrk::setupData()
         {
             key
             , name
-            , ext.unit
             , QIcon(ext.icon)
-            , CPlotData::eAxisLinear
-            , tr("distance [%1]").arg(IUnit::self().baseunit)
-            , ext.known ? QString("%1 [%2]").arg(name).arg(ext.unit) : name
-            , ext.factor
+            , property_t::eAxisDistance
             , [](const CGisItemTrk::trkpt_t &p) {return p.distance; }
+            , ext.unit                        
+            , ext.known ? QString("%1 [%2]").arg(name).arg(ext.unit) : name
+            , ext.factor            
             , ext.valueFunc
         };
 
@@ -73,8 +71,7 @@ void CPropertyTrk::setupData()
         if(key == CKnownExtension::internalProgress)
         {
             property.min        = 0;
-            property.axisType   = CPlotData::eAxisTime;
-            property.xLabel     = tr("time");
+            property.axisType   = property_t::eAxisTime;
             property.getX       = [](const CGisItemTrk::trkpt_t &p) {return p.time.isValid() ? p.time.toTime_t() : NOFLOAT; };
         }
 
@@ -89,7 +86,7 @@ void CPropertyTrk::setupData()
 
 const CPropertyTrk::property_t& CPropertyTrk::propBySource(const QString& source) const
 {
-    foreach(const property_t &prop, properties)
+    for(const property_t &prop : properties)
     {
         if(prop.key == source)
         {
@@ -104,7 +101,7 @@ void CPropertyTrk::fillComboBox(QComboBox * box) const
 {
     box->clear();
 
-    foreach(const property_t &p, properties)
+    for(const property_t &p : properties)
     {
         if(p.key == CKnownExtension::internalEle)
         {
@@ -120,10 +117,10 @@ void CPropertyTrk::setupPlot(CPlot * plot, const QString& source) const
     const property_t& p = propBySource(source);
     if(p.name.isEmpty())
     {
+        plot->clear();
         return;
     }
 
-    plot->setup(p.key, p.axisType, p.xLabel, p.yLabel, p.factor, p.getX, p.getY);
-    return;
+    plot->setup(p);
 }
 
diff --git a/src/gis/trk/CPropertyTrk.h b/src/gis/trk/CPropertyTrk.h
index 811e1c9..ac28d87 100644
--- a/src/gis/trk/CPropertyTrk.h
+++ b/src/gis/trk/CPropertyTrk.h
@@ -36,33 +36,58 @@ public:
 
     struct property_t
     {
+        enum axistype_e
+        {
+            eAxisDistance
+            ,eAxisTime
+        };
+
         property_t() = default;
-        property_t(const QString& key, const QString& name, const QString& unit, const QIcon& icon, CPlotData::axistype_e axisType, const QString& xLabel, const QString& yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY)
+        property_t(const QString& key,
+                   const QString& name,
+                   const QIcon& icon,
+                   axistype_e axisType,
+                   fTrkPtGetVal getX,
+                   const QString& unit,
+                   const QString& yLabel,
+                   qreal factor,
+                   fTrkPtGetVal getY)
             : key(key)
-            , name(name)
-            , unit(unit)
-            , icon(icon)
+            , name(name)            
+            , icon(icon)           
             , axisType(axisType)
-            , xLabel(xLabel)
-            , yLabel(yLabel)
-            , factor(factor)
             , getX(getX)
+            , unit(unit)
+            , yLabel(yLabel)
+            , factor(factor)            
             , getY(getY)
         {
         }
 
+        // key/extension source of the property
         QString key;
-        QString name;
-        QString unit;
+        // name of the property
+        QString name;        
+        // symbol representing the property
         QIcon icon;
-        CPlotData::axistype_e axisType = CPlotData::eAxisLinear;
-        QString xLabel;
+
+        // the x-axis type to be used in plots
+        axistype_e axisType = eAxisDistance;
+        // access function to the x-values
+        fTrkPtGetVal getX = nullptr;
+
+        // the unit of the y-axis
+        QString unit;
+        // the y-axis label
         QString yLabel;
-        qreal min = NOFLOAT;
-        qreal max = NOFLOAT;
+        // a scaling factor for the y-values (e.g. m/h -> km/h)
         qreal factor = 1.0;
-        fTrkPtGetVal getX = nullptr;
+        // access function to the y-values
         fTrkPtGetVal getY = nullptr;
+        // lower limit of the y-axis
+        qreal min = NOFLOAT;
+        // upper limit of the y-axis
+        qreal max = NOFLOAT;
     };
 
     void fillComboBox(QComboBox * box) const;
diff --git a/src/gis/trk/CScrOptTrk.cpp b/src/gis/trk/CScrOptTrk.cpp
index c757375..7e8d566 100644
--- a/src/gis/trk/CScrOptTrk.cpp
+++ b/src/gis/trk/CScrOptTrk.cpp
@@ -18,6 +18,7 @@
 
 #include "CMainWindow.h"
 #include "gis/CGisWidget.h"
+#include "gis/prj/IGisProject.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/trk/CScrOptTrk.h"
 #include "helpers/CDraw.h"
@@ -25,9 +26,8 @@
 
 CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
     : IScrOpt(parent)
+    , key(trk->getKey())
 {
-    key         = trk->getKey();
-
     setupUi(this);
     setOrigin(point);
     label->setFont(CMainWindow::self().getMapFont());
@@ -42,6 +42,12 @@ CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
     toolReverse->setDisabled(isOnDevice);
     toolRange->setDisabled(isOnDevice);
 
+    IGisProject * project = trk->getParentProject();
+    if(project != nullptr)
+    {
+        toolCombine->setEnabled(project->getItemCountByType(IGisItem::eTypeTrk) > 1);
+    }
+
     anchor = trk->getPointCloseBy(point);
     if((anchor - point).manhattanLength() > 50)
     {
diff --git a/src/gis/trk/filter/CFilterDelete.cpp b/src/gis/trk/filter/CFilterDelete.cpp
index 11bb4ef..49a995f 100644
--- a/src/gis/trk/filter/CFilterDelete.cpp
+++ b/src/gis/trk/filter/CFilterDelete.cpp
@@ -29,10 +29,6 @@ CFilterDelete::CFilterDelete(CGisItemTrk &trk, QWidget *parent)
     connect(toolApply, &QToolButton::clicked, this, &CFilterDelete::slotApply);
 }
 
-CFilterDelete::~CFilterDelete()
-{
-}
-
 void CFilterDelete::slotApply()
 {
     CCanvas::setOverrideCursor(Qt::WaitCursor,"CFilterDelete");
diff --git a/src/gis/trk/filter/CFilterDelete.h b/src/gis/trk/filter/CFilterDelete.h
index 4904a1f..91055e5 100644
--- a/src/gis/trk/filter/CFilterDelete.h
+++ b/src/gis/trk/filter/CFilterDelete.h
@@ -29,7 +29,7 @@ class CFilterDelete : public QWidget, private Ui::IFilterDelete
     Q_OBJECT
 public:
     CFilterDelete(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterDelete();
+    virtual ~CFilterDelete() = default;
 
 private slots:
     void slotApply();
diff --git a/src/gis/trk/filter/CFilterDeleteExtension.cpp b/src/gis/trk/filter/CFilterDeleteExtension.cpp
index 5cd60f0..c87a46a 100644
--- a/src/gis/trk/filter/CFilterDeleteExtension.cpp
+++ b/src/gis/trk/filter/CFilterDeleteExtension.cpp
@@ -34,15 +34,11 @@ CFilterDeleteExtension::CFilterDeleteExtension(CGisItemTrk &trk, QWidget *parent
     connect(toolApply, &QToolButton::clicked, this, &CFilterDeleteExtension::slotApply);
 }
 
-CFilterDeleteExtension::~CFilterDeleteExtension()
-{
-}
-
 void CFilterDeleteExtension::update()
 {
     comboExtensions->clear();
 
-    foreach(const QString &key, trk.getExistingDataSources())
+    for(const QString &key : trk.getExistingDataSources())
     {
         const CKnownExtension &ext = CKnownExtension::get(key);
         if(!ext.derivedQMS)
diff --git a/src/gis/trk/filter/CFilterDeleteExtension.h b/src/gis/trk/filter/CFilterDeleteExtension.h
index b743c01..fda4573 100644
--- a/src/gis/trk/filter/CFilterDeleteExtension.h
+++ b/src/gis/trk/filter/CFilterDeleteExtension.h
@@ -29,7 +29,7 @@ class CFilterDeleteExtension : public QWidget, private Ui::IFilterDeleteExtensio
     Q_OBJECT
 public:
     CFilterDeleteExtension(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterDeleteExtension();
+    virtual ~CFilterDeleteExtension() = default;
 
     void update();
 
diff --git a/src/gis/trk/filter/CFilterInvalid.cpp b/src/gis/trk/filter/CFilterInvalid.cpp
index 25db9db..92b8d97 100644
--- a/src/gis/trk/filter/CFilterInvalid.cpp
+++ b/src/gis/trk/filter/CFilterInvalid.cpp
@@ -30,10 +30,6 @@ CFilterInvalid::CFilterInvalid(CGisItemTrk &trk, QWidget *parent)
     connect(toolApply, &QToolButton::clicked, this, &CFilterInvalid::slotApply);
 }
 
-CFilterInvalid::~CFilterInvalid()
-{
-}
-
 void CFilterInvalid::slotApply()
 {
     CCanvas::setOverrideCursor(Qt::WaitCursor, "CFilterInvalid");
diff --git a/src/gis/trk/filter/CFilterInvalid.h b/src/gis/trk/filter/CFilterInvalid.h
index 4449d1d..31299c9 100644
--- a/src/gis/trk/filter/CFilterInvalid.h
+++ b/src/gis/trk/filter/CFilterInvalid.h
@@ -29,7 +29,7 @@ class CFilterInvalid : public QWidget, private Ui::IFilterInvalid
     Q_OBJECT
 public:
     CFilterInvalid(CGisItemTrk& trk, QWidget *parent);
-    virtual ~CFilterInvalid();
+    virtual ~CFilterInvalid() = default;
 
 private slots:
     void slotApply();
diff --git a/src/gis/trk/filter/CFilterNewDate.cpp b/src/gis/trk/filter/CFilterNewDate.cpp
index a562544..93d1c8b 100644
--- a/src/gis/trk/filter/CFilterNewDate.cpp
+++ b/src/gis/trk/filter/CFilterNewDate.cpp
@@ -32,11 +32,6 @@ CFilterNewDate::CFilterNewDate(CGisItemTrk &trk, QWidget *parent)
     connect(toolApply, &QToolButton::clicked, this, &CFilterNewDate::slotApply);
 }
 
-CFilterNewDate::~CFilterNewDate()
-{
-}
-
-
 void CFilterNewDate::slotApply()
 {
     CCanvas::setOverrideCursor(Qt::WaitCursor,"CFilterNewDate");
diff --git a/src/gis/trk/filter/CFilterNewDate.h b/src/gis/trk/filter/CFilterNewDate.h
index e7b4c96..0467e09 100644
--- a/src/gis/trk/filter/CFilterNewDate.h
+++ b/src/gis/trk/filter/CFilterNewDate.h
@@ -29,7 +29,7 @@ class CFilterNewDate : public QWidget, private Ui::IFilterNewDate
     Q_OBJECT
 public:
     CFilterNewDate(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterNewDate();
+    virtual ~CFilterNewDate() = default;
 
 private slots:
     void slotApply();
diff --git a/src/gis/trk/filter/CFilterReplaceElevation.cpp b/src/gis/trk/filter/CFilterReplaceElevation.cpp
index 7fb79b1..99842c1 100644
--- a/src/gis/trk/filter/CFilterReplaceElevation.cpp
+++ b/src/gis/trk/filter/CFilterReplaceElevation.cpp
@@ -29,10 +29,6 @@ CFilterReplaceElevation::CFilterReplaceElevation(CGisItemTrk &trk, QWidget *pare
     connect(toolApply, &QToolButton::clicked, this, &CFilterReplaceElevation::slotApply);
 }
 
-CFilterReplaceElevation::~CFilterReplaceElevation()
-{
-}
-
 void CFilterReplaceElevation::slotApply()
 {
     CCanvas::setOverrideCursor(Qt::WaitCursor,"CFilterMedian");
diff --git a/src/gis/trk/filter/CFilterReplaceElevation.h b/src/gis/trk/filter/CFilterReplaceElevation.h
index 55e1435..5b179ea 100644
--- a/src/gis/trk/filter/CFilterReplaceElevation.h
+++ b/src/gis/trk/filter/CFilterReplaceElevation.h
@@ -29,7 +29,7 @@ class CFilterReplaceElevation : public QWidget, private Ui::IFilterReplaceElevat
     Q_OBJECT
 public:
     CFilterReplaceElevation(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterReplaceElevation();
+    virtual ~CFilterReplaceElevation() = default;
 
 private slots:
     void slotApply();
diff --git a/src/gis/trk/filter/CFilterReset.cpp b/src/gis/trk/filter/CFilterReset.cpp
index 8aa4e30..a260427 100644
--- a/src/gis/trk/filter/CFilterReset.cpp
+++ b/src/gis/trk/filter/CFilterReset.cpp
@@ -30,10 +30,6 @@ CFilterReset::CFilterReset(CGisItemTrk &trk, QWidget *parent)
     connect(toolApply, &QToolButton::clicked, this, &CFilterReset::slotApply);
 }
 
-CFilterReset::~CFilterReset()
-{
-}
-
 void CFilterReset::slotApply()
 {
     CCanvas::setOverrideCursor(Qt::WaitCursor,"CFilterReset");
diff --git a/src/gis/trk/filter/CFilterReset.h b/src/gis/trk/filter/CFilterReset.h
index 72bb1c3..3b47dfa 100644
--- a/src/gis/trk/filter/CFilterReset.h
+++ b/src/gis/trk/filter/CFilterReset.h
@@ -29,7 +29,7 @@ class CFilterReset : public QWidget, private Ui::IFilterReset
     Q_OBJECT
 public:
     CFilterReset(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterReset();
+    virtual ~CFilterReset() = default;
 
 private slots:
     void slotApply();
diff --git a/src/gis/trk/filter/CFilterSplitSegment.cpp b/src/gis/trk/filter/CFilterSplitSegment.cpp
index bb403c8..97e17fa 100644
--- a/src/gis/trk/filter/CFilterSplitSegment.cpp
+++ b/src/gis/trk/filter/CFilterSplitSegment.cpp
@@ -30,10 +30,6 @@ CFilterSplitSegment::CFilterSplitSegment(CGisItemTrk &trk, QWidget *parent)
     connect(toolApply, &QToolButton::clicked, this, &CFilterSplitSegment::slotApply);
 }
 
-CFilterSplitSegment::~CFilterSplitSegment()
-{
-}
-
 void CFilterSplitSegment::slotApply()
 {
     CCanvas::setOverrideCursor(Qt::WaitCursor, "CFilterSplitSegment");
diff --git a/src/gis/trk/filter/CFilterSplitSegment.h b/src/gis/trk/filter/CFilterSplitSegment.h
index f15acf6..52cb46f 100644
--- a/src/gis/trk/filter/CFilterSplitSegment.h
+++ b/src/gis/trk/filter/CFilterSplitSegment.h
@@ -30,7 +30,7 @@ class CFilterSplitSegment : public QWidget, private Ui::IFilterSplitSegment
     Q_OBJECT
 public:
     CFilterSplitSegment(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterSplitSegment();
+    virtual ~CFilterSplitSegment() = default;
 
 private slots:
     void slotApply();
diff --git a/src/gis/trk/filter/filter.cpp b/src/gis/trk/filter/filter.cpp
index d4f5eb9..4f96e1f 100644
--- a/src/gis/trk/filter/filter.cpp
+++ b/src/gis/trk/filter/filter.cpp
@@ -31,9 +31,9 @@ void CGisItemTrk::filterReducePoints(qreal dist)
     QVector<pointDP> line;
     bool nothingDone = true;
 
-    foreach (const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
-        foreach(const trkpt_t &pt, seg.pts)
+        for(const trkpt_t &pt : seg.pts)
         {
             pointDP dp;
             dp.x = pt.lon * DEG_TO_RAD;
@@ -405,7 +405,7 @@ void CGisItemTrk::filterSplitSegment()
     }
 
     int part = 0;
-    foreach(const trkseg_t &seg, trk.segs)
+    for(const trkseg_t &seg : trk.segs)
     {
         if(0 < seg.pts.count())
         {
diff --git a/src/gis/wpt/CDetailsGeoCache.cpp b/src/gis/wpt/CDetailsGeoCache.cpp
index 9a46c30..bafce6b 100644
--- a/src/gis/wpt/CDetailsGeoCache.cpp
+++ b/src/gis/wpt/CDetailsGeoCache.cpp
@@ -167,15 +167,16 @@ void CDetailsGeoCache::slotRequestFinished(QNetworkReply * reply)
         return;
     }
 
-    //qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
-    //qDebug() << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
-    //qDebug() << reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
+    qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+    qDebug() << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute);
+    qDebug() << reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
 
+    qint32 httpStatusCodeAttribute = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
     if(reply->property("whatfor") == "image")
     {
         QString info = reply->property("info").toString();
 
-        if(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301)
+        if((httpStatusCodeAttribute == 301) || (httpStatusCodeAttribute == 302))
         {
             QNetworkRequest request;
             request.setUrl(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
@@ -202,7 +203,7 @@ void CDetailsGeoCache::slotRequestFinished(QNetworkReply * reply)
     }
     else
     {
-        if(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 301)
+        if((httpStatusCodeAttribute == 301) || (httpStatusCodeAttribute == 302))
         {
             QNetworkRequest request;
             request.setUrl(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
@@ -225,7 +226,7 @@ void CDetailsGeoCache::slotRequestFinished(QNetworkReply * reply)
 
     bool watchOut       = false;
     QStringList lines   = asw.split("\n");
-    foreach(const QString &line, lines)
+    for(const QString &line : lines)
     {
         if(!watchOut && re1.exactMatch(line))
         {
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index 51003b0..f58a974 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -180,7 +180,7 @@ CGisItemWpt::~CGisItemWpt()
 IGisItem * CGisItemWpt::createClone()
 {
     int idx = -1;
-    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    IGisProject * project = getParentProject();
     if(project)
     {
         idx = project->indexOfChild(this);
@@ -429,6 +429,12 @@ bool CGisItemWpt::isCloseTo(const QPointF& pos)
     return (pos - posScreen).manhattanLength() < 22;
 }
 
+bool CGisItemWpt::isWithin(const QRectF& area, selflags_t flags)
+{
+    return (flags & eSelectionWpt) ? area.contains(posScreen) : false;
+}
+
+
 void CGisItemWpt::gainUserFocus(bool yes)
 {
     keyUserFocus = yes ? key : key_t();
@@ -672,7 +678,7 @@ void CGisItemWpt::removeLinksByType(const QString& type)
             continue;
         }
 
-        link++;
+        ++link;
     }
 }
 
diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
index a5c7737..6fb8dcf 100644
--- a/src/gis/wpt/CGisItemWpt.h
+++ b/src/gis/wpt/CGisItemWpt.h
@@ -274,6 +274,7 @@ public:
     void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) override;
     void drawHighlight(QPainter& p) override;
     bool isCloseTo(const QPointF& pos) override;
+    bool isWithin(const QRectF &area, selflags_t flags) override;
     void mouseMove(const QPointF& pos) override;
     void mousePress(const QPointF& pos);
     void mouseRelease(const QPointF& pos);
diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
index 1206de2..28a4f1a 100644
--- a/src/gis/wpt/CScrOptWpt.cpp
+++ b/src/gis/wpt/CScrOptWpt.cpp
@@ -30,9 +30,8 @@
 
 CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     : IScrOpt(parent)
+    , key(wpt->getKey())
 {
-    key = wpt->getKey();
-
     setupUi(this);
     setOrigin(point);
     label->setFont(CMainWindow::self().getMapFont());
diff --git a/src/grid/CGrid.cpp b/src/grid/CGrid.cpp
index ea399a8..e5accbd 100644
--- a/src/grid/CGrid.cpp
+++ b/src/grid/CGrid.cpp
@@ -42,7 +42,7 @@ CGrid::~CGrid()
 
 void CGrid::convertPos2Str(const QPointF& pos, QString& info, bool simple)
 {
-    if(pjGrid == 0)
+    if(pjGrid == nullptr)
     {
         return;
     }
@@ -97,7 +97,7 @@ void CGrid::setProjAndColor(const QString& proj, const QColor& c)
     projstr = proj;
     color   = c;
 
-    if(pjGrid)
+    if(nullptr != pjGrid)
     {
         pj_free(pjGrid);
     }
@@ -220,15 +220,15 @@ struct val_t
 
 void CGrid::draw(QPainter& p, const QRect& rect)
 {
-    if(pjWGS84 == 0 || pjGrid == 0 || !CMainWindow::self().isGridVisible())
+    if(pjWGS84 == nullptr || pjGrid == nullptr || !CMainWindow::self().isGridVisible())
     {
         return;
     }
 
-    QPointF topLeft     = rect.topLeft();
-    QPointF topRight    = rect.topRight();
-    QPointF btmLeft     = rect.bottomLeft();
-    QPointF btmRight    = rect.bottomRight();
+    QPointF topLeft  = rect.topLeft();
+    QPointF topRight = rect.topRight();
+    QPointF btmLeft  = rect.bottomLeft();
+    QPointF btmRight = rect.bottomRight();
 
     map->convertPx2Rad(topLeft);
     map->convertPx2Rad(topRight);
@@ -252,10 +252,10 @@ void CGrid::draw(QPainter& p, const QRect& rect)
     //    qDebug() << topLeft.v  - btmLeft.v;
     //    qDebug() << topRight.v - btmRight.v;
 
-    qreal topMax   = topLeft.y()  > topRight.y()   ? topLeft.y()  : topRight.y();
-    qreal btmMin   = btmLeft.y()  < btmRight.y()   ? btmLeft.y()  : btmRight.y();
-    qreal leftMin  = topLeft.x()  < btmLeft.x()    ? topLeft.x()  : btmLeft.x();
-    qreal rightMax = topRight.x() > btmRight.x()   ? topRight.x() : btmRight.x();
+    qreal topMax   = qMax(topLeft.y(),  topRight.y());
+    qreal btmMin   = qMin(btmLeft.y(),  btmRight.y());
+    qreal leftMin  = qMin(topLeft.x(),  btmLeft.x());
+    qreal rightMax = qMax(topRight.x(), btmRight.x());
 
     qreal xGridSpace = 1000;
     qreal yGridSpace = 1000;
@@ -369,22 +369,22 @@ void CGrid::draw(QPainter& p, const QRect& rect)
         int yoff  = fm.height() + fm.ascent();
         int xoff  = fm.width("XX.XXXX")>>1;
 
-        foreach(const val_t &val, horzTopTicks)
+        for(const val_t &val : horzTopTicks)
         {
             CDraw::text(qAbs(val.val)<1.e-5 ? "0" : QString("%1%2").arg(val.val * RAD_TO_DEG).arg(QChar(0260)), p, QPoint(val.pos, yoff), textColor);
         }
 
-        foreach(const val_t &val, horzBtmTicks)
+        for(const val_t &val : horzBtmTicks)
         {
             CDraw::text(qAbs(val.val)<1.e-5 ? "0" : QString("%1%2").arg(val.val * RAD_TO_DEG).arg(QChar(0260)), p, QPoint(val.pos, h), textColor);
         }
 
-        foreach(const val_t &val, vertLftTicks)
+        for(const val_t &val : vertLftTicks)
         {
             CDraw::text(qAbs(val.val)<1.e-5 ? "0" : QString("%1%2").arg(val.val * RAD_TO_DEG).arg(QChar(0260)), p, QPoint(xoff, val.pos), textColor);
         }
 
-        foreach(const val_t &val, vertRgtTicks)
+        for(const val_t &val : vertRgtTicks)
         {
             CDraw::text(qAbs(val.val)<1.e-5 ? "0" : QString("%1%2").arg(val.val * RAD_TO_DEG).arg(QChar(0260)), p, QPoint(w - xoff, val.pos), textColor);
         }
@@ -395,22 +395,22 @@ void CGrid::draw(QPainter& p, const QRect& rect)
         int yoff  = fm.height() + fm.ascent();
         int xoff  = fm.width("XXXX")>>1;
 
-        foreach(const val_t &val, horzTopTicks)
+        for(const val_t &val : horzTopTicks)
         {
             CDraw::text(QString("%1").arg(qint32(val.val/1000)), p, QPoint(val.pos, yoff), textColor);
         }
 
-        foreach(const val_t &val, horzBtmTicks)
+        for(const val_t &val : horzBtmTicks)
         {
             CDraw::text(QString("%1").arg(qint32(val.val/1000)), p, QPoint(val.pos, h), textColor);
         }
 
-        foreach(const val_t &val, vertLftTicks)
+        for(const val_t &val : vertLftTicks)
         {
             CDraw::text(QString("%1").arg(qint32(val.val/1000)), p, QPoint(xoff, val.pos), textColor);
         }
 
-        foreach(const val_t &val, vertRgtTicks)
+        for(const val_t &val : vertRgtTicks)
         {
             CDraw::text(QString("%1").arg(qint32(val.val/1000)), p, QPoint(w - xoff, val.pos), textColor);
         }
diff --git a/src/grid/CGrid.h b/src/grid/CGrid.h
index 066f59f..dffba18 100644
--- a/src/grid/CGrid.h
+++ b/src/grid/CGrid.h
@@ -49,8 +49,8 @@ private:
 
     CMapDraw * map;
 
-    projPJ pjWGS84 = 0;
-    projPJ pjGrid = 0;
+    projPJ pjWGS84 = nullptr;
+    projPJ pjGrid  = nullptr;
 
     QString projstr = "+proj=longlat +datum=WGS84 +no_defs";
     QColor color = Qt::magenta;
diff --git a/src/grid/CProjWizard.cpp b/src/grid/CProjWizard.cpp
index c311ef3..9735630 100644
--- a/src/grid/CProjWizard.cpp
+++ b/src/grid/CProjWizard.cpp
@@ -39,13 +39,13 @@ CProjWizard::CProjWizard(QLineEdit &line)
     , line(line)
 {
     setupUi(this);
-    mitab_entry_t entry;
-    QList<mitab_entry_t>    list;
-    int idx                 = 0;
-    const MapInfoDatumInfo * di   = asDatumInfoListQL;
+    QList<mitab_entry_t> list;
+    int idx = 0;
+    const MapInfoDatumInfo * di = asDatumInfoListQL;
 
     while(di->nMapInfoDatumID != -1)
     {
+        mitab_entry_t entry;
         entry.name  = di->pszOGCDatumName;
         entry.idx   = idx;
         list << entry;
@@ -54,7 +54,7 @@ CProjWizard::CProjWizard(QLineEdit &line)
     }
     qSort(list.begin(), list.end(), mitabLessThan);
 
-    foreach(entry, list)
+    for(const mitab_entry_t &entry : list)
     {
         comboDatum->addItem(entry.name, entry.idx);
     }
diff --git a/src/grid/IProjWizard.ui b/src/grid/IProjWizard.ui
index e90896b..f388194 100644
--- a/src/grid/IProjWizard.ui
+++ b/src/grid/IProjWizard.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>580</width>
-    <height>348</height>
+    <width>440</width>
+    <height>280</height>
    </rect>
   </property>
   <property name="windowTitle">
diff --git a/src/helpers/CAppSetup.cpp b/src/helpers/CAppSetup.cpp
deleted file mode 100644
index 2d8814a..0000000
--- a/src/helpers/CAppSetup.cpp
+++ /dev/null
@@ -1,342 +0,0 @@
-/**********************************************************************************************
-   Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-**********************************************************************************************/
-
-#include "config.h"
-#include "helpers/CAppOpts.h"
-#include "helpers/CAppSetup.h"
-
-#include <QtCore>
-#include <gdal.h>
-#include <iostream>
-
-#include <qdebug.h>
-
-#ifndef _MKSTR_1
-#define _MKSTR_1(x)    #x
-#define _MKSTR(x)      _MKSTR_1(x)
-#endif
-
-CAppSetup* instance = nullptr;
-
-CAppSetup* CAppSetup::getPlattformInstance()
-{
-    if(nullptr == instance)
-    {
-#ifdef Q_OS_MAC
-        instance = new CAppSetupMac();
-#endif
-#ifdef Q_OS_LINUX
-        instance = new CAppSetupLinux();
-#endif
-#ifdef Q_OS_WIN32
-        instance = new CAppSetupWin();
-#endif
-    }
-    return instance;
-}
-
-QString CAppSetup::logName()
-{
-    QStringList domainSplit = QCoreApplication::organizationDomain().split(".");
-    QString fileName;
-    foreach(QString part, domainSplit)
-    {
-        fileName = fileName.insert(0, part + ".");
-    }
-    fileName.append(QCoreApplication::applicationName() + ".log");
-    return fileName;
-}
-
-
-
-QString CAppSetup::logFilename()
-{
-    QDir dir = QDir::temp();
-    return dir.absoluteFilePath(logName());
-}
-
-void CAppSetup::appendToFile(QtMsgType type, QString formatedMsg)
-{
-    Q_UNUSED(type);
-    if(qlOpts->logfile)
-    {
-        QFile outFile(logFilename());
-        outFile.open(QIODevice::WriteOnly | QIODevice::Append);
-        QTextStream ts(&outFile);
-        ts << formatedMsg << endl;
-    }
-}
-
-
-void CAppSetup::printToConsole(QtMsgType type, QString formatedMsg)
-{
-    switch (type)
-    {
-    case QtDebugMsg:
-        if (qlOpts->debug)
-        {
-            std::cout << formatedMsg.toUtf8().constData() << std::endl;
-        }
-        break;
-
-#if QT_VERSION >= 0x050500
-    case QtInfoMsg:
-        std::cout << formatedMsg.toUtf8().constData() << std::endl;
-        break;
-
-#endif
-    case QtWarningMsg:
-        std::cerr << formatedMsg.toUtf8().constData() << std::endl;
-        break;
-
-    case QtCriticalMsg:
-        std::cerr <<  formatedMsg.toUtf8().constData() << std::endl;
-        break;
-
-    case QtFatalMsg:
-        std::cerr << formatedMsg.toUtf8().constData() << std::endl;
-        abort();
-        break;
-    }
-}
-
-
-
-void CAppSetup::consoleMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
-{
-#if QT_VERSION >= 0x050400
-    QString txt = qFormatLogMessage(type, context, msg);
-#else
-    QString txt = msg;
-#endif
-    CAppSetup::getPlattformInstance()->printToConsole(type, txt);
-    CAppSetup::getPlattformInstance()->appendToFile(type, txt);
-}
-
-
-void CAppSetup::prepareGdal()
-{
-    QString gdal = qgetenv("GDAL_DATA");
-    QString proj = qgetenv("PROJ_LIB");
-    qDebug() << "GDAL_DATA directory set to " + gdal;
-    qDebug() << "PROJ_LIB directory set to " + proj;
-    GDALAllRegister();
-}
-
-
-QString CAppSetup::routinoPath(QDir dirXml, QString xmlFile)
-{
-    QString file = dirXml.absoluteFilePath(xmlFile);
-    qDebug() << "ROUTINO file is " +file;
-    return file;
-}
-
-QDir CAppSetup::path(QString path, QString subdir, bool mkdir)
-{
-    QDir pathDir(path);
-
-    if(subdir != 0)
-    {
-        pathDir = QDir(pathDir.absoluteFilePath(subdir));
-    }
-    if(mkdir && !pathDir.exists())
-    {
-        pathDir.mkpath(pathDir.absolutePath());
-        qDebug() << "path created " << pathDir.absolutePath();
-    }
-    return pathDir;
-}
-
-
-QDir CAppSetup::configDir(QString subdir)
-{
-    QString path = QDir::home().absoluteFilePath(CONFIGDIR);
-    QDir configDir = CAppSetup::path(path, subdir, false);
-    qDebug() << "config dir " << configDir.absolutePath();
-    return configDir;
-}
-
-
-
-void CAppSetup::prepareTranslator(QApplication* app, QTranslator *qtTranslator, QString translationPath, QString translationPrefix)
-{
-    QString locale = QLocale::system().name();
-
-    QDir dir(translationPath);
-    if(!QFile::exists(dir.absoluteFilePath(translationPrefix + locale)))
-    {
-        locale = locale.left(2);
-    }
-
-    if (qtTranslator->load(translationPrefix + locale, translationPath))
-    {
-        app->installTranslator(qtTranslator);
-        qDebug() << "using file '"+ translationPath + "/" + translationPrefix + locale + ".qm' for translations.";
-    }
-}
-
-
-void CAppSetup::prepareConfig()
-{
-    QString path = QDir::home().absoluteFilePath(CONFIGDIR);
-    CAppSetup::path(path, "WaypointIcons", true);
-}
-
-
-void CAppSetup::installMessageHandler()
-{
-    qSetMessagePattern("%{time yyyy-MM-dd h:mm:ss.zzz} [%{type}] %{message}");
-    qInstallMessageHandler(consoleMessageHandler);
-}
-
-
-CAppSetupMac::CAppSetupMac()
-{
-}
-
-
-void CAppSetupMac::prepareGdal()
-{
-    QString gdalDir = getResourceDir("gdal");
-    QString projDir = getResourceDir("proj");
-
-    qputenv("GDAL_DATA", gdalDir.toUtf8());
-    qputenv("PROJ_LIB", projDir.toUtf8());
-
-    CAppSetup::prepareGdal();
-}
-
-QString CAppSetupMac::routinoPath(QString xmlFile)
-{
-    QDir dirXml(getResourceDir("routino"));
-    return CAppSetup::routinoPath(dirXml, xmlFile);
-}
-
-
-QString CAppSetupMac::getResourceDir(QString subdir)
-{
-    QString appResourceDir = QCoreApplication::applicationDirPath();
-
-    QDir resourcesDir(appResourceDir);
-    resourcesDir.cdUp();
-    resourcesDir.cd("Resources");
-    resourcesDir.cd(subdir);
-    appResourceDir = resourcesDir.absolutePath();
-
-    return appResourceDir;
-}
-
-
-void CAppSetupMac::prepareTranslators(QApplication* app)
-{
-    QString translationPath = getResourceDir("translations");
-
-    QTranslator *qtTranslator = new QTranslator(app);
-    prepareTranslator(app, qtTranslator, translationPath, "qt_");
-
-    QTranslator *qlandkartegtTranslator = new QTranslator(app);
-    prepareTranslator(app, qlandkartegtTranslator, translationPath, "qmapshack_");
-}
-
-
-
-QString CAppSetupMac::logFilename()
-{
-    QDir dir = QDir::home();
-    dir.cd("Library");
-    dir.cd("Logs");
-
-    return dir.absoluteFilePath(logName());
-}
-
-
-CAppSetupLinux::CAppSetupLinux()
-{
-}
-
-QString CAppSetupLinux::routinoPath(QString xmlFile)
-{
-    QDir dirXml(_MKSTR(ROUTINO_XML_PATH));
-    return CAppSetup::routinoPath(dirXml, xmlFile);
-}
-
-
-void CAppSetupLinux::prepareTranslators(QApplication* app)
-{
-    QString resourceDir     = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
-    QString translationPath = QCoreApplication::applicationDirPath();
-    translationPath.replace(QRegExp("bin$"), "share/qmapshack/translations");
-
-    QTranslator *qtTranslator = new QTranslator(app);
-    prepareTranslator(app, qtTranslator, resourceDir, "qt_");
-
-    QTranslator *qlandkartegtTranslator = new QTranslator(app);
-    prepareTranslator(app, qlandkartegtTranslator, translationPath, "qmapshack_");
-}
-
-
-CAppSetupWin::CAppSetupWin()
-{
-}
-
-
-void CAppSetupWin::prepareGdal()
-{
-    // setup environment variables for GDAL/Proj4
-    QString apppath = QCoreApplication::applicationDirPath();
-    apppath = apppath.replace("/", "\\");
-    QString gdalDir = QString("%1\\data").arg(apppath);
-    QString projDir = QString("%1\\share").arg(apppath);
-
-    qputenv("GDAL_DATA", gdalDir.toUtf8());
-    qputenv("PROJ_LIB", projDir.toUtf8());
-    qunsetenv("GDAL_DRIVER_PATH");
-
-    CAppSetup::prepareGdal();
-}
-
-
-QString CAppSetupWin::routinoPath(QString xmlFile)
-{
-    QString apppath = QCoreApplication::applicationDirPath();
-    apppath = apppath.replace("/", "\\");
-    QDir dirXml(QString("%1\\routino-xml").arg(apppath).toUtf8());
-    return CAppSetup::routinoPath(dirXml, xmlFile);
-}
-
-
-
-void CAppSetupWin::prepareTranslators(QApplication* app)
-{
-    QString apppath = QCoreApplication::applicationDirPath();
-    apppath = apppath.replace("/", "\\");
-    QString appResourceDir = QString("%1\\translations").arg(apppath).toUtf8();
-
-    QTranslator *qtTranslator = new QTranslator(app);
-    prepareTranslator(app, qtTranslator, appResourceDir, "qtbase_");
-
-    QTranslator *qlandkartegtTranslator = new QTranslator(app);
-    prepareTranslator(app, qlandkartegtTranslator, appResourceDir, "qmapshack_");
-}
-
-void CAppSetupWin::prepareConfig()
-{
-    CAppSetup::prepareConfig();
-    //reset PATH to avoid that wrong .dll's are loaded
-    qputenv("PATH", "");
-}
diff --git a/src/helpers/CAppSetup.h b/src/helpers/CAppSetup.h
deleted file mode 100644
index 2753b48..0000000
--- a/src/helpers/CAppSetup.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/**********************************************************************************************
-   Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-**********************************************************************************************/
-
-#ifndef CAPPSETUP_H
-#define CAPPSETUP_H
-
-#include <QApplication>
-#include <QtCore>
-
-
-class CAppSetup
-{
-public:
-    static CAppSetup* getPlattformInstance();
-    static void consoleMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg);
-
-    virtual void prepareGdal();
-    virtual QString routinoPath(QString xmlFile) = 0;
-    virtual void prepareTranslators(QApplication* app) = 0;
-    virtual void prepareConfig();
-    virtual void installMessageHandler();
-    virtual QDir configDir(QString subdir = 0);
-
-protected:
-    void prepareTranslator(QApplication* app, QTranslator *qtTranslator, QString translationPath, QString translationPrefix);
-    QString logName();
-
-    virtual QString logFilename();
-    void printToConsole(QtMsgType type, QString formatedMsg);
-    void appendToFile(QtMsgType type, QString formatedMsg);
-    QString routinoPath(QDir dirXml, QString xmlFile);
-    QDir path(QString path, QString subdir = 0, bool mkdir = false);
-};
-
-
-class CAppSetupMac : public CAppSetup
-{
-public:
-    void prepareGdal() override;
-    QString routinoPath(QString xmlFile) override;
-    void prepareTranslators(QApplication* app) override;
-
-protected:
-    QString logFilename() override;
-    QString getResourceDir(QString subdir);
-    CAppSetupMac();
-
-    friend class CAppSetup;
-};
-
-
-class CAppSetupLinux : public CAppSetup
-{
-public:
-    QString routinoPath(QString xmlFile) override;
-    void prepareTranslators(QApplication* app) override;
-
-protected:
-    CAppSetupLinux();
-    friend class CAppSetup;
-};
-
-
-class CAppSetupWin : public CAppSetup
-{
-public:
-    QString routinoPath(QString xmlFile)       override;
-    void prepareGdal()                         override;
-    void prepareTranslators(QApplication* app) override;
-    void prepareConfig()                       override;
-
-protected:
-    CAppSetupWin();
-    friend class CAppSetup;
-};
-
-#endif // CAPPSETUP_H
diff --git a/src/helpers/CFileExt.h b/src/helpers/CFileExt.h
index 9afc8b5..dbdeca3 100644
--- a/src/helpers/CFileExt.h
+++ b/src/helpers/CFileExt.h
@@ -48,7 +48,7 @@ public:
 
     void free()
     {
-        foreach(uchar * p, mappedSections)
+        for(uchar * p : mappedSections)
         {
             unmap(p);
         }
diff --git a/src/helpers/CLimit.cpp b/src/helpers/CLimit.cpp
index c85e16b..571076a 100644
--- a/src/helpers/CLimit.cpp
+++ b/src/helpers/CLimit.cpp
@@ -187,7 +187,7 @@ QString CLimit::getUnit() const
 
 void CLimit::updateSys()
 {
-    foreach(CLimit * limit, allLimits)
+    for(CLimit * limit : allLimits)
     {
         if(limit != this)
         {
diff --git a/src/helpers/CLinksDialog.cpp b/src/helpers/CLinksDialog.cpp
index 10324d4..0dd2d10 100644
--- a/src/helpers/CLinksDialog.cpp
+++ b/src/helpers/CLinksDialog.cpp
@@ -30,7 +30,7 @@ CLinksDialog::CLinksDialog(QList<IGisItem::link_t> &links, QWidget *parent)
     connect(toolDelete, &QToolButton::clicked,              this, &CLinksDialog::slotDelLink);
     connect(treeWidget, &QTreeWidget::itemSelectionChanged, this, &CLinksDialog::slotItemSelectionChanged);
 
-    foreach(const IGisItem::link_t& link, links)
+    for(const IGisItem::link_t& link : links)
     {
         QTreeWidgetItem * item = new QTreeWidgetItem(treeWidget);
         item->setText(0, link.type);
diff --git a/src/helpers/CSettings.h b/src/helpers/CSettings.h
index 6c60ca2..6abe4ec 100644
--- a/src/helpers/CSettings.h
+++ b/src/helpers/CSettings.h
@@ -18,7 +18,7 @@
 #ifndef CSETTINGS_H
 #define CSETTINGS_H
 
-#include "helpers/CAppOpts.h"
+#include "setup/CAppOpts.h"
 #include <QtCore>
 
 class CSettings : public QObject
diff --git a/src/helpers/CValue.cpp b/src/helpers/CValue.cpp
index 4cdead2..decb964 100644
--- a/src/helpers/CValue.cpp
+++ b/src/helpers/CValue.cpp
@@ -83,7 +83,7 @@ const QVariant& CValue::operator=(const QVariant& v)
         SETTINGS;
         cfg.setValue(cfgTag, v);
 
-        foreach(CValue * value, allValues)
+        for(CValue * value : allValues)
         {
             if(value != this)
             {
diff --git a/src/helpers/CValue.h b/src/helpers/CValue.h
index 261582c..d40b650 100644
--- a/src/helpers/CValue.h
+++ b/src/helpers/CValue.h
@@ -23,8 +23,8 @@
 #include <QVariant>
 #include <functional>
 
-using fValueOnChange = std::function<void(const QVariant&)>;
 using fMarkChanged   = std::function<void(void)>;
+using fValueOnChange = std::function<void(const QVariant&)>;
 
 class CValue
 {
diff --git a/src/helpers/CWptIconDialog.cpp b/src/helpers/CWptIconDialog.cpp
index 531557a..937da45 100644
--- a/src/helpers/CWptIconDialog.cpp
+++ b/src/helpers/CWptIconDialog.cpp
@@ -18,9 +18,9 @@
 
 #include "CMainWindow.h"
 #include "gis/WptIcons.h"
-#include "helpers/CAppSetup.h"
 #include "helpers/CSettings.h"
 #include "helpers/CWptIconDialog.h"
+#include "setup/IAppSetup.h"
 
 #include <QtWidgets>
 
@@ -104,11 +104,10 @@ void CWptIconDialog::setupList(QObject * obj)
 
     const QMap<QString, icon_t>& wptIcons = getWptIcons();
     QStringList keys = wptIcons.keys();
-    QString key;
 
     qSort(keys.begin(), keys.end(), keyLessThanAlpha);
 
-    foreach(key, keys)
+    for(const QString &key : keys)
     {
         const QString& icon = wptIcons[key].path;
         QPixmap pixmap      = loadIcon(icon);
@@ -127,7 +126,7 @@ void CWptIconDialog::setupList(QObject * obj)
     }
 
     SETTINGS;
-    QString path = cfg.value("Paths/externalWptIcons",CAppSetup::getPlattformInstance()->configDir("WaypointIcons").absolutePath()).toString();
+    QString path = cfg.value("Paths/externalWptIcons", IAppSetup::getPlatformInstance()->userDataPath("WaypointIcons")).toString();
     labelIconPath->setProperty("path", path);
     labelIconPath->setText(path.size() > 25 ? "..." + path.right(22) : path);
 
diff --git a/src/helpers/Signals.h b/src/helpers/Signals.h
index 9cec331..1850260 100644
--- a/src/helpers/Signals.h
+++ b/src/helpers/Signals.h
@@ -24,7 +24,7 @@
 
 inline void X______________BlockAllSignals______________X(QObject * parent)
 {
-    foreach(QObject * obj, parent->findChildren<QObject*>(QRegExp(".*")))
+    for(QObject * obj : parent->findChildren<QObject*>(QRegExp(".*")))
     {
         obj->blockSignals(true);
     }
@@ -32,7 +32,7 @@ inline void X______________BlockAllSignals______________X(QObject * parent)
 
 inline void X_____________UnBlockAllSignals_____________X(QObject * parent)
 {
-    foreach(QObject * obj, parent->findChildren<QObject*>(QRegExp(".*")))
+    for(QObject * obj : parent->findChildren<QObject*>(QRegExp(".*")))
     {
         obj->blockSignals(false);
     }
diff --git a/src/icons/32x32/Area.png b/src/icons/32x32/Area.png
index 9281c76..78703fc 100644
Binary files a/src/icons/32x32/Area.png and b/src/icons/32x32/Area.png differ
diff --git a/src/icons/32x32/SelectArea.png b/src/icons/32x32/SelectArea.png
new file mode 100644
index 0000000..ad555bd
Binary files /dev/null and b/src/icons/32x32/SelectArea.png differ
diff --git a/src/icons/32x32/SelectExactArea.png b/src/icons/32x32/SelectExactArea.png
new file mode 100644
index 0000000..6b08512
Binary files /dev/null and b/src/icons/32x32/SelectExactArea.png differ
diff --git a/src/icons/32x32/SelectIntersectArea.png b/src/icons/32x32/SelectIntersectArea.png
new file mode 100644
index 0000000..e81f0c7
Binary files /dev/null and b/src/icons/32x32/SelectIntersectArea.png differ
diff --git a/src/icons/32x32/Track.png b/src/icons/32x32/Track.png
index ecfa709..ee83040 100644
Binary files a/src/icons/32x32/Track.png and b/src/icons/32x32/Track.png differ
diff --git a/src/icons/48x48/Area.png b/src/icons/48x48/Area.png
index 743bcad..30e9e38 100644
Binary files a/src/icons/48x48/Area.png and b/src/icons/48x48/Area.png differ
diff --git a/src/icons/48x48/SelectArea.png b/src/icons/48x48/SelectArea.png
new file mode 100644
index 0000000..c30f730
Binary files /dev/null and b/src/icons/48x48/SelectArea.png differ
diff --git a/src/icons/48x48/SelectExactArea.png b/src/icons/48x48/SelectExactArea.png
new file mode 100644
index 0000000..e035038
Binary files /dev/null and b/src/icons/48x48/SelectExactArea.png differ
diff --git a/src/icons/48x48/SelectIntersectArea.png b/src/icons/48x48/SelectIntersectArea.png
new file mode 100644
index 0000000..9ec631e
Binary files /dev/null and b/src/icons/48x48/SelectIntersectArea.png differ
diff --git a/src/icons/48x48/Track.png b/src/icons/48x48/Track.png
index 0317234..7707e84 100644
Binary files a/src/icons/48x48/Track.png and b/src/icons/48x48/Track.png differ
diff --git a/src/icons/Area.svg b/src/icons/Area.svg
index 0d621ae..df73721 100644
--- a/src/icons/Area.svg
+++ b/src/icons/Area.svg
@@ -15,7 +15,7 @@
    height="64px"
    id="svg3377"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
+   inkscape:version="0.91 r13725"
    sodipodi:docname="Area.svg">
   <defs
      id="defs3379">
@@ -145,16 +145,16 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="11"
-     inkscape:cx="4.0115391"
+     inkscape:cx="-16.352097"
      inkscape:cy="27.46309"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="1012"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
      inkscape:window-maximized="1">
     <inkscape:grid
        type="xygrid"
@@ -178,49 +178,49 @@
      inkscape:groupmode="layer">
     <g
        id="g3801"
-       style="fill:#000000"
+       style="fill:#000080;stroke:#000080"
        transform="translate(28.545455,-4.7272727)">
       <path
          inkscape:connector-curvature="0"
          id="path3015"
          d="m 4.1627317,12.624625 a 0.50005,0.50005 0 0 0 -0.125,0.03125 l -19.5312497,8.6875 a 0.50005,0.50005 0 0 0 -0.3125,0.46875 l 0,30.375 a 0.50005,0.50005 0 0 0 0.5,0.5 l 24.4374997,0 a 0.50005,0.50005 0 0 0 0.125,0 l 14.6562503,-4.34375 a 0.50005,0.50005 0 0 0 0.34375,-0.65625 l -4.78125,-12.6875 4.625,-4.125 a 0.50005,0.50005 0 0 0 0.1875,-0.375 l 0,-13.03125 a 0.50005,0.50005 0 0 0 -0.40625,-0.5 L 4.3502317,12.624625 a 0.50005,0.50005 0 0 0 -0.1875,0 z m 0.125,1.03125 19.00000 [...]
-         style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:acc [...]
+         style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background: [...]
       <g
-         style="fill:#000000;stroke:none"
+         style="fill:#000080;stroke:#000080"
          transform="translate(-25.249389,-1.9115885)"
          id="g3788">
         <path
-           style="fill:#000000;stroke:none"
+           style="fill:#000080;stroke:#000080"
            d="m 10.468663,35.533491 0.0011,-0.907025 1.794324,-2.002659 c 0.986878,-1.101462 1.889855,-2.103734 2.006615,-2.227273 0.11676,-0.123537 1.303124,-1.446933 2.636364,-2.940881 1.333239,-1.493946 3.981505,-4.459855 5.885035,-6.590908 l 3.460964,-3.874642 1.206454,-0.529553 c 0.663549,-0.291254 1.227768,-0.508238 1.253819,-0.482187 0.02605,0.02605 -0.480618,0.632531 -1.125929,1.347734 -0.645313,0.715203 -1.660093,1.852642 -2.255069,2.527642 -1.179948,1.338652 -4.264587,4.794291  [...]
            id="path3001"
            inkscape:connector-curvature="0" />
         <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:#000080"
            d="m 10.512987,25.801348 0,-0.912497 0.676485,-0.75392 c 0.669545,-0.746185 0.68923,-0.759515 1.918868,-1.299374 0.683311,-0.3 1.286739,-0.561706 1.340952,-0.58157 0.08188,-0.03 -1.626642,1.912192 -3.496977,3.97526 l -0.439328,0.484599 0,-0.912498 z"
            id="path3771"
            inkscape:connector-curvature="0" />
         <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:#000080"
            d="m 10.512987,45.247809 0,-0.892434 2.113636,-2.348424 c 2.536074,-2.817788 6.282044,-7.003613 9.033665,-10.094403 2.112387,-2.372765 5.655683,-6.330505 8.943608,-9.989702 1.687459,-1.878007 2.705109,-3.004219 4.288115,-4.745566 l 0.350492,-0.385549 0.676321,0.14861 0.676321,0.148611 -0.381988,0.428073 c -0.210094,0.23544 -1.486534,1.654496 -2.836534,3.153458 -2.580782,2.86555 -5.303298,5.904681 -12.933681,14.437801 -6.842795,7.652355 -8.898229,9.941657 -9.441696,10.515979 l  [...]
            id="path3773"
            inkscape:connector-curvature="0" />
         <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:#000080"
            d="m 11.058441,53.476308 c 0,-0.02259 0.930682,-1.081981 2.068182,-2.354209 1.1375,-1.272228 2.973156,-3.329885 4.079234,-4.572569 2.474647,-2.780278 6.199907,-6.937314 9.80713,-10.943824 3.066224,-3.405627 7.067968,-7.873673 9.045454,-10.099473 1.496762,-1.68471 5.038327,-5.651833 5.823722,-6.523504 l 0.522684,-0.580102 0.600653,0.113336 c 0.330359,0.06233 0.622405,0.148531 0.648991,0.191549 0.02659,0.04302 -0.747306,0.968971 -1.719761,2.057675 -5.188416,5.808642 -11.361413,1 [...]
            id="path3775"
            inkscape:connector-curvature="0" />
         <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:#000080"
            d="m 20.898547,52.176466 c 3.427101,-3.792503 7.309629,-8.12602 12.205349,-13.623109 1.55,-1.740395 3.738636,-4.187444 4.863636,-5.437886 1.125,-1.250443 2.986364,-3.320237 4.136364,-4.599541 1.15,-1.279305 2.954191,-3.285286 4.009314,-4.457737 1.055122,-1.17245 2.025421,-2.254454 2.156218,-2.404454 l 0.237813,-0.272727 0.0029,0.918764 0.0029,0.918764 -1.340909,1.485769 c -3.565476,3.950659 -7.207054,8.012391 -16.092707,17.94943 -5.271092,5.894789 -6.91632,7.729128 -8.581756,9 [...]
            id="path3777"
            inkscape:connector-curvature="0" />
         <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:#000080"
            d="m 28.481159,53.403739 c 0.07303,-0.118882 2.759666,-3.13503 5.482594,-6.155036 0.877079,-0.97277 2.535598,-2.815632 3.685598,-4.095249 1.15,-1.279617 2.947148,-3.277758 3.993662,-4.440313 l 1.902753,-2.113737 0.210884,0.560962 c 0.115985,0.308529 0.210882,0.612564 0.210882,0.675634 0,0.06307 -0.439772,0.604195 -0.977272,1.202501 -0.5375,0.598307 -2.204546,2.450697 -3.704546,4.116423 -4.253858,4.72384 -7.655309,8.52319 -8.490936,9.484202 l -0.763664,0.878249 -0.809883,0 c -0 [...]
            id="path3779"
            inkscape:connector-curvature="0" />
         <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:#000080"
            d="m 38.393503,52.123964 c 0.10102,-0.128427 0.779887,-0.900403 1.508592,-1.715501 3.844146,-4.2999 5.423129,-6.075823 5.788277,-6.510227 l 0.404657,-0.481407 0.252902,0.658443 c 0.213873,0.556829 0.234168,0.680332 0.131507,0.800273 -0.322277,0.376525 -5.658982,6.355315 -5.865754,6.571492 -0.164348,0.171823 -0.501959,0.327683 -1.100697,0.508144 -0.475,0.143166 -0.962529,0.292249 -1.083398,0.331294 l -0.219761,0.07099 0.183675,-0.233504 z"
            id="path3781"
            inkscape:connector-curvature="0" />
diff --git a/src/icons/SelectArea.svg b/src/icons/SelectArea.svg
new file mode 100644
index 0000000..5713c4a
--- /dev/null
+++ b/src/icons/SelectArea.svg
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="SelectArea.svg">
+  <defs
+     id="defs3515">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path3901"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path3895"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path3880"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3874"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart-0"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3880-4"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11"
+     inkscape:cx="16.514348"
+     inkscape:cy="35.664608"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3090" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 5,24 5,9"
+       id="path4202"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 5,9 20,9"
+       id="path4204"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 35,9 15,0 0,15"
+       id="path4206"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 5,39 0,15 15,0"
+       id="path4208"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 35,54 15,0 0,-15"
+       id="path4210"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/SelectExactArea.svg b/src/icons/SelectExactArea.svg
new file mode 100644
index 0000000..436246c
--- /dev/null
+++ b/src/icons/SelectExactArea.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="SelectExactArea.svg">
+  <defs
+     id="defs3515">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path3901"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path3895"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path3880"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3874"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart-0"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3880-4"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11"
+     inkscape:cx="15.787075"
+     inkscape:cy="35.664608"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3090" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4180"
+       transform="matrix(1.0472912,0,0,1.042677,-0.18279908,-2.3882074)"
+       style="stroke-width:2.87086407;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4202"
+         d="M 5,24 5,9"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.87086407;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4204"
+         d="M 5,9 20,9"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.87086407;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4206"
+         d="m 35,9 15,0 0,15"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.87086407;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4208"
+         d="m 5,39 0,15 15,0"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.87086407;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4210"
+         d="m 35,54 15,0 0,-15"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.87086407;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <rect
+       style="fill:none;stroke:#808080;stroke-width:2.8378377;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:22.70270353, 5.67567588, 2.83783794, 5.67567588;stroke-dashoffset:0"
+       id="rect4179"
+       width="32.162163"
+       height="32.162163"
+       x="12.525997"
+       y="14.364453" />
+  </g>
+</svg>
diff --git a/src/icons/SelectIntersectArea.svg b/src/icons/SelectIntersectArea.svg
new file mode 100644
index 0000000..69cc123
--- /dev/null
+++ b/src/icons/SelectIntersectArea.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="SelectIntersectArea.svg">
+  <defs
+     id="defs3515">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path3901"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path3895"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path3880"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3874"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart-0"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3880-4"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11"
+     inkscape:cx="15.787075"
+     inkscape:cy="35.664608"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3090" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4180"
+       transform="matrix(0.72857875,0,0,0.72552921,9.9573398,5.9307114)"
+       style="stroke-width:4.12625015;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4202"
+         d="M 5,24 5,9"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:4.12625015;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4204"
+         d="M 5,9 20,9"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:4.12625015;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4206"
+         d="m 35,9 15,0 0,15"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:4.12625015;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4208"
+         d="m 5,39 0,15 15,0"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:4.12625015;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4210"
+         d="m 35,54 15,0 0,-15"
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:4.12625015;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <rect
+       style="fill:none;stroke:#808080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:24,6,3,6;stroke-dashoffset:0"
+       id="rect4179"
+       width="45.945946"
+       height="45.945946"
+       x="7.0125546"
+       y="5.804213" />
+  </g>
+</svg>
diff --git a/src/icons/Track.svg b/src/icons/Track.svg
index d1b1cea..83d4d83 100644
--- a/src/icons/Track.svg
+++ b/src/icons/Track.svg
@@ -13,8 +13,8 @@
    height="64px"
    id="svg3377"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="Neues Dokument 2">
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="Track.svg">
   <defs
      id="defs3379" />
   <sodipodi:namedview
@@ -25,16 +25,16 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="5.5"
-     inkscape:cx="32"
+     inkscape:cx="-8.7272727"
      inkscape:cy="32"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="996"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
      inkscape:window-maximized="1">
     <inkscape:grid
        type="xygrid"
@@ -48,7 +48,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -61,115 +61,120 @@
        transform="matrix(0.46114505,0,0,0.60404216,-167.21055,-32.539512)"
        inkscape:export-filename="/home/oeichler/Code/android/QLandkarteM/QLandkarteM/icons/48x48/record.png"
        inkscape:export-xdpi="123.42857"
-       inkscape:export-ydpi="123.42857">
+       inkscape:export-ydpi="123.42857"
+       style="fill:#000080">
       <g
          transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,70.373026,321.22792)"
-         id="g3863">
+         id="g3863"
+         style="fill:#000080">
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3091"
            sodipodi:cx="417"
            sodipodi:cy="94.362183"
            sodipodi:rx="7"
            sodipodi:ry="7"
-           d="m 416.9824,87.362205 c 3.86598,-0.0097 7.00786,3.116398 7.01758,6.982379 0.01,3.865981 -3.1164,7.007856 -6.98238,7.017576 -0.0135,3e-5 -0.027,3e-5 -0.0405,-1e-5 L 417,94.362183 z"
+           d="m 416.9824,87.362205 a 7,7 0 0 1 6.07773,3.496442 7,7 0 0 1 -0.003,7.0117 7,7 0 0 1 -6.08041,3.491803 L 417,94.362183 Z"
            sodipodi:start="4.7098749"
            sodipodi:end="7.8572596"
            transform="matrix(2.8638155,0,0,0.95340127,-777.28343,4.421604)" />
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3093"
            sodipodi:cx="407"
            sodipodi:cy="91.862183"
            sodipodi:rx="4"
            sodipodi:ry="6.5"
-           d="m 407.02766,98.362027 c -2.20909,0.02482 -4.01229,-2.865133 -4.02756,-6.454898 -0.0153,-3.589765 1.76315,-6.519968 3.97224,-6.544791 0.0143,-1.6e-4 0.0285,-1.97e-4 0.0428,-1.09e-4 L 407,91.862183 z"
+           d="m 407.02766,98.362027 a 4,6.5 0 0 1 -3.48505,-3.231014 4,6.5 0 0 1 -0.006,-6.520058 4,6.5 0 0 1 3.47881,-3.248726 L 407,91.862183 Z"
            sodipodi:start="1.5638814"
            sodipodi:end="4.7161735"
            transform="matrix(2.1833386,0,0,1.0380416,-476.38942,-0.97014023)" />
       </g>
       <g
          transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,94.62502,319.68557)"
-         id="g3863-7">
+         id="g3863-7"
+         style="fill:#000080">
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3091-3"
            sodipodi:cx="417"
            sodipodi:cy="94.362183"
            sodipodi:rx="7"
            sodipodi:ry="7"
-           d="m 416.9824,87.362205 c 3.86598,-0.0097 7.00786,3.116398 7.01758,6.982379 0.01,3.865981 -3.1164,7.007856 -6.98238,7.017576 -0.0135,3e-5 -0.027,3e-5 -0.0405,-1e-5 L 417,94.362183 z"
+           d="m 416.9824,87.362205 a 7,7 0 0 1 6.07773,3.496442 7,7 0 0 1 -0.003,7.0117 7,7 0 0 1 -6.08041,3.491803 L 417,94.362183 Z"
            sodipodi:start="4.7098749"
            sodipodi:end="7.8572596"
            transform="matrix(2.8638155,0,0,0.95340127,-777.28343,4.421604)" />
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3093-5"
            sodipodi:cx="407"
            sodipodi:cy="91.862183"
            sodipodi:rx="4"
            sodipodi:ry="6.5"
-           d="m 407.02766,98.362027 c -2.20909,0.02482 -4.01229,-2.865133 -4.02756,-6.454898 -0.0153,-3.589765 1.76315,-6.519968 3.97224,-6.544791 0.0143,-1.6e-4 0.0285,-1.97e-4 0.0428,-1.09e-4 L 407,91.862183 z"
+           d="m 407.02766,98.362027 a 4,6.5 0 0 1 -3.48505,-3.231014 4,6.5 0 0 1 -0.006,-6.520058 4,6.5 0 0 1 3.47881,-3.248726 L 407,91.862183 Z"
            sodipodi:start="1.5638814"
            sodipodi:end="4.7161735"
            transform="matrix(2.1833386,0,0,1.0380416,-476.38942,-0.97014023)" />
       </g>
       <g
          transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,69.311474,351.55812)"
-         id="g3863-8">
+         id="g3863-8"
+         style="fill:#000080">
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3091-7"
            sodipodi:cx="417"
            sodipodi:cy="94.362183"
            sodipodi:rx="7"
            sodipodi:ry="7"
-           d="m 416.9824,87.362205 c 3.86598,-0.0097 7.00786,3.116398 7.01758,6.982379 0.01,3.865981 -3.1164,7.007856 -6.98238,7.017576 -0.0135,3e-5 -0.027,3e-5 -0.0405,-1e-5 L 417,94.362183 z"
+           d="m 416.9824,87.362205 a 7,7 0 0 1 6.07773,3.496442 7,7 0 0 1 -0.003,7.0117 7,7 0 0 1 -6.08041,3.491803 L 417,94.362183 Z"
            sodipodi:start="4.7098749"
            sodipodi:end="7.8572596"
            transform="matrix(2.8638155,0,0,0.95340127,-777.28343,4.421604)" />
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3093-6"
            sodipodi:cx="407"
            sodipodi:cy="91.862183"
            sodipodi:rx="4"
            sodipodi:ry="6.5"
-           d="m 407.02766,98.362027 c -2.20909,0.02482 -4.01229,-2.865133 -4.02756,-6.454898 -0.0153,-3.589765 1.76315,-6.519968 3.97224,-6.544791 0.0143,-1.6e-4 0.0285,-1.97e-4 0.0428,-1.09e-4 L 407,91.862183 z"
+           d="m 407.02766,98.362027 a 4,6.5 0 0 1 -3.48505,-3.231014 4,6.5 0 0 1 -0.006,-6.520058 4,6.5 0 0 1 3.47881,-3.248726 L 407,91.862183 Z"
            sodipodi:start="1.5638814"
            sodipodi:end="4.7161735"
            transform="matrix(2.1833386,0,0,1.0380416,-476.38942,-0.97014023)" />
       </g>
       <g
          transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,44.797353,350.17434)"
-         id="g3863-1">
+         id="g3863-1"
+         style="fill:#000080">
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3091-0"
            sodipodi:cx="417"
            sodipodi:cy="94.362183"
            sodipodi:rx="7"
            sodipodi:ry="7"
-           d="m 416.9824,87.362205 c 3.86598,-0.0097 7.00786,3.116398 7.01758,6.982379 0.01,3.865981 -3.1164,7.007856 -6.98238,7.017576 -0.0135,3e-5 -0.027,3e-5 -0.0405,-1e-5 L 417,94.362183 z"
+           d="m 416.9824,87.362205 a 7,7 0 0 1 6.07773,3.496442 7,7 0 0 1 -0.003,7.0117 7,7 0 0 1 -6.08041,3.491803 L 417,94.362183 Z"
            sodipodi:start="4.7098749"
            sodipodi:end="7.8572596"
            transform="matrix(2.8638155,0,0,0.95340127,-777.28343,4.421604)" />
         <path
            sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
+           style="fill:#000080;fill-opacity:1;stroke:none"
            id="path3093-61"
            sodipodi:cx="407"
            sodipodi:cy="91.862183"
            sodipodi:rx="4"
            sodipodi:ry="6.5"
-           d="m 407.02766,98.362027 c -2.20909,0.02482 -4.01229,-2.865133 -4.02756,-6.454898 -0.0153,-3.589765 1.76315,-6.519968 3.97224,-6.544791 0.0143,-1.6e-4 0.0285,-1.97e-4 0.0428,-1.09e-4 L 407,91.862183 z"
+           d="m 407.02766,98.362027 a 4,6.5 0 0 1 -3.48505,-3.231014 4,6.5 0 0 1 -0.006,-6.520058 4,6.5 0 0 1 3.47881,-3.248726 L 407,91.862183 Z"
            sodipodi:start="1.5638814"
            sodipodi:end="4.7161735"
            transform="matrix(2.1833386,0,0,1.0380416,-476.38942,-0.97014023)" />
diff --git a/src/locale/qmapshack.ts b/src/locale/qmapshack.ts
index 397a755..a83ff7c 100644
--- a/src/locale/qmapshack.ts
+++ b/src/locale/qmapshack.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
 <context>
     <name>CAbout</name>
     <message>
@@ -124,6 +124,11 @@
         <source>View %1</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="674"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CColorChooser</name>
@@ -136,32 +141,32 @@
 <context>
     <name>CCommandProcessor</name>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -205,23 +210,23 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="52"/>
         <source>MySQL Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="55"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="59"/>
         <source>Server: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="64"/>
         <source> (No PW)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="72"/>
         <source>Error: </source>
         <translation type="unfinished"></translation>
     </message>
@@ -265,66 +270,66 @@
 <context>
     <name>CDBProject</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <location filename="../gis/db/CDBProject.cpp" line="219"/>
         <source>The item %1 has been changed by %2 (%3). 
 
 To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <location filename="../gis/db/CDBProject.cpp" line="225"/>
         <source>Conflict with database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <location filename="../gis/db/CDBProject.cpp" line="226"/>
         <source>Clone && Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <location filename="../gis/db/CDBProject.cpp" line="227"/>
         <source>Force Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <location filename="../gis/db/CDBProject.cpp" line="228"/>
         <source>Take remote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <location filename="../gis/db/CDBProject.cpp" line="531"/>
         <source>Missing folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <location filename="../gis/db/CDBProject.cpp" line="532"/>
         <source>Failed to save project. The folder has been deleted in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <location filename="../gis/db/CDBProject.cpp" line="539"/>
         <source>Save ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>There was an unexpected database error:
 
 %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <location filename="../gis/db/CDBProject.cpp" line="727"/>
         <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <location filename="../gis/db/CDBProject.cpp" line="728"/>
         <source>Save changes?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -332,12 +337,12 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Deactivate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Activate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -401,7 +406,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="264"/>
         <source>No images found</source>
         <translation type="unfinished"></translation>
     </message>
@@ -518,62 +523,62 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="181"/>
         <source>Reduce visible track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="184"/>
         <source>Change elevation of track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="187"/>
         <source>Change timestamp of track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="190"/>
         <source>Modify track points' extensions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>Cut track into pieces</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="410"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="418"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="421"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="442"/>
         <source>%1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="507"/>
         <source>Color</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>Reset activities...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="747"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
@@ -589,17 +594,30 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDeviceGarmin</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="254"/>
         <source>Picture%1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <location filename="../gis/gpx/serialization.cpp" line="1038"/>
         <source>Unknown</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarminArchive</name>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="30"/>
+        <source>Archive - expand to load</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="43"/>
+        <source>Archive - loaded</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -610,7 +628,7 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="57"/>
         <source>No extension available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -642,12 +660,12 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="69"/>
         <source>FIT decoding error: protocol %1 version not supported.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="120"/>
         <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -726,52 +744,52 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="385"/>
         <source>Area: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="447"/>
         <source>Changed area shape.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="455"/>
         <source>Changed name.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
         <source>Changed border width.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="467"/>
         <source>Changed fill pattern.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="473"/>
         <source>Changed opacity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="479"/>
         <source>Changed comment.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="485"/>
         <source>Changed description.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="491"/>
         <source>Changed links</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed color</source>
         <translation type="unfinished"></translation>
     </message>
@@ -815,7 +833,7 @@ To solve this conflict you can create and save a clone, force your version or dr
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="485"/>
         <source>Time: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
@@ -835,12 +853,12 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="487"/>
         <source>Distance: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="601"/>
         <source>Changed route points.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -848,7 +866,7 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <location filename="../gis/fit/serialization.cpp" line="182"/>
         <source>FIT file %1 contains no GPS data.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -879,213 +897,203 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="118"/>
         <source>_Clone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="290"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
         <source>Length: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="408"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
-        <source>Time: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
-        <source>, Speed: %1 %2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
-        <source>Moving: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
         <source>Start: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="432"/>
         <source>End: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
         <source>Points: %1 (%2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="527"/>
         <source>Ele.: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="530"/>
         <source> slope: %1%3 (%2%)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="535"/>
         <source> speed: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="563"/>
         <source>... and %1 tags not displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
-        <source>Ascend: %1%2 (%3%)</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="574"/>
+        <source>Descend: - (-)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
-        <source>Ascend: - (-)</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
+        <source>Distance: - (-)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
-        <source> Descend: %1%2 (%3%)</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="576"/>
+        <source>Moving: - (-)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
-        <source> Descend: - (-) </source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
+        <source>Ascend: %1%2 (%3%)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
-        <source>Dist.: %1%2 (%3%)</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
+        <source>Hide point %1.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
-        <source>Dist.: - (-)</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1445"/>
+        <source>Hide points %1..%2.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
-        <source> Moving: %1%2 (%3%)</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
+        <source>Ascend: - (-)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
-        <source> Moving: - (-) </source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="587"/>
+        <source> Descend: %1%2 (%3%)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="599"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="621"/>
         <source>Ascend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="626"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="638"/>
         <source>, %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Ascend: -</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="633"/>
         <source> Descend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="616"/>
         <source>Descend: -</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
-        <source>Dist.: %1%2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
         <source> Time: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Edit name...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Enter new track name.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
-        <source>Permanently removed points %1..%2</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="416"/>
+        <source>Time: %1, Speed: %2 %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
-        <source>Hide points.</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="423"/>
+        <source>Moving: %1, Speed: %2 %3</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="593"/>
+        <source>Distance: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="643"/>
+        <source>Distance: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1286"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1485"/>
         <source>Show points.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2040"/>
         <source>Changed name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2046"/>
         <source>Changed comment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2052"/>
         <source>Changed description</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2058"/>
         <source>Changed links</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2085"/>
         <source>Changed activity to '%1' for complete track.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1155,7 +1163,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
+        <location filename="../qlgt/converter.cpp" line="195"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1341,209 +1349,209 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Edit..</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Show on Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Hide from Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save As...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Send to Devices</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Sync. with Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="111"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="118"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Update Project on Device</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="119"/>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="123"/>
+        <location filename="../gis/CGisListWks.cpp" line="144"/>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Edit...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Copy to...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Track Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Select Range</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Edit Track Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="137"/>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
         <source>Reverse Track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
         <source>Combine Tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="146"/>
+        <location filename="../gis/CGisListWks.cpp" line="150"/>
         <source>Show Bubble</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="148"/>
+        <location filename="../gis/CGisListWks.cpp" line="152"/>
         <source>Move Waypoint</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="149"/>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
         <source>Proj. Waypoint...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="157"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Route Instructions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="159"/>
+        <location filename="../gis/CGisListWks.cpp" line="163"/>
         <source>Calculate Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="160"/>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
         <source>Reset Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="161"/>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
         <source>Edit Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="170"/>
+        <location filename="../gis/CGisListWks.cpp" line="174"/>
         <source>Edit Area Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="177"/>
+        <location filename="../gis/CGisListWks.cpp" line="181"/>
         <source>Create Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="621"/>
+        <location filename="../gis/CGisListWks.cpp" line="625"/>
         <source>Drop items...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="646"/>
-        <location filename="../gis/CGisListWks.cpp" line="1632"/>
-        <location filename="../gis/CGisListWks.cpp" line="1670"/>
+        <location filename="../gis/CGisListWks.cpp" line="650"/>
+        <location filename="../gis/CGisListWks.cpp" line="1581"/>
+        <location filename="../gis/CGisListWks.cpp" line="1619"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <location filename="../gis/CGisListWks.cpp" line="779"/>
         <source>Saving workspace. Please wait.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <location filename="../gis/CGisListWks.cpp" line="825"/>
         <source>Loading workspace. Please wait.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>Close all projects...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>This will remove all projects from the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Delete project...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Do you really want to delete %1?</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../gis/CGisListWks.cpp" line="1347"/>
-        <source>Copy items...</source>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>Load project...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="529"/>
+        <source>Copy items...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Cut Track...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Do you want to delete the original track?</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CGpsProject</name>
+    <name>CGpxProject</name>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
         <source>Failed to load file %1...</source>
@@ -1722,664 +1730,669 @@ line %2, column %3:
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="617"/>
+        <location filename="../CMainWindow.cpp" line="643"/>
         <source>Ele: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="633"/>
+        <location filename="../CMainWindow.cpp" line="659"/>
         <source>[Grid: %1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="758"/>
+        <location filename="../CMainWindow.cpp" line="794"/>
         <source>Load GIS Data...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>QMapShack View (*.view)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>Select file to load</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>CMapDraw</name>
+    <message>
+        <location filename="../map/CMapDraw.cpp" line="406"/>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. 
+
+If it's no fun, why don't you provide maps? Well to host maps ready for download and installation requires a good server. And this is not a free service. The project lacks the money. Additionally map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package the data. This is not that easy as it might sound and for some data you have to pay royalties. The project simply lacks resources to do this. And we think installing the stuff yourself is  [...]
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <location filename="../map/CMapIMG.cpp" line="145"/>
         <source>Failed ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <location filename="../map/CMapIMG.cpp" line="435"/>
         <source>Failed to read: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <location filename="../map/CMapIMG.cpp" line="478"/>
         <source>Failed to open: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <location filename="../map/CMapIMG.cpp" line="502"/>
+        <location filename="../map/CMapIMG.cpp" line="506"/>
         <source>Bad file format: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <location filename="../map/CMapIMG.cpp" line="595"/>
         <source>Failed to read file structure: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <location filename="../map/CMapIMG.cpp" line="630"/>
         <source>Loading %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <location filename="../map/CMapIMG.cpp" line="636"/>
         <source>User abort: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2502"/>
-        <location filename="../map/CMapIMG.cpp" line="2510"/>
-        <location filename="../map/CMapIMG.cpp" line="2514"/>
-        <location filename="../map/CMapIMG.cpp" line="2519"/>
-        <location filename="../map/CMapIMG.cpp" line="2565"/>
-        <location filename="../map/CMapIMG.cpp" line="2573"/>
-        <location filename="../map/CMapIMG.cpp" line="2577"/>
-        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <location filename="../map/CMapIMG.cpp" line="2305"/>
+        <location filename="../map/CMapIMG.cpp" line="2311"/>
+        <location filename="../map/CMapIMG.cpp" line="2315"/>
         <source>Point of Interest</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <location filename="../map/CMapIMG.cpp" line="2401"/>
         <source>Unknown</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2755"/>
-        <location filename="../map/CMapIMG.cpp" line="2763"/>
-        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <location filename="../map/CMapIMG.cpp" line="2443"/>
+        <location filename="../map/CMapIMG.cpp" line="2451"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Area</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2387,17 +2400,17 @@ line %2, column %3:
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Deactivate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Activate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="228"/>
+        <location filename="../map/CMapList.cpp" line="233"/>
         <source>Where do you want to store maps?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2725,12 +2738,17 @@ Unknown structure.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
-        <source>Copy position</source>
+        <location filename="../mouse/CMouseNormal.cpp" line="44"/>
+        <source>Select Items On Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <source>Copy position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseNormal.cpp" line="47"/>
         <source>Copy position (Grid)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2738,8 +2756,8 @@ Unknown structure.</source>
 <context>
     <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
-        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
+        <location filename="../mouse/CMousePrint.cpp" line="31"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2752,6 +2770,39 @@ Unknown structure.</source>
     </message>
 </context>
 <context>
+    <name>CMouseSelect</name>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="31"/>
+        <source><b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="96"/>
+        <source><b>Selected:</b><br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="98"/>
+        <source>%1 waypoints<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="97"/>
+        <source>%1 tracks<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="99"/>
+        <source>%1 routes<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="100"/>
+        <source>%1 areas<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPhotoAlbum</name>
     <message>
         <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
@@ -2760,14 +2811,27 @@ Unknown structure.</source>
     </message>
 </context>
 <context>
+    <name>CPlot</name>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="55"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="60"/>
+        <source>time</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="78"/>
         <source>distance [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <location filename="../plot/CPlotProfile.cpp" line="79"/>
         <source>alt. [%1]</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2867,19 +2931,6 @@ is not a valid coordinate system definition:
     </message>
 </context>
 <context>
-    <name>CPropertyTrk</name>
-    <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
-        <source>distance [%1]</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
-        <source>time</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>CQlgtDb</name>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
@@ -3051,13 +3102,13 @@ is not a valid coordinate system definition:
     <name>CQmsProject</name>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3462,6 +3513,59 @@ is not a valid coordinate system definition:
     </message>
 </context>
 <context>
+    <name>CScrOptSelect</name>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="93"/>
+        <source><b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="97"/>
+        <source><b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="101"/>
+        <source><b>Add Tracks</b><br/>Add tracks to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="105"/>
+        <source><b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="109"/>
+        <source><b>Add Routes</b><br/>Add routes to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="113"/>
+        <source><b>Add Areas</b><br/>Add areas to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="124"/>
+        <source><b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="128"/>
+        <source><b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="132"/>
+        <source><b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="136"/>
+        <source><b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
@@ -3531,39 +3635,44 @@ is not a valid coordinate system definition:
 <context>
     <name>CSlfReader</name>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="63"/>
+        <source>Failed to parse timestamp `%1`</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="76"/>
         <source>%1 does not exist</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="81"/>
         <source>Failed to open %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="92"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="99"/>
         <source>Not a SLF file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="106"/>
         <source>Unsupported revision %1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="181"/>
         <source>Break %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="185"/>
         <source>Lap %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3579,21 +3688,21 @@ line %2, column %3:
 <context>
     <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3617,6 +3726,14 @@ line %2, column %3:
     </message>
 </context>
 <context>
+    <name>CWptIconDialog</name>
+    <message>
+        <location filename="../helpers/CWptIconDialog.cpp" line="160"/>
+        <source>Path to user icons...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -3737,7 +3854,7 @@ line %2, column %3:
         <source><b>Binaries:</b></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation type="unfinished"></translation>
@@ -3758,7 +3875,7 @@ Ivo Kronenberg</source>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation type="unfinished"></translation>
@@ -3828,17 +3945,17 @@ Ivo Kronenberg</source>
         <source>Coordinate Format...</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
         <translation type="unfinished"></translation>
@@ -4009,7 +4126,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Slope </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
@@ -4046,7 +4163,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="118"/>
-        <source>To add files with elevation data use File->Setup DEM Paths. </source>
+        <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -4329,22 +4446,22 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="444"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="473"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="538"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="564"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="593"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="711"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1040"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1069"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1101"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1137"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1198"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1234"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1263"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1295"/>
         <source>...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4364,175 +4481,175 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="419"/>
         <source>Source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="624"/>
         <source>Maximum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Use/edit user defined visibility of arrows for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="470"/>
         <source>Use/edit system's visibility of arrows for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="764"/>
         <source>Minimum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="832"/>
         <source>Graphs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1019"/>
         <source>Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
         <source>Use/edit user defined scale factor for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
         <source>Use/edit system's default factor for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="631"/>
         <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="638"/>
         <source>x </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="535"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1037"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1134"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1231"/>
         <source>User defined limits for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="561"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1066"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1260"/>
         <source>Automatic limits</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="590"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1098"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1195"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1292"/>
         <source>User defined limits for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="784"/>
         <source>Color</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="845"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="865"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="951"/>
         <source>max.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="984"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1005"/>
         <source>min.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1324"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1365"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1392"/>
         <source>Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1440"/>
         <source>Time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1445"/>
         <source>Ele.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1450"/>
         <source>Delta</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1455"/>
         <source>Dist.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1460"/>
         <source>Speed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1465"/>
         <source>Slope</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1470"/>
         <source>Ascend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1475"/>
         <source>Descend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1480"/>
         <source>Position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1489"/>
         <source>Filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1526"/>
         <source>Hist.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4614,7 +4731,7 @@ If you want to keep just one half you can simply remove the points, or check thi
 <context>
     <name>IDevice</name>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
+        <location filename="../device/IDevice.cpp" line="287"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4989,66 +5106,72 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <location filename="../gis/IGisItem.cpp" line="314"/>
         <source>The item is not part of the project in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <location filename="../gis/IGisItem.cpp" line="315"/>
+        <source>
+It is either a new item or it has been deleted in the database by someone else.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="321"/>
         <source>The item is not in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <location filename="../gis/IGisItem.cpp" line="327"/>
         <source>The item might need to be saved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <location filename="../gis/IGisItem.cpp" line="411"/>
         <source>Initial version.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <location filename="../gis/IGisItem.cpp" line="519"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <location filename="../gis/IGisItem.cpp" line="520"/>
         <source>Read Only Mode...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="670"/>
-        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
         <source><h4>Description:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="673"/>
-        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
         <source><p>--- no description ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
         <source><h4>Comment:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
         <source><p>--- no comment ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="698"/>
-        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <location filename="../gis/IGisItem.cpp" line="712"/>
+        <location filename="../gis/IGisItem.cpp" line="757"/>
         <source><h4>Links:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="701"/>
-        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <location filename="../gis/IGisItem.cpp" line="715"/>
+        <location filename="../gis/IGisItem.cpp" line="760"/>
         <source><p>--- no links ---</p></source>
         <translation type="unfinished"></translation>
     </message>
@@ -5066,58 +5189,58 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="258"/>
         <source>%1: Correlate tracks and waypoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="268"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="269"/>
         <source>Canceled correlation...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Save "%1" to...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="420"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="425"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="429"/>
         <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="433"/>
         <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="437"/>
         <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="557"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="558"/>
         <source>Delete...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5241,6 +5364,14 @@ Filename: %1</source>
     </message>
 </context>
 <context>
+    <name>ILineOp</name>
+    <message>
+        <location filename="../mouse/line/ILineOp.cpp" line="214"/>
+        <source>Routing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>ILinksDialog</name>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
@@ -5287,313 +5418,328 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
+        <location filename="../IMainWindow.ui" line="103"/>
         <source>Window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
+        <location filename="../IMainWindow.ui" line="108"/>
         <source>?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
+        <location filename="../IMainWindow.ui" line="115"/>
         <source>Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
+        <location filename="../IMainWindow.ui" line="126"/>
         <source>Tool</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
+        <location filename="../IMainWindow.ui" line="151"/>
         <source>Maps</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
+        <location filename="../IMainWindow.ui" line="194"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="285"/>
+        <location filename="../IMainWindow.ui" line="288"/>
         <source>Add Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="291"/>
         <source>Ctrl+T</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="306"/>
         <source>Show Scale</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="318"/>
         <source>Setup Map Font</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="333"/>
         <source>Show Grid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="336"/>
         <source>Ctrl+G</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="348"/>
         <source>Setup Grid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
+        <location filename="../IMainWindow.ui" line="351"/>
         <source>Ctrl+Alt+G</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="366"/>
         <source>Flip Mouse Wheel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="381"/>
         <source>Setup Map Paths</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="396"/>
         <source>POI Text</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="411"/>
         <source>Night / Day</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="426"/>
         <source>Map Tool Tip</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
+        <location filename="../IMainWindow.ui" line="429"/>
         <source>Ctrl+I</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
+        <location filename="../IMainWindow.ui" line="441"/>
         <source>Setup DEM Paths</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="453"/>
         <source>About</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="465"/>
         <source>Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="468"/>
         <source>F1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <location filename="../IMainWindow.ui" line="442"/>
+        <location filename="../IMainWindow.ui" line="480"/>
+        <location filename="../IMainWindow.ui" line="483"/>
         <source>Setup Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="495"/>
         <source>Load GIS Data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="498"/>
         <source>Load projects from file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="501"/>
         <source>Ctrl+L</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="513"/>
         <source>Save All GIS Data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="516"/>
         <source>Save all projects in the workspace</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="472"/>
+        <location filename="../IMainWindow.ui" line="519"/>
         <source>Ctrl+S</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="481"/>
+        <location filename="../IMainWindow.ui" line="531"/>
         <source>Setup Time Zone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="490"/>
+        <location filename="../IMainWindow.ui" line="543"/>
         <source>Add empty project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="502"/>
+        <location filename="../IMainWindow.ui" line="558"/>
         <source>Search Google</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="570"/>
         <source>Close all projects</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="514"/>
+        <location filename="../IMainWindow.ui" line="573"/>
         <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="523"/>
+        <location filename="../IMainWindow.ui" line="585"/>
         <source>Setup Units</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="597"/>
         <source>Setup Workspace</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="535"/>
+        <location filename="../IMainWindow.ui" line="600"/>
         <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="612"/>
         <source>Import Database from QLandkarte</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="547"/>
+        <location filename="../IMainWindow.ui" line="615"/>
         <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="627"/>
         <source>VRT Builder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="559"/>
+        <location filename="../IMainWindow.ui" line="630"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="642"/>
         <source>Store Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="571"/>
+        <location filename="../IMainWindow.ui" line="645"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="657"/>
         <source>Load Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="583"/>
+        <location filename="../IMainWindow.ui" line="660"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="675"/>
         <source>Ext. Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="598"/>
+        <location filename="../IMainWindow.ui" line="678"/>
         <source>Ctrl+E</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="690"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="610"/>
+        <location filename="../IMainWindow.ui" line="693"/>
         <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="705"/>
         <source>Clone Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="622"/>
+        <location filename="../IMainWindow.ui" line="708"/>
         <source>Ctrl+Shift+T</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="631"/>
+        <location filename="../IMainWindow.ui" line="720"/>
         <source>Create Routino Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="732"/>
         <source>Save(Print) Map Screenshot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="735"/>
         <source>Print a selected area of the map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="646"/>
+        <location filename="../IMainWindow.ui" line="738"/>
         <source>Ctrl+P</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="750"/>
         <source>Setup Coord. Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="658"/>
+        <location filename="../IMainWindow.ui" line="753"/>
         <source>Change the format coordinates are displayed</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="765"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="777"/>
+        <source>Setup Waypoint Icons</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="780"/>
+        <source>Setup path to custom icons</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapList</name>
@@ -5604,7 +5750,7 @@ Filename: %1</source>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="103"/>
-        <source>To add maps use File->Setup Map Paths. </source>
+        <source>To add maps use <b>File->Setup Map Paths</b>. </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -5787,62 +5933,62 @@ I don't want to read the documentation!</source>
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="264"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="347"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="353"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="358"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="530"/>
         <source><b>%1 Metrics</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="533"/>
         <source>Distance:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="535"/>
         <source>Ascend:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="537"/>
         <source>Descend:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5864,27 +6010,32 @@ I don't want to read the documentation!</source>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Reset Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="94"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Stop Range</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="95"/>
+        <location filename="../plot/IPlot.cpp" line="96"/>
         <source>Save...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="638"/>
+        <location filename="../plot/IPlot.cpp" line="98"/>
+        <source>Add Waypoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="647"/>
         <source>No or bad data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <location filename="../plot/IPlot.cpp" line="1244"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6044,7 +6195,7 @@ or
         <source>m</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation type="unfinished"></translation>
@@ -6147,7 +6298,7 @@ or
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
-        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -6387,6 +6538,30 @@ or
     </message>
 </context>
 <context>
+    <name>IScrOptPrint</name>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="35"/>
+        <source>Save selected area as image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="38"/>
+        <location filename="../mouse/IScrOptPrint.ui" line="58"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="55"/>
+        <source>Print selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptRangeLine</name>
     <message>
         <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
@@ -6506,6 +6681,78 @@ or
     </message>
 </context>
 <context>
+    <name>IScrOptSelect</name>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="59"/>
+        <source>Copy all selected items to a project.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="62"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="82"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="102"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="122"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="176"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="205"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="265"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="291"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="317"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="343"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="79"/>
+        <source>Create a route from selected waypoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="99"/>
+        <source>Combine all selected tracks to a new one.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="119"/>
+        <source>Delete all selected items.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="173"/>
+        <source>Select all items that intersect the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="202"/>
+        <source>Select all itmes that are completely inside the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="262"/>
+        <source>Add tracks to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="288"/>
+        <source>Add waypoints to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="314"/>
+        <source>Add routes to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="340"/>
+        <source>Add areas to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptTrk</name>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
@@ -7221,18 +7468,18 @@ or
 <context>
     <name>IUnit</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Position values out of bounds. </source>
         <translation type="unfinished"></translation>
     </message>
@@ -7272,5 +7519,25 @@ or
         <source>Icons...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="68"/>
+        <source>External Icons:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="75"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="82"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="95"/>
+        <source>All custom icons have to be *.bmp format.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index 51e760e..9047b3e 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="cs_CZ">
+<TS version="2.1" language="cs_CZ">
 <context>
     <name>CAbout</name>
     <message>
@@ -24,101 +24,101 @@
         <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
         <source>Foot</source>
-        <translation type="unfinished">Chodec</translation>
+        <translation>Chodec</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
         <source>Bicycle</source>
-        <translation type="unfinished">Jízdní kolo</translation>
+        <translation>Jízdní kolo</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
         <source>Motor Bike</source>
-        <translation type="unfinished">Motocykl</translation>
+        <translation>Motocykl</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
         <source>Car</source>
-        <translation type="unfinished">Auto</translation>
+        <translation>Auto</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
         <source>Cable Car</source>
-        <translation type="unfinished">Lanovka</translation>
+        <translation>Lanovka</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
         <source>Swim</source>
-        <translation type="unfinished">Plavání</translation>
+        <translation>Plavání</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
         <source>Ship</source>
-        <translation type="unfinished">Loď</translation>
+        <translation>Loď</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
         <source>Aeronautik</source>
-        <translation type="unfinished">Vzduchoplavba</translation>
+        <translation>Vzduchoplavba</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
         <source>Ski/Winter</source>
-        <translation type="unfinished"></translation>
+        <translation>Lyže/Zima</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
         <source>Aeronautics</source>
-        <translation type="unfinished">Letectví</translation>
+        <translation>Letectví</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
         <source>Distance:</source>
-        <translation type="unfinished">Vzdálenost:</translation>
+        <translation>Vzdálenost:</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
         <source>Ascend:</source>
-        <translation type="unfinished">Stoupání:</translation>
+        <translation>Stoupání:</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
         <source>Descend:</source>
-        <translation type="unfinished">Klesání:</translation>
+        <translation>Klesání:</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
         <source>Speed Moving:</source>
-        <translation type="unfinished">Rychlost při pohybu:</translation>
+        <translation>Rychlost při pohybu:</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
         <source>Speed Total:</source>
-        <translation type="unfinished">Celková rychlost:</translation>
+        <translation>Celková rychlost:</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
         <source>Time Moving:</source>
-        <translation type="unfinished">Čas při pohybu:</translation>
+        <translation>Čas při pohybu:</translation>
     </message>
     <message>
         <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
         <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
         <source>Time Total:</source>
-        <translation type="unfinished">Celkový čas:</translation>
+        <translation>Celkový čas:</translation>
     </message>
 </context>
 <context>
@@ -132,44 +132,49 @@
         <source>View %1</source>
         <translation>Pohled %1</translation>
     </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="674"/>
+        <source>Setup Map Background</source>
+        <translation>Nastavit pozadí mapy</translation>
+    </message>
 </context>
 <context>
     <name>CColorChooser</name>
     <message>
         <location filename="../widgets/CColorChooser.cpp" line="51"/>
         <source>Esc.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esc</translation>
     </message>
 </context>
 <context>
     <name>CCommandProcessor</name>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
         <translation>Zobrazit výstup ladění v konzoli.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
         <translation>Uložit výstup ladění do souboru se zápisem (cesta temp).</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
         <translation>Neukazovat uvítací obrazovku.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
         <translation>Soubor s nastavením pro QMapShack.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation>Soubor</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
         <translation>Soubory pro pozdější potřebu.</translation>
     </message>
@@ -179,12 +184,12 @@
     <message>
         <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
         <source>Enter new route name.</source>
-        <translation type="unfinished">Zadat nový název pro cestu.</translation>
+        <translation>Zadat nový název pro cestu.</translation>
     </message>
 </context>
 <context>
@@ -192,17 +197,17 @@
     <message>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation type="unfinished">Všechna data seskupená podle složek.</translation>
+        <translation>Všechna data seskupená podle složek.</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
         <source>Lost & Found (%1)</source>
-        <translation type="unfinished">Ztraceno a nalezeno (%1)</translation>
+        <translation>Ztraceno a nalezeno (%1)</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
         <source>Lost & Found</source>
-        <translation type="unfinished">Ztraceno a nalezeno</translation>
+        <translation>Ztraceno a nalezeno</translation>
     </message>
 </context>
 <context>
@@ -210,28 +215,28 @@
     <message>
         <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
         <source>All your data grouped by folders.</source>
-        <translation type="unfinished">Všechna data seskupená podle složek.</translation>
+        <translation>Všechna data seskupená podle složek.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="52"/>
         <source>MySQL Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Databáze MySQL</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="55"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="59"/>
         <source>Server: </source>
-        <translation type="unfinished"></translation>
+        <translation>Server: </translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="64"/>
         <source> (No PW)</source>
-        <translation type="unfinished"></translation>
+        <translation> (žádné heslo)</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="72"/>
         <source>Error: </source>
-        <translation type="unfinished">Chyba: </translation>
+        <translation>Chyba: </translation>
     </message>
 </context>
 <context>
@@ -239,17 +244,17 @@
     <message>
         <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
         <source>All your data grouped by folders.</source>
-        <translation type="unfinished">Všechna data seskupená podle složek.</translation>
+        <translation>Všechna data seskupená podle složek.</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
         <source>SQLite Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Databáze SQLite</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
         <source>File: </source>
-        <translation type="unfinished"></translation>
+        <translation>Soubor: </translation>
     </message>
 </context>
 <context>
@@ -257,95 +262,99 @@
     <message>
         <location filename="../gis/db/CDBItem.cpp" line="87"/>
         <source>%1 min.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 m</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBItem.cpp" line="91"/>
         <source>%1 h</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 h</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBItem.cpp" line="95"/>
         <source>%1 days</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 dnů</translation>
     </message>
 </context>
 <context>
     <name>CDBProject</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <location filename="../gis/db/CDBProject.cpp" line="219"/>
         <source>The item %1 has been changed by %2 (%3). 
 
 To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
-        <translation type="unfinished"></translation>
+        <translation>Prvek  %1 byl změněn pomocí %2 (%3).
+
+K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji verzi, nebo ji zahodit a vzít jednu z databáze</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <location filename="../gis/db/CDBProject.cpp" line="225"/>
         <source>Conflict with database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Střet s databází...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <location filename="../gis/db/CDBProject.cpp" line="226"/>
         <source>Clone && Save</source>
-        <translation type="unfinished"></translation>
+        <translation>Klonovat a uložit</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <location filename="../gis/db/CDBProject.cpp" line="227"/>
         <source>Force Save</source>
-        <translation type="unfinished"></translation>
+        <translation>Vynutit uložení</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <location filename="../gis/db/CDBProject.cpp" line="228"/>
         <source>Take remote</source>
-        <translation type="unfinished"></translation>
+        <translation>Vzít vzdálenou verzi</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <location filename="../gis/db/CDBProject.cpp" line="531"/>
         <source>Missing folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Chybí složka...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <location filename="../gis/db/CDBProject.cpp" line="532"/>
         <source>Failed to save project. The folder has been deleted in the database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se uložit projekt. Složka byla v databázi smazána.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <location filename="../gis/db/CDBProject.cpp" line="539"/>
         <source>Save ...</source>
-        <translation type="unfinished">Uložit...</translation>
+        <translation>Uložit...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>Error</source>
-        <translation type="unfinished">Chyba</translation>
+        <translation>Chyba</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>There was an unexpected database error:
 
 %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Vyskytla se neočekávaná chyba databáze:
+
+%1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <location filename="../gis/db/CDBProject.cpp" line="727"/>
         <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
-        <translation type="unfinished"></translation>
+        <translation>Projekt '%1' se právě bude aktualizovat z databáze. Jsou tu ovšem neuložené změny.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <location filename="../gis/db/CDBProject.cpp" line="728"/>
         <source>Save changes?</source>
-        <translation type="unfinished"></translation>
+        <translation>Uložit změny?</translation>
     </message>
 </context>
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Deactivate</source>
         <translation>Vypnout</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
@@ -355,12 +364,12 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../dem/CDemPathSetup.cpp" line="41"/>
         <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation>Přidat nebo odstranit cesty obsahující data DEM. V cestě může být více souborů, ale žádná podcesta není zpracována. Podporovanými formáty jsou: %1</translation>
+        <translation>Přidat nebo odstranit cesty obsahující data s výškovým modelem (DEM). V cestě může být více souborů, ale žádná podcesta není zpracována. Podporovanými formáty jsou: %1</translation>
     </message>
     <message>
         <location filename="../dem/CDemPathSetup.cpp" line="56"/>
         <source>Select DEM file path...</source>
-        <translation>Vybrat cestu k souboru DEM...</translation>
+        <translation>Vybrat cestu k souboru s výškovým modelem...</translation>
     </message>
 </context>
 <context>
@@ -389,7 +398,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <location filename="../dem/CDemVRT.cpp" line="52"/>
         <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
-        <translation>DEM musí mít jedno pásmo s 16bitovými nebo 32bitovými daty.</translation>
+        <translation>Výškový model (DEM) musí mít jedno pásmo s 16bitovými nebo 32bitovými daty.</translation>
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="90"/>
@@ -416,7 +425,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation>Hledají se obrázky...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="264"/>
         <source>No images found</source>
         <translation>Nebyly nalezeny žádné obrázky</translation>
     </message>
@@ -599,49 +608,49 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Plná barva </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="181"/>
         <source>Reduce visible track points</source>
         <translation>Omezit počet viditelných bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="184"/>
         <source>Change elevation of track points</source>
         <translation>Změnit informace o výškách bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="187"/>
         <source>Change timestamp of track points</source>
         <translation>Změnit časová razítka bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="190"/>
         <source>Modify track points' extensions</source>
-        <translation type="unfinished"></translation>
+        <translation>Změnit rozšíření bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>Cut track into pieces</source>
         <translation>Rozkrájet stopu na kusy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="410"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="418"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="421"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="442"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="507"/>
         <source>Color</source>
-        <translation type="unfinished">Barva</translation>
+        <translation>Barva</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
         <source>Activity</source>
-        <translation type="unfinished">Činnost</translation>
+        <translation>Činnost</translation>
     </message>
     <message>
         <source>Edit name...</source>
@@ -652,17 +661,17 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Zadat název nové stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>Reset activities...</source>
         <translation>Nastavit činnosti znovu...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation>Tímto budou všechny činnosti odstraněny ze stopy. Pokračovat?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="747"/>
         <source>None</source>
         <translation>Žádné</translation>
     </message>
@@ -722,14 +731,27 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDeviceGarmin</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="254"/>
         <source>Picture%1</source>
-        <translation type="unfinished">Obrázek %1</translation>
+        <translation>Obrázek %1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <location filename="../gis/gpx/serialization.cpp" line="1038"/>
         <source>Unknown</source>
-        <translation type="unfinished">Neznámý</translation>
+        <translation>Neznámý</translation>
+    </message>
+</context>
+<context>
+    <name>CDeviceGarminArchive</name>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="30"/>
+        <source>Archive - expand to load</source>
+        <translation>Archiv - Rozbalit k nahrání</translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="43"/>
+        <source>Archive - loaded</source>
+        <translation>Archiv - Nahráno</translation>
     </message>
 </context>
 <context>
@@ -737,15 +759,15 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
         <source>No DEM data found for that point.</source>
-        <translation>Pro tento bod nebyla nalezena žádná data DEM.</translation>
+        <translation>Pro tento bod nebyla nalezena žádná data výškového modelu (DEM).</translation>
     </message>
 </context>
 <context>
     <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="57"/>
         <source>No extension available</source>
-        <translation type="unfinished"></translation>
+        <translation>Není dostupné žádné rozšíření</translation>
     </message>
 </context>
 <context>
@@ -753,7 +775,7 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
         <source>FIT decoding error : invalid CRC.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Neplatné CRC.</translation>
     </message>
 </context>
 <context>
@@ -761,7 +783,7 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
         <source>FIT decoding error: unexpected end of file %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Neočekávaný konec souboru %1.</translation>
     </message>
 </context>
 <context>
@@ -769,20 +791,20 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
         <source>FIT decoding error: unknown base type %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Neznámý datový typ %1.</translation>
     </message>
 </context>
 <context>
     <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="69"/>
         <source>FIT decoding error: protocol %1 version not supported.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Verze protokolu %1 není podporována.</translation>
     </message>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="120"/>
         <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Nesouhlasí signatura hlavičky. Soubor není FIT.</translation>
     </message>
 </context>
 <context>
@@ -791,12 +813,12 @@ To solve this conflict you can create and save a clone, force your version or dr
         <location filename="../gis/fit/CFitProject.cpp" line="44"/>
         <location filename="../gis/fit/CFitProject.cpp" line="62"/>
         <source>Failed to load file %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se nahrát soubor %1...</translation>
     </message>
     <message>
         <location filename="../gis/fit/CFitProject.cpp" line="86"/>
         <source>Failed to open FIT file %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se otevřít soubor FIT %1.</translation>
     </message>
 </context>
 <context>
@@ -804,12 +826,12 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
         <source>FIT decoding error: architecture %1 not supported.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Architektura %1 není podporována.</translation>
     </message>
     <message>
         <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
         <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Neplatný posun %1 pro stav 'zaznamenaný obsah'</translation>
     </message>
 </context>
 <context>
@@ -818,17 +840,17 @@ To solve this conflict you can create and save a clone, force your version or dr
         <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
         <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>Warning...</source>
-        <translation type="unfinished">Varování...</translation>
+        <translation>Varování...</translation>
     </message>
     <message>
         <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation type="unfinished">Toto je souborový typ s neznámým druhem mnohoúhelníku. Nahlašte to, prosím!</translation>
+        <translation>Toto je souborový typ s neznámým kódováním mnohoúhelníku. Nahlašte to, prosím!</translation>
     </message>
     <message>
         <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation type="unfinished">Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
+        <translation>Toto je souborový typ s neznámým kódováním čáry. Nahlašte to, prosím!</translation>
     </message>
 </context>
 <context>
@@ -836,77 +858,77 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
         <source>thin</source>
-        <translation type="unfinished">Tenký</translation>
+        <translation>Tenký</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
         <source>normal</source>
-        <translation type="unfinished">Obvyklý</translation>
+        <translation>Obvyklý</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
         <source>wide</source>
-        <translation type="unfinished">Široký</translation>
+        <translation>Široký</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
         <source>strong</source>
-        <translation type="unfinished">Silný</translation>
+        <translation>Silný</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
         <source>_Clone</source>
-        <translation type="unfinished">_Klon</translation>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="385"/>
         <source>Area: %1%2</source>
-        <translation type="unfinished">Oblast: %1%2</translation>
+        <translation>Oblast: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="447"/>
         <source>Changed area shape.</source>
-        <translation type="unfinished">Změněn tvar oblasti.</translation>
+        <translation>Změněn tvar oblasti.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="455"/>
         <source>Changed name.</source>
-        <translation type="unfinished">Změněn název.</translation>
+        <translation>Změněn název.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
         <source>Changed border width.</source>
-        <translation type="unfinished">Změněna šířka okraje.</translation>
+        <translation>Změněna šířka okraje.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="467"/>
         <source>Changed fill pattern.</source>
-        <translation type="unfinished">Změněn vzor výplně.</translation>
+        <translation>Změněn vzor výplně.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="473"/>
         <source>Changed opacity.</source>
-        <translation type="unfinished">Změněna neprůhlednost.</translation>
+        <translation>Změněna neprůhlednost.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="479"/>
         <source>Changed comment.</source>
-        <translation type="unfinished">Změněna poznámka.</translation>
+        <translation>Změněna poznámka.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="485"/>
         <source>Changed description.</source>
-        <translation type="unfinished">Změněn popis.</translation>
+        <translation>Změněn popis.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="491"/>
         <source>Changed links</source>
-        <translation type="unfinished">Změněné odkazy</translation>
+        <translation>Změněné odkazy</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed color</source>
-        <translation type="unfinished">Změněná barva</translation>
+        <translation>Změněná barva</translation>
     </message>
 </context>
 <context>
@@ -914,76 +936,76 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
         <source>_Clone</source>
-        <translation type="unfinished">_Klon</translation>
+        <translation>_Klon</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
         <source>Changed name.</source>
-        <translation type="unfinished">Změněn název.</translation>
+        <translation>Změněn název.</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
         <source>Changed comment</source>
-        <translation type="unfinished">Změněná poznámka</translation>
+        <translation>Změněná poznámka</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
         <source>Changed description</source>
-        <translation type="unfinished">Změněný popis</translation>
+        <translation>Změněný popis</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
         <source>Changed links</source>
-        <translation type="unfinished">Změněné odkazy</translation>
+        <translation>Změněné odkazy</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
         <source>Length: %1 %2</source>
-        <translation type="unfinished">Délka: %1 %2</translation>
+        <translation>Délka: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
         <source>Length: -</source>
-        <translation type="unfinished">Délka: -</translation>
+        <translation>Délka: -</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="485"/>
         <source>Time: %1 %2</source>
-        <translation type="unfinished">Čas: %1 %2</translation>
+        <translation>Čas: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
         <source>Time: -</source>
-        <translation type="unfinished">Výsledný čas: -</translation>
+        <translation>Výsledný čas: -</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
         <source>Last time routed:<br/>%1</source>
-        <translation type="unfinished">Poslední spočítání cesty:<br/>%1</translation>
+        <translation>Poslední spočítání cesty:<br/>%1</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
         <source>with %1</source>
-        <translation type="unfinished">s %1</translation>
+        <translation>s %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="487"/>
         <source>Distance: %1 %2</source>
-        <translation type="unfinished">Vzdálenost: %1 %2</translation>
+        <translation>Vzdálenost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="601"/>
         <source>Changed route points.</source>
-        <translation type="unfinished">Změněné body cesty.</translation>
+        <translation>Změněné body cesty.</translation>
     </message>
 </context>
 <context>
     <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <location filename="../gis/fit/serialization.cpp" line="182"/>
         <source>FIT file %1 contains no GPS data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Soubor FIT %1 neobsahuje žádná data GPS.</translation>
     </message>
     <message>
         <location filename="../gis/tnv/serialization.cpp" line="211"/>
@@ -992,305 +1014,331 @@ To solve this conflict you can create and save a clone, force your version or dr
         <location filename="../gis/tnv/serialization.cpp" line="387"/>
         <location filename="../gis/tnv/serialization.cpp" line="420"/>
         <source>Error...</source>
-        <translation type="unfinished">Chyba...</translation>
+        <translation>Chyba...</translation>
     </message>
     <message>
         <location filename="../gis/tnv/serialization.cpp" line="211"/>
         <location filename="../gis/tnv/serialization.cpp" line="347"/>
         <source>Failed to open %1.</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1.</translation>
+        <translation>Nepodařilo se otevřít %1.</translation>
     </message>
     <message>
         <location filename="../gis/tnv/serialization.cpp" line="376"/>
         <location filename="../gis/tnv/serialization.cpp" line="387"/>
         <source>Only support lon/lat WGS 84 format.</source>
-        <translation type="unfinished">Jako formát je podporován jen lon/lat WGS 84.</translation>
+        <translation>Jako formát je podporován jen lon/lat WGS 84.</translation>
     </message>
     <message>
         <location filename="../gis/tnv/serialization.cpp" line="420"/>
         <source>Failed to read data.</source>
-        <translation type="unfinished">Nepodařilo se přečíst data.</translation>
+        <translation>Nepodařilo se přečíst data.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="118"/>
         <source>_Clone</source>
-        <translation type="unfinished">_Klon</translation>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="290"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation type="unfinished">Změněny body stop. Obětována veškerá předchozí data.</translation>
+        <translation>Změněny body stop. Obětována veškerá předchozí data.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
         <source>Length: %1 %2</source>
-        <translation type="unfinished">Délka: %1 %2</translation>
+        <translation>Délka: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="408"/>
         <source>, %1%2 %3, %4%5 %6</source>
-        <translation type="unfinished">, %1%2 %3, %4%5 %6</translation>
+        <translation>, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
         <source>Time: %1</source>
-        <translation type="unfinished">Čas: %1</translation>
+        <translation type="obsolete">Čas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
         <source>, Speed: %1 %2</source>
-        <translation type="unfinished">, Rychlost: %1 %2</translation>
+        <translation type="obsolete">, Rychlost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
         <source>Moving: %1</source>
-        <translation type="unfinished">Pohyb: %1</translation>
+        <translation type="obsolete">Pohyb: %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
         <source>Start: %1</source>
-        <translation type="unfinished">Začátek: %1</translation>
+        <translation>Začátek: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="432"/>
         <source>End: %1</source>
-        <translation type="unfinished">Konec: %1</translation>
+        <translation>Konec: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
         <source>Points: %1 (%2)</source>
-        <translation type="unfinished">Body: %1 (%2)</translation>
+        <translation>Body: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="527"/>
         <source>Ele.: %1 %2</source>
-        <translation type="unfinished">Výška: %1 %2</translation>
+        <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="530"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation type="unfinished"> sklon: %1%3 (%2%)</translation>
+        <translation> sklon: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="535"/>
         <source> speed: %1%2</source>
-        <translation type="unfinished"> rychlost: %1%2</translation>
+        <translation> rychlost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="563"/>
         <source>... and %1 tags not displayed</source>
-        <translation type="unfinished">... a %1 značek nezobrazeno</translation>
+        <translation>... a %1 značek nezobrazeno</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="574"/>
+        <source>Descend: - (-)</source>
+        <translation>Klesání: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
+        <source>Distance: - (-)</source>
+        <translation>Vzdálenost: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="576"/>
+        <source>Moving: - (-)</source>
+        <translation>Pohyb: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source>Ascend: %1%2 (%3%)</source>
-        <translation type="unfinished">Stoupání: %1%2 (%3%)</translation>
+        <translation>Stoupání: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
+        <source>Hide point %1.</source>
+        <translation>Skrýt bod %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1445"/>
+        <source>Hide points %1..%2.</source>
+        <translation>Skrýt body %1  %2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
         <source>Ascend: - (-)</source>
-        <translation type="unfinished">Stoupání: - (-)</translation>
+        <translation>Stoupání: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="587"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation type="unfinished"> Klesání: %1%2 (%3%) </translation>
+        <translation> Klesání: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
         <source> Descend: - (-) </source>
-        <translation type="unfinished"> Klesání: - (-) </translation>
+        <translation type="obsolete"> Klesání: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation type="unfinished">Vzdálenost: %1%2 (%3%)</translation>
+        <translation type="obsolete">Vzdálenost: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
         <source>Dist.: - (-)</source>
-        <translation type="unfinished">Vzdálenost: - (-)</translation>
+        <translation type="obsolete">Vzdálenost: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="599"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation type="unfinished"> Pohyb: %1%2 (%3%) </translation>
+        <translation> Pohyb: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
         <source> Moving: - (-) </source>
-        <translation type="unfinished"> Pohyb: - (-) </translation>
+        <translation type="obsolete"> Pohyb: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="621"/>
         <source>Ascend: %1%2</source>
-        <translation type="unfinished">Stoupání: %1%2</translation>
+        <translation>Stoupání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="626"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="638"/>
         <source>, %1%2</source>
-        <translation type="unfinished">, %1%2</translation>
+        <translation>, %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Ascend: -</source>
-        <translation type="unfinished">Stoupání: -</translation>
+        <translation>Stoupání: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="633"/>
         <source> Descend: %1%2</source>
-        <translation type="unfinished"> Klesání: %1%2</translation>
+        <translation> Klesání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="616"/>
         <source>Descend: -</source>
-        <translation type="unfinished">Klesání: -</translation>
+        <translation>Klesání: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
         <source>Dist.: %1%2</source>
-        <translation type="unfinished">Vzdál.: %1%2</translation>
+        <translation type="obsolete">Vzdál.: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
         <source> Time: %1%2</source>
-        <translation type="unfinished"> Čas: %1%2</translation>
+        <translation> Čas: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Enter new track name.</source>
-        <translation type="unfinished">Zadat název nové stopy.</translation>
+        <translation>Zadat název nové stopy.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="416"/>
+        <source>Time: %1, Speed: %2 %3</source>
+        <translation>Čas: %1, Rychlost: %2 %3</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="423"/>
+        <source>Moving: %1, Speed: %2 %3</source>
+        <translation>Pohyb: %1, Rychlost: %2 %3</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="593"/>
+        <source>Distance: %1%2 (%3%)</source>
+        <translation>Vzdálenost: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="643"/>
+        <source>Distance: %1%2</source>
+        <translation>Vzdálenost: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1286"/>
         <source>Permanently removed points %1..%2</source>
-        <translation type="unfinished">Trvale odstraněné body %1 ... %2</translation>
+        <translation>Trvale odstraněné body %1 ... %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
         <source>Hide points.</source>
-        <translation type="unfinished">Skrýt body.</translation>
+        <translation type="obsolete">Skrýt body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1485"/>
         <source>Show points.</source>
-        <translation type="unfinished">Ukázat body.</translation>
+        <translation>Ukázat body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2040"/>
         <source>Changed name</source>
-        <translation type="unfinished">Změněný název</translation>
+        <translation>Změněný název</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2046"/>
         <source>Changed comment</source>
-        <translation type="unfinished">Změněná poznámka</translation>
+        <translation>Změněná poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2052"/>
         <source>Changed description</source>
-        <translation type="unfinished">Změněný popis</translation>
+        <translation>Změněný popis</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2058"/>
         <source>Changed links</source>
-        <translation type="unfinished">Změněné odkazy</translation>
+        <translation>Změněné odkazy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2085"/>
         <source>Changed activity to '%1' for complete track.</source>
-        <translation type="unfinished">Činnost byla pro celou stopu změněna na '%1'.</translation>
+        <translation>Činnost byla pro celou stopu změněna na '%1'.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
-        <translation type="unfinished">Činnost byla změněna pro oblast (%2..%3) na '%1'.</translation>
+        <translation>Činnost byla změněna pro oblast (%2...%3) na '%1'.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="108"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation type="unfinished">Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
+        <translation>Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="143"/>
         <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation type="unfinished">Skrýt body s neplatnými souřadnicemi na začátku stopy</translation>
+        <translation>Skrýt body s neplatnými souřadnicemi na začátku stopy</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="159"/>
         <source>Reset all hidden track points to visible</source>
-        <translation type="unfinished">Nastavit znovu všechny skryté body stopy na viditelné</translation>
+        <translation>Nastavit znovu všechny skryté body stopy na viditelné</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="193"/>
         <source>Permanently removed all hidden track points</source>
-        <translation type="unfinished">Všechny skryté body stopy odstraněny trvale</translation>
+        <translation>Všechny skryté body stopy odstraněny trvale</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="243"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation type="unfinished">Profil vyhlazen středovým filtrem o velikosti %1</translation>
+        <translation>Profil vyhlazen středovým filtrem o velikosti %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="279"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation type="unfinished">Výšková data nahrazena daty ze souborů s digitálním výškovým modelem.</translation>
+        <translation>Výšková data nahrazena daty ze souborů s digitálním výškovým modelem (DEM).</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="302"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation type="unfinished">Výšková data posunuta o %1%2.</translation>
+        <translation>Výšková data posunuta o %1%2.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="321"/>
         <source>Changed start of track to %1.</source>
-        <translation type="unfinished">Začátek stopy změněn na %1.</translation>
+        <translation>Začátek stopy změněn na %1.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="340"/>
         <source>Remove timestamps.</source>
-        <translation type="unfinished">Odstranit časová razítka.</translation>
+        <translation>Odstranit časová razítka.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="363"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation type="unfinished">Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
+        <translation>Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="396"/>
         <source>Changed speed to %1%2.</source>
-        <translation type="unfinished">Rychlost změněna na %1%2.</translation>
+        <translation>Rychlost změněna na %1%2.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="415"/>
         <source>%1 (Segment %2)</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 (část %2)</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="438"/>
         <source>Removed extension %1 from all Track Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Rozšíření %1 bylo odstraněno ze všech bodů stopy</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
+        <location filename="../qlgt/converter.cpp" line="195"/>
         <source>Copy flag information from QLandkarte GT track</source>
-        <translation type="unfinished">Kopírovat informační příznak ze stopy QLandkarte GT</translation>
+        <translation>Kopírovat informační příznak ze stopy QLandkarte GT</translation>
     </message>
 </context>
 <context>
@@ -1298,82 +1346,82 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/gpx/serialization.cpp" line="588"/>
         <source>Archived</source>
-        <translation type="unfinished">Archivováno</translation>
+        <translation>Archivováno</translation>
     </message>
     <message>
         <location filename="../gis/gpx/serialization.cpp" line="592"/>
         <source>Available</source>
-        <translation type="unfinished">Dostupné</translation>
+        <translation>Dostupné</translation>
     </message>
     <message>
         <location filename="../gis/gpx/serialization.cpp" line="596"/>
         <source>Not Available</source>
-        <translation type="unfinished">Nedostupné</translation>
+        <translation>Nedostupné</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
-        <translation type="unfinished">_Klon</translation>
+        <translation>_Klon</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
         <source>Elevation: %1 %2</source>
-        <translation type="unfinished">Výška: %1 %2</translation>
+        <translation>Výška: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
         <source>Proximity: %1 %2</source>
-        <translation type="unfinished">Blízkost: %1 %2</translation>
+        <translation>Blízkost: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
         <source>Changed name</source>
-        <translation type="unfinished">Změněný název</translation>
+        <translation>Změněný název</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
         <source>Changed position</source>
-        <translation type="unfinished">Změněná poloha</translation>
+        <translation>Změněná poloha</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
         <source>Changed elevation</source>
-        <translation type="unfinished">Změněná výška</translation>
+        <translation>Změněná výška</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
         <source>Changed proximity</source>
-        <translation type="unfinished">Změněná blízkost</translation>
+        <translation>Změněná blízkost</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
         <source>Changed icon</source>
-        <translation type="unfinished">Změněná ikona</translation>
+        <translation>Změněná ikona</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
         <source>Changed comment</source>
-        <translation type="unfinished">Změněná poznámka</translation>
+        <translation>Změněná poznámka</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
         <source>Changed description</source>
-        <translation type="unfinished">Změněný popis</translation>
+        <translation>Změněný popis</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
         <source>Changed links</source>
-        <translation type="unfinished">Změněné odkazy</translation>
+        <translation>Změněné odkazy</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
         <source>Changed images</source>
-        <translation type="unfinished">Změněné obrázky</translation>
+        <translation>Změněné obrázky</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
         <source>Add image</source>
-        <translation type="unfinished">Přidat obrázek</translation>
+        <translation>Přidat obrázek</translation>
     </message>
 </context>
 <context>
@@ -1381,12 +1429,12 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/CGisListDB.cpp" line="81"/>
         <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
-        <translation type="unfinished"></translation>
+        <translation>Na základě změn v databázovém systému QMapShack souborové názvy ve vaší databázi '%1' už nezná. Musíte je v dalším kroku znovu zvolit.</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="82"/>
         <source>Select database file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Vybrat soubor s databází.</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="115"/>
@@ -1412,7 +1460,7 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/CGisListDB.cpp" line="126"/>
         <source>Sync. with Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Seřídit s databází</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="127"/>
@@ -1437,12 +1485,12 @@ To solve this conflict you can create and save a clone, force your version or dr
     <message>
         <location filename="../gis/CGisListDB.cpp" line="611"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation type="unfinished">Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
+        <translation>Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="612"/>
         <source>Delete...</source>
-        <translation type="unfinished">Smazat...</translation>
+        <translation>Smazat...</translation>
     </message>
     <message>
         <source>Do you realy want to remove '%1' from the list?</source>
@@ -1478,17 +1526,17 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save As...</source>
         <translation>Uložit jako...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Save</source>
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Edit..</source>
         <translation>Upravit...</translation>
     </message>
@@ -1497,165 +1545,164 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Aktualizovat projekt na zařízeních</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="111"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="118"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Update Project on Device</source>
         <translation>Aktualizovat projekt na zařízení</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Edit...</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Copy to...</source>
         <translation>Kopírovat do...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="146"/>
+        <location filename="../gis/CGisListWks.cpp" line="150"/>
         <source>Show Bubble</source>
         <translation>Ukázat bublinu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="148"/>
+        <location filename="../gis/CGisListWks.cpp" line="152"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="149"/>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
         <source>Proj. Waypoint...</source>
         <translation>Promítnutí cestovního bodu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="157"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Route Instructions</source>
         <translation>Pokyny pro cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="159"/>
+        <location filename="../gis/CGisListWks.cpp" line="163"/>
         <source>Calculate Route</source>
         <translation>Spočítat cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="160"/>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
         <source>Reset Route</source>
         <translation>Nastavit cestu znovu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="161"/>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
         <source>Edit Route</source>
         <translation>Upravit cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="177"/>
+        <location filename="../gis/CGisListWks.cpp" line="181"/>
         <source>Create Route</source>
         <translation>Vytvořit cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="621"/>
+        <location filename="../gis/CGisListWks.cpp" line="625"/>
         <source>Drop items...</source>
         <translation>Zahodit prvky...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="646"/>
-        <location filename="../gis/CGisListWks.cpp" line="1632"/>
-        <location filename="../gis/CGisListWks.cpp" line="1670"/>
+        <location filename="../gis/CGisListWks.cpp" line="650"/>
+        <location filename="../gis/CGisListWks.cpp" line="1581"/>
+        <location filename="../gis/CGisListWks.cpp" line="1619"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualizovat zařízení</b><p>Aktualizovat %1<br/>Počkejte, prosím...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Delete project...</source>
-        <translation type="unfinished">Smazat projekt...</translation>
+        <translation>Smazat projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Do you really want to delete %1?</source>
-        <translation type="unfinished">Opravdu chcete smazat %1?</translation>
+        <translation>Opravdu chcete smazat %1?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
-        <translation>Kopírovat prvky...</translation>
+        <translation type="obsolete">Kopírovat prvky...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Track Profile</source>
         <translation>Profil stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Show on Map</source>
         <translation>Ukázat na mapě</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Hide from Map</source>
         <translation>Skrýt v mapě</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Send to Devices</source>
         <translation>Poslat do zařízení</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Sync. with Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Seřídit s databází</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Select Range</source>
         <translation>Vybrat rozsah</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Edit Track Points</source>
         <translation>Upravit body stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="137"/>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
         <source>Reverse Track</source>
         <translation>Obrátit stopu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
         <source>Combine Tracks</source>
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="170"/>
+        <location filename="../gis/CGisListWks.cpp" line="174"/>
         <source>Edit Area Points</source>
         <translation>Upravit body oblasti</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="119"/>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="123"/>
+        <location filename="../gis/CGisListWks.cpp" line="144"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <location filename="../gis/CGisListWks.cpp" line="779"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ukládá se pracovní prostor. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <location filename="../gis/CGisListWks.cpp" line="825"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Nahrává se pracovní prostor. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>Close all projects...</source>
         <translation>Zavřít všechny projekty...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Tímto budou všechny projekty odstraněny z pracovního prostoru.</translation>
     </message>
@@ -1663,22 +1710,27 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>Load project...</source>
         <translation>Nahrát projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation>Projekt "%1" je již náhrán do pracovního prostoru.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="529"/>
+        <source>Copy items...</source>
+        <translation>Kopírovat prvky...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Cut Track...</source>
         <translation>Rozkrojit stopu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Do you want to delete the original track?</source>
         <translation>Opravdu chcete smazat původní stopu?</translation>
     </message>
@@ -1686,53 +1738,88 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGpsProject</name>
     <message>
+        <source>Failed to open %1</source>
+        <translation type="obsolete">Nepodařilo se otevřít %1</translation>
+    </message>
+    <message>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="obsolete">Chyba při čtení: %1
+Řádek %2, Sloupec %3:
+%4</translation>
+    </message>
+    <message>
+        <source>File exists ...</source>
+        <translation type="obsolete">Soubor existuje...</translation>
+    </message>
+    <message>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="obsolete">Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
+    </message>
+    <message>
+        <source>Failed to create file '%1'</source>
+        <translation type="obsolete">Nepodařilo se vytvořit soubor '%1'</translation>
+    </message>
+    <message>
+        <source>Failed to write file '%1'</source>
+        <translation type="obsolete">Nepodařilo se zapsat soubor '%1'</translation>
+    </message>
+    <message>
+        <source>Saving GIS data failed...</source>
+        <translation type="obsolete">Nepodařilo se uložit data GIS...</translation>
+    </message>
+</context>
+<context>
+    <name>CGpxProject</name>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
         <source>Failed to load file %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se nahrát soubor %1...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+        <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation type="unfinished">Chyba při čtení: %1
+        <translation>Chyba při čtení: %1
 Řádek %2, Sloupec %3:
 %4</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
         <source>Not a GPX file: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Není souborem GPX: %1</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
         <source>File exists ...</source>
-        <translation type="unfinished">Soubor existuje...</translation>
+        <translation>Soubor existuje...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation type="unfinished">Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
+        <translation>Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
         <source>Failed to create file '%1'</source>
-        <translation type="unfinished">Nepodařilo se vytvořit soubor '%1'</translation>
+        <translation>Nepodařilo se vytvořit soubor '%1'</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
         <source>Failed to write file '%1'</source>
-        <translation type="unfinished">Nepodařilo se zapsat soubor '%1'</translation>
+        <translation>Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
         <source>Saving GIS data failed...</source>
-        <translation type="unfinished">Nepodařilo se uložit data GIS...</translation>
+        <translation>Nepodařilo se uložit data GIS...</translation>
     </message>
 </context>
 <context>
@@ -1780,7 +1867,7 @@ line %2, column %3:
     <message>
         <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
         <source> by %1</source>
-        <translation type="unfinished"></translation>
+        <translation> od %1</translation>
     </message>
 </context>
 <context>
@@ -1806,64 +1893,64 @@ line %2, column %3:
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
         <source>Air Temperature</source>
-        <translation type="unfinished">Teplota vzduchu</translation>
+        <translation>Teplota vzduchu</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
         <source>Water Temperature</source>
-        <translation type="unfinished">Teplota vody</translation>
+        <translation>Teplota vody</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
         <source>Depth</source>
-        <translation type="unfinished">Hloubka</translation>
+        <translation>Hloubka</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
         <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
         <source>Heart Rate</source>
-        <translation type="unfinished">Tep srdce</translation>
+        <translation>Tep srdce</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
         <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
         <source>Cadence</source>
-        <translation type="unfinished">Rychlost chůze</translation>
+        <translation>Rychlost chůze</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
         <source>Speed</source>
-        <translation type="unfinished">Rychlost</translation>
+        <translation>Rychlost</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
         <source>Acceleration</source>
-        <translation type="unfinished"></translation>
+        <translation>Zrychlení</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
         <source>Course</source>
-        <translation type="unfinished"></translation>
+        <translation>Směr</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
         <source>Slope*</source>
-        <translation type="unfinished"></translation>
+        <translation>Sklon*</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
         <source>Speed*</source>
-        <translation type="unfinished"></translation>
+        <translation>Rychlost*</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
         <source>Elevation</source>
-        <translation type="unfinished">Výška</translation>
+        <translation>Výška</translation>
     </message>
     <message>
         <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
         <source>Progress</source>
-        <translation type="unfinished">Postup</translation>
+        <translation>Postup</translation>
     </message>
 </context>
 <context>
@@ -1871,670 +1958,677 @@ line %2, column %3:
     <message>
         <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation type="unfinished">Ztraceno a nalezeno</translation>
+        <translation>Ztraceno a nalezeno</translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="617"/>
+        <location filename="../CMainWindow.cpp" line="643"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="633"/>
+        <location filename="../CMainWindow.cpp" line="659"/>
         <source>[Grid: %1]</source>
         <translation>[Mřížka: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="758"/>
+        <location filename="../CMainWindow.cpp" line="794"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
         <source>Select output file</source>
         <translation>Vybrat výstupní soubor</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>QMapShack View (*.view)</source>
-        <translation type="unfinished"></translation>
+        <translation>Pohled QMapShack (*.view)</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>Select file to load</source>
         <translation>Vybrat soubor k nahrání</translation>
     </message>
 </context>
 <context>
+    <name>CMapDraw</name>
+    <message>
+        <location filename="../map/CMapDraw.cpp" line="406"/>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. 
+
+If it's no fun, why don't you provide maps? Well to host maps ready for download and installation requires a good server. And this is not a free service. The project lacks the money. Additionally map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package the data. This is not that easy as it might sound and for some data you have to pay royalties. The project simply lacks resources to do this. And we think installing the stuff yourself is  [...]
+        <translation>Právě teď tu nejsou žádné mapy. S QMapShack není bez map žádná zábava. Můžete nainstalovat mapy z internetu stisknutím tlačítka Pomoc. Chci mapy! v okně Mapy. Nebo stiskněte F1 k otevření dokumentace na internetui. Tam se dozvíte víc o ovládání QMapShack.
+
+Když s QMapShack není bez map žádná zábava, proč s ním nejsou nějaké poskytovány? No, aby se daly nabízet mapy připravené k instalaci a ke stažení, je potřeba mít dobrý server. A to něco stojí. Projektu na to chybí peníze. Dále podléhají mapy a data s výškovými modely autorskému právu. Z toho důvodu je třeba se jejich držitelů nejprve zeptat, zda lze data zabalit do balíčku a nabídnout. Zní to jednodušeji, než tomu často je. A někdy se dokonce musí platit poplatky. Projekt jednoduše chyb [...]
+    </message>
+</context>
+<context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <location filename="../map/CMapIMG.cpp" line="145"/>
         <source>Failed ...</source>
         <translation>Nepodařilo se...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
         <translation>Neurčeno</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
         <translation>Francouzský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
         <translation>Německý</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
         <translation>Holandský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
         <translation>Anglický</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
         <translation>Italský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
         <translation>Finský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
         <translation>Švédský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
         <translation>Španělský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
         <translation>Baskický</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
         <translation>Katalánský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
         <translation>Galicijský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
         <translation>Velšský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
         <translation>Gaelský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
         <translation>Dánský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
         <translation>Norský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
         <translation>Portugalský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
         <translation>Slovenský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
         <translation>Český</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
         <translation>Chorvatský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
         <translation>Maďarský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
         <translation>Polský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
         <translation>Turecký</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
         <translation>Řecký</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
         <translation>Slovinský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
         <translation>Ruský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
         <translation>Estonský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
         <translation>Lotyšský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
         <translation>Rumunský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
         <translation>Albánský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
         <translation>Bosenský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
         <translation>Litevský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
         <translation>Srbský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
         <translation>Makedonský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
         <translation>Bulharský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
         <translation>Dálnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
         <translation>Silnice první třídy</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
         <translation>Jiné rychlostní silnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
         <translation>Rychlostní silnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
         <translation>Státní silnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
         <translation>Silnice v obytné oblasti</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
         <translation>Soukromá cesta</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
         <translation>Nájezd na dálnici/sjezd z dálnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
         <translation>Nájezd na dálnici/sjezd z dálnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
         <translation>Neasfaltovaná cesta</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
         <translation>Dalniční přivaděč</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
         <translation>Kruhový objezd</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
         <translation>Železnice, koleje</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
         <translation>Břeh</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
         <translation>Cesta</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
         <translation>Proud</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
         <translation>Časové pásmo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
         <translation>Přívoz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
         <translation>Státní/Zemská hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
         <translation>Krajská/Obecní hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
         <translation>Mezinárodní hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
         <translation>Řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
         <translation>Malá vrstevnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
         <translation>Střední vrstevnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
         <translation>Velká vrstevnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
         <translation>Malá hloubková čára</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
         <translation>Střední hloubková čára</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
         <translation>Velká hloubková čára</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
         <translation>Přerušovaný potok (Wadi)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
         <translation>Přistávací dráha</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
         <translation>Dálkové potrubí</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
         <translation>Elektrické vedení</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
         <translation>Hranice moře</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
         <translation>Nebezpečná hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Velkoměstská oblast (&gt;200 000)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Maloměstská oblast (&gt;200 000)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
         <translation>Městská obytná oblast</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
         <translation>Vojenská základna</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
         <translation>Parkoviště</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
         <translation>Parkovací budova</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
         <translation>Letiště</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
         <translation>Nákupní středisko</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
         <translation>Přístav</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
         <translation>Univerzita/Vysoká škola</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
         <translation>Nemocnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
         <translation>Průmyslový celek</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
         <translation>Chráněné území</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
         <translation>Zástavba</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
         <translation>Oblast pro tělesné činnosti</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
         <translation>Golfové hřiště</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
         <translation>Hřbitov</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
         <translation>Národní park</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
         <translation>Městské sady</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
         <translation>Státní park</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
         <translation>Les</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
         <translation>Oceán</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
         <translation>Modrá (neznámé)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
         <translation>Moře</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
         <translation>Velké jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
         <translation>Střední jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
         <translation>Malé jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
         <translation>Velmi velké jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
         <translation>Veletok</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
         <translation>Velká řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
         <translation>Střední řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
         <translation>Malá řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
         <translation>Přerušovaná voda</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
         <translation>Močál/Bažina</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
         <translation>Ledovec</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
         <translation>Sad/Plantáž</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
         <translation>Křoví</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
         <translation>Rovina</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
         <translation>???</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <location filename="../map/CMapIMG.cpp" line="435"/>
         <source>Failed to read: </source>
         <translation>Nepodařilo se přečíst: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <location filename="../map/CMapIMG.cpp" line="478"/>
         <source>Failed to open: </source>
         <translation>Nepodařilo se otevřít: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <location filename="../map/CMapIMG.cpp" line="502"/>
+        <location filename="../map/CMapIMG.cpp" line="506"/>
         <source>Bad file format: </source>
         <translation>Špatný formát souboru: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <location filename="../map/CMapIMG.cpp" line="595"/>
         <source>Failed to read file structure: </source>
         <translation>Nepodařilo se přečíst stavbu souboru: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <location filename="../map/CMapIMG.cpp" line="630"/>
         <source>Loading %1</source>
         <translation>Nahrává se %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <location filename="../map/CMapIMG.cpp" line="636"/>
         <source>User abort: </source>
         <translation>Zrušeno uživatelem: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation>Soubor je ve formátu NT. QMapShack nedokáže číst mapové soubory ve formátu NT: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>Soubor obsahuje zamknutá/zašifrovaná data. Garmin nechce, aby byl tento soubor použit s jiným programem než dodaným Garminem.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2502"/>
-        <location filename="../map/CMapIMG.cpp" line="2510"/>
-        <location filename="../map/CMapIMG.cpp" line="2514"/>
-        <location filename="../map/CMapIMG.cpp" line="2519"/>
-        <location filename="../map/CMapIMG.cpp" line="2565"/>
-        <location filename="../map/CMapIMG.cpp" line="2573"/>
-        <location filename="../map/CMapIMG.cpp" line="2577"/>
-        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <location filename="../map/CMapIMG.cpp" line="2305"/>
+        <location filename="../map/CMapIMG.cpp" line="2311"/>
+        <location filename="../map/CMapIMG.cpp" line="2315"/>
         <source>Point of Interest</source>
         <translation>Podivuhodnost</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <location filename="../map/CMapIMG.cpp" line="2401"/>
         <source>Unknown</source>
         <translation>Neznámý</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2755"/>
-        <location filename="../map/CMapIMG.cpp" line="2763"/>
-        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <location filename="../map/CMapIMG.cpp" line="2443"/>
+        <location filename="../map/CMapIMG.cpp" line="2451"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Area</source>
         <translation>Oblast</translation>
     </message>
@@ -2542,17 +2636,17 @@ line %2, column %3:
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Deactivate</source>
         <translation>Vypnout</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="228"/>
+        <location filename="../map/CMapList.cpp" line="233"/>
         <source>Where do you want to store maps?</source>
         <translation>Kde chcete ukládat mapy?</translation>
     </message>
@@ -2821,12 +2915,12 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
-        <translation type="unfinished">Zadat název nové oblasti.</translation>
+        <translation>Zadat název nové oblasti.</translation>
     </message>
 </context>
 <context>
@@ -2845,12 +2939,12 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
         <source>Enter new route name.</source>
-        <translation type="unfinished">Zadat nový název pro cestu.</translation>
+        <translation>Zadat nový název pro cestu.</translation>
     </message>
 </context>
 <context>
@@ -2883,12 +2977,12 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Enter new track name.</source>
-        <translation type="unfinished">Zadat název nové stopy.</translation>
+        <translation>Zadat název nové stopy.</translation>
     </message>
 </context>
 <context>
@@ -2914,12 +3008,17 @@ Neznámá stavba.</translation>
         <translation>Přidat oblast</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="44"/>
+        <source>Select Items On Map</source>
+        <translation>Vybrat prvky na mapě</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
         <translation>Kopírovat polohu</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="47"/>
         <source>Copy position (Grid)</source>
         <translation>Kopírovat polohu (mřížka)</translation>
     </message>
@@ -2927,8 +3026,12 @@ Neznámá stavba.</translation>
 <context>
     <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
         <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
+        <translation type="obsolete"><b>Uložit mapu (vytisknout)</b><br/>Vyberte na mapě obdélníkovou oblast. použijte levé tlačítko myši a pohybujte myší. Zrušte výběr klepnutím pravým tlačítkem myši. Výběr lze upravit posunutím rohových bodů myší. Uložení/Vytištění následuje po klepnutí levým tlačítkem myši na odpovídající symbol uprostřed výběru.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMousePrint.cpp" line="31"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
         <translation><b>Uložit mapu (vytisknout)</b><br/>Vyberte na mapě obdélníkovou oblast. použijte levé tlačítko myši a pohybujte myší. Zrušte výběr klepnutím pravým tlačítkem myši. Výběr lze upravit posunutím rohových bodů myší. Uložení/Vytištění následuje po klepnutí levým tlačítkem myši na odpovídající symbol uprostřed výběru.</translation>
     </message>
 </context>
@@ -2941,6 +3044,39 @@ Neznámá stavba.</translation>
     </message>
 </context>
 <context>
+    <name>CMouseSelect</name>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="31"/>
+        <source><b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation><b>Vybrat prvky na mapě</b><br/>Vyberte na mapě klepnutím levým tlačítkem myši obdélníkovou oblast. Výběr zrušíte klepnutím pravým tlačítkem myši. Výběr lze upravit posunutím rohových bodů myší.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="96"/>
+        <source><b>Selected:</b><br/></source>
+        <translation><b>Vybráno:</b><br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="98"/>
+        <source>%1 waypoints<br/></source>
+        <translation>%1 cestovní body<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="97"/>
+        <source>%1 tracks<br/></source>
+        <translation>%1 stopy<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="99"/>
+        <source>%1 routes<br/></source>
+        <translation>%1 cesty<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="100"/>
+        <source>%1 areas<br/></source>
+        <translation>%1 oblasti<br/></translation>
+    </message>
+</context>
+<context>
     <name>CPhotoAlbum</name>
     <message>
         <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
@@ -2949,6 +3085,19 @@ Neznámá stavba.</translation>
     </message>
 </context>
 <context>
+    <name>CPlot</name>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="55"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished">Vzdálenost [%1]</translation>
+    </message>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="60"/>
+        <source>time</source>
+        <translation type="unfinished">Čas</translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
         <source>distance [%1]</source>
@@ -2970,7 +3119,7 @@ Neznámá stavba.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="78"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
@@ -2979,7 +3128,7 @@ Neznámá stavba.</translation>
         <translation type="obsolete">Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <location filename="../plot/CPlotProfile.cpp" line="79"/>
         <source>alt. [%1]</source>
         <translation>Výška [%1]</translation>
     </message>
@@ -3103,14 +3252,12 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
         <source>distance [%1]</source>
-        <translation type="unfinished">Vzdálenost [%1]</translation>
+        <translation type="vanished">Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
         <source>time</source>
-        <translation type="unfinished">Čas</translation>
+        <translation type="vanished">Čas</translation>
     </message>
 </context>
 <context>
@@ -3247,23 +3394,23 @@ není platným vymezením soustavy souřadnic
         <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
         <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
         <source>Corrupt track ...</source>
-        <translation type="unfinished">Poškozená stopa...</translation>
+        <translation>Poškozená stopa...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation type="unfinished">Počet bodů stopy neodpovídá počtu bodů stopy cvičebních dat.</translation>
+        <translation>Počet bodů stopy neodpovídá počtu bodů stopy cvičebních dat.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation type="unfinished">Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
+        <translation>Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
         <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation type="unfinished">Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
+        <translation>Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
     </message>
 </context>
 <context>
@@ -3293,15 +3440,15 @@ není platným vymezením soustavy souřadnic
     <name>CQmsProject</name>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open...</source>
-        <translation type="unfinished">Nepodařilo se otevřít...</translation>
+        <translation>Nepodařilo se otevřít...</translation>
     </message>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+        <translation>Nepodařilo se otevřít %1</translation>
     </message>
 </context>
 <context>
@@ -3638,7 +3785,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
         <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
-        <translation type="unfinished"></translation>
+        <translation>V databázi cest není žádná hlavní silnice poblíž souřadnic k umístění cestovního bodu.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
@@ -3717,6 +3864,59 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>CScrOptSelect</name>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="93"/>
+        <source><b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/></source>
+        <translation><b>Přesný režim</b><br/>Všechny vybrané prvky musí být úplně uvnitř vybrané oblasti.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="97"/>
+        <source><b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/></source>
+        <translation><b>Protínající se režim</b><br/>Všechny vybrané prvky musí být uvnitř nebo alespoň protínat vybranou oblast.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="101"/>
+        <source><b>Add Tracks</b><br/>Add tracks to list of selected items<br/></source>
+        <translation><b>Přidat stopy</b><br/>Přidat stopy do seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="105"/>
+        <source><b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/></source>
+        <translation><b>Přidat cestovní body</b><br/>Přidat cestovní body do seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="109"/>
+        <source><b>Add Routes</b><br/>Add routes to list of selected items<br/></source>
+        <translation><b>Přidat cesty</b><br/>Přidat cesty do seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="113"/>
+        <source><b>Add Areas</b><br/>Add areas to list of selected items<br/></source>
+        <translation><b>Přidat oblasti</b><br/>Přidat oblasti do seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="124"/>
+        <source><b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/></source>
+        <translation><b>Přehlížet stopy</b><br/>Přehlížet stopy v seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="128"/>
+        <source><b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/></source>
+        <translation><b>Přehlížet cestovní body</b><br/>Přehlížet cestovní body v seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="132"/>
+        <source><b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/></source>
+        <translation><b>Přehlížet cesty</b><br/>Přehlížet cesty v seznamu vybraných prvků.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="136"/>
+        <source><b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/></source>
+        <translation><b>Přehlížet oblasti</b><br/>Přehlížet oblasti v seznamu vybraných prvků.<br/></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
@@ -3749,12 +3949,12 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
         <source>Missing Requirement</source>
-        <translation type="unfinished"></translation>
+        <translation>Chybí požadavek</translation>
     </message>
     <message>
         <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
         <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
-        <translation type="unfinished"></translation>
+        <translation>MySQL nemůže být toho času použita, protože není dostupný odpovídající ovladač (QMYSQL).<br />Ujistěte se, prosím, že byl nainstalován odpovídající balíček.<br />Pokud nevíte, co se má dělat, podívejte se na dokumentaci na <a href="%1">Wiki</a>.</translation>
     </message>
     <message>
         <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
@@ -3795,49 +3995,54 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
         <source>Failed to load file %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se nahrát soubor %1...</translation>
     </message>
 </context>
 <context>
     <name>CSlfReader</name>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="63"/>
+        <source>Failed to parse timestamp `%1`</source>
+        <translation>Nepodařilo se zpracovat časové razítko `%1`</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="76"/>
         <source>%1 does not exist</source>
-        <translation type="unfinished"></translation>
+        <translation>%1: Neexistuje</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="81"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+        <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="92"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation type="unfinished">Chyba při čtení: %1
+        <translation>Chyba při čtení: %1
 Řádek %2, Sloupec %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="99"/>
         <source>Not a SLF file: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Není souborem SLF: %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="106"/>
         <source>Unsupported revision %1: %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodporovaná změna %1: %2</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="181"/>
         <source>Break %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestávka %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="185"/>
         <source>Lap %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Kolo %1</translation>
     </message>
 </context>
 <context>
@@ -3851,41 +4056,49 @@ line %2, column %3:
 <context>
     <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <source>Error...</source>
-        <translation type="unfinished">Chyba...</translation>
+        <translation>Chyba...</translation>
     </message>
     <message>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1.</translation>
+        <translation>Nepodařilo se otevřít %1.</translation>
     </message>
     <message>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
         <source>Save GIS data to...</source>
-        <translation type="unfinished">Uložit data GIS do...</translation>
+        <translation>Uložit data GIS do...</translation>
     </message>
     <message>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <source>Only support lon/lat WGS 84 format.</source>
-        <translation type="unfinished">Jako formát je podporován jen lon/lat WGS 84.</translation>
+        <translation>Jako formát je podporován jen lon/lat WGS 84.</translation>
     </message>
     <message>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Failed to read data.</source>
-        <translation type="unfinished">Nepodařilo se přečíst data.</translation>
+        <translation>Nepodařilo se přečíst data.</translation>
+    </message>
+</context>
+<context>
+    <name>CWptIconDialog</name>
+    <message>
+        <location filename="../helpers/CWptIconDialog.cpp" line="160"/>
+        <source>Path to user icons...</source>
+        <translation>Cesta k uživatelským symbolům...</translation>
     </message>
 </context>
 <context>
@@ -3932,22 +4145,22 @@ line %2, column %3:
     <message>
         <location filename="../IAbout.ui" line="172"/>
         <source>Czech:</source>
-        <translation type="unfinished"></translation>
+        <translation>Čeština:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="195"/>
         <source>German:</source>
-        <translation type="unfinished"></translation>
+        <translation>Němčina:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="218"/>
         <source>Dutch:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nizozemština:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="241"/>
         <source>French:</source>
-        <translation type="unfinished"></translation>
+        <translation>Francouzština:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="251"/>
@@ -3958,7 +4171,8 @@ line %2, column %3:
         <location filename="../IAbout.ui" line="381"/>
         <source>Christian Eichler (qms at christian-eichler.de)
 Ivo Kronenberg</source>
-        <translation type="unfinished"></translation>
+        <translation>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</translation>
     </message>
     <message>
         <source>French</source>
@@ -3994,17 +4208,17 @@ Ivo Kronenberg</source>
     <message>
         <location filename="../IAbout.ui" line="271"/>
         <source>Spanish:</source>
-        <translation type="unfinished"></translation>
+        <translation>Španělština:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="305"/>
         <source>Win64:</source>
-        <translation type="unfinished">Win64:</translation>
+        <translation>Win64:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="321"/>
         <source>OS X:</source>
-        <translation type="unfinished"></translation>
+        <translation>OS X:</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="345"/>
@@ -4056,7 +4270,7 @@ Ivo Kronenberg</source>
         <source>OS X</source>
         <translation type="obsolete">OS X</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation>... a poděkování všem tvůrcům spustitelných souborů pro Linux za jejich dobrou práci. Zvláštní poděkování Danovi Horákovi a Basi Couwenbergovi za účast v diskuzi v poštovním seznamu.</translation>
@@ -4070,7 +4284,7 @@ Ivo Kronenberg</source>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation>Tento program je licencován pod GPL3 nebo kteroukoli pozdější verzí</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</translation>
@@ -4118,7 +4332,7 @@ Ivo Kronenberg</source>
     <message>
         <location filename="../widgets/IColorChooser.ui" line="14"/>
         <source>Dialog</source>
-        <translation type="unfinished">Dialog</translation>
+        <translation>Dialog</translation>
     </message>
 </context>
 <context>
@@ -4144,17 +4358,17 @@ Ivo Kronenberg</source>
         <source>Coordinate Format...</source>
         <translation>Formát souřadnic...</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
         <translation>N48° 53.660 E013° 31.113</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
         <translation>N48.8943° E013.51855°</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation>N48° 53' 39.6" E13° 31' 6.78"</translation>
@@ -4224,38 +4438,39 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/db/IDB.cpp" line="60"/>
         <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
-        <translation type="unfinished"></translation>
+        <translation>Vnitřní formát databáze '%1'' se změnil. QMapShack nyní vaši databázi přestěhuje. Po přestěhování databáze se staršími verzemi QMapShack nebude použitelná. Doporučuje se databázi nejprve zazálohovat.</translation>
     </message>
     <message>
         <location filename="../gis/db/IDB.cpp" line="64"/>
         <source>Migrate database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestěhovat databázi...</translation>
     </message>
     <message>
         <location filename="../gis/db/IDB.cpp" line="74"/>
         <source>Failed to migrate '%1'.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se přestěhovat '%1'.</translation>
     </message>
     <message>
         <location filename="../gis/db/IDB.cpp" line="76"/>
         <location filename="../gis/db/IDB.cpp" line="100"/>
         <source>Error...</source>
-        <translation type="unfinished">Chyba...</translation>
+        <translation>Chyba...</translation>
     </message>
     <message>
         <location filename="../gis/db/IDB.cpp" line="85"/>
         <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Verze databáze '%1'' je pokročilejší než ta, se kterou pracuje vaše instalace QMapShack. To nebude pracovat.</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/db/IDB.cpp" line="88"/>
         <source>Wrong database version...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nesprávná verze databáze...</translation>
     </message>
     <message>
         <location filename="../gis/db/IDB.cpp" line="98"/>
         <source>Failed to initialize '%1'.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se inicializovat '%1'.</translation>
     </message>
 </context>
 <context>
@@ -4263,12 +4478,12 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/db/IDBMysql.cpp" line="54"/>
         <source>Password...</source>
-        <translation type="unfinished"></translation>
+        <translation>Heslo...</translation>
     </message>
     <message>
         <location filename="../gis/db/IDBMysql.cpp" line="54"/>
         <source>Password for database '%1':</source>
-        <translation type="unfinished"></translation>
+        <translation>Heslo pro databázi '%1':</translation>
     </message>
 </context>
 <context>
@@ -4280,7 +4495,7 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
         <source>Setup DEM file paths</source>
-        <translation>Stanovit cesty k souborům DEM</translation>
+        <translation>Stanovit cesty k souborům s výškovými modely</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="31"/>
@@ -4337,7 +4552,7 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <source>Slope </source>
         <translation>Sklon</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
@@ -4373,9 +4588,13 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <translation>Formulář</translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Pro přidání souborů s údaji o výšce použijte Soubor → Nastavit cesty k DEM. </translation>
+        <translation type="vanished">Pro přidání souborů s údaji o výšce použijte Soubor → Nastavit cesty k výškovým modelům. </translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
+        <translation>Pro přidání souborů s údaji o výšce použijte <b>Soubor → Nastavit cesty k výškovým modelům</b>. </translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
@@ -4390,27 +4609,27 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../dem/IDemList.ui" line="165"/>
         <source>Move Up</source>
-        <translation type="unfinished"></translation>
+        <translation>Posunout nahoru</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="168"/>
         <source>Hide DEM behind previous one</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt výškový model za předchozí</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="177"/>
         <source>Move down</source>
-        <translation type="unfinished"></translation>
+        <translation>Posunout dolů</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="180"/>
         <source>Show DEM on top of next one</source>
-        <translation type="unfinished"></translation>
+        <translation>Výškový model překrývá další</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="189"/>
         <source>Reload DEM</source>
-        <translation type="unfinished"></translation>
+        <translation>Nahrát výškový model znovu</translation>
     </message>
 </context>
 <context>
@@ -4663,12 +4882,12 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <translation type="obsolete">Ovládání grafu</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1019"/>
         <source>Profile</source>
         <translation>Profil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1460"/>
         <source>Speed</source>
         <translation>Rychlost</translation>
     </message>
@@ -4687,22 +4906,22 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="444"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="473"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="538"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="564"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="593"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="711"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1040"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1069"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1101"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1137"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1198"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1234"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1263"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1295"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -4721,61 +4940,61 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <translation type="obsolete">z dat</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="419"/>
         <source>Source</source>
         <translation>Zdroj</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="624"/>
         <source>Maximum</source>
         <translation>Nejvyšší hodnota</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Use/edit user defined visibility of arrows for this track</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít/Upravit uživatelsky stanovenou viditelnost směrových šipek pro tuto stopu</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="470"/>
         <source>Use/edit system's visibility of arrows for all tracks</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít/Upravit v systému stanovenou viditelnost směrových šipek pro všechny stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="764"/>
         <source>Minimum</source>
         <translation>Nejnižší hodnota</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
         <source>Use/edit user defined scale factor for this track</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít/Upravit uživatelsky stanovený násobek zvětšení pro tuto stopu</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
         <source>Use/edit system's default factor for all tracks</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít/Upravit výchozí násobek zvětšení systému pro všechny stopy</translation>
     </message>
     <message>
         <source>Solid color</source>
         <translation type="obsolete">Plná barva </translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="638"/>
         <source>x </source>
-        <translation type="unfinished"></translation>
+        <translation>x </translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Width</source>
-        <translation type="unfinished"></translation>
+        <translation>Šířka</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="631"/>
         <source>with arrows</source>
-        <translation type="unfinished"></translation>
+        <translation>se směrovými šipkami</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="832"/>
         <source>Graphs</source>
         <translation>Grafy</translation>
     </message>
@@ -4792,57 +5011,57 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <translation type="obsolete">Graf 1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1324"/>
         <source>Activity</source>
         <translation>Činnost</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1365"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation>K rozlišení statistik stop zvolte v seznamu činnost pro celou stopu. Nebo vyberte část stopy a přiřaďte jí činnost.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1392"/>
         <source>Points</source>
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1440"/>
         <source>Time</source>
         <translation>Čas</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1445"/>
         <source>Ele.</source>
         <translation>Výška</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1450"/>
         <source>Delta</source>
         <translation>Rozdíl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1455"/>
         <source>Dist.</source>
         <translation>Vzdál.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1465"/>
         <source>Slope</source>
         <translation>Sklon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1470"/>
         <source>Ascend</source>
         <translation>Stoupání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1475"/>
         <source>Descend</source>
         <translation>Klesání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1480"/>
         <source>Position</source>
         <translation>Poloha</translation>
     </message>
@@ -4857,55 +5076,55 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="845"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="865"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="951"/>
         <source>max.</source>
-        <translation type="unfinished"></translation>
+        <translation>max.</translation>
     </message>
     <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="984"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1005"/>
         <source>min.</source>
-        <translation type="unfinished"></translation>
+        <translation>min.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="535"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1037"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1134"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1231"/>
         <source>User defined limits for this track</source>
-        <translation type="unfinished"></translation>
+        <translation>Uživatelsky stanovené hraniční hodnoty pro tuto stopu</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="561"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1066"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1260"/>
         <source>Automatic limits</source>
-        <translation type="unfinished"></translation>
+        <translation>Automatické hraniční hodnoty</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="590"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1098"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1195"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1292"/>
         <source>User defined limits for all tracks</source>
-        <translation type="unfinished"></translation>
+        <translation>Uživatelsky stanovené hraniční hodnoty pro všechny stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="784"/>
         <source>Color</source>
-        <translation type="unfinished">Barva</translation>
+        <translation>Barva</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1489"/>
         <source>Filter</source>
         <translation>Filtr</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1526"/>
         <source>Hist.</source>
         <translation>Historie</translation>
     </message>
@@ -4991,9 +5210,9 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
 <context>
     <name>IDevice</name>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
+        <location filename="../device/IDevice.cpp" line="287"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation type="unfinished">Je jiný projekt se stejným názvem. Pokud stisknete OK, bude odstraněn a nahrazen.</translation>
+        <translation>Je jiný projekt se stejným názvem. Pokud stisknete OK, bude odstraněn a nahrazen.</translation>
     </message>
 </context>
 <context>
@@ -5052,27 +5271,27 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
         <source><b>Remove Extension from all Track Points</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Odstranit rozšíření ze všech bodů stopy</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
         <source>Remove </source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
         <source>from all Track Points</source>
-        <translation type="unfinished"></translation>
+        <translation>ze všech bodů stopy</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -5332,22 +5551,22 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
         <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p><span style=" font-weight:600;">Rozdělit části do stop</span></p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
         <source>Creates a new track for every segment within this track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Pro každou část v této stopě se vytvoří nová stopa.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -5355,7 +5574,7 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
         <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba při dekódování FIT: Nesprávný stav dekodéru %1 po posledním bytu dat v souboru.</translation>
     </message>
 </context>
 <context>
@@ -5363,71 +5582,78 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/IGisItem.cpp" line="42"/>
         <source>[no name]</source>
-        <translation type="unfinished">[žádný název]</translation>
+        <translation>[žádný název]</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <location filename="../gis/IGisItem.cpp" line="314"/>
         <source>The item is not part of the project in the database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Prvek není částí projektu v databázi.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="315"/>
+        <source>
+It is either a new item or it has been deleted in the database by someone else.</source>
+        <translation>
+Buď je to nový symbol nebo byl v databázi někým smazán.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <location filename="../gis/IGisItem.cpp" line="321"/>
         <source>The item is not in the database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Prvek není v databázi.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <location filename="../gis/IGisItem.cpp" line="327"/>
         <source>The item might need to be saved</source>
-        <translation type="unfinished"></translation>
+        <translation>Může být potřeba prvek uložit.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <location filename="../gis/IGisItem.cpp" line="411"/>
         <source>Initial version.</source>
-        <translation type="unfinished">Počáteční verze.</translation>
+        <translation>Počáteční verze.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <location filename="../gis/IGisItem.cpp" line="519"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
-        <translation type="unfinished"><h3>%1</h3> Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
+        <translation><h3>%1</h3> Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <location filename="../gis/IGisItem.cpp" line="520"/>
         <source>Read Only Mode...</source>
-        <translation type="unfinished">Režim pouze pro čtení...</translation>
+        <translation>Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="670"/>
-        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
         <source><h4>Description:</h4></source>
-        <translation type="unfinished"><h4>Popis:</h4></translation>
+        <translation><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="673"/>
-        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
         <source><p>--- no description ---</p></source>
-        <translation type="unfinished"><p>--- žádný popis ---</p></translation>
+        <translation><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
         <source><h4>Comment:</h4></source>
-        <translation type="unfinished"><h4>Poznámka:</h4></translation>
+        <translation><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
         <source><p>--- no comment ---</p></source>
-        <translation type="unfinished"><p>--- žádná poznámka ---</p></translation>
+        <translation><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="698"/>
-        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <location filename="../gis/IGisItem.cpp" line="712"/>
+        <location filename="../gis/IGisItem.cpp" line="757"/>
         <source><h4>Links:</h4></source>
-        <translation type="unfinished"><h4>Odkazy:</h4></translation>
+        <translation><h4>Odkazy:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="701"/>
-        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <location filename="../gis/IGisItem.cpp" line="715"/>
+        <location filename="../gis/IGisItem.cpp" line="760"/>
         <source><p>--- no links ---</p></source>
-        <translation type="unfinished"><p>--- žádné odkazy ---</p></translation>
+        <translation><p>--- žádné odkazy ---</p></translation>
     </message>
 </context>
 <context>
@@ -5435,69 +5661,69 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/prj/IGisProject.cpp" line="109"/>
         <source>Save project?</source>
-        <translation type="unfinished">Uložit projekt?</translation>
+        <translation>Uložit projekt?</translation>
     </message>
     <message>
         <location filename="../gis/prj/IGisProject.cpp" line="109"/>
         <source><h3>%1</h3>The project was changed. Save before closing it?</source>
-        <translation type="unfinished"><h3>%1</h3>Projekt byl změněn. Uložit jej před zavřením?</translation>
+        <translation><h3>%1</h3>Projekt byl změněn. Uložit jej před zavřením?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="258"/>
         <source>%1: Correlate tracks and waypoints.</source>
-        <translation type="unfinished">%1: Svázat stopy a cestovní body.</translation>
+        <translation>%1: Svázat stopy a cestovní body.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="268"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
-        <translation type="unfinished"><h3>%1</h3>Trvalo to moc dlouho? Chcete svázání stop a cestovních bodů pro tento projekt přeskočit i v budoucnu?</translation>
+        <translation><h3>%1</h3>Trvalo to moc dlouho? Chcete svázání stop a cestovních bodů pro tento projekt přeskočit i v budoucnu?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="269"/>
         <source>Canceled correlation...</source>
-        <translation type="unfinished">Svázání zrušeno...</translation>
+        <translation>Svázání zrušeno...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Save "%1" to...</source>
-        <translation type="unfinished"></translation>
+        <translation>Uložit "%1" do...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="420"/>
         <source><br/>
 Filename: %1</source>
-        <translation type="unfinished"><br/>
+        <translation><br/>
 Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="425"/>
         <source>Waypoints: %1</source>
-        <translation type="unfinished">Cestovní body: %1</translation>
+        <translation>Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="429"/>
         <source>Tracks: %1</source>
-        <translation type="unfinished">Stopy: %1</translation>
+        <translation>Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="433"/>
         <source>Routes: %1</source>
-        <translation type="unfinished">Cesty: %1</translation>
+        <translation>Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="437"/>
         <source>Areas: %1</source>
-        <translation type="unfinished">Oblasti: %1</translation>
+        <translation>Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="557"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation type="unfinished">Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
+        <translation>Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="558"/>
         <source>Delete...</source>
-        <translation type="unfinished">Smazat...</translation>
+        <translation>Smazat...</translation>
     </message>
 </context>
 <context>
@@ -5520,7 +5746,7 @@ Název souboru: %1</translation>
     <message>
         <location filename="../gis/IGisWidget.ui" line="104"/>
         <source>Age</source>
-        <translation type="unfinished"></translation>
+        <translation>Věk</translation>
     </message>
     <message>
         <location filename="../gis/IGisWidget.ui" line="138"/>
@@ -5623,6 +5849,14 @@ Název souboru: %1</translation>
     </message>
 </context>
 <context>
+    <name>ILineOp</name>
+    <message>
+        <location filename="../mouse/line/ILineOp.cpp" line="214"/>
+        <source>Routing</source>
+        <translation>Cesta</translation>
+    </message>
+</context>
+<context>
     <name>ILinksDialog</name>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
@@ -5669,37 +5903,37 @@ Název souboru: %1</translation>
         <translation>Pohled</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
+        <location filename="../IMainWindow.ui" line="103"/>
         <source>Window</source>
         <translation>Okno</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
+        <location filename="../IMainWindow.ui" line="108"/>
         <source>?</source>
         <translation>Nápověda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
+        <location filename="../IMainWindow.ui" line="115"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
+        <location filename="../IMainWindow.ui" line="126"/>
         <source>Tool</source>
         <translation>Nástroj</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
+        <location filename="../IMainWindow.ui" line="151"/>
         <source>Maps</source>
         <translation>Mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
+        <location filename="../IMainWindow.ui" line="194"/>
         <source>Dig. Elev. Model (DEM)</source>
-        <translation>Digitální výškový model (DEM)</translation>
+        <translation>Digitální výškový model</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Data</source>
         <translation>Data</translation>
     </message>
@@ -5708,78 +5942,78 @@ Název souboru: %1</translation>
         <translation type="obsolete">Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="291"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="306"/>
         <source>Show Scale</source>
         <translation>Ukázat měřítko</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="318"/>
         <source>Setup Map Font</source>
         <translation>Nastavit písmo mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="333"/>
         <source>Show Grid</source>
         <translation>Ukázat mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="336"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="348"/>
         <source>Setup Grid</source>
         <translation>Nastavit mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
+        <location filename="../IMainWindow.ui" line="351"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="366"/>
         <source>Flip Mouse Wheel</source>
         <translation>Obrátit kolečko myši</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="381"/>
         <source>Setup Map Paths</source>
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="396"/>
         <source>POI Text</source>
         <translation>Text POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="411"/>
         <source>Night / Day</source>
         <translation>Noc/Den</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="426"/>
         <source>Map Tool Tip</source>
         <translation>Rada k nástroji pro mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
+        <location filename="../IMainWindow.ui" line="441"/>
         <source>Setup DEM Paths</source>
-        <translation>Nastavit cesty k DEM</translation>
+        <translation>Nastavit cesty k výškovým modelům</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="453"/>
         <source>About</source>
         <translation>O programu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="465"/>
         <source>Help</source>
         <translation>Nápověda</translation>
     </message>
@@ -5788,203 +6022,218 @@ Název souboru: %1</translation>
         <translation type="obsolete">Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Route</source>
         <translation>Cesta</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="285"/>
+        <location filename="../IMainWindow.ui" line="288"/>
         <source>Add Map View</source>
         <translation>Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
+        <location filename="../IMainWindow.ui" line="429"/>
         <source>Ctrl+I</source>
         <translation>Ctrl+I</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="468"/>
         <source>F1</source>
-        <translation type="unfinished">F1</translation>
+        <translation>F1</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <location filename="../IMainWindow.ui" line="442"/>
+        <location filename="../IMainWindow.ui" line="480"/>
+        <location filename="../IMainWindow.ui" line="483"/>
         <source>Setup Map View</source>
         <translation>Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="495"/>
         <source>Load GIS Data</source>
         <translation>Nahrát data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="498"/>
         <source>Load projects from file</source>
         <translation>Nahrát projekty ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="501"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="513"/>
         <source>Save All GIS Data</source>
         <translation>Uložit všechna data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="516"/>
         <source>Save all projects in the workspace</source>
         <translation>Uložit všechny projekty nacházející se v pracovním prostoru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="472"/>
+        <location filename="../IMainWindow.ui" line="519"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="481"/>
+        <location filename="../IMainWindow.ui" line="531"/>
         <source>Setup Time Zone</source>
         <translation>Nastavit časové pásmo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="490"/>
+        <location filename="../IMainWindow.ui" line="543"/>
         <source>Add empty project</source>
         <translation>Přidat prázdný projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="502"/>
+        <location filename="../IMainWindow.ui" line="558"/>
         <source>Search Google</source>
         <translation>Hledat pomocí Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="570"/>
         <source>Close all projects</source>
         <translation>Zavřít všechny projekty</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="514"/>
+        <location filename="../IMainWindow.ui" line="573"/>
         <source>F8</source>
         <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="523"/>
+        <location filename="../IMainWindow.ui" line="585"/>
         <source>Setup Units</source>
         <translation>Nastavit jednotky</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="597"/>
         <source>Setup Workspace</source>
         <translation>Nastavit pracovní prostor</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="535"/>
+        <location filename="../IMainWindow.ui" line="600"/>
         <source>Setup save on exit.</source>
         <translation>Nastavit uložení při ukončení.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="612"/>
         <source>Import Database from QLandkarte</source>
         <translation>Zavést databázi z QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="547"/>
+        <location filename="../IMainWindow.ui" line="615"/>
         <source>Import QLandkarte GT database</source>
         <translation>Zavést databázi GT QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="627"/>
         <source>VRT Builder</source>
         <translation>Sestavovač VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="559"/>
+        <location filename="../IMainWindow.ui" line="630"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Rozhraní pro gdalbuildvrt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="642"/>
         <source>Store Map View</source>
         <translation>Uložit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="571"/>
+        <location filename="../IMainWindow.ui" line="645"/>
         <source>Write current active map and DEM list including the properties to a file</source>
-        <translation>Zapsat nynější činnou mapu a seznam DEM včetně vlastností do souboru</translation>
+        <translation>Zapsat nynější činnou mapu a seznam výškových modelů včetně vlastností do souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="657"/>
         <source>Load Map View</source>
         <translation>Nahrát pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="583"/>
+        <location filename="../IMainWindow.ui" line="660"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
-        <translation>Obnovit pohled s činnou mapou a seznam DEM včetně vlastností ze souboru</translation>
+        <translation>Obnovit pohled s činnou mapou a seznam výškových modelů včetně vlastností ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="675"/>
         <source>Ext. Profile</source>
         <translation>Ext. Profil</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="598"/>
+        <location filename="../IMainWindow.ui" line="678"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="690"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="610"/>
+        <location filename="../IMainWindow.ui" line="693"/>
         <source>Ctrl+Q</source>
         <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="705"/>
         <source>Clone Map View</source>
         <translation>Klonovat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="622"/>
+        <location filename="../IMainWindow.ui" line="708"/>
         <source>Ctrl+Shift+T</source>
         <translation>Ctrl+Shift+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="631"/>
+        <location filename="../IMainWindow.ui" line="720"/>
         <source>Create Routino Database</source>
         <translation>Vytvořit databázi Routino</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="732"/>
         <source>Save(Print) Map Screenshot</source>
         <translation>Uložit (vytisknout) snímek obrazovky s mapou</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="735"/>
         <source>Print a selected area of the map</source>
         <translation>Vytisknout vybranou oblast mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="646"/>
+        <location filename="../IMainWindow.ui" line="738"/>
         <source>Ctrl+P</source>
         <translation>Ctrl+P</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="750"/>
         <source>Setup Coord. Format</source>
         <translation>Nastavit formát souřadnic</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="658"/>
+        <location filename="../IMainWindow.ui" line="753"/>
         <source>Change the format coordinates are displayed</source>
         <translation>Změnit formát, v němž jsou souřadnice zobrazeny</translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="765"/>
+        <source>Setup Map Background</source>
+        <translation>Nastavit pozadí mapy</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="777"/>
+        <source>Setup Waypoint Icons</source>
+        <translation>Stanovit ikony cestovních bodů</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="780"/>
+        <source>Setup path to custom icons</source>
+        <translation>Stanovit cestu k vlastním ikonám</translation>
+    </message>
+    <message>
         <source>Setup Database</source>
         <translation type="obsolete">Nastavit databázi</translation>
     </message>
@@ -6001,9 +6250,13 @@ Název souboru: %1</translation>
         <translation type="obsolete">Pro přidání map použijte Soubor → Nastavit cesty k mapám. </translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Pro přidání map použijte Soubor → Nastavit cesty k mapám. </translation>
+        <translation type="vanished">Pro přidání map použijte Soubor → Nastavit cesty k mapám. </translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use <b>File->Setup Map Paths</b>. </source>
+        <translation>Pro přidání map použijte <b>Soubor → Nastavit cesty k mapám</b>. </translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
@@ -6025,27 +6278,27 @@ Nechce se mi číst dokumentaci!</translation>
     <message>
         <location filename="../map/IMapList.ui" line="158"/>
         <source>Move Up</source>
-        <translation type="unfinished"></translation>
+        <translation>Posunout nahoru</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="161"/>
         <source>Hide map behind previous map</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt mapu za předchozí mapou</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="170"/>
         <source>Move down</source>
-        <translation type="unfinished"></translation>
+        <translation>Posunout dolů</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="173"/>
         <source>Show map on top of next map</source>
-        <translation type="unfinished"></translation>
+        <translation>Mapa překrývá další</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="182"/>
         <source>Reload Maps</source>
-        <translation type="unfinished"></translation>
+        <translation>Nahrát mapy znovu</translation>
     </message>
 </context>
 <context>
@@ -6203,62 +6456,62 @@ Nechce se mi číst dokumentaci!</translation>
         <translation type="obsolete">Tímto budou všechny původní údaje nahrazeny jednoduchou čárou souřadnic. Všechna ostatní data budou trvale ztracena.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="264"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Nová čára</b><br/>Posuňte ukazovátko myši a použijte levé tlačítko myši k upuštění bodů. Až to bude uděláno, použijte pravé tlačítko myši k zastavení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation><b>Smazat bod</b><br/>Přesuňte ukazovátko myši blízko k bodu a stiskněte levé tlačítko myši pro jeho smazání.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation><b>Upravit rozsah bodů</b><br/>Klepněte levým tlačítkem myši na první bod pro započetí výběru. Klepněte levým tlačítkem myši na druhý bod pro dokončení výběru a vyberte z voleb. Použijte pravé tlačítko myši pro zrušení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Přesunout bod</b><br/>Přesuňte ukazovátko myši blízko k bodu a stiskněte levé tlačítko myši pro jeho držení v blízkosti ukazovátka. Posuňte myší pro přesunutí bodu. Upustěte bod klepnutím levým tlačítkem myši. Použijte pravé tlačítko myši pro zrušení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Přidat bod</b><br/>Přesuňte ukazovátko myši blízko k čáře a stiskněte levé tlačítko myši pro přidání bodu. Bod přilne k ukazovátku a vy jím budete moci pohnout. Bod upustěte klepnutím levým tlačítkem myši. Použijte pravé tlačítko myši pro zrušení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="347"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation><b>Žádné stanovení cesty</b><br/>Všechny body budou spojeny přímou čarou.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="353"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation><b>Automatické stanovení cesty</b><br/>Nynější nastavení směrování je používáno k vytváření cesty mezi body. <b>Poznámka:</b> Vybraný směrovač musí být schopen rychle směrovat (za běhu). Směrovače nepřipojené k internetu toto obvykle dokáží, směrovače připojené k internetu to běžně neumí.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="358"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation><b>Vektorové stanovení cesty</b><br/>Spojuje body čárou z nahrané vektorové mapy, je-li to možné.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="530"/>
         <source><b>%1 Metrics</b></source>
         <translation><b>%1 metrika</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="533"/>
         <source>Distance:</source>
         <translation>Vzdálenost:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="535"/>
         <source>Ascend:</source>
         <translation>Stoupání:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="537"/>
         <source>Descend:</source>
         <translation>Klesání:</translation>
     </message>
@@ -6280,27 +6533,32 @@ Nechce se mi číst dokumentaci!</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Reset Zoom</source>
         <translation>Nastavit znovu zvětšení</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="94"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Stop Range</source>
         <translation>Ukončit výběr oblasti</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="95"/>
+        <location filename="../plot/IPlot.cpp" line="96"/>
         <source>Save...</source>
         <translation>Uložit...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="638"/>
+        <location filename="../plot/IPlot.cpp" line="98"/>
+        <source>Add Waypoint</source>
+        <translation>Přidat cestovní bod</translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="647"/>
         <source>No or bad data.</source>
         <translation>Žádné nebo špatné údaje.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <location filename="../plot/IPlot.cpp" line="1244"/>
         <source>Select output file</source>
         <translation>Vybrat výstupní soubor</translation>
     </message>
@@ -6339,7 +6597,7 @@ nebo
     <message>
         <location filename="../print/IPrintDialog.ui" line="79"/>
         <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Když tisknete výřez internetové mapy, ujistěte se, že mapa byla nahrána do vyrovnávací paměti.</translation>
     </message>
     <message>
         <location filename="../print/IPrintDialog.ui" line="60"/>
@@ -6349,7 +6607,7 @@ nebo
     <message>
         <location filename="../print/IPrintDialog.ui" line="37"/>
         <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
-        <translation type="unfinished"></translation>
+        <translation>Když ukládáte výřez internetové mapy, ujistěte se, že mapa byla nahrána do vyrovnávací paměti.</translation>
     </message>
     <message>
         <location filename="../print/IPrintDialog.ui" line="89"/>
@@ -6463,7 +6721,7 @@ nebo
         <source>m</source>
         <translation>m</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation>°</translation>
@@ -6570,8 +6828,12 @@ nebo
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</source>
+        <translation>Pro použití stanovení cesty bez připojení k internetu je potřeba stanovit cesty k místním datům se stanovením cest. Použijte nástrojové tlačítko pro nastavení k zaregistrování cesty. Svá vlastní data se stanovením cest vytvoříte pomocí <b>Nástroj → Vytvořit databázi Routino</b>.</translation>
+    </message>
+    <message>
         <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
-        <translation>Pro použití stanovení cesty bez připojení k internetu je potřeba stanovit cesty k místním datům se stanovením cest. Použijte nástrojové tlačítko pro nastavení k zaregistrování cesty.</translation>
+        <translation type="vanished">Pro použití stanovení cesty bez připojení k internetu je potřeba stanovit cesty k místním datům se stanovením cest. Použijte nástrojové tlačítko pro nastavení k zaregistrování cesty.</translation>
     </message>
 </context>
 <context>
@@ -6869,6 +7131,30 @@ nebo
     </message>
 </context>
 <context>
+    <name>IScrOptPrint</name>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="35"/>
+        <source>Save selected area as image.</source>
+        <translation>Uložit vybranou oblast jako obrázek.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="38"/>
+        <location filename="../mouse/IScrOptPrint.ui" line="58"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="55"/>
+        <source>Print selected area.</source>
+        <translation>Tisk vybrané oblasti.</translation>
+    </message>
+</context>
+<context>
     <name>IScrOptRange</name>
     <message>
         <source>Form</source>
@@ -7015,6 +7301,78 @@ nebo
     </message>
 </context>
 <context>
+    <name>IScrOptSelect</name>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="59"/>
+        <source>Copy all selected items to a project.</source>
+        <translation>Kopírovat všechny vybrané prvky do projektu.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="62"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="82"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="102"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="122"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="176"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="205"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="265"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="291"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="317"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="343"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="79"/>
+        <source>Create a route from selected waypoints.</source>
+        <translation>Vytvořit cestu z vybraných cestovních bodů.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="99"/>
+        <source>Combine all selected tracks to a new one.</source>
+        <translation>Spojit všechny vybrané stopy do nové.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="119"/>
+        <source>Delete all selected items.</source>
+        <translation>Smazat všechny vybrané prvky.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="173"/>
+        <source>Select all items that intersect the selected area.</source>
+        <translation>Vybrat všechny prvky, které protínají vybranou oblast.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="202"/>
+        <source>Select all itmes that are completely inside the selected area.</source>
+        <translation>Vybrat všechny prvky, které jsou úplně uvnitř vybrané oblasti.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="262"/>
+        <source>Add tracks to selection.</source>
+        <translation>Přidat stopy do výběru.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="288"/>
+        <source>Add waypoints to selection.</source>
+        <translation>Přidat cestovní body do výběru.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="314"/>
+        <source>Add routes to selection.</source>
+        <translation>Přidat cesty do výběru.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="340"/>
+        <source>Add areas to selection.</source>
+        <translation>Přidat oblasti do výběru.</translation>
+    </message>
+</context>
+<context>
     <name>IScrOptTrk</name>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
@@ -7209,7 +7567,7 @@ nebo
     <message>
         <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
 </context>
 <context>
@@ -7333,12 +7691,12 @@ nebo
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
         <source>Add a clone</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat klona</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
         <source>The clone's name will be appended with '_Clone'</source>
-        <translation type="unfinished">Název klonu bude rozšířen o '_Klon'</translation>
+        <translation>Název klonu bude rozšířen o '_Klon'</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
@@ -7420,57 +7778,57 @@ nebo
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
         <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p align="justify"><span style=" font-weight:600;">Pozor!</span> Doporučuje se ponechat heslo prázdné, neboť QMapShack je uloží jako prostý text. Pokud heslo nezadáte, budete na ně dotazován při každém spuštění programu.</p></translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
         <source>Do not use a password.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepoužívat heslo.</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
         <source>SQLite</source>
-        <translation type="unfinished"></translation>
+        <translation>SQLite</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
         <source>MySQL</source>
-        <translation type="unfinished"></translation>
+        <translation>MySQL</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
         <source>Server</source>
-        <translation type="unfinished"></translation>
+        <translation>Server</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
         <source>Port</source>
-        <translation type="unfinished"></translation>
+        <translation>Přípojka</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
         <source>00000</source>
-        <translation type="unfinished">00000</translation>
+        <translation>00000</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
         <source>User</source>
-        <translation type="unfinished"></translation>
+        <translation>Uživatel</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
         <source>Password</source>
-        <translation type="unfinished"></translation>
+        <translation>Heslo</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
         <source><b>Port:</b> Leave the port field empty to use the default port.</source>
-        <translation type="unfinished"></translation>
+        <translation><b>Přípojka:</b> Pro používání výchozí přípojky ponechejte pole s číslem přípojky prázdné.</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
         <source>File:</source>
-        <translation type="unfinished"></translation>
+        <translation>Soubor:</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
@@ -7588,12 +7946,12 @@ nebo
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
         <source>listen for database changes from other instances of QMapShack. On port</source>
-        <translation type="unfinished"></translation>
+        <translation>Naslouchat změnám v databázi jiných instancí QMapShack. Na přípojce</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
         <source>00000</source>
-        <translation type="unfinished">00000</translation>
+        <translation>00000</translation>
     </message>
 </context>
 <context>
@@ -7824,20 +8182,20 @@ nebo
 <context>
     <name>IUnit</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Error</source>
-        <translation type="unfinished">Chyba</translation>
+        <translation>Chyba</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation type="unfinished">Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
+        <translation>Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Position values out of bounds. </source>
-        <translation type="unfinished">Polohy mimo platné hodnoty. </translation>
+        <translation>Polohy mimo platné hodnoty. </translation>
     </message>
 </context>
 <context>
@@ -7875,6 +8233,26 @@ nebo
         <source>Icons...</source>
         <translation>Ikony...</translation>
     </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="68"/>
+        <source>External Icons:</source>
+        <translation>Vnější symboly:</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="75"/>
+        <source>-</source>
+        <translation>-</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="82"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="95"/>
+        <source>All custom icons have to be *.bmp format.</source>
+        <translation>Všechny vlastní symboly musí být ve formátu *.bmp.</translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index c3352bd..abd896a 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -124,6 +124,11 @@
         <source>View %1</source>
         <translation>Ansicht %1</translation>
     </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="674"/>
+        <source>Setup Map Background</source>
+        <translation>Kartenhintergrund einstellen</translation>
+    </message>
 </context>
 <context>
     <name>CColorChooser</name>
@@ -136,32 +141,32 @@
 <context>
     <name>CCommandProcessor</name>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
         <translation>Debug-Ausgabe in die Konsole drucken.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
         <translation>Debug-Ausgabe in Log-Datei drucken (Systemordner für temporäre Dateien).</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
         <translation>Startbildschirm nicht anzeigen.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
         <translation>Datei mit QMapShack Einstellungen.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation>Datei</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
         <translation>Dateien für den späteren Gebrauch.</translation>
     </message>
@@ -265,7 +270,7 @@
 <context>
     <name>CDBProject</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <location filename="../gis/db/CDBProject.cpp" line="219"/>
         <source>The item %1 has been changed by %2 (%3). 
 
 To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
@@ -274,47 +279,47 @@ To solve this conflict you can create and save a clone, force your version or dr
 Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihre Version oder verwerfen diese und nehmen die Version in der Datenbank</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <location filename="../gis/db/CDBProject.cpp" line="225"/>
         <source>Conflict with database...</source>
         <translation>Konflikt mit der Datenbank...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <location filename="../gis/db/CDBProject.cpp" line="226"/>
         <source>Clone && Save</source>
         <translation>Klonen && Speichern</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <location filename="../gis/db/CDBProject.cpp" line="227"/>
         <source>Force Save</source>
         <translation>Speichern erzwingen</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <location filename="../gis/db/CDBProject.cpp" line="228"/>
         <source>Take remote</source>
         <translation>Entfernte Version nehmen</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <location filename="../gis/db/CDBProject.cpp" line="531"/>
         <source>Missing folder...</source>
         <translation>Fehlender Ordner...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <location filename="../gis/db/CDBProject.cpp" line="532"/>
         <source>Failed to save project. The folder has been deleted in the database.</source>
         <translation>Speichern des Projektes fehlgeschlagen. Der Ordner wurde in der Datenbank gelöscht.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <location filename="../gis/db/CDBProject.cpp" line="539"/>
         <source>Save ...</source>
         <translation>Speichern ...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>Error</source>
         <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>There was an unexpected database error:
 
 %1</source>
@@ -323,12 +328,12 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <location filename="../gis/db/CDBProject.cpp" line="727"/>
         <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
         <translation>Das Projekt '%1' will sich gerade aus der Datenbank aktualisieren. Es gibt allerdings nicht gespeicherte Änderungen.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <location filename="../gis/db/CDBProject.cpp" line="728"/>
         <source>Save changes?</source>
         <translation>Änderungen speichern?</translation>
     </message>
@@ -336,12 +341,12 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Deactivate</source>
         <translation>Deaktivieren</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Activate</source>
         <translation>Aktivieren</translation>
     </message>
@@ -405,7 +410,7 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
         <translation>Suche nach Bildern...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="264"/>
         <source>No images found</source>
         <translation>Keine Bilder gefunden</translation>
     </message>
@@ -593,12 +598,12 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CDeviceGarmin</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="255"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="254"/>
         <source>Picture%1</source>
         <translation>Bild %1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <location filename="../gis/gpx/serialization.cpp" line="1038"/>
         <source>Unknown</source>
         <translation>Unbekannt</translation>
     </message>
@@ -627,7 +632,7 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="57"/>
         <source>No extension available</source>
         <translation>Keine Erweiterung vorhanden</translation>
     </message>
@@ -659,12 +664,12 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="69"/>
         <source>FIT decoding error: protocol %1 version not supported.</source>
         <translation>FIT Dekodierfehler: Protokollversion %1 wird nicht unterstützt.</translation>
     </message>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="120"/>
         <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
         <translation>FIT Dekodierfehler: Nicht übereinstimmende Dateikopfsignatur. Keine FIT Datei.</translation>
     </message>
@@ -743,52 +748,52 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
         <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="385"/>
         <source>Area: %1%2</source>
         <translation>Gebiet: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="447"/>
         <source>Changed area shape.</source>
         <translation>Gebietsform geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="455"/>
         <source>Changed name.</source>
         <translation>Name geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
         <source>Changed border width.</source>
         <translation>Umrandungsbreite geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="467"/>
         <source>Changed fill pattern.</source>
         <translation>Füllung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="473"/>
         <source>Changed opacity.</source>
         <translation>Durchsichtigkeit geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="479"/>
         <source>Changed comment.</source>
         <translation>Kommentar geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="485"/>
         <source>Changed description.</source>
         <translation>Beschreibung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="491"/>
         <source>Changed links</source>
         <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed color</source>
         <translation>Farbe geändert</translation>
     </message>
@@ -832,7 +837,7 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="485"/>
         <source>Time: %1 %2</source>
         <translation>Gesamtzeit: %1 %2</translation>
     </message>
@@ -852,12 +857,12 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
         <translation>mit %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="487"/>
         <source>Distance: %1 %2</source>
         <translation>Entfernung: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="601"/>
         <source>Changed route points.</source>
         <translation>Geänderte Routenpukte.</translation>
     </message>
@@ -865,7 +870,7 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <location filename="../gis/fit/serialization.cpp" line="182"/>
         <source>FIT file %1 contains no GPS data.</source>
         <translation>FIT Dekodierfehler: Datei enthält keine GPS Daten.</translation>
     </message>
@@ -896,40 +901,36 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
         <translation>Lesen der Daten fehlgeschlagen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="118"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="290"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Wegpunkte geändert, alle vorherigen Daten sind verloren.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
         <source>Length: %1 %2</source>
         <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="408"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
         <source>Time: %1</source>
-        <translation>Gesamtzeit: %1</translation>
+        <translation type="obsolete">Gesamtzeit: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
         <source>, Speed: %1 %2</source>
-        <translation>, Geschw.: %1 %2</translation>
+        <translation type="obsolete">, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
         <source>Moving: %1</source>
-        <translation>Zeit in Bew.: %1</translation>
+        <translation type="obsolete">Zeit in Bew.: %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
@@ -937,172 +938,202 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
         <translation>Beginn: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="432"/>
         <source>End: %1</source>
         <translation>Ende: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
         <source>Points: %1 (%2)</source>
         <translation>Punkte: %1 von %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="527"/>
         <source>Ele.: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="530"/>
         <source> slope: %1%3 (%2%)</source>
         <translation>, Neigung: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="535"/>
         <source> speed: %1%2</source>
         <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="563"/>
         <source>... and %1 tags not displayed</source>
         <translation>... und %1 Tags werden nicht angezeigt</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="574"/>
+        <source>Descend: - (-)</source>
+        <translation>Abstieg: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
+        <source>Distance: - (-)</source>
+        <translation>Entfernung: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="576"/>
+        <source>Moving: - (-)</source>
+        <translation>Zeit in Bew.: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Anstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
+        <source>Hide point %1.</source>
+        <translation>Punkt %1 verbergen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1445"/>
+        <source>Hide points %1..%2.</source>
+        <translation>Punket %1  %2 verbergen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
         <source>Ascend: - (-)</source>
         <translation>Anstieg: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="587"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation>, Abstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
         <source> Descend: - (-) </source>
-        <translation>, Abstieg: - (-) </translation>
+        <translation type="obsolete">, Abstieg: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Entf.: %1 %2 (%3%)</translation>
+        <translation type="obsolete">Entf.: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
         <source>Dist.: - (-)</source>
-        <translation>Entf.: - (-)</translation>
+        <translation type="obsolete">Entf.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="599"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation>, Zeit in Bew.: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
         <source> Moving: - (-) </source>
-        <translation>, Zeit in Bew.: - (-) </translation>
+        <translation type="obsolete">, Zeit in Bew.: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="621"/>
         <source>Ascend: %1%2</source>
         <translation>Anstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="626"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="638"/>
         <source>, %1%2</source>
         <translation>, %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Ascend: -</source>
         <translation>Anstieg: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="633"/>
         <source> Descend: %1%2</source>
         <translation> Abstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="616"/>
         <source>Descend: -</source>
         <translation>Abstieg: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
         <source>Dist.: %1%2</source>
-        <translation>Entf.: %1 %2</translation>
+        <translation type="obsolete">Entf.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
         <source> Time: %1%2</source>
         <translation> Zeit: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Enter new track name.</source>
         <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="416"/>
+        <source>Time: %1, Speed: %2 %3</source>
+        <translation>Zeit: %1, Geschwindigkeit: %2 %3</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="423"/>
+        <source>Moving: %1, Speed: %2 %3</source>
+        <translation>Zeit in Bew.: %1, Geschw. %2 %3</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="593"/>
+        <source>Distance: %1%2 (%3%)</source>
+        <translation>Entf.: %1 %2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="643"/>
+        <source>Distance: %1%2</source>
+        <translation>Entfernung: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1286"/>
         <source>Permanently removed points %1..%2</source>
         <translation>Punkte %1..%2 dauerhaft entfernt</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
         <source>Hide points.</source>
-        <translation>Punkte verbergen.</translation>
+        <translation type="obsolete">Punkte verbergen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1485"/>
         <source>Show points.</source>
         <translation>Punkte anzeigen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2040"/>
         <source>Changed name</source>
         <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2046"/>
         <source>Changed comment</source>
         <translation>Kommentar geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2052"/>
         <source>Changed description</source>
         <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2058"/>
         <source>Changed links</source>
         <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2085"/>
         <source>Changed activity to '%1' for complete track.</source>
         <translation>Die Aktivität wurde für den gesamten Track auf '%1' geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
         <translation>Die Aktivität wurde für den Bereich (%2..%3) auf '%1' geändert.</translation>
     </message>
@@ -1172,7 +1203,7 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
         <translation>Erweiterung %1 wurde von allen Trackpunkten entfernt</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
+        <location filename="../qlgt/converter.cpp" line="195"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation>Kopiert das Informationsflag aus dem QLandkarte GT Track</translation>
     </message>
@@ -1358,180 +1389,179 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save As...</source>
         <translation>Speichern unter...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Edit..</source>
         <translation>Bearbeiten..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="111"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="122"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Update Project on Device</source>
         <translation>Aktualisiere das Projekt auf dem Gerät</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Edit...</source>
         <translation>Bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Copy to...</source>
         <translation>Kopieren nach...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
+        <location filename="../gis/CGisListWks.cpp" line="150"/>
         <source>Show Bubble</source>
         <translation>Infoblase anzeigen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
+        <location filename="../gis/CGisListWks.cpp" line="152"/>
         <source>Move Waypoint</source>
         <translation>Wegpunkt verschieben</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="162"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Route Instructions</source>
         <translation>Navigationsanweisungen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
+        <location filename="../gis/CGisListWks.cpp" line="163"/>
         <source>Calculate Route</source>
         <translation>Route berechnen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="165"/>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
         <source>Reset Route</source>
         <translation>Route zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="166"/>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
         <source>Edit Route</source>
         <translation>Route bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="182"/>
+        <location filename="../gis/CGisListWks.cpp" line="181"/>
         <source>Create Route</source>
         <translation>Route erstellen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="626"/>
+        <location filename="../gis/CGisListWks.cpp" line="625"/>
         <source>Drop items...</source>
         <translation>Elemente verwerfen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="651"/>
-        <location filename="../gis/CGisListWks.cpp" line="1637"/>
-        <location filename="../gis/CGisListWks.cpp" line="1675"/>
+        <location filename="../gis/CGisListWks.cpp" line="650"/>
+        <location filename="../gis/CGisListWks.cpp" line="1581"/>
+        <location filename="../gis/CGisListWks.cpp" line="1619"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualisieren der Geräte</b><p>Aktualisiere %1<br/>Bitte warten...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1156"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Delete project...</source>
         <translation>Projekt löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1156"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Do you really want to delete %1?</source>
         <translation>Sind Sie sicher, dass sie %1 löschen wollen?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1352"/>
         <source>Copy items...</source>
-        <translation>Elemente kopieren...</translation>
+        <translation type="obsolete">Elemente kopieren...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
         <source>Proj. Waypoint...</source>
         <translation>Wegpunkt Projektion...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Track Profile</source>
         <translation>Trackprofil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Send to Devices</source>
         <translation>Ans Gerät senden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Select Range</source>
         <translation>Bereich wählen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="141"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Edit Track Points</source>
         <translation>Trackpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
         <source>Reverse Track</source>
         <translation>Track umkehren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
         <source>Combine Tracks</source>
         <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="175"/>
+        <location filename="../gis/CGisListWks.cpp" line="174"/>
         <source>Edit Area Points</source>
         <translation>Gebietspunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
-        <location filename="../gis/CGisListWks.cpp" line="145"/>
+        <location filename="../gis/CGisListWks.cpp" line="123"/>
+        <location filename="../gis/CGisListWks.cpp" line="144"/>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Show on Map</source>
         <translation>Auf der Karte anzeigen.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Hide from Map</source>
         <translation>Auf der Karte ausblenden.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Sync. with Database</source>
         <translation>Mit der Datenbank synchronisieren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="780"/>
+        <location filename="../gis/CGisListWks.cpp" line="779"/>
         <source>Saving workspace. Please wait.</source>
-        <translation>Arbeitsplatz speichern. Bitte warten.</translation>
+        <translation>Arbeitsplatz wird gespeichert. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="826"/>
+        <location filename="../gis/CGisListWks.cpp" line="825"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Arbeitsplatz laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1133"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>Close all projects...</source>
         <translation>Alle Projekte schließen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1133"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dies wird alle Projekte aus dem Arbeitsplatz entfernen.</translation>
     </message>
@@ -1539,22 +1569,27 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>Load project...</source>
         <translation>Lade Projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation>Das Projekt "%1" ist schon im Arbeitsplatz geladen.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="529"/>
+        <source>Copy items...</source>
+        <translation>Elemente kopieren...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Cut Track...</source>
         <translation>Track teilen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Do you want to delete the original track?</source>
         <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
     </message>
@@ -1562,6 +1597,49 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
 <context>
     <name>CGpsProject</name>
     <message>
+        <source>Failed to load file %1...</source>
+        <translation type="obsolete">Datei %1 konnte nicht geladen werden...</translation>
+    </message>
+    <message>
+        <source>Failed to open %1</source>
+        <translation type="obsolete">Öffnen von %1 fehlgeschlagen</translation>
+    </message>
+    <message>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="obsolete">Lesen von %1 fehlgeschlagen:
+Zeile %2, Spalte %3:
+%4</translation>
+    </message>
+    <message>
+        <source>Not a GPX file: %1</source>
+        <translation type="obsolete">Keine GPX Datei: %1</translation>
+    </message>
+    <message>
+        <source>File exists ...</source>
+        <translation type="obsolete">Datei existiert...</translation>
+    </message>
+    <message>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="obsolete">Diese Datei wurde nicht mit QMapShack erstellt. Wenn Sie 'Ja' drücken werden alle Daten dieser Datei gelöscht. Selbst wenn diese Datei GPX Daten enthält und mit QMapShack geladen wurde, können nicht alle Elemente dieser Datei durch QMapShack geladen und gespeichert werden. Diese Elemente sind verloren. Ich empfehle die Nutzung einer anderen Datei. <b>Wollen Sie die Datei wirklich überschreiben?</b></translation>
+    </message>
+    <message>
+        <source>Failed to create file '%1'</source>
+        <translation type="obsolete">Datei %1' konnte nicht erstellt werden</translation>
+    </message>
+    <message>
+        <source>Failed to write file '%1'</source>
+        <translation type="obsolete">Datei %1' konnte nicht gespeichert werden</translation>
+    </message>
+    <message>
+        <source>Saving GIS data failed...</source>
+        <translation type="obsolete">Das Speichern der GIS Daten ist fehlgeschlagen...</translation>
+    </message>
+</context>
+<context>
+    <name>CGpxProject</name>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
         <source>Failed to load file %1...</source>
         <translation>Datei %1 konnte nicht geladen werden...</translation>
@@ -1569,16 +1647,16 @@ Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihr
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
         <source>Failed to open %1</source>
-        <translation>Öffnen von %1 fehlgeschlagen</translation>
+        <translation>Die Datei %1 konnte nicht geöffnet werden</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Lesen von %1 fehlgeschlagen:
+        <translation>Fehler beim Lesen: %1
 Zeile %2, Spalte %3:
-%4</translation>
+-%4</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
@@ -1598,12 +1676,12 @@ Zeile %2, Spalte %3:
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
         <source>Failed to create file '%1'</source>
-        <translation>Datei %1' konnte nicht erstellt werden</translation>
+        <translation>Datei '%1' konnte nicht erstellt werden</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
         <source>Failed to write file '%1'</source>
-        <translation>Datei %1' konnte nicht gespeichert werden</translation>
+        <translation>Datei '%1' konnte nicht geschrieben werden</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
@@ -1741,665 +1819,676 @@ Zeile %2, Spalte %3:
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="617"/>
+        <location filename="../CMainWindow.cpp" line="643"/>
         <source>Ele: %1%2</source>
         <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="633"/>
+        <location filename="../CMainWindow.cpp" line="659"/>
         <source>[Grid: %1]</source>
         <translation>[Gitter: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="758"/>
+        <location filename="../CMainWindow.cpp" line="794"/>
         <source>Load GIS Data...</source>
         <translation>GIS Daten laden...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
         <source>Select output file</source>
         <translation>Ausgabedatei auswählen</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>QMapShack View (*.view)</source>
         <translation>QMapShack Ansicht (*.view)</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>Select file to load</source>
         <translation>Zu ladende Datei auswählen</translation>
     </message>
 </context>
 <context>
+    <name>CMapDraw</name>
+    <message>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. </source>
+        <translation type="vanished">Im Augenblick gibt es keine Karten. QMapShack macht ohne Karten überhaupt keinen Spaß. Sie können Online-Karten installieren, indem Sie den 'Hilfe! Ich will Karten!' Knopf im Fenster 'Karten' drücken. Oder drücken Sie F1 um zur Online-Hilfe zu gelangen. Erfahren Sie dort mehr über die Bedienung von QMapShack.</translation>
+    </message>
+    <message>
+        <location filename="../map/CMapDraw.cpp" line="406"/>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. 
+
+If it's no fun, why don't you provide maps? Well to host maps ready for download and installation requires a good server. And this is not a free service. The project lacks the money. Additionally map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package the data. This is not that easy as it might sound and for some data you have to pay royalties. The project simply lacks resources to do this. And we think installing the stuff yourself is  [...]
+        <translation>Im Augenblick gibt es keine Karten. QMapShack macht ohne Karten überhaupt keinen Spaß. Sie können Online-Karten installieren, indem Sie den 'Hilfe! Ich will Karten!' Knopf im Fenster 'Karten' drücken. Oder drücken Sie F1 um zur Online-Hilfe zu gelangen. Erfahren Sie dort mehr über die Bedienung von QMapShack.
+
+Wenn QMapShack ohne Karten keinen Spaß macht, warum werden dann keine mitgeliefert? Nun, um Karten fertig zur Installation zum Download anbieten zu können, benötigt man einen guten Server. Und der kostet. Dem Projekt fehlt hierzu das Geld. Zusätzlich unterliegen Karten- und DEM Daten dem Urheberrecht. Deswegen muss man den Urheber vorher fragen, ob man die Daten in ein Paket umwandeln und anbieten darf. Klingt einfacher als es oft ist. Und manchmal müsste man sogar Gebühren zahlen. Dem P [...]
+    </message>
+</context>
+<context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <location filename="../map/CMapIMG.cpp" line="145"/>
         <source>Failed ...</source>
         <translation>Fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
         <translation>Nicht angegeben</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
         <translation>Französisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
         <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
         <translation>Niederländisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
         <translation>Englisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
         <translation>Italienisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
         <translation>Finnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
         <translation>Schwedisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
         <translation>Spanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
         <translation>Baskisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
         <translation>Catalanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
         <translation>Galizisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
         <translation>Walisisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
         <translation>Gälisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
         <translation>Dänisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
         <translation>Norwegisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
         <translation>Portugiesisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
         <translation>Slovakisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
         <translation>Tschechisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
         <translation>Kroatisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
         <translation>Ungarisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
         <translation>Polnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
         <translation>Türkisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
         <translation>Griechisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
         <translation>Slowenisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
         <translation>Russisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
         <translation>Estnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
         <translation>Lettisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
         <translation>Rumänisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
         <translatorcomment>Albanisch</translatorcomment>
         <translation>Albanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
         <translation>Bosnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
         <translation>Litauisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
         <translation>Serbisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
         <translation>Makedonisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
         <translation>Bulgarisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
         <translation>Autobahn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
         <translation>Bundesstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
         <translation>Schnellstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
         <translation>Fernstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
         <translation>Sammelstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
         <translation>Wohnstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
         <translation>Allee/Privatstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
         <translation>Auffahrt (langsam)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
         <translation>Auffahrt (schnell)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
         <translation>Unbefestigte Straße</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
         <translation>Autobahnzubringer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
         <translation>Kreisverkehr</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
         <translation>Eisenbahn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
         <translation>Küstenlinie</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
         <translation>Bach</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
         <translation>Zeitzone</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
         <translation>Fähre</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
         <translation>Staats-/Landesgrenze</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
         <translation>Kreis-/Gemeindegrenze</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
         <translation>Internationale Grenze</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
         <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
         <translation>Höhenlinie klein</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
         <translation>Höhenlinie mittel</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
         <translation>Höhenlinie groß</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
         <translation>Tiefenlinie klein</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
         <translation>Tiefenlinie mittel</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
         <translation>Tiefenlinie groß</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
         <translation>Intermittierender Bach</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
         <translation>Landebahn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
         <translation>Pipeline</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
         <translation>Stromleitung</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
         <translation>Meeresgrenze</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
         <translation>Gefahrbereichgrenze</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Großes Wohngebiet (&gt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Kleines Wohngebiet (&lt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
         <translation>Ländliches Wohngebiet</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
         <translation>Militärbasis</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
         <translation>Parkplatz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
         <translation>Parkhaus</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
         <translation>Flugplatz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
         <translation>Einkaufszentrum</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
         <translation>Jachthafen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
         <translation>Universität/Hochschule</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
         <translation>Krankenhaus</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
         <translation>Industrie</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
         <translation>Schutzgebiet</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
         <translation>Fabrikgelände</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
         <translation>Sportanlage</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
         <translation>Golfplatz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
         <translation>Friedhof</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
         <translation>Nationalpark</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
         <translation>Stadtpark</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
         <translation>Wald</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
         <translation>Ozean</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
         <translation>Meer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
         <translation>See</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
         <translation>See</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
         <translation>See</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
         <translation>See</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
         <translation>Strom</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
         <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
         <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
         <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
         <translation>Gewässer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
         <translation>Feuchtgebiet/Sumpf</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
         <translation>Gletscher</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
         <translation>Obstgarten/Plantage</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
         <translation>Buschwerk</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
         <translation>Ebene</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <location filename="../map/CMapIMG.cpp" line="435"/>
         <source>Failed to read: </source>
         <translation>Lesen fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <location filename="../map/CMapIMG.cpp" line="478"/>
         <source>Failed to open: </source>
         <translation>Öffnen fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <location filename="../map/CMapIMG.cpp" line="502"/>
+        <location filename="../map/CMapIMG.cpp" line="506"/>
         <source>Bad file format: </source>
         <translation>Falsches Format:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <location filename="../map/CMapIMG.cpp" line="595"/>
         <source>Failed to read file structure: </source>
         <translation>Lesen der Dateistruktur fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <location filename="../map/CMapIMG.cpp" line="630"/>
         <source>Loading %1</source>
         <translation>Lädt %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <location filename="../map/CMapIMG.cpp" line="636"/>
         <source>User abort: </source>
         <translation>Benutzerabbruch:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation>Die Datei hat das NT Format. QMapShack kann dieses Format nicht lesen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benutzt wird.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2502"/>
-        <location filename="../map/CMapIMG.cpp" line="2510"/>
-        <location filename="../map/CMapIMG.cpp" line="2514"/>
-        <location filename="../map/CMapIMG.cpp" line="2519"/>
-        <location filename="../map/CMapIMG.cpp" line="2565"/>
-        <location filename="../map/CMapIMG.cpp" line="2573"/>
-        <location filename="../map/CMapIMG.cpp" line="2577"/>
-        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <location filename="../map/CMapIMG.cpp" line="2305"/>
+        <location filename="../map/CMapIMG.cpp" line="2311"/>
+        <location filename="../map/CMapIMG.cpp" line="2315"/>
         <source>Point of Interest</source>
         <translation>Ort von Interesse</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <location filename="../map/CMapIMG.cpp" line="2401"/>
         <source>Unknown</source>
         <translation>Unbekannt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2755"/>
-        <location filename="../map/CMapIMG.cpp" line="2763"/>
-        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <location filename="../map/CMapIMG.cpp" line="2443"/>
+        <location filename="../map/CMapIMG.cpp" line="2451"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Area</source>
         <translation>Gebiet</translation>
     </message>
@@ -2407,17 +2496,17 @@ Zeile %2, Spalte %3:
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Deactivate</source>
         <translation>Deaktivieren</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Activate</source>
         <translation>Aktivieren</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="228"/>
+        <location filename="../map/CMapList.cpp" line="233"/>
         <source>Where do you want to store maps?</source>
         <translation>Wo wollen Sie die Karten speichern?</translation>
     </message>
@@ -2675,7 +2764,7 @@ Unbekannte Struktur.</translation>
         <location filename="../mouse/CMouseEditRte.cpp" line="30"/>
         <location filename="../mouse/CMouseEditRte.cpp" line="37"/>
         <source>Route</source>
-        <translation>Routen</translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditRte.cpp" line="39"/>
@@ -2750,12 +2839,17 @@ Unbekannte Struktur.</translation>
         <translation>Gebiet hinzufügen</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="44"/>
+        <source>Select Items On Map</source>
+        <translation>Elemente auf der Karte auswählen</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
         <translation>Position kopieren</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="47"/>
         <source>Copy position (Grid)</source>
         <translation>Position kopieren (Gitter)</translation>
     </message>
@@ -2763,8 +2857,12 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
         <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
+        <translation type="obsolete"><b>Karte speichern (drucken)</b><br/>Wählen Sie mit der linken Maustaste einen rechteckigen Bereich auf der Karte aus. Die Auswahl kann durch Verschieben der Eckpunkte mit der Maus angepasst werden. Abbruch mit Rechtsklick. Speichern/Drucken erfolgt durch Linksklick auf das entsprechende Symbol in der Mitte der Auswahl.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMousePrint.cpp" line="31"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
         <translation><b>Karte speichern (drucken)</b><br/>Wählen Sie mit der linken Maustaste einen rechteckigen Bereich auf der Karte aus. Die Auswahl kann durch Verschieben der Eckpunkte mit der Maus angepasst werden. Abbruch mit Rechtsklick. Speichern/Drucken erfolgt durch Linksklick auf das entsprechende Symbol in der Mitte der Auswahl.</translation>
     </message>
 </context>
@@ -2777,6 +2875,39 @@ Unbekannte Struktur.</translation>
     </message>
 </context>
 <context>
+    <name>CMouseSelect</name>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="31"/>
+        <source><b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation><b>Elemente auf der Karte wählen</b><br/>Wählen Sie mit der linken Maustaste einen rechteckigen Bereich auf der Karte aus. Abbruch mit Rechtsklick. Die Auswahl kann durch Verschieben der Eckpunkte mit der Maus angepasst werden.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="96"/>
+        <source><b>Selected:</b><br/></source>
+        <translation><b>Ausgewählt:</b><br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="97"/>
+        <source>%1 tracks<br/></source>
+        <translation>%1 Tracks<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="98"/>
+        <source>%1 waypoints<br/></source>
+        <translation>%1 Wegpunkte<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="99"/>
+        <source>%1 routes<br/></source>
+        <translation>%1 Routen<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="100"/>
+        <source>%1 areas<br/></source>
+        <translation>%1 Gebiete<br/></translation>
+    </message>
+</context>
+<context>
     <name>CPhotoAlbum</name>
     <message>
         <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
@@ -2785,14 +2916,27 @@ Unbekannte Struktur.</translation>
     </message>
 </context>
 <context>
+    <name>CPlot</name>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="55"/>
+        <source>distance [%1]</source>
+        <translation>Entfernung [%1]</translation>
+    </message>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="60"/>
+        <source>time</source>
+        <translation>Uhrzeit</translation>
+    </message>
+</context>
+<context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="78"/>
         <source>distance [%1]</source>
         <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <location filename="../plot/CPlotProfile.cpp" line="79"/>
         <source>alt. [%1]</source>
         <translation>Höhe [%1]</translation>
     </message>
@@ -2901,14 +3045,12 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
         <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <translation type="vanished">Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
         <source>time</source>
-        <translation>Uhrzeit</translation>
+        <translation type="vanished">Uhrzeit</translation>
     </message>
 </context>
 <context>
@@ -3083,13 +3225,13 @@ ist keine gültige Koordinatensystemdefinition:
     <name>CQmsProject</name>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open...</source>
         <translation>Öffnen fehlgeschlagen...</translation>
     </message>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open %1</source>
         <translation>Öffnen von %1 fehlgeschlagen</translation>
     </message>
@@ -3495,6 +3637,59 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
 </context>
 <context>
+    <name>CScrOptSelect</name>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="93"/>
+        <source><b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/></source>
+        <translation><b>Genauert Modus</b><br/>Alle Elemente müssen vollständig innerhalb des gewählten Bereiches sein.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="97"/>
+        <source><b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/></source>
+        <translation><b>Überschneidender Modus</b><br/>Alle gewählten Elemente müssen innerhalb des gewählten Bereiches sein oder müssen diesen zumindest schneiden.<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="101"/>
+        <source><b>Add Tracks</b><br/>Add tracks to list of selected items<br/></source>
+        <translation><b>Tracks hinzufügen</b><br/>Fügt Tracks zur Liste der gewählten Elemente hinzu<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="105"/>
+        <source><b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/></source>
+        <translation><b>Wegpunkte hinzufügen</b><br/>Fügt Wegpunkte zur Liste der gewählten Elemente hinzu<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="109"/>
+        <source><b>Add Routes</b><br/>Add routes to list of selected items<br/></source>
+        <translation><b>Routen hinzufügen</b><br/>Fügt Routen zur Liste der gewählten Elemente hinzu<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="113"/>
+        <source><b>Add Areas</b><br/>Add areas to list of selected items<br/></source>
+        <translation><b>Gebiete hinzufügen</b><br/>Fügt Gebiete zur Liste der gewählten Elemente hinzu<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="124"/>
+        <source><b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/></source>
+        <translation><b>Tracks ignorieren</b><br/>Tracks werden in der Liste der gewählten Elemente nicht berücksichtigt<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="128"/>
+        <source><b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/></source>
+        <translation><b>Wegpunkte ignorieren</b><br/>Wegpunkte werden in der Liste der gewählten Elemente nicht berücksichtigt<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="132"/>
+        <source><b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/></source>
+        <translation><b>Routen ignorieren</b><br/>Routen werden in der Liste der gewählten Elemente nicht berücksichtigt<br/></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="136"/>
+        <source><b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/></source>
+        <translation><b>Gebiete ignorieren</b><br/>Gebiete werden in der Liste der gewählten Elemente nicht berücksichtigt<br/></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
@@ -3564,17 +3759,22 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CSlfReader</name>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="63"/>
+        <source>Failed to parse timestamp `%1`</source>
+        <translation>Zeitmarke lesen fehlgeschlagen. '%1'</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="76"/>
         <source>%1 does not exist</source>
         <translation>%1 existiert nicht</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="81"/>
         <source>Failed to open %1</source>
         <translation>Öffnen von %1 fehlgeschlagen</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="92"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3583,22 +3783,22 @@ Zeile %2, Spalte %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="99"/>
         <source>Not a SLF file: %1</source>
         <translation>Keine SLF Datei: %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="106"/>
         <source>Unsupported revision %1: %2</source>
         <translation>Nicht unterstützte Revision %1: %2</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="181"/>
         <source>Break %1</source>
         <translation>Pause %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="185"/>
         <source>Lap %1</source>
         <translation>Runde %1</translation>
     </message>
@@ -3614,21 +3814,21 @@ Zeile %2, Spalte %3:
 <context>
     <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
         <translation>Die Datei %1 konnte nicht geöffnet werden.</translation>
     </message>
@@ -3652,6 +3852,14 @@ Zeile %2, Spalte %3:
     </message>
 </context>
 <context>
+    <name>CWptIconDialog</name>
+    <message>
+        <location filename="../helpers/CWptIconDialog.cpp" line="160"/>
+        <source>Path to user icons...</source>
+        <translation>Pfad zu Benutzersymbolen...</translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -4084,14 +4292,18 @@ Wenn Sie nur die eine Hälfte behalten wollen, können Sie einfach die Punkte l
         <translation></translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Um Dateien mit Höhendaten zuzufügen -> Menü Datei - DEM Verzeichnisse angeben.</translation>
+        <translation type="vanished">Sie können Höhendaten mit <b>"Menü -> Datei -> DEM Verzeichnisse angeben"</b> hinzufügen.</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
+        <translation>Sie können Höhendaten mit <b>"Menü -> Datei -> DEM Verzeichnisse angeben"</b> hinzufügen.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
         <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Datei zu aktivieren. Nutze Ziehen u. Ablegen, um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <translation>Mit dem Kontextmenü (Klick mit rechter Maustaste auf einen Eintrag) können Sie einen Datensatz aktivieren. Um die Höhendaten in einer anderen Reihenfolge anzuzeigen, können Sie jeden Eintrag mit drag-n-drop verschieben.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="156"/>
@@ -4653,7 +4865,7 @@ Wenn Sie nur die eine Hälfte behalten wollen, können Sie einfach die Punkte l
 <context>
     <name>IDevice</name>
     <message>
-        <location filename="../device/IDevice.cpp" line="247"/>
+        <location filename="../device/IDevice.cpp" line="287"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
         <translation>Es gibt schon ein Projekt mit dem selben Namen. Wenn Sie 'ok' drücken wird dieses entfernt und ersetzt.</translation>
     </message>
@@ -5028,66 +5240,72 @@ Wenn Sie nur die eine Hälfte behalten wollen, können Sie einfach die Punkte l
         <translation>[kein Name]</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <location filename="../gis/IGisItem.cpp" line="314"/>
         <source>The item is not part of the project in the database.</source>
         <translation>Das Element ist nicht Teil des Projektes in der Datenbank.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <location filename="../gis/IGisItem.cpp" line="315"/>
+        <source>
+It is either a new item or it has been deleted in the database by someone else.</source>
+        <translation>Es ist entweder ein neues Symbol oder es wurde in der Datenbank gelöscht.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="321"/>
         <source>The item is not in the database.</source>
         <translation>Das Element ist nicht in der Datenbank.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <location filename="../gis/IGisItem.cpp" line="327"/>
         <source>The item might need to be saved</source>
         <translation>Es könnte notwendig sein, das Element zu speichern.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <location filename="../gis/IGisItem.cpp" line="411"/>
         <source>Initial version.</source>
         <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <location filename="../gis/IGisItem.cpp" line="519"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
         <translation><h3>%1</h3> Diese Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <location filename="../gis/IGisItem.cpp" line="520"/>
         <source>Read Only Mode...</source>
         <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="670"/>
-        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="673"/>
-        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="698"/>
-        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <location filename="../gis/IGisItem.cpp" line="712"/>
+        <location filename="../gis/IGisItem.cpp" line="757"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Verknüpfungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="701"/>
-        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <location filename="../gis/IGisItem.cpp" line="715"/>
+        <location filename="../gis/IGisItem.cpp" line="760"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- keine Verknüpfungen---</p></translation>
     </message>
@@ -5105,59 +5323,59 @@ Wenn Sie nur die eine Hälfte behalten wollen, können Sie einfach die Punkte l
         <translation><h3>%1</h3>Das Projekt wurde geändert. Speichern, bevor es geschlossen wird?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="258"/>
         <source>%1: Correlate tracks and waypoints.</source>
         <translation>%1: Tracks und Wegpunkte verknüpfen.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="268"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
         <translation><h3>%1</h3>Hat das zu lange gedauert? Wollen Sie die Verknüpfung von Tracks und Wegpunkten auch in Zukunft für dieses Projekt überspringen?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="269"/>
         <source>Canceled correlation...</source>
         <translation>Verknüpfung abgebrochen...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Save "%1" to...</source>
         <translation>Speichere "%1" nach...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="420"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Dateiname: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="425"/>
         <source>Waypoints: %1</source>
         <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="429"/>
         <source>Tracks: %1</source>
         <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="433"/>
         <source>Routes: %1</source>
         <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="437"/>
         <source>Areas: %1</source>
         <translation>Gebiete: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="557"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="558"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
@@ -5183,7 +5401,7 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/IGisWidget.ui" line="138"/>
         <source>To add a database do a right click on the database list above.</source>
-        <translation>Um eine Datenbank hinzuzufügen rechtsklicken Sie oben auf die Datenbankliste.</translation>
+        <translation>Eine neue Datenbank wird über einen Rechtsklick im Fenster erstellt.</translation>
     </message>
 </context>
 <context>
@@ -5281,6 +5499,14 @@ Dateiname: %1</translation>
     </message>
 </context>
 <context>
+    <name>ILineOp</name>
+    <message>
+        <location filename="../mouse/line/ILineOp.cpp" line="214"/>
+        <source>Routing</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
     <name>ILinksDialog</name>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
@@ -5327,310 +5553,325 @@ Dateiname: %1</translation>
         <translation>Ansicht</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
+        <location filename="../IMainWindow.ui" line="103"/>
         <source>Window</source>
         <translation>Fenster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
+        <location filename="../IMainWindow.ui" line="108"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
+        <location filename="../IMainWindow.ui" line="115"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
+        <location filename="../IMainWindow.ui" line="126"/>
         <source>Tool</source>
         <translation>Werkzeug</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
+        <location filename="../IMainWindow.ui" line="151"/>
         <source>Maps</source>
         <translation>Karten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
+        <location filename="../IMainWindow.ui" line="194"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Dig. Höhenmodell (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Data</source>
         <translation>Daten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Route</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="285"/>
+        <location filename="../IMainWindow.ui" line="288"/>
         <source>Add Map View</source>
         <translation>Kartenansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="291"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="306"/>
         <source>Show Scale</source>
         <translation>Maßstab</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="318"/>
         <source>Setup Map Font</source>
         <translation>Kartenfont einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="333"/>
         <source>Show Grid</source>
         <translation>Gitter</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="336"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="348"/>
         <source>Setup Grid</source>
         <translation>Gitter einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
+        <location filename="../IMainWindow.ui" line="351"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="366"/>
         <source>Flip Mouse Wheel</source>
         <translation>Mausrad umdrehen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="381"/>
         <source>Setup Map Paths</source>
         <translation>Kartenverzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="396"/>
         <source>POI Text</source>
         <translation>POI Text</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="411"/>
         <source>Night / Day</source>
         <translation>Nacht / Tag</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="426"/>
         <source>Map Tool Tip</source>
         <translation>Kartentooltip</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
+        <location filename="../IMainWindow.ui" line="429"/>
         <source>Ctrl+I</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
+        <location filename="../IMainWindow.ui" line="441"/>
         <source>Setup DEM Paths</source>
         <translation>DEM Verzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="453"/>
         <source>About</source>
         <translation>Über</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="465"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="468"/>
         <source>F1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <location filename="../IMainWindow.ui" line="442"/>
+        <location filename="../IMainWindow.ui" line="480"/>
+        <location filename="../IMainWindow.ui" line="483"/>
         <source>Setup Map View</source>
         <translation>Kartenansicht einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="627"/>
         <source>VRT Builder</source>
         <translation>VRT Builder</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="559"/>
+        <location filename="../IMainWindow.ui" line="630"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Eine graphische Benutzerschnittstelle zu gdalbuildvrt </translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="642"/>
         <source>Store Map View</source>
         <translation>Kartenansicht speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="571"/>
+        <location filename="../IMainWindow.ui" line="645"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation>Speichert die aktive Karten und DEM Dateien inklusive der Eigenschaften in einer Datei</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="657"/>
         <source>Load Map View</source>
         <translation>Kartenansicht laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="583"/>
+        <location filename="../IMainWindow.ui" line="660"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation>Stellt die aktive Karten und DEM Dateien inklusive der Eigenschaften aus einer Datei wieder her</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="675"/>
         <source>Ext. Profile</source>
         <translation>Erw. Profil</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="598"/>
+        <location filename="../IMainWindow.ui" line="678"/>
         <source>Ctrl+E</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="690"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="610"/>
+        <location filename="../IMainWindow.ui" line="693"/>
         <source>Ctrl+Q</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="705"/>
         <source>Clone Map View</source>
         <translation>Kartenansicht klonen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="622"/>
+        <location filename="../IMainWindow.ui" line="708"/>
         <source>Ctrl+Shift+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="631"/>
+        <location filename="../IMainWindow.ui" line="720"/>
         <source>Create Routino Database</source>
         <translation>Routino Datenbank erstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="732"/>
         <source>Save(Print) Map Screenshot</source>
         <translation>Kartenausschnitt speichern (drucken)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="735"/>
         <source>Print a selected area of the map</source>
         <translation>Einen ausgewählten Bereich der Karte drucken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="646"/>
+        <location filename="../IMainWindow.ui" line="738"/>
         <source>Ctrl+P</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="750"/>
         <source>Setup Coord. Format</source>
         <translation>Koordinatenformat einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="658"/>
+        <location filename="../IMainWindow.ui" line="753"/>
         <source>Change the format coordinates are displayed</source>
         <translation>Ändert das Format der angezeigten Koordianten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="765"/>
+        <source>Setup Map Background</source>
+        <translation>Kartenhintergrund einstellen</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="777"/>
+        <source>Setup Waypoint Icons</source>
+        <translation>Wegpunktsymbole konfigurieren</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="780"/>
+        <source>Setup path to custom icons</source>
+        <translation>Pfad zu individuellen Symbolen einrichten</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="495"/>
         <source>Load GIS Data</source>
         <translation>GIS Daten laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="498"/>
         <source>Load projects from file</source>
         <translation>Lade Datei als Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="501"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="513"/>
         <source>Save All GIS Data</source>
         <translation>Alle GIS Daten speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="516"/>
         <source>Save all projects in the workspace</source>
         <translation>Alle Projekte die sich auf dem Arbeitsplatz befinden, speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="472"/>
+        <location filename="../IMainWindow.ui" line="519"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="481"/>
+        <location filename="../IMainWindow.ui" line="531"/>
         <source>Setup Time Zone</source>
         <translation>Zeitzone einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="490"/>
+        <location filename="../IMainWindow.ui" line="543"/>
         <source>Add empty project</source>
         <translation>Leeres Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="502"/>
+        <location filename="../IMainWindow.ui" line="558"/>
         <source>Search Google</source>
         <translation>Mit Google suchen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="570"/>
         <source>Close all projects</source>
         <translation>Alle Projekte schließen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="514"/>
+        <location filename="../IMainWindow.ui" line="573"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="523"/>
+        <location filename="../IMainWindow.ui" line="585"/>
         <source>Setup Units</source>
         <translation>Einheiten einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="597"/>
         <source>Setup Workspace</source>
         <translation>Arbeitsplatz konfigurieren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="535"/>
+        <location filename="../IMainWindow.ui" line="600"/>
         <source>Setup save on exit.</source>
         <translation>Speichert Einstellungen beim Beenden.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="612"/>
         <source>Import Database from QLandkarte</source>
         <translation>Datenbankimport aus QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="547"/>
+        <location filename="../IMainWindow.ui" line="615"/>
         <source>Import QLandkarte GT database</source>
         <translation>QLandkarte GT Datenbank importieren</translation>
     </message>
@@ -5643,14 +5884,18 @@ Dateiname: %1</translation>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Um Karten zuzufügen: Menü - Datei - Kartenverzeichnisse angeben.</translation>
+        <translation type="vanished">Sie können Karten mit <b>"Menü -> Datei -> Kartenverzeichnisse angeben"</b> hinzufügen.</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use <b>File->Setup Map Paths</b>. </source>
+        <translation>Sie können Karten mit <b>"Menü -> Datei -> Kartenverzeichnisse angeben"</b> hinzufügen.</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
         <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
-        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Karte zu aktivieren. Nutze Ziehen u. Ablegen, um die aktivierte Karte in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <translation>Mit dem Kontextmenü (Klick mit rechter Maustaste auf einen Eintrag) können Sie eine Karte aktivieren. Um die Karten in einer anderen Reihenfolge anzuzeigen, können Sie jeden Eintrag mit drag-n-drop verschieben.</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="129"/>
@@ -5695,7 +5940,7 @@ Keine Lust die Anleitung zu lesen!</translation>
     <message>
         <location filename="../map/IMapPathSetup.ui" line="14"/>
         <source>Setup map paths</source>
-        <translation>Kartenpfad einstellen</translation>
+        <translation>Kartenpfad einrichten</translation>
     </message>
     <message>
         <location filename="../map/IMapPathSetup.ui" line="20"/>
@@ -5829,62 +6074,62 @@ Keine Lust die Anleitung zu lesen!</translation>
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="264"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Neue Linie</b><br/>Erstellen Sie Punkte durch Verschieben des Mauscursors und Drücken der linken Maustaste. Mit der rechten Maustaste beenden Sie den Vorgang.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation><b>Punkt löschen</b><br/>Bewegen Sie den Mauscursor nahe an einen Punkt und drücken Sie die linke Maustaste um ihn zu löschen. <br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation><b>Punktebereich auswählen</b><br/>Mit der linken Maustaste wählen Sie den ersten Punkt aus. Mit einem erneuten Drücken der linken Maustaste wählen Sie den zweiten Punkt aus und dann wählen Sie eine der Optionen. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Punkt verschieben</b><br/>Bewegen Sie den Mauscursor nahe an einen Punkt und drücken die linke Maustaste, um ihn mit dem Cursor zu fangen. Verschieben Sie den Punkt mit der Maus. Setzen Sie den Punkt mit einem Linksklick. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Punkt hinzufügen</b><br/>Bewegen Sie den Mauscursor nahe an ein Liniensegment und drücken Sie die linke Maustaste, um einen Punkt hinzuzufügen. Der Punkt wird durch den Cursor gefangen und kann verschoben werden. Setzen Sie den Punkt mit einem Linksklick. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="347"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation><b>Kein Routing</b><br/>Alle Punkte werden mittles einer geraden Linie verbunden.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="353"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation><b>Auto Routing</b><br/>Die aktuellen Router Einstellungen erstellen eine Route zwischen Punkten. <b>Hinweis:</b> Der gewählte Router muss schnell routen können. Offline Router können dies gewöhnlich, Online Router nicht.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="358"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation><b>Vektor Routing</b><br/>Verbindet Punkte mit einer Linie einer geladenen Vektorkarte, soweit möglich.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="530"/>
         <source><b>%1 Metrics</b></source>
         <translation><b>%1maße</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="533"/>
         <source>Distance:</source>
         <translation>Entfernung:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="535"/>
         <source>Ascend:</source>
         <translation>Anstieg:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="537"/>
         <source>Descend:</source>
         <translation>Abstieg:</translation>
     </message>
@@ -5906,27 +6151,32 @@ Keine Lust die Anleitung zu lesen!</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Reset Zoom</source>
         <translation>Zoom zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="94"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Stop Range</source>
         <translation>Bereichsauswahl beenden</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="95"/>
+        <location filename="../plot/IPlot.cpp" line="96"/>
         <source>Save...</source>
         <translation>Speichern ...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="638"/>
+        <location filename="../plot/IPlot.cpp" line="98"/>
+        <source>Add Waypoint</source>
+        <translation>Wegpunkt hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="647"/>
         <source>No or bad data.</source>
         <translation>Keine oder schlechte Daten.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <location filename="../plot/IPlot.cpp" line="1244"/>
         <source>Select output file</source>
         <translation>Ausgabedatei auswählen</translation>
     </message>
@@ -6193,8 +6443,12 @@ sein</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</source>
+        <translation>Um Offline-Routing zu nutzen, müssen Sie einen Pfad zu einer lokalen Routendatenbank angeben. Benutzen Sie dazu den Knopf mit dem blauen Ordner. Sie können mit <b>Werkzeug->Routino Datenbank erstellen</b> eine solche Routendatenbank selber erzeugen.</translation>
+    </message>
+    <message>
         <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
-        <translation>Um Offline-Routing zu nutzen, müssen Pfade zu lokalen Routendaten definiert sein. Benutzen Sie den Werkzeugbutton, um einen Pfad zu registrieren.</translation>
+        <translation type="vanished">Um Offline-Routing zu nutzen, müssen Sie einen Pfad zu lokalen Routendaten angeben. Benutzen Sie dazu den Knopf mit dem blauen Ordner.</translation>
     </message>
 </context>
 <context>
@@ -6433,6 +6687,30 @@ sein</translation>
     </message>
 </context>
 <context>
+    <name>IScrOptPrint</name>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="35"/>
+        <source>Save selected area as image.</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="38"/>
+        <location filename="../mouse/IScrOptPrint.ui" line="58"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="55"/>
+        <source>Print selected area.</source>
+        <translation>Druckt gewählten Bereich.</translation>
+    </message>
+</context>
+<context>
     <name>IScrOptRangeLine</name>
     <message>
         <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
@@ -6552,6 +6830,78 @@ sein</translation>
     </message>
 </context>
 <context>
+    <name>IScrOptSelect</name>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="59"/>
+        <source>Copy all selected items to a project.</source>
+        <translation>Kopiert alle gewählten Elemente in ein Projekt.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="62"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="82"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="102"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="122"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="176"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="205"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="265"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="291"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="317"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="343"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="79"/>
+        <source>Create a route from selected waypoints.</source>
+        <translation>Route aus den gewählten Wegpunkten erstellen.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="99"/>
+        <source>Combine all selected tracks to a new one.</source>
+        <translation>Alle ausgewählten Tracks zusammenführen.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="119"/>
+        <source>Delete all selected items.</source>
+        <translation>Löscht alle gewählten Elemente.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="173"/>
+        <source>Select all items that intersect the selected area.</source>
+        <translation>Wählt alle Elemente, die den gewählten Bereich schneiden.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="202"/>
+        <source>Select all itmes that are completely inside the selected area.</source>
+        <translation>Wählt alle Elemente, die vollständig innerhalb des gewählten Bereiches liegen.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="262"/>
+        <source>Add tracks to selection.</source>
+        <translation>Fügt Tracks zur Auswahl hinzu.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="288"/>
+        <source>Add waypoints to selection.</source>
+        <translation>Fügt Wegpunkte zur Auswahl hinzu.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="314"/>
+        <source>Add routes to selection.</source>
+        <translation>Fügt Routen zur Auswahl hinzu.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="340"/>
+        <source>Add areas to selection.</source>
+        <translation>Fügt Gebiete zur Auswahl hinzu.</translation>
+    </message>
+</context>
+<context>
     <name>IScrOptTrk</name>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
@@ -7275,18 +7625,18 @@ sein</translation>
 <context>
     <name>IUnit</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Error</source>
         <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation>Falsches Positionsformat. Muss entweder "[N|S] ddd mm.sss [W|E] ddd mm.sss" oder "[N|S] ddd.ddd [W|E] ddd.ddd" sein.</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Position values out of bounds. </source>
         <translation>Position außerhalb der gültigen Werte.</translation>
     </message>
@@ -7326,5 +7676,25 @@ sein</translation>
         <source>Icons...</source>
         <translation>Symbole...</translation>
     </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="68"/>
+        <source>External Icons:</source>
+        <translation>Externe Symbole:</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="75"/>
+        <source>-</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="82"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="95"/>
+        <source>All custom icons have to be *.bmp format.</source>
+        <translation>Alle individuellen Symbole müssen im *.bmp Format sein.</translation>
+    </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index 08d8153..3ba03a6 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="es_ES">
+<TS version="2.1" language="es_ES">
 <context>
     <name>CAbout</name>
     <message>
@@ -128,6 +128,11 @@
         <source>View %1</source>
         <translation>Vista %1</translation>
     </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="674"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CColorChooser</name>
@@ -140,32 +145,32 @@
 <context>
     <name>CCommandProcessor</name>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -209,23 +214,23 @@
         <translation type="unfinished">Todos tus datos agrupados en carpetas.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="52"/>
         <source>MySQL Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="55"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="59"/>
         <source>Server: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="64"/>
         <source> (No PW)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="72"/>
         <source>Error: </source>
         <translation type="unfinished">Error: </translation>
     </message>
@@ -269,66 +274,66 @@
 <context>
     <name>CDBProject</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <location filename="../gis/db/CDBProject.cpp" line="219"/>
         <source>The item %1 has been changed by %2 (%3). 
 
 To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <location filename="../gis/db/CDBProject.cpp" line="225"/>
         <source>Conflict with database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <location filename="../gis/db/CDBProject.cpp" line="226"/>
         <source>Clone && Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <location filename="../gis/db/CDBProject.cpp" line="227"/>
         <source>Force Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <location filename="../gis/db/CDBProject.cpp" line="228"/>
         <source>Take remote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <location filename="../gis/db/CDBProject.cpp" line="531"/>
         <source>Missing folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <location filename="../gis/db/CDBProject.cpp" line="532"/>
         <source>Failed to save project. The folder has been deleted in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <location filename="../gis/db/CDBProject.cpp" line="539"/>
         <source>Save ...</source>
         <translation type="unfinished">Guardar...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>Error</source>
         <translation type="unfinished">Error</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>There was an unexpected database error:
 
 %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <location filename="../gis/db/CDBProject.cpp" line="727"/>
         <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <location filename="../gis/db/CDBProject.cpp" line="728"/>
         <source>Save changes?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -336,12 +341,12 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Deactivate</source>
         <translation>Desactivar</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
@@ -412,7 +417,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation>Buscando imagenes...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="264"/>
         <source>No images found</source>
         <translation>No se encontraron imagenes</translation>
     </message>
@@ -587,47 +592,47 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">distancia. [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="181"/>
         <source>Reduce visible track points</source>
         <translation>Reducir puntos visibles del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="184"/>
         <source>Change elevation of track points</source>
         <translation>Cambiar elevación de puntos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="187"/>
         <source>Change timestamp of track points</source>
         <translation>Cambiar fecha/hora de puntos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="190"/>
         <source>Modify track points' extensions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>Cut track into pieces</source>
         <translation>Dividir track en partes</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="410"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="418"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="421"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="442"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="507"/>
         <source>Color</source>
         <translation type="unfinished">Color</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
@@ -640,17 +645,17 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Introduzca el nombre del nuevo track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>Reset activities...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="747"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
@@ -706,17 +711,30 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDeviceGarmin</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="254"/>
         <source>Picture%1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <location filename="../gis/gpx/serialization.cpp" line="1038"/>
         <source>Unknown</source>
         <translation type="unfinished">Desconocido</translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarminArchive</name>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="30"/>
+        <source>Archive - expand to load</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="43"/>
+        <source>Archive - loaded</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -727,7 +745,7 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="57"/>
         <source>No extension available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -759,12 +777,12 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="69"/>
         <source>FIT decoding error: protocol %1 version not supported.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="120"/>
         <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -843,52 +861,52 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="385"/>
         <source>Area: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="447"/>
         <source>Changed area shape.</source>
         <translation type="unfinished">Se cambió la forma del área.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="455"/>
         <source>Changed name.</source>
         <translation type="unfinished">Se cambió el nombre.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
         <source>Changed border width.</source>
         <translation type="unfinished">Se cambió la anchura del borde.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="467"/>
         <source>Changed fill pattern.</source>
         <translation type="unfinished">Se cambió el patró de relleno.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="473"/>
         <source>Changed opacity.</source>
         <translation type="unfinished">Se cambió la opacidad.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="479"/>
         <source>Changed comment.</source>
         <translation type="unfinished">Se cambió el comentario.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="485"/>
         <source>Changed description.</source>
         <translation type="unfinished">Se cambió la descripción.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="491"/>
         <source>Changed links</source>
         <translation type="unfinished">Se cambió el enlace</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed color</source>
         <translation type="unfinished">Se cambió el color</translation>
     </message>
@@ -932,7 +950,7 @@ To solve this conflict you can create and save a clone, force your version or dr
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="485"/>
         <source>Time: %1 %2</source>
         <translation type="unfinished">Tiempo: %1 %2</translation>
     </message>
@@ -952,12 +970,12 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="487"/>
         <source>Distance: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="601"/>
         <source>Changed route points.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -965,7 +983,7 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <location filename="../gis/fit/serialization.cpp" line="182"/>
         <source>FIT file %1 contains no GPS data.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -996,40 +1014,36 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished">Fallo al leer los datos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="118"/>
         <source>_Clone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="290"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation type="unfinished">Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
         <source>Length: %1 %2</source>
         <translation type="unfinished">Longitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="408"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation type="unfinished">, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
         <source>Time: %1</source>
-        <translation type="unfinished">Tiempo: %1</translation>
+        <translation type="obsolete">Tiempo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
         <source>, Speed: %1 %2</source>
-        <translation type="unfinished">, Velocidad: %1 %2</translation>
+        <translation type="obsolete">, Velocidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
         <source>Moving: %1</source>
-        <translation type="unfinished">En movimiento: %1</translation>
+        <translation type="obsolete">En movimiento: %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
@@ -1037,172 +1051,198 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished">Comienzo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="432"/>
         <source>End: %1</source>
         <translation type="unfinished">Final: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
         <source>Points: %1 (%2)</source>
         <translation type="unfinished">Puntos: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="527"/>
         <source>Ele.: %1 %2</source>
         <translation type="unfinished">Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="530"/>
         <source> slope: %1%3 (%2%)</source>
         <translation type="unfinished"> pendiente: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="535"/>
         <source> speed: %1%2</source>
         <translation type="unfinished"> velocidad: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="563"/>
         <source>... and %1 tags not displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="574"/>
+        <source>Descend: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
+        <source>Distance: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="576"/>
+        <source>Moving: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation type="unfinished">Ascenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
+        <source>Hide point %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1445"/>
+        <source>Hide points %1..%2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
         <source>Ascend: - (-)</source>
         <translation type="unfinished">Ascenso: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="587"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation type="unfinished"> Descenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
         <source> Descend: - (-) </source>
-        <translation type="unfinished"> Descenso: - (-) </translation>
+        <translation type="obsolete"> Descenso: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation type="unfinished">Distancia: %1%2 (%3%)</translation>
+        <translation type="obsolete">Distancia: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
         <source>Dist.: - (-)</source>
-        <translation type="unfinished">Dist.: - (-)</translation>
+        <translation type="obsolete">Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="599"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation type="unfinished"> En movimiento: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
         <source> Moving: - (-) </source>
-        <translation type="unfinished"> En movimiento: - (-) </translation>
+        <translation type="obsolete"> En movimiento: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="621"/>
         <source>Ascend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="626"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="638"/>
         <source>, %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Ascend: -</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="633"/>
         <source> Descend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="616"/>
         <source>Descend: -</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
-        <source>Dist.: %1%2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
         <source> Time: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Edit name...</source>
         <translation type="unfinished">Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Enter new track name.</source>
         <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="416"/>
+        <source>Time: %1, Speed: %2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="423"/>
+        <source>Moving: %1, Speed: %2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="593"/>
+        <source>Distance: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="643"/>
+        <source>Distance: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1286"/>
         <source>Permanently removed points %1..%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
         <source>Hide points.</source>
-        <translation type="unfinished">Ocultar puntos.</translation>
+        <translation type="obsolete">Ocultar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1485"/>
         <source>Show points.</source>
         <translation type="unfinished">Mostrar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2040"/>
         <source>Changed name</source>
         <translation type="unfinished">Se cambió el nombre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2046"/>
         <source>Changed comment</source>
         <translation type="unfinished">Se cambió el comentario</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2052"/>
         <source>Changed description</source>
         <translation type="unfinished">Se cambió la descripción</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2058"/>
         <source>Changed links</source>
         <translation type="unfinished">Se cambió el enlace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2085"/>
         <source>Changed activity to '%1' for complete track.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1272,7 +1312,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
+        <location filename="../qlgt/converter.cpp" line="195"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1462,17 +1502,17 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Save</source>
         <translation>Guardar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save As...</source>
         <translation>Guardar Como...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Edit..</source>
         <translation>Editar..</translation>
     </message>
@@ -1481,165 +1521,164 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Actualizar Proyecto en Dispositivos</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="111"/>
         <source>Close</source>
         <translation>Cerrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="118"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Update Project on Device</source>
         <translation>Actualizar Proyecto en Dsipositivo</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Edit...</source>
         <translation>Editar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Copy to...</source>
         <translation>Copiar a...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="146"/>
+        <location filename="../gis/CGisListWks.cpp" line="150"/>
         <source>Show Bubble</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="148"/>
+        <location filename="../gis/CGisListWks.cpp" line="152"/>
         <source>Move Waypoint</source>
         <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="149"/>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
         <source>Proj. Waypoint...</source>
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="157"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Route Instructions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="159"/>
+        <location filename="../gis/CGisListWks.cpp" line="163"/>
         <source>Calculate Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="160"/>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
         <source>Reset Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="161"/>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
         <source>Edit Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="177"/>
+        <location filename="../gis/CGisListWks.cpp" line="181"/>
         <source>Create Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="621"/>
+        <location filename="../gis/CGisListWks.cpp" line="625"/>
         <source>Drop items...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="646"/>
-        <location filename="../gis/CGisListWks.cpp" line="1632"/>
-        <location filename="../gis/CGisListWks.cpp" line="1670"/>
+        <location filename="../gis/CGisListWks.cpp" line="650"/>
+        <location filename="../gis/CGisListWks.cpp" line="1581"/>
+        <location filename="../gis/CGisListWks.cpp" line="1619"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation type="unfinished"><b>Actualizar dispositivos</b><p>Actualizar %1<br/>Por favor espere...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Delete project...</source>
         <translation type="unfinished">Eliminar Proyecto...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Do you really want to delete %1?</source>
         <translation type="unfinished">¿Desea realmente eliminar %1?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
-        <translation type="unfinished">Copia elementos....</translation>
+        <translation type="obsolete">Copia elementos....</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Track Profile</source>
         <translation>Perfil del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Show on Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Hide from Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Send to Devices</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Sync. with Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Select Range</source>
         <translation>Seleccionar Rango</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Edit Track Points</source>
         <translation>Editar Puntos del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="137"/>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
         <source>Reverse Track</source>
         <translation>Invertir Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
         <source>Combine Tracks</source>
         <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="170"/>
+        <location filename="../gis/CGisListWks.cpp" line="174"/>
         <source>Edit Area Points</source>
         <translation>Editar Puntos del Área</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="119"/>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="123"/>
+        <location filename="../gis/CGisListWks.cpp" line="144"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <location filename="../gis/CGisListWks.cpp" line="779"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <location filename="../gis/CGisListWks.cpp" line="825"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>Close all projects...</source>
         <translation>Cerrar todos los proyectos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Esto quitará.todos los proyectos.del espacio de trabajo.</translation>
     </message>
@@ -1647,22 +1686,27 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>Load project...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="529"/>
+        <source>Copy items...</source>
+        <translation type="unfinished">Copia elementos....</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Cut Track...</source>
         <translation>Partir Track...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Do you want to delete the original track?</source>
         <translation>¿Desea borrar el track original?</translation>
     </message>
@@ -1670,6 +1714,37 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGpsProject</name>
     <message>
+        <source>Failed to open %1</source>
+        <translation type="obsolete">Fallo al abrir %1</translation>
+    </message>
+    <message>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="obsolete">Fallo al leer: %1
+línea %2, columna %3.
+ %4</translation>
+    </message>
+    <message>
+        <source>File exists ...</source>
+        <translation type="obsolete">El archivo ya existe ...</translation>
+    </message>
+    <message>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="obsolete">El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
+    </message>
+    <message>
+        <source>Failed to create file '%1'</source>
+        <translation type="obsolete">Fallo al crear el archivo '%1'</translation>
+    </message>
+    <message>
+        <source>Failed to write file '%1'</source>
+        <translation type="obsolete">Fallo al escribir en el archivo '%1'</translation>
+    </message>
+</context>
+<context>
+    <name>CGpxProject</name>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
         <source>Failed to load file %1...</source>
         <translation type="unfinished"></translation>
@@ -1861,664 +1936,669 @@ línea %2, columna %3.
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="617"/>
+        <location filename="../CMainWindow.cpp" line="643"/>
         <source>Ele: %1%2</source>
         <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="633"/>
+        <location filename="../CMainWindow.cpp" line="659"/>
         <source>[Grid: %1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="758"/>
+        <location filename="../CMainWindow.cpp" line="794"/>
         <source>Load GIS Data...</source>
         <translation>Cargar Datos GIS...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>QMapShack View (*.view)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>Select file to load</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>CMapDraw</name>
+    <message>
+        <location filename="../map/CMapDraw.cpp" line="406"/>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. 
+
+If it's no fun, why don't you provide maps? Well to host maps ready for download and installation requires a good server. And this is not a free service. The project lacks the money. Additionally map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package the data. This is not that easy as it might sound and for some data you have to pay royalties. The project simply lacks resources to do this. And we think installing the stuff yourself is  [...]
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <location filename="../map/CMapIMG.cpp" line="145"/>
         <source>Failed ...</source>
         <translation>Falló ...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
         <translation>No especificado</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
         <translation>Francés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
         <translation>Alemán</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
         <translation>Holandés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
         <translation>Inglés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
         <translation>Italiano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
         <translation>Finés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
         <translation>Sueco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
         <translation>Español</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
         <translation>Euskera</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
         <translation>Catalán</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
         <translation>Gallego</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
         <translation>Galés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
         <translation>Gaélico</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
         <translation>Danés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
         <translation>Noruego</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
         <translation>Portugués</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
         <translation>Eslovaco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
         <translation>Checo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
         <translation>Croata</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
         <translation>Húngaro</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
         <translation>Polaco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
         <translation>Turco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
         <translation>Griego</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
         <translation>Esloveno</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
         <translation>Ruso</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
         <translation>Estonio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
         <translation>Letón</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
         <translation>Rumano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
         <translation>Albanés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
         <translation>Bosnio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
         <translation>Lituano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
         <translation>Serbio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
         <translation>Macedonio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
         <translation>Búlgaro</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
         <translation>Autovía Primaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
         <translation>Autovía secundaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
         <translation>Otras autovías</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
         <translation>Carretera principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
         <translation>Carretera secundaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
         <translation>Calle residencial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
         <translation>Callejón/Carretera privada</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
         <translation>Acceso a autopista, baja velocidad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
         <translation>Acceso a autopista, alta velocidad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
         <translation>Carretera sin asfaltar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
         <translation>Conexión con autovía principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
         <translation>Rotonda</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
         <translation>Ferrocarril</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
         <translation>Línea de costa</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
         <translation>Sendero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
         <translation>Arroyo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
         <translation>Zona horaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
         <translation>Ferry</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
         <translation>Frontera de estado/provincia</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
         <translation>Frontera de condado/término municipal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
         <translation>Frontera internacional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
         <translation>Río</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
         <translation>Curva altimétrica menor</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
         <translation>Curva altimétrica intermedia</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
         <translation>Curva altimétrica principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
         <translation>Curva batimétrica menor</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
         <translation>Curva batimétrica intermedia</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
         <translation>Curva batimétrica principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
         <translation>Curso intermitente</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
         <translation>Pista de aterrizaje</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
         <translation>Tubería</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
         <translation>Línea eléctrica</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
         <translation>Límite marítimo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
         <translation>Límite de peligro</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Área urbana grande (&gt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Área urbana pequeña (&lt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
         <translation>Área de alojamienos rurales</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
         <translation>Base militar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
         <translation>Aparcamiento</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
         <translation>Garaje</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
         <translation>Aeropuerto</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
         <translation>Centro comercial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
         <translation>Puerto deportivo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
         <translation>Universidad/Facultad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
         <translation>Hospital</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
         <translation>Complejo industrial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
         <translation>Reserva natural</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
         <translation>Área creada por el hombre</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
         <translation>Complejo deportivo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
         <translation>Recorrido de golf</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
         <translation>Cementerio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
         <translation>Parque nacional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
         <translation>Parque urbano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
         <translation>Parque regional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
         <translation>Bosque</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
         <translation>Océano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
         <translation>Azul (desconocido)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
         <translation>Mar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
         <translation>Lago grande</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
         <translation>Lago mediano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
         <translation>Lago pequeño</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
         <translation>Lago principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
         <translation>Río Principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
         <translation>Río Grande</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
         <translation>Río Mediano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
         <translation>Río Pequeño</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
         <translation>Agua intermitente</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
         <translation>Marisma/Ciénaga</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
         <translation>Glaciar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
         <translation>Invernadero/Plantación</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
         <translation>Monte bajo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
         <translation>Llanura</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <location filename="../map/CMapIMG.cpp" line="435"/>
         <source>Failed to read: </source>
         <translation>Fallo al leer: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <location filename="../map/CMapIMG.cpp" line="478"/>
         <source>Failed to open: </source>
         <translation>Fallo al abrir: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <location filename="../map/CMapIMG.cpp" line="502"/>
+        <location filename="../map/CMapIMG.cpp" line="506"/>
         <source>Bad file format: </source>
         <translation>Formato de archivo incorrecto: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <location filename="../map/CMapIMG.cpp" line="595"/>
         <source>Failed to read file structure: </source>
         <translation>Fallo al leer la estructura del archivo: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <location filename="../map/CMapIMG.cpp" line="630"/>
         <source>Loading %1</source>
         <translation>Cargando %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <location filename="../map/CMapIMG.cpp" line="636"/>
         <source>User abort: </source>
         <translation>Abortado por el usuario: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation>El archivo está en formato NT. QMapShack no puede leer archivos en formato NT: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>El archivo contiene datos bloqueados/cifrados. Garmin no quiere que use este archivo con otros programas distintos a los que ellos proporcionan.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2502"/>
-        <location filename="../map/CMapIMG.cpp" line="2510"/>
-        <location filename="../map/CMapIMG.cpp" line="2514"/>
-        <location filename="../map/CMapIMG.cpp" line="2519"/>
-        <location filename="../map/CMapIMG.cpp" line="2565"/>
-        <location filename="../map/CMapIMG.cpp" line="2573"/>
-        <location filename="../map/CMapIMG.cpp" line="2577"/>
-        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <location filename="../map/CMapIMG.cpp" line="2305"/>
+        <location filename="../map/CMapIMG.cpp" line="2311"/>
+        <location filename="../map/CMapIMG.cpp" line="2315"/>
         <source>Point of Interest</source>
         <translation>Punto de Interés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <location filename="../map/CMapIMG.cpp" line="2401"/>
         <source>Unknown</source>
         <translation>Desconocido</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2755"/>
-        <location filename="../map/CMapIMG.cpp" line="2763"/>
-        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <location filename="../map/CMapIMG.cpp" line="2443"/>
+        <location filename="../map/CMapIMG.cpp" line="2451"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Area</source>
         <translation>Área</translation>
     </message>
@@ -2526,17 +2606,17 @@ línea %2, columna %3.
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Deactivate</source>
         <translation>Desactivar</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="228"/>
+        <location filename="../map/CMapList.cpp" line="233"/>
         <source>Where do you want to store maps?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2893,12 +2973,17 @@ Estructura desconocida.</translation>
         <translation>Añadir Área</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="44"/>
+        <source>Select Items On Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
         <translation>Copiar posición</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="47"/>
         <source>Copy position (Grid)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2906,8 +2991,8 @@ Estructura desconocida.</translation>
 <context>
     <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
-        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
+        <location filename="../mouse/CMousePrint.cpp" line="31"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2920,6 +3005,39 @@ Estructura desconocida.</translation>
     </message>
 </context>
 <context>
+    <name>CMouseSelect</name>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="31"/>
+        <source><b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="96"/>
+        <source><b>Selected:</b><br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="98"/>
+        <source>%1 waypoints<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="97"/>
+        <source>%1 tracks<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="99"/>
+        <source>%1 routes<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="100"/>
+        <source>%1 areas<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPhotoAlbum</name>
     <message>
         <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
@@ -2928,6 +3046,19 @@ Estructura desconocida.</translation>
     </message>
 </context>
 <context>
+    <name>CPlot</name>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="55"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished">distancia [%1]</translation>
+    </message>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="60"/>
+        <source>time</source>
+        <translation type="unfinished">tiempo</translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
         <source>distance [%1]</source>
@@ -2949,7 +3080,7 @@ Estructura desconocida.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="78"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
@@ -2958,7 +3089,7 @@ Estructura desconocida.</translation>
         <translation type="obsolete">tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <location filename="../plot/CPlotProfile.cpp" line="79"/>
         <source>alt. [%1]</source>
         <translation>alt. [%1]</translation>
     </message>
@@ -3078,14 +3209,12 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
         <source>distance [%1]</source>
-        <translation type="unfinished">distancia [%1]</translation>
+        <translation type="obsolete">distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
         <source>time</source>
-        <translation type="unfinished">tiempo</translation>
+        <translation type="obsolete">tiempo</translation>
     </message>
 </context>
 <context>
@@ -3268,13 +3397,13 @@ no es una definición de sistema de coordenadas válido:
     <name>CQmsProject</name>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open...</source>
         <translation type="unfinished">Fallo al abrir...</translation>
     </message>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open %1</source>
         <translation type="unfinished">Fallo al abrir %1</translation>
     </message>
@@ -3688,6 +3817,59 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>CScrOptSelect</name>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="93"/>
+        <source><b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="97"/>
+        <source><b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="101"/>
+        <source><b>Add Tracks</b><br/>Add tracks to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="105"/>
+        <source><b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="109"/>
+        <source><b>Add Routes</b><br/>Add routes to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="113"/>
+        <source><b>Add Areas</b><br/>Add areas to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="124"/>
+        <source><b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="128"/>
+        <source><b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="132"/>
+        <source><b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="136"/>
+        <source><b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
@@ -3772,17 +3954,22 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSlfReader</name>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="63"/>
+        <source>Failed to parse timestamp `%1`</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="76"/>
         <source>%1 does not exist</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="81"/>
         <source>Failed to open %1</source>
         <translation type="unfinished">Fallo al abrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="92"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3791,22 +3978,22 @@ línea %2, columna %3.
  %4</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="99"/>
         <source>Not a SLF file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="106"/>
         <source>Unsupported revision %1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="181"/>
         <source>Break %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="185"/>
         <source>Lap %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3822,21 +4009,21 @@ línea %2, columna %3.
 <context>
     <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <source>Error...</source>
         <translation type="unfinished">Error...</translation>
     </message>
     <message>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
         <translation type="unfinished">Fallo al abrir %1.</translation>
     </message>
@@ -3860,6 +4047,14 @@ línea %2, columna %3.
     </message>
 </context>
 <context>
+    <name>CWptIconDialog</name>
+    <message>
+        <location filename="../helpers/CWptIconDialog.cpp" line="160"/>
+        <source>Path to user icons...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -4011,7 +4206,7 @@ Ivo Kronenberg</source>
         <source>Helmut Schmidt</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation type="unfinished"></translation>
@@ -4021,7 +4216,7 @@ Ivo Kronenberg</source>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation type="unfinished"></translation>
@@ -4095,17 +4290,17 @@ Ivo Kronenberg</source>
         <source>Coordinate Format...</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation type="unfinished"></translation>
@@ -4284,7 +4479,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Slope </source>
         <translation>Pendiente</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
@@ -4320,9 +4515,13 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Para añadir archivos con información de elevación use Archivo->Configurar Rutas a los DEM. </translation>
+        <translation type="vanished">Para añadir archivos con información de elevación use Archivo->Configurar Rutas a los DEM. </translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
@@ -4606,70 +4805,70 @@ If you want to keep just one half you can simply remove the points, or check thi
 -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Use/edit user defined visibility of arrows for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="470"/>
         <source>Use/edit system's visibility of arrows for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
         <source>Use/edit user defined scale factor for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
         <source>Use/edit system's default factor for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="845"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="865"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="951"/>
         <source>max.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="984"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1005"/>
         <source>min.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1019"/>
         <source>Profile</source>
         <translation>Perfil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="535"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1037"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1134"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1231"/>
         <source>User defined limits for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="561"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1066"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1260"/>
         <source>Automatic limits</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="590"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1098"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1195"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1292"/>
         <source>User defined limits for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1460"/>
         <source>Speed</source>
         <translation>Velocidad</translation>
     </message>
@@ -4684,22 +4883,22 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="444"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="473"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="538"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="564"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="593"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="711"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1040"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1069"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1101"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1137"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1198"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1234"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1263"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1295"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -4714,97 +4913,97 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished">Estilo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="419"/>
         <source>Source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="624"/>
         <source>Maximum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="764"/>
         <source>Minimum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="638"/>
         <source>x </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="631"/>
         <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="784"/>
         <source>Color</source>
         <translation type="unfinished">Color</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="832"/>
         <source>Graphs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1324"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1365"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1392"/>
         <source>Points</source>
         <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1440"/>
         <source>Time</source>
         <translation>Tiempo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1445"/>
         <source>Ele.</source>
         <translation>Altitud</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1450"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1455"/>
         <source>Dist.</source>
         <translation>Distancia</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1465"/>
         <source>Slope</source>
         <translation>Pendiente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1470"/>
         <source>Ascend</source>
         <translation>Ascenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1475"/>
         <source>Descend</source>
         <translation>Descenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1480"/>
         <source>Position</source>
         <translation>Posición</translation>
     </message>
@@ -4819,12 +5018,12 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1489"/>
         <source>Filter</source>
         <translation>Filtro</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1526"/>
         <source>Hist.</source>
         <translation>Historial</translation>
     </message>
@@ -4910,7 +5109,7 @@ If you want to keep just one half you can simply remove the points, or check thi
 <context>
     <name>IDevice</name>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
+        <location filename="../device/IDevice.cpp" line="287"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5285,66 +5484,72 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <location filename="../gis/IGisItem.cpp" line="314"/>
         <source>The item is not part of the project in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <location filename="../gis/IGisItem.cpp" line="315"/>
+        <source>
+It is either a new item or it has been deleted in the database by someone else.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="321"/>
         <source>The item is not in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <location filename="../gis/IGisItem.cpp" line="327"/>
         <source>The item might need to be saved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <location filename="../gis/IGisItem.cpp" line="411"/>
         <source>Initial version.</source>
         <translation type="unfinished">Versión inicial</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <location filename="../gis/IGisItem.cpp" line="519"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <location filename="../gis/IGisItem.cpp" line="520"/>
         <source>Read Only Mode...</source>
         <translation type="unfinished">Modo Sólo Lectura...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="670"/>
-        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
         <source><h4>Description:</h4></source>
         <translation type="unfinished"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="673"/>
-        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
         <source><p>--- no description ---</p></source>
         <translation type="unfinished"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
         <source><h4>Comment:</h4></source>
         <translation type="unfinished"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
         <source><p>--- no comment ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="698"/>
-        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <location filename="../gis/IGisItem.cpp" line="712"/>
+        <location filename="../gis/IGisItem.cpp" line="757"/>
         <source><h4>Links:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="701"/>
-        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <location filename="../gis/IGisItem.cpp" line="715"/>
+        <location filename="../gis/IGisItem.cpp" line="760"/>
         <source><p>--- no links ---</p></source>
         <translation type="unfinished"><p>--- sin links ---</p></translation>
     </message>
@@ -5362,58 +5567,58 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="258"/>
         <source>%1: Correlate tracks and waypoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="268"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="269"/>
         <source>Canceled correlation...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Save "%1" to...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="420"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="425"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="429"/>
         <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="433"/>
         <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="437"/>
         <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="557"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation type="unfinished">¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="558"/>
         <source>Delete...</source>
         <translation type="unfinished">Borrar...</translation>
     </message>
@@ -5537,6 +5742,14 @@ Filename: %1</source>
     </message>
 </context>
 <context>
+    <name>ILineOp</name>
+    <message>
+        <location filename="../mouse/line/ILineOp.cpp" line="214"/>
+        <source>Routing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>ILinksDialog</name>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
@@ -5583,37 +5796,37 @@ Filename: %1</source>
         <translation>Ver</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
+        <location filename="../IMainWindow.ui" line="103"/>
         <source>Window</source>
         <translation>Ventana</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
+        <location filename="../IMainWindow.ui" line="108"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
+        <location filename="../IMainWindow.ui" line="115"/>
         <source>Project</source>
         <translation>Proyecto</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
+        <location filename="../IMainWindow.ui" line="126"/>
         <source>Tool</source>
         <translation>Herramientas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
+        <location filename="../IMainWindow.ui" line="151"/>
         <source>Maps</source>
         <translation>Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
+        <location filename="../IMainWindow.ui" line="194"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Modelo Digital del Terreno (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Data</source>
         <translation>Datos</translation>
     </message>
@@ -5622,279 +5835,294 @@ Filename: %1</source>
         <translation type="obsolete">Añadir Espacio de Trabajo de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="285"/>
+        <location filename="../IMainWindow.ui" line="288"/>
         <source>Add Map View</source>
         <translation>Añadir Vista de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="291"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="306"/>
         <source>Show Scale</source>
         <translation>Mostrar Escala</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="318"/>
         <source>Setup Map Font</source>
         <translation>Configurar Fuente del Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="333"/>
         <source>Show Grid</source>
         <translation>Mostrar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="336"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="348"/>
         <source>Setup Grid</source>
         <translation>Configurar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
+        <location filename="../IMainWindow.ui" line="351"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="366"/>
         <source>Flip Mouse Wheel</source>
         <translation>Invertir la Rueda del Ratón</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="381"/>
         <source>Setup Map Paths</source>
         <translation>Configurar Rutas de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="396"/>
         <source>POI Text</source>
         <translation>Texto del POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="411"/>
         <source>Night / Day</source>
         <translation>Noche / Día</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="426"/>
         <source>Map Tool Tip</source>
         <translation>Mostrar Tooltips en los Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
+        <location filename="../IMainWindow.ui" line="429"/>
         <source>Ctrl+I</source>
         <translation type="unfinished">Ctrl+I</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
+        <location filename="../IMainWindow.ui" line="441"/>
         <source>Setup DEM Paths</source>
         <translation>Configurar Rutas a los DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="453"/>
         <source>About</source>
         <translation>Acerca de</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="465"/>
         <source>Help</source>
         <translation>Ayuda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="468"/>
         <source>F1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <location filename="../IMainWindow.ui" line="442"/>
+        <location filename="../IMainWindow.ui" line="480"/>
+        <location filename="../IMainWindow.ui" line="483"/>
         <source>Setup Map View</source>
         <translation>Configurar Vista de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="627"/>
         <source>VRT Builder</source>
         <translation>Asistente VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="559"/>
+        <location filename="../IMainWindow.ui" line="630"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="642"/>
         <source>Store Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="571"/>
+        <location filename="../IMainWindow.ui" line="645"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="657"/>
         <source>Load Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="583"/>
+        <location filename="../IMainWindow.ui" line="660"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="675"/>
         <source>Ext. Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="598"/>
+        <location filename="../IMainWindow.ui" line="678"/>
         <source>Ctrl+E</source>
         <translation type="unfinished">Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="690"/>
         <source>Close</source>
         <translation type="unfinished">Cerrar</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="610"/>
+        <location filename="../IMainWindow.ui" line="693"/>
         <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="705"/>
         <source>Clone Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="622"/>
+        <location filename="../IMainWindow.ui" line="708"/>
         <source>Ctrl+Shift+T</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="631"/>
+        <location filename="../IMainWindow.ui" line="720"/>
         <source>Create Routino Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="732"/>
         <source>Save(Print) Map Screenshot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="735"/>
         <source>Print a selected area of the map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="646"/>
+        <location filename="../IMainWindow.ui" line="738"/>
         <source>Ctrl+P</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="750"/>
         <source>Setup Coord. Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="658"/>
+        <location filename="../IMainWindow.ui" line="753"/>
         <source>Change the format coordinates are displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="765"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="777"/>
+        <source>Setup Waypoint Icons</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="780"/>
+        <source>Setup path to custom icons</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Setup Map Workspace</source>
         <translation type="obsolete">Configurar Espacio de Trabajo de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="495"/>
         <source>Load GIS Data</source>
         <translation>Cargar Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="498"/>
         <source>Load projects from file</source>
         <translation>Cargar proyectos desde archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="501"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="513"/>
         <source>Save All GIS Data</source>
         <translation>Guardar Todos los Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="516"/>
         <source>Save all projects in the workspace</source>
         <translation>Guardar todos los proyectos del espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="472"/>
+        <location filename="../IMainWindow.ui" line="519"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="481"/>
+        <location filename="../IMainWindow.ui" line="531"/>
         <source>Setup Time Zone</source>
         <translation>Configurar Zona Horaria</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="490"/>
+        <location filename="../IMainWindow.ui" line="543"/>
         <source>Add empty project</source>
         <translation>Añadir proyecto vacío</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="502"/>
+        <location filename="../IMainWindow.ui" line="558"/>
         <source>Search Google</source>
         <translation>Buscar en Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="570"/>
         <source>Close all projects</source>
         <translation>Cerrar todos los proyectos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="514"/>
+        <location filename="../IMainWindow.ui" line="573"/>
         <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="523"/>
+        <location filename="../IMainWindow.ui" line="585"/>
         <source>Setup Units</source>
         <translation>Configurar Unidades</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="597"/>
         <source>Setup Workspace</source>
         <translation>Configurar Espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="535"/>
+        <location filename="../IMainWindow.ui" line="600"/>
         <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="612"/>
         <source>Import Database from QLandkarte</source>
         <translation>Importar base de datos de Qlandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="547"/>
+        <location filename="../IMainWindow.ui" line="615"/>
         <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5911,9 +6139,13 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Para añadir mapas use Archivo->Configurar Rutas de Mapas. </translation>
+        <translation type="vanished">Para añadir mapas use Archivo->Configurar Rutas de Mapas. </translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use <b>File->Setup Map Paths</b>. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
@@ -6111,62 +6343,62 @@ I don't want to read the documentation!</source>
         <translation type="obsolete">Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="264"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="347"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="353"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="358"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="530"/>
         <source><b>%1 Metrics</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="533"/>
         <source>Distance:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="535"/>
         <source>Ascend:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="537"/>
         <source>Descend:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6188,27 +6420,32 @@ I don't want to read the documentation!</source>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Reset Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="94"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Stop Range</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="95"/>
+        <location filename="../plot/IPlot.cpp" line="96"/>
         <source>Save...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="638"/>
+        <location filename="../plot/IPlot.cpp" line="98"/>
+        <source>Add Waypoint</source>
+        <translation type="unfinished">Añadir Waypoint</translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="647"/>
         <source>No or bad data.</source>
         <translation>Datos incorrectos o inexistentes.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <location filename="../plot/IPlot.cpp" line="1244"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6371,7 +6608,7 @@ o
         <source>m</source>
         <translation>m</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation>º</translation>
@@ -6474,7 +6711,7 @@ o
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
-        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -6741,6 +6978,30 @@ o
     </message>
 </context>
 <context>
+    <name>IScrOptPrint</name>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="35"/>
+        <source>Save selected area as image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="38"/>
+        <location filename="../mouse/IScrOptPrint.ui" line="58"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="55"/>
+        <source>Print selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptRange</name>
     <message>
         <source>Delete selected range of points.</source>
@@ -6879,6 +7140,78 @@ o
     </message>
 </context>
 <context>
+    <name>IScrOptSelect</name>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="59"/>
+        <source>Copy all selected items to a project.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="62"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="82"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="102"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="122"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="176"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="205"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="265"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="291"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="317"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="343"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="79"/>
+        <source>Create a route from selected waypoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="99"/>
+        <source>Combine all selected tracks to a new one.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="119"/>
+        <source>Delete all selected items.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="173"/>
+        <source>Select all items that intersect the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="202"/>
+        <source>Select all itmes that are completely inside the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="262"/>
+        <source>Add tracks to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="288"/>
+        <source>Add waypoints to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="314"/>
+        <source>Add routes to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="340"/>
+        <source>Add areas to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptTrk</name>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
@@ -7668,18 +8001,18 @@ o
 <context>
     <name>IUnit</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Error</source>
         <translation type="unfinished">Error</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation type="unfinished">Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Position values out of bounds. </source>
         <translation type="unfinished">Valores de posición fuera del límite.</translation>
     </message>
@@ -7719,6 +8052,26 @@ o
         <source>Icons...</source>
         <translation>Iconos...</translation>
     </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="68"/>
+        <source>External Icons:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="75"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="82"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="95"/>
+        <source>All custom icons have to be *.bmp format.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
diff --git a/src/locale/qmapshack_fr.ts b/src/locale/qmapshack_fr.ts
index 90ed102..e5e2609 100644
--- a/src/locale/qmapshack_fr.ts
+++ b/src/locale/qmapshack_fr.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="fr">
+<TS version="2.1" language="fr">
 <context>
     <name>CAbout</name>
     <message>
@@ -124,6 +124,11 @@
         <source>View %1</source>
         <translation>Vue %1</translation>
     </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="674"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CColorChooser</name>
@@ -136,32 +141,32 @@
 <context>
     <name>CCommandProcessor</name>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
         <translation>Envoyer les messages de débogage vers la console</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
         <translation>Envoyer les messages de débogage vers un fichier (temp. path).</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
         <translation>Ne pas montrer l'image d'accueil</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
         <translation>Fichier de configuration QMS.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation>fichier</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
         <translation>Fichiers pour usage futur.</translation>
     </message>
@@ -205,23 +210,23 @@
         <translation type="unfinished">Vos données groupées par dossiers.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="52"/>
         <source>MySQL Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="55"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="59"/>
         <source>Server: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="64"/>
         <source> (No PW)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="72"/>
         <source>Error: </source>
         <translation type="unfinished">Erreur: </translation>
     </message>
@@ -265,66 +270,66 @@
 <context>
     <name>CDBProject</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <location filename="../gis/db/CDBProject.cpp" line="219"/>
         <source>The item %1 has been changed by %2 (%3). 
 
 To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <location filename="../gis/db/CDBProject.cpp" line="225"/>
         <source>Conflict with database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <location filename="../gis/db/CDBProject.cpp" line="226"/>
         <source>Clone && Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <location filename="../gis/db/CDBProject.cpp" line="227"/>
         <source>Force Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <location filename="../gis/db/CDBProject.cpp" line="228"/>
         <source>Take remote</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <location filename="../gis/db/CDBProject.cpp" line="531"/>
         <source>Missing folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <location filename="../gis/db/CDBProject.cpp" line="532"/>
         <source>Failed to save project. The folder has been deleted in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <location filename="../gis/db/CDBProject.cpp" line="539"/>
         <source>Save ...</source>
         <translation type="unfinished">Enregistrer...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>Error</source>
         <translation type="unfinished">Erreur</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>There was an unexpected database error:
 
 %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <location filename="../gis/db/CDBProject.cpp" line="727"/>
         <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <location filename="../gis/db/CDBProject.cpp" line="728"/>
         <source>Save changes?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -332,12 +337,12 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Deactivate</source>
         <translation>Désactiver</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Activate</source>
         <translation>Activer</translation>
     </message>
@@ -409,7 +414,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation>Recherche d'images...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="264"/>
         <source>No images found</source>
         <translation>Aucune image trouvée</translation>
     </message>
@@ -568,47 +573,47 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Couleur unie</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="181"/>
         <source>Reduce visible track points</source>
         <translation>Réduire les points visibles de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="184"/>
         <source>Change elevation of track points</source>
         <translation>Modifier l'altitude des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="187"/>
         <source>Change timestamp of track points</source>
         <translation>Modifier l'horodatage des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="190"/>
         <source>Modify track points' extensions</source>
         <translation>Modifier les extensions des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>Cut track into pieces</source>
         <translation>Découper la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="410"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="418"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="421"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="442"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="507"/>
         <source>Color</source>
         <translation>Couleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
@@ -621,17 +626,17 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Entrez le nom de la nouvelle trace.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>Reset activities...</source>
         <translation>Réinitialiser les activités...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation>Toutes les activités seront supprimées de la trace. Etes-vous sûr ?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="747"/>
         <source>None</source>
         <translation>Aucune</translation>
     </message>
@@ -655,17 +660,30 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CDeviceGarmin</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="254"/>
         <source>Picture%1</source>
         <translation type="unfinished">Image%1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <location filename="../gis/gpx/serialization.cpp" line="1038"/>
         <source>Unknown</source>
         <translation type="unfinished">Inconnu</translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarminArchive</name>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="30"/>
+        <source>Archive - expand to load</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="43"/>
+        <source>Archive - loaded</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -676,7 +694,7 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="57"/>
         <source>No extension available</source>
         <translation>Aucune extension disponible</translation>
     </message>
@@ -708,12 +726,12 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="69"/>
         <source>FIT decoding error: protocol %1 version not supported.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="120"/>
         <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -792,52 +810,52 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished">_Clone</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="385"/>
         <source>Area: %1%2</source>
         <translation type="unfinished">Surface: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="447"/>
         <source>Changed area shape.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="455"/>
         <source>Changed name.</source>
         <translation type="unfinished">Nom modifié...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
         <source>Changed border width.</source>
         <translation type="unfinished">Largeur de la bordure modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="467"/>
         <source>Changed fill pattern.</source>
         <translation type="unfinished">Remplissage modifié...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="473"/>
         <source>Changed opacity.</source>
         <translation type="unfinished">Opacité modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="479"/>
         <source>Changed comment.</source>
         <translation type="unfinished">Commentaire modifié...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="485"/>
         <source>Changed description.</source>
         <translation type="unfinished">Description modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="491"/>
         <source>Changed links</source>
         <translation type="unfinished">Liens modifiés...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed color</source>
         <translation type="unfinished">Couleur modifiée...</translation>
     </message>
@@ -881,7 +899,7 @@ To solve this conflict you can create and save a clone, force your version or dr
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="485"/>
         <source>Time: %1 %2</source>
         <translation type="unfinished">Durée: %1 %2</translation>
     </message>
@@ -901,12 +919,12 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished">avec %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="487"/>
         <source>Distance: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="601"/>
         <source>Changed route points.</source>
         <translation type="unfinished">Points de route modifiés.</translation>
     </message>
@@ -914,7 +932,7 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <location filename="../gis/fit/serialization.cpp" line="182"/>
         <source>FIT file %1 contains no GPS data.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -945,40 +963,36 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished">Impossible de lire les données.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="118"/>
         <source>_Clone</source>
         <translation type="unfinished">_Clone</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="290"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation type="unfinished">Points de la trace modifiés, Les données antérieures sont perdues.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
         <source>Length: %1 %2</source>
         <translation type="unfinished">Longueur: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="408"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
         <source>Time: %1</source>
-        <translation type="unfinished">Durée: %1</translation>
+        <translation type="obsolete">Durée: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
         <source>, Speed: %1 %2</source>
-        <translation type="unfinished">, vitesse %1 %2</translation>
+        <translation type="obsolete">, vitesse %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
         <source>Moving: %1</source>
-        <translation type="unfinished">Déplacement: %1</translation>
+        <translation type="obsolete">Déplacement: %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
@@ -986,172 +1000,202 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished">Début: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="432"/>
         <source>End: %1</source>
         <translation type="unfinished">Fin: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
         <source>Points: %1 (%2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="527"/>
         <source>Ele.: %1 %2</source>
         <translation type="unfinished">Altitude: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="530"/>
         <source> slope: %1%3 (%2%)</source>
         <translation type="unfinished"> Pente: %1%3(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="535"/>
         <source> speed: %1%2</source>
         <translation type="unfinished"> Vitesse: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="563"/>
         <source>... and %1 tags not displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="574"/>
+        <source>Descend: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
+        <source>Distance: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="576"/>
+        <source>Moving: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation type="unfinished">Montée: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
+        <source>Hide point %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1445"/>
+        <source>Hide points %1..%2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
         <source>Ascend: - (-)</source>
         <translation type="unfinished">Montées: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="587"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation type="unfinished">  Descente: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
         <source> Descend: - (-) </source>
-        <translation type="unfinished">Descente: - (-)</translation>
+        <translation type="obsolete">Descente: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation type="unfinished">Dist.: %1%2 (%3%)</translation>
+        <translation type="obsolete">Dist.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
         <source>Dist.: - (-)</source>
-        <translation type="unfinished">Dist.: - (-)</translation>
+        <translation type="obsolete">Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="599"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation type="unfinished">  En mouvement: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
         <source> Moving: - (-) </source>
-        <translation type="unfinished">En mouvement: - (-)</translation>
+        <translation type="obsolete">En mouvement: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="621"/>
         <source>Ascend: %1%2</source>
         <translation type="unfinished">Montée : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="626"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="638"/>
         <source>, %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Ascend: -</source>
         <translation type="unfinished">Montée : -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="633"/>
         <source> Descend: %1%2</source>
         <translation type="unfinished">Descente : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="616"/>
         <source>Descend: -</source>
         <translation type="unfinished">Descente : -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
         <source>Dist.: %1%2</source>
-        <translation type="unfinished">Dist.: %1%2</translation>
+        <translation type="obsolete">Dist.: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
         <source> Time: %1%2</source>
         <translation type="unfinished"> Temps : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Edit name...</source>
         <translation type="unfinished">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Enter new track name.</source>
         <translation type="unfinished">Entrez le nom de la nouvelle trace.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="416"/>
+        <source>Time: %1, Speed: %2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="423"/>
+        <source>Moving: %1, Speed: %2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="593"/>
+        <source>Distance: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="643"/>
+        <source>Distance: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1286"/>
         <source>Permanently removed points %1..%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
         <source>Hide points.</source>
-        <translation type="unfinished">Cacher des points.</translation>
+        <translation type="obsolete">Cacher des points.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1485"/>
         <source>Show points.</source>
         <translation type="unfinished">Afficher les points.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2040"/>
         <source>Changed name</source>
         <translation type="unfinished">Nom modifié</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2046"/>
         <source>Changed comment</source>
         <translation type="unfinished">Commentaire modifié</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2052"/>
         <source>Changed description</source>
         <translation type="unfinished">Description modifiée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2058"/>
         <source>Changed links</source>
         <translation type="unfinished">Liens modifiés...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2085"/>
         <source>Changed activity to '%1' for complete track.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1221,7 +1265,7 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
+        <location filename="../qlgt/converter.cpp" line="195"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation type="unfinished">Copier la balise d'information de la trace QLandkarte GT</translation>
     </message>
@@ -1411,27 +1455,27 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Edit..</source>
         <translation>Éditer..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Show on Map</source>
         <translation>Afficher sur la carte</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Hide from Map</source>
         <translation>Masquer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save As...</source>
         <translation>Enregistrer sous...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Save</source>
         <translation>Enregistrer</translation>
     </message>
@@ -1440,155 +1484,154 @@ To solve this conflict you can create and save a clone, force your version or dr
         <translation type="obsolete">Mettre à jour le projet sur tous les appareils</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Send to Devices</source>
         <translation>Envoyer vers les appareils</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Sync. with Database</source>
         <translation>Synchroniser avec la base de données</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="111"/>
         <source>Close</source>
         <translation>Fermer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="118"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Update Project on Device</source>
         <translation>Mettre à jour le projet sur l'appareil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="119"/>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="123"/>
+        <location filename="../gis/CGisListWks.cpp" line="144"/>
         <source>Delete</source>
         <translation>Supprimer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Edit...</source>
         <translation>Éditer...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Copy to...</source>
         <translation>Copier vers...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Track Profile</source>
         <translation>Profile de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Select Range</source>
         <translation>Sélectionner des points</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Edit Track Points</source>
         <translation>Éditer les points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="137"/>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
         <source>Reverse Track</source>
         <translation>Inverser la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
         <source>Combine Tracks</source>
         <translation>Joindre des traces</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="146"/>
+        <location filename="../gis/CGisListWks.cpp" line="150"/>
         <source>Show Bubble</source>
         <translation>Afficher la bulle</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="148"/>
+        <location filename="../gis/CGisListWks.cpp" line="152"/>
         <source>Move Waypoint</source>
         <translation>Déplacer le waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="149"/>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
         <source>Proj. Waypoint...</source>
         <translation>Projection du waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="157"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Route Instructions</source>
         <translation>Instructions de guidage</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="159"/>
+        <location filename="../gis/CGisListWks.cpp" line="163"/>
         <source>Calculate Route</source>
         <translation>Calculer l'itinéraire</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="160"/>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
         <source>Reset Route</source>
         <translation>Réinitialiser la route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="161"/>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
         <source>Edit Route</source>
         <translation>Éditer la route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="170"/>
+        <location filename="../gis/CGisListWks.cpp" line="174"/>
         <source>Edit Area Points</source>
         <translation>Éditer les points de la surface</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="177"/>
+        <location filename="../gis/CGisListWks.cpp" line="181"/>
         <source>Create Route</source>
         <translation>Créer une route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="621"/>
+        <location filename="../gis/CGisListWks.cpp" line="625"/>
         <source>Drop items...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <location filename="../gis/CGisListWks.cpp" line="779"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Sauvegarde de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <location filename="../gis/CGisListWks.cpp" line="825"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Chargement de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>Close all projects...</source>
         <translation>Fermer tous les projets...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Ceci enlevera tous les projets de l'espace de travail.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Delete project...</source>
         <translation type="unfinished">Supprimer le projet</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Do you really want to delete %1?</source>
         <translation type="unfinished">Êtes-vous sûr de vouloir supprimer %1?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
-        <translation>Copier les éléments...</translation>
+        <translation type="obsolete">Copier les éléments...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="646"/>
-        <location filename="../gis/CGisListWks.cpp" line="1632"/>
-        <location filename="../gis/CGisListWks.cpp" line="1670"/>
+        <location filename="../gis/CGisListWks.cpp" line="650"/>
+        <location filename="../gis/CGisListWks.cpp" line="1581"/>
+        <location filename="../gis/CGisListWks.cpp" line="1619"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Mise à jour des appareils</b><p>Mise à jour de %1<br/>Patientez...</p></translation>
     </message>
@@ -1596,22 +1639,27 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>Load project...</source>
         <translation>Charger le projet...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation>Le projet "%1" est déjà présent dans l'espace de travail.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="529"/>
+        <source>Copy items...</source>
+        <translation type="unfinished">Copier les éléments...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Cut Track...</source>
         <translation>Couper la trace...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Do you want to delete the original track?</source>
         <translation>Voulez-vous supprimer la trace originale?</translation>
     </message>
@@ -1619,6 +1667,37 @@ To solve this conflict you can create and save a clone, force your version or dr
 <context>
     <name>CGpsProject</name>
     <message>
+        <source>Failed to open %1</source>
+        <translation type="obsolete">Impossible d'ouvrir %1 {1?}</translation>
+    </message>
+    <message>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="obsolete">Impossible de lire: %1
+ligne %2, colonne %3:
+%4</translation>
+    </message>
+    <message>
+        <source>File exists ...</source>
+        <translation type="obsolete">Le fichier existe...</translation>
+    </message>
+    <message>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="obsolete">Le fichier existe et n'a pas été créé par QMapShack. Si vous cliquez sur 'oui' tous les données de ce fichier seront perdues. Même si ce fichier contient des données GPX et sera ouvert par QMapShack certains éléments de ce fichier ne pourront pas être lus ou enregistrés. Ces élements seront perdus. Il est conseillé d'utiliser un autre fichier.<b>Voulez-vous vraiment écraser ce fichier ?</b> </translation>
+    </message>
+    <message>
+        <source>Failed to create file '%1'</source>
+        <translation type="obsolete">Impossible de créer le fichier: '%1'</translation>
+    </message>
+    <message>
+        <source>Failed to write file '%1'</source>
+        <translation type="obsolete">Impossible d'écrire le fichier: '%1'</translation>
+    </message>
+</context>
+<context>
+    <name>CGpxProject</name>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
         <source>Failed to load file %1...</source>
         <translation type="unfinished"></translation>
@@ -1806,664 +1885,669 @@ ligne %2, colonne %3:
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="617"/>
+        <location filename="../CMainWindow.cpp" line="643"/>
         <source>Ele: %1%2</source>
         <translation>Altitude: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="633"/>
+        <location filename="../CMainWindow.cpp" line="659"/>
         <source>[Grid: %1]</source>
         <translation>[Grille: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="758"/>
+        <location filename="../CMainWindow.cpp" line="794"/>
         <source>Load GIS Data...</source>
         <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
         <source>Select output file</source>
         <translation>Sélectionner le fichier de sortie</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>QMapShack View (*.view)</source>
         <translation>Vue QMapShack (*.view)</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>Select file to load</source>
         <translation>Sélectionner le fichier à charger</translation>
     </message>
 </context>
 <context>
+    <name>CMapDraw</name>
+    <message>
+        <location filename="../map/CMapDraw.cpp" line="406"/>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. 
+
+If it's no fun, why don't you provide maps? Well to host maps ready for download and installation requires a good server. And this is not a free service. The project lacks the money. Additionally map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package the data. This is not that easy as it might sound and for some data you have to pay royalties. The project simply lacks resources to do this. And we think installing the stuff yourself is  [...]
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <location filename="../map/CMapIMG.cpp" line="145"/>
         <source>Failed ...</source>
         <translation>Échec...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
         <translation>Non défini</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
         <translation>Français</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
         <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
         <translation>Néerlandais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
         <translation>Anglais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
         <translation>Italien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
         <translation>Finlandais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
         <translation>Suédois</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
         <translation>Espagnol</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
         <translation>Catalan</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
         <translation>Galicien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
         <translation>Gallois</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
         <translation>Gaëlic</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
         <translation>Danois</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
         <translation>Norvégien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
         <translation>Portugais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
         <translation>Slovaque</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
         <translation>Tchèque</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
         <translation>Croate</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
         <translation>Hongrois</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
         <translation>Polonais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
         <translation>Turque</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
         <translation>Grèc</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
         <translation>Slovène</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
         <translation>Russe</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
         <translation>Estonien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
         <translation>Letton</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
         <translation>Roumain</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
         <translation>Albanais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
         <translation>Bosnien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
         <translation>Lituanien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
         <translation>Serbe</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
         <translation>Macédonien</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
         <translation>Bulgare</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
         <translation>Route majeure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
         <translation>Route principale</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
         <translation>Autre route</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
         <translation>Artère urbaine</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
         <translation>Rue principale</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
         <translation>Rue résidentielle</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
         <translation>Ruelle/Route privée</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
         <translation>Bretelle d'accès, basse vitesse</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
         <translation>Bretelle d'accès, grande vitesse</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
         <translation>Route non bitumé</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
         <translation>Bretelle majeure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
         <translation>Rond-point</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
         <translation>Voie ferrée</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
         <translation>Ligne côtière</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
         <translation>Sentier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
         <translation>Ruisseau</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
         <translation>Fuseau horaire</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
         <translation>Bac</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
         <translation>Frontière de province</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
         <translation>Frontière de canton</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
         <translation>Frontière internationale</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
         <translation>Rivière</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
         <translation>Courbe de niveau mineure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
         <translation>Courbe de niveau intermédiaire</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
         <translation>Courbe de niveau majeure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
         <translation>Courbe isobathe mineure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
         <translation>Courbe isobathe intermédiaire</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
         <translation>Courbe isobathe majeure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
         <translation>Ruisseau intermittent</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
         <translation>Tarmac</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
         <translation>Oléoduc</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
         <translation>Ligne à haute tension</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
         <translation>Frontière maritime</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
         <translation>Limite de zone à risque</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Grande agglomération urbaine (&gt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Petite agglomération urbaine (&lt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
         <translation>Zone résidentielle rurale</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
         <translation>Base militaire</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
         <translation>Parking</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
         <translation>Parking couvert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
         <translation>Aéroport</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
         <translation>Centre commercial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
         <translation>Marina</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
         <translation>Université</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
         <translation>Hôpital</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
         <translation>Complexe industriel</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
         <translation>Reserve naturelle</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
         <translation>Zone industrielle</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
         <translation>Complexe sportif</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
         <translation>Golf</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
         <translation>Cimetière</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
         <translation>Parc national</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
         <translation>Parc urbain</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
         <translation>Parc régional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
         <translation>Forêt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
         <translation>Océan</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
         <translation>Mer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
         <translation>Grand lac</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
         <translation>Lac moyen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
         <translation>Petit lac</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
         <translation>Lac majeur</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
         <translation>Rivière majeure</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
         <translation>Grande rivière</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
         <translation>Rivière moyenne</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
         <translation>Petite rivière</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
         <translation>Cours d'eau intermittent</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
         <translation>Marais</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
         <translation>Glacier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
         <translation>Verger</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
         <translation>Broussaille</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
         <translation>Plaine</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <location filename="../map/CMapIMG.cpp" line="435"/>
         <source>Failed to read: </source>
         <translation>Erreur de lecture : </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <location filename="../map/CMapIMG.cpp" line="478"/>
         <source>Failed to open: </source>
         <translation>Échec d'ouverture : </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <location filename="../map/CMapIMG.cpp" line="502"/>
+        <location filename="../map/CMapIMG.cpp" line="506"/>
         <source>Bad file format: </source>
         <translation>Format de fichier invalide : </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <location filename="../map/CMapIMG.cpp" line="595"/>
         <source>Failed to read file structure: </source>
         <translation>Erreur de lecture de la structure du fichier : </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <location filename="../map/CMapIMG.cpp" line="630"/>
         <source>Loading %1</source>
         <translation>Chargement de %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <location filename="../map/CMapIMG.cpp" line="636"/>
         <source>User abort: </source>
         <translation>Interruption par l'utilisateur : </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation>Le fichier est au format NT. QMapShack ne peut pas lire des fichiers au format NT : </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>Le fichier contient des données verrouillées / cryptées. Garmin ne vous autorise pas d'utiliser ce fichier avec un logiciel non fourni par Garmin.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2502"/>
-        <location filename="../map/CMapIMG.cpp" line="2510"/>
-        <location filename="../map/CMapIMG.cpp" line="2514"/>
-        <location filename="../map/CMapIMG.cpp" line="2519"/>
-        <location filename="../map/CMapIMG.cpp" line="2565"/>
-        <location filename="../map/CMapIMG.cpp" line="2573"/>
-        <location filename="../map/CMapIMG.cpp" line="2577"/>
-        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <location filename="../map/CMapIMG.cpp" line="2305"/>
+        <location filename="../map/CMapIMG.cpp" line="2311"/>
+        <location filename="../map/CMapIMG.cpp" line="2315"/>
         <source>Point of Interest</source>
         <translation>Point d'intérêt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <location filename="../map/CMapIMG.cpp" line="2401"/>
         <source>Unknown</source>
         <translation>Inconnu</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2755"/>
-        <location filename="../map/CMapIMG.cpp" line="2763"/>
-        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <location filename="../map/CMapIMG.cpp" line="2443"/>
+        <location filename="../map/CMapIMG.cpp" line="2451"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Area</source>
         <translation>Surface</translation>
     </message>
@@ -2471,17 +2555,17 @@ ligne %2, colonne %3:
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Deactivate</source>
         <translation>Désactiver</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Activate</source>
         <translation>Activer</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="228"/>
+        <location filename="../map/CMapList.cpp" line="233"/>
         <source>Where do you want to store maps?</source>
         <translation>Où voulez vous enregistrer les cartes ?</translation>
     </message>
@@ -2842,12 +2926,17 @@ Structure inconnue.</translation>
         <translation>Ajouter une surface</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="44"/>
+        <source>Select Items On Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
         <translation>Copier la position</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="47"/>
         <source>Copy position (Grid)</source>
         <translation>Copier la position (grille)</translation>
     </message>
@@ -2855,9 +2944,13 @@ Structure inconnue.</translation>
 <context>
     <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
         <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
-        <translation><b>Sauvegarder(Imprimer) la carte</b><br/>Selectionnez une zone rectangulaire sur la carte. Utilisez le clic gauche and déplacez la souris. Clic droit pour abandonner. Ajustez la sélection en déplaçant les coins avec le bouton gauche de la souris. Sauvegardez/Imprimez la sélection par un clic gauche sur le disque/l'imprimante au centre de la zone sélectionnée.</translation>
+        <translation type="obsolete"><b>Sauvegarder(Imprimer) la carte</b><br/>Selectionnez une zone rectangulaire sur la carte. Utilisez le clic gauche and déplacez la souris. Clic droit pour abandonner. Ajustez la sélection en déplaçant les coins avec le bouton gauche de la souris. Sauvegardez/Imprimez la sélection par un clic gauche sur le disque/l'imprimante au centre de la zone sélectionnée.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMousePrint.cpp" line="31"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2869,6 +2962,39 @@ Structure inconnue.</translation>
     </message>
 </context>
 <context>
+    <name>CMouseSelect</name>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="31"/>
+        <source><b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="96"/>
+        <source><b>Selected:</b><br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="98"/>
+        <source>%1 waypoints<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="97"/>
+        <source>%1 tracks<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="99"/>
+        <source>%1 routes<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="100"/>
+        <source>%1 areas<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPhotoAlbum</name>
     <message>
         <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
@@ -2877,6 +3003,19 @@ Structure inconnue.</translation>
     </message>
 </context>
 <context>
+    <name>CPlot</name>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="55"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="60"/>
+        <source>time</source>
+        <translation type="unfinished">durée</translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
         <source>time</source>
@@ -2886,7 +3025,7 @@ Structure inconnue.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="78"/>
         <source>distance [%1]</source>
         <translation></translation>
     </message>
@@ -2895,7 +3034,7 @@ Structure inconnue.</translation>
         <translation type="obsolete">durée [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <location filename="../plot/CPlotProfile.cpp" line="79"/>
         <source>alt. [%1]</source>
         <translation>Alt. [%1]</translation>
     </message>
@@ -3015,14 +3154,8 @@ n'est pas une définition de système de coordonnées:
 <context>
     <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
-        <source>distance [%1]</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
         <source>time</source>
-        <translation type="unfinished">durée</translation>
+        <translation type="obsolete">durée</translation>
     </message>
 </context>
 <context>
@@ -3205,13 +3338,13 @@ n'est pas une définition de système de coordonnées:
     <name>CQmsProject</name>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open...</source>
         <translation type="unfinished">Impossible d'ouvrir...</translation>
     </message>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open %1</source>
         <translation type="unfinished">Impossible d'ouvrir %1 {1?}</translation>
     </message>
@@ -3625,6 +3758,59 @@ n'est pas une définition de système de coordonnées:
     </message>
 </context>
 <context>
+    <name>CScrOptSelect</name>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="93"/>
+        <source><b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="97"/>
+        <source><b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="101"/>
+        <source><b>Add Tracks</b><br/>Add tracks to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="105"/>
+        <source><b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="109"/>
+        <source><b>Add Routes</b><br/>Add routes to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="113"/>
+        <source><b>Add Areas</b><br/>Add areas to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="124"/>
+        <source><b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="128"/>
+        <source><b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="132"/>
+        <source><b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="136"/>
+        <source><b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
@@ -3694,17 +3880,22 @@ n'est pas une définition de système de coordonnées:
 <context>
     <name>CSlfReader</name>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="63"/>
+        <source>Failed to parse timestamp `%1`</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="76"/>
         <source>%1 does not exist</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="81"/>
         <source>Failed to open %1</source>
         <translation type="unfinished">Impossible d'ouvrir %1 {1?}</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="92"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3713,22 +3904,22 @@ ligne %2, colonne %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="99"/>
         <source>Not a SLF file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="106"/>
         <source>Unsupported revision %1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="181"/>
         <source>Break %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="185"/>
         <source>Lap %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3744,21 +3935,21 @@ ligne %2, colonne %3:
 <context>
     <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <source>Error...</source>
         <translation type="unfinished">Erreur...</translation>
     </message>
     <message>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
         <translation type="unfinished">Impossible d'ouvrir %1</translation>
     </message>
@@ -3782,6 +3973,14 @@ ligne %2, colonne %3:
     </message>
 </context>
 <context>
+    <name>CWptIconDialog</name>
+    <message>
+        <location filename="../helpers/CWptIconDialog.cpp" line="160"/>
+        <source>Path to user icons...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -3934,7 +4133,7 @@ Ivo Kronenberg</translation>
         <source>Helmut Schmidt</source>
         <translation>Helmut Schmidt</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation>... et merci à tous les gestionnaires de binaires Linux pour leur travail admirable. Remerciements particuliers à Dan Horák et Bas Couwenberg pour leur présence sur les mailing lists relatives aux distributions.</translation>
@@ -3944,7 +4143,7 @@ Ivo Kronenberg</translation>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation>Ce logiciel est distribué sous les termes de la licence GPL3 ou toute version utérieure</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation></translation>
@@ -4014,17 +4213,17 @@ Ivo Kronenberg</translation>
         <source>Coordinate Format...</source>
         <translation>Format des coordonnées...</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
         <translation>N48° 53.660 E013° 31.113</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
         <translation>N48.8943° E013.51855°</translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation>N48° 53' 39.6" E13° 31' 6.78"</translation>
@@ -4207,7 +4406,7 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <source>Slope </source>
         <translation>Pente </translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
@@ -4243,9 +4442,13 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <translation></translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Pour ajouter des fichiers DEM cliquez sur Fichier -> Configurer les répertoires DEM.</translation>
+        <translation type="vanished">Pour ajouter des fichiers DEM cliquez sur Fichier -> Configurer les répertoires DEM.</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
@@ -4530,22 +4733,22 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="444"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="473"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="538"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="564"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="593"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="711"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1040"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1069"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1101"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1137"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1198"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1234"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1263"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1295"/>
         <source>...</source>
         <translation></translation>
     </message>
@@ -4554,12 +4757,12 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <translation type="obsolete">Contrôle du graphe</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1019"/>
         <source>Profile</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1460"/>
         <source>Speed</source>
         <translation>Vitesse</translation>
     </message>
@@ -4592,37 +4795,37 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="419"/>
         <source>Source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="624"/>
         <source>Maximum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Use/edit user defined visibility of arrows for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="470"/>
         <source>Use/edit system's visibility of arrows for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="764"/>
         <source>Minimum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
         <source>Use/edit user defined scale factor for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
         <source>Use/edit system's default factor for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4631,130 +4834,130 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <translation type="obsolete">Couleur unie</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="638"/>
         <source>x </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="631"/>
         <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="832"/>
         <source>Graphs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="845"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="865"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="951"/>
         <source>max.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="984"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1005"/>
         <source>min.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="535"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1037"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1134"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1231"/>
         <source>User defined limits for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="561"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1066"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1260"/>
         <source>Automatic limits</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="590"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1098"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1195"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1292"/>
         <source>User defined limits for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="784"/>
         <source>Color</source>
         <translation type="unfinished">Couleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1324"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1365"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1392"/>
         <source>Points</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1440"/>
         <source>Time</source>
         <translation>Durée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1445"/>
         <source>Ele.</source>
         <translation>Alt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1450"/>
         <source>Delta</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1455"/>
         <source>Dist.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1465"/>
         <source>Slope</source>
         <translation>Pente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1470"/>
         <source>Ascend</source>
         <translation>Montée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1475"/>
         <source>Descend</source>
         <translation>Descente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1480"/>
         <source>Position</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1489"/>
         <source>Filter</source>
         <translation>Filtre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1526"/>
         <source>Hist.</source>
         <translation></translation>
     </message>
@@ -4840,7 +5043,7 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
 <context>
     <name>IDevice</name>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
+        <location filename="../device/IDevice.cpp" line="287"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
         <translation type="unfinished">Un autre projet du même nom existe déjà. Si vous confirmez, il sera supprimé et remplacé.</translation>
     </message>
@@ -5215,66 +5418,72 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <location filename="../gis/IGisItem.cpp" line="314"/>
         <source>The item is not part of the project in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <location filename="../gis/IGisItem.cpp" line="315"/>
+        <source>
+It is either a new item or it has been deleted in the database by someone else.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="321"/>
         <source>The item is not in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <location filename="../gis/IGisItem.cpp" line="327"/>
         <source>The item might need to be saved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <location filename="../gis/IGisItem.cpp" line="411"/>
         <source>Initial version.</source>
         <translation type="unfinished">Version initiale</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <location filename="../gis/IGisItem.cpp" line="519"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <location filename="../gis/IGisItem.cpp" line="520"/>
         <source>Read Only Mode...</source>
         <translation type="unfinished">Mode lecture seule</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="670"/>
-        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
         <source><h4>Description:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="673"/>
-        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
         <source><p>--- no description ---</p></source>
         <translation type="unfinished"><p>--- pas de description ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
         <source><h4>Comment:</h4></source>
         <translation type="unfinished"><h4>Commentaire:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
         <source><p>--- no comment ---</p></source>
         <translation type="unfinished"><p>--- pas de commentaire ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="698"/>
-        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <location filename="../gis/IGisItem.cpp" line="712"/>
+        <location filename="../gis/IGisItem.cpp" line="757"/>
         <source><h4>Links:</h4></source>
         <translation type="unfinished"><h4>Liens:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="701"/>
-        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <location filename="../gis/IGisItem.cpp" line="715"/>
+        <location filename="../gis/IGisItem.cpp" line="760"/>
         <source><p>--- no links ---</p></source>
         <translation type="unfinished"><p>--- pas de liens ---</p></translation>
     </message>
@@ -5292,59 +5501,59 @@ Si vous voulez conserver seulement une moitié vous pouvez simplement enlever le
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="258"/>
         <source>%1: Correlate tracks and waypoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="268"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="269"/>
         <source>Canceled correlation...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Save "%1" to...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="420"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"><br/>
 Nom de fichier: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="425"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished">Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="429"/>
         <source>Tracks: %1</source>
         <translation type="unfinished">Traces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="433"/>
         <source>Routes: %1</source>
         <translation type="unfinished">Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="437"/>
         <source>Areas: %1</source>
         <translation type="unfinished">Surfaces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="557"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation type="unfinished">Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="558"/>
         <source>Delete...</source>
         <translation type="unfinished">Supprimer...</translation>
     </message>
@@ -5468,6 +5677,14 @@ Nom de fichier: %1</translation>
     </message>
 </context>
 <context>
+    <name>ILineOp</name>
+    <message>
+        <location filename="../mouse/line/ILineOp.cpp" line="214"/>
+        <source>Routing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>ILinksDialog</name>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
@@ -5514,313 +5731,328 @@ Nom de fichier: %1</translation>
         <translation>Vue</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
+        <location filename="../IMainWindow.ui" line="103"/>
         <source>Window</source>
         <translation>Fenêtre</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
+        <location filename="../IMainWindow.ui" line="108"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
+        <location filename="../IMainWindow.ui" line="115"/>
         <source>Project</source>
         <translation>Projet</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
+        <location filename="../IMainWindow.ui" line="126"/>
         <source>Tool</source>
         <translation>Outils</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
+        <location filename="../IMainWindow.ui" line="151"/>
         <source>Maps</source>
         <translation>Cartes</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
+        <location filename="../IMainWindow.ui" line="194"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Modèle numérique de terrain (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Data</source>
         <translation>Données</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Route</source>
         <translation>Calcul d'itinéraire</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="285"/>
+        <location filename="../IMainWindow.ui" line="288"/>
         <source>Add Map View</source>
         <translation>Ajouter une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="291"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="306"/>
         <source>Show Scale</source>
         <translation>Afficher l'échelle</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="318"/>
         <source>Setup Map Font</source>
         <translation>Configurer la police de la carte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="333"/>
         <source>Show Grid</source>
         <translation>Afficher la grille</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="336"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="348"/>
         <source>Setup Grid</source>
         <translation>Configurer la grille</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
+        <location filename="../IMainWindow.ui" line="351"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="366"/>
         <source>Flip Mouse Wheel</source>
         <translation>Inverser le sens de la molette de souris</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="381"/>
         <source>Setup Map Paths</source>
         <translation>Configurer les répertoires des cartes</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="396"/>
         <source>POI Text</source>
         <translation>Libellés des points d'interêt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="411"/>
         <source>Night / Day</source>
         <translation>Jour / Nuit</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="426"/>
         <source>Map Tool Tip</source>
         <translation>Infobulles sur la carte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
+        <location filename="../IMainWindow.ui" line="429"/>
         <source>Ctrl+I</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
+        <location filename="../IMainWindow.ui" line="441"/>
         <source>Setup DEM Paths</source>
         <translation>Configurer les répertoires DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="453"/>
         <source>About</source>
         <translation>À propos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="465"/>
         <source>Help</source>
         <translation>Aide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="468"/>
         <source>F1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <location filename="../IMainWindow.ui" line="442"/>
+        <location filename="../IMainWindow.ui" line="480"/>
+        <location filename="../IMainWindow.ui" line="483"/>
         <source>Setup Map View</source>
         <translation>Configurer la vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="495"/>
         <source>Load GIS Data</source>
         <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="498"/>
         <source>Load projects from file</source>
         <translation>Charger un fichier projet</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="501"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="513"/>
         <source>Save All GIS Data</source>
         <translation>Enregistrer toutes les données SIG</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="516"/>
         <source>Save all projects in the workspace</source>
         <translation>Enregistrer tous les projets de l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="472"/>
+        <location filename="../IMainWindow.ui" line="519"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="481"/>
+        <location filename="../IMainWindow.ui" line="531"/>
         <source>Setup Time Zone</source>
         <translation>Configurer le fuseau horaire</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="490"/>
+        <location filename="../IMainWindow.ui" line="543"/>
         <source>Add empty project</source>
         <translation>Ajouter un projet vide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="502"/>
+        <location filename="../IMainWindow.ui" line="558"/>
         <source>Search Google</source>
         <translation>Recherche Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="570"/>
         <source>Close all projects</source>
         <translation>Fermer tous les projets</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="514"/>
+        <location filename="../IMainWindow.ui" line="573"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="523"/>
+        <location filename="../IMainWindow.ui" line="585"/>
         <source>Setup Units</source>
         <translation>Configurer les unités</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="597"/>
         <source>Setup Workspace</source>
         <translation>Configurer l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="535"/>
+        <location filename="../IMainWindow.ui" line="600"/>
         <source>Setup save on exit.</source>
         <translation>Sauvegarde de la configuration en quittant</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="612"/>
         <source>Import Database from QLandkarte</source>
         <translation>Importer une base de données QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="547"/>
+        <location filename="../IMainWindow.ui" line="615"/>
         <source>Import QLandkarte GT database</source>
         <translation>Importer une base de données QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="627"/>
         <source>VRT Builder</source>
         <translation>Générateur de VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="559"/>
+        <location filename="../IMainWindow.ui" line="630"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Interface utilisateur pour gdalbuildvrt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="642"/>
         <source>Store Map View</source>
         <translation>Enregistrer une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="571"/>
+        <location filename="../IMainWindow.ui" line="645"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation>Sauvegarder les cartes et calques DEM actives et leurs paramètres dans un fichier</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="657"/>
         <source>Load Map View</source>
         <translation>Charger une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="583"/>
+        <location filename="../IMainWindow.ui" line="660"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation>Rétablir une vue avec les cartes et calques DEM et leurs paramètres à partir d'un fichier</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="675"/>
         <source>Ext. Profile</source>
         <translation>Profile externe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="598"/>
+        <location filename="../IMainWindow.ui" line="678"/>
         <source>Ctrl+E</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="690"/>
         <source>Close</source>
         <translation>Fermer</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="610"/>
+        <location filename="../IMainWindow.ui" line="693"/>
         <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="705"/>
         <source>Clone Map View</source>
         <translation>Dupliquer une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="622"/>
+        <location filename="../IMainWindow.ui" line="708"/>
         <source>Ctrl+Shift+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="631"/>
+        <location filename="../IMainWindow.ui" line="720"/>
         <source>Create Routino Database</source>
         <translation type="unfinished">Créer une base de données Routino</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="732"/>
         <source>Save(Print) Map Screenshot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="735"/>
         <source>Print a selected area of the map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="646"/>
+        <location filename="../IMainWindow.ui" line="738"/>
         <source>Ctrl+P</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="750"/>
         <source>Setup Coord. Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="658"/>
+        <location filename="../IMainWindow.ui" line="753"/>
         <source>Change the format coordinates are displayed</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="765"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="777"/>
+        <source>Setup Waypoint Icons</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="780"/>
+        <source>Setup path to custom icons</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapList</name>
@@ -5830,9 +6062,13 @@ Nom de fichier: %1</translation>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Pour ajouter des cartes cliquez sur Fichier -> Configurer les répertoires des cartes.</translation>
+        <translation type="vanished">Pour ajouter des cartes cliquez sur Fichier -> Configurer les répertoires des cartes.</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use <b>File->Setup Map Paths</b>. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
@@ -6032,62 +6268,62 @@ Je n'ai pas envie de lire la documentation !</translation>
         <translation type="obsolete">Ceci remplacera les données de l'original par une ligne simple de coordonnées. Toutes les autres données seront définitivement perdues.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="264"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Nouvelle ligne</b><br/>Déplacez la souris et utilisez le bouton gauche pour ajouter des points. Cliquez droit pour terminer.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation><b>Supprimer un point</b><br/>Approchez le pointeur du point et cliquez gauche pour le supprimer.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation><b>Sélectionner une série de points</b><br/> Pour commencer la sélection, cliquez gauche sur le premier point. Cliquez gauche sur le sur le deuxième point pour terminer la sélection et choisissez une option. Utilisez le bouton droit pour annuler.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Déplacer un point</b><br/>Approchez le pointeur près d'un point et cliquez gauche pour le coller au pointeur. Déplacez le point avec la souris. Déposez le point avec un clic gauche. Utilisez le bouton droit pour annuler.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Ajouter un point</b><br/>Placez le pointeur de la souris près d'un segment de ligne et cliquez gauche pour ajouter un point. Le nouveau point va coller au pointeur et vous pouvez le déplacer. Déposez le point par un clic gauche. Utilisez le clic droit pour annuler.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="347"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation><b>Aucun calcul d'itinéraire</b><br/>Les points seront connectés par une ligne droite.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="353"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation><b>Calcul d'itinéraire automatique</b><br/>Les paramètres de calcul d'itinéraire actuels serviront pour calculer un tracé entre les points. <b>Remarque :</b>Le routeur sélectionné doit être capable de faire le calcul à la volée. Généralement, les routeurs hors ligne en sont capables, les routeurs en ligne ne le sont pas.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="358"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation><b>Calcul d'itinéraire vecteur</b><br/>Connecter les points avec une ligne basée sur une carte vecteur active, si possible.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="530"/>
         <source><b>%1 Metrics</b></source>
         <translation><b>%1 Mesures</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="533"/>
         <source>Distance:</source>
         <translation>Distance:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="535"/>
         <source>Ascend:</source>
         <translation>Dénivelé positif:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="537"/>
         <source>Descend:</source>
         <translation>Dénivelé négatif:</translation>
     </message>
@@ -6109,28 +6345,33 @@ Je n'ai pas envie de lire la documentation !</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Reset Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="94"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Stop Range</source>
         <translatorcomment>tbc: range</translatorcomment>
         <translation>Terminer la série</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="95"/>
+        <location filename="../plot/IPlot.cpp" line="96"/>
         <source>Save...</source>
         <translation>Enregistrer...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="638"/>
+        <location filename="../plot/IPlot.cpp" line="98"/>
+        <source>Add Waypoint</source>
+        <translation type="unfinished">Ajouter un waypoint</translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="647"/>
         <source>No or bad data.</source>
         <translation>Aucune donnée ou données invalides.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <location filename="../plot/IPlot.cpp" line="1244"/>
         <source>Select output file</source>
         <translation>Sélectionner le fichier de sortie</translation>
     </message>
@@ -6290,7 +6531,7 @@ or
         <source>m</source>
         <translation></translation>
     </message>
-    <message utf8="true">
+    <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation></translation>
@@ -6393,9 +6634,13 @@ or
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
         <translatorcomment>tbc: setup tool button</translatorcomment>
-        <translation>Pour pouvoir utiliser le calcul d'itinéraire hors ligne, vous devez spécifier les répertoires qui contiennent les données de calcul d'itinéraire locales. Utilisez le bouton de configuration pour ajouter des répertoires.</translation>
+        <translation type="vanished">Pour pouvoir utiliser le calcul d'itinéraire hors ligne, vous devez spécifier les répertoires qui contiennent les données de calcul d'itinéraire locales. Utilisez le bouton de configuration pour ajouter des répertoires.</translation>
     </message>
 </context>
 <context>
@@ -6690,6 +6935,30 @@ or
     </message>
 </context>
 <context>
+    <name>IScrOptPrint</name>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="35"/>
+        <source>Save selected area as image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="38"/>
+        <location filename="../mouse/IScrOptPrint.ui" line="58"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="55"/>
+        <source>Print selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptRange</name>
     <message>
         <source>Delete selected range of points.</source>
@@ -6832,6 +7101,78 @@ or
     </message>
 </context>
 <context>
+    <name>IScrOptSelect</name>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="59"/>
+        <source>Copy all selected items to a project.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="62"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="82"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="102"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="122"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="176"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="205"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="265"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="291"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="317"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="343"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="79"/>
+        <source>Create a route from selected waypoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="99"/>
+        <source>Combine all selected tracks to a new one.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="119"/>
+        <source>Delete all selected items.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="173"/>
+        <source>Select all items that intersect the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="202"/>
+        <source>Select all itmes that are completely inside the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="262"/>
+        <source>Add tracks to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="288"/>
+        <source>Add waypoints to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="314"/>
+        <source>Add routes to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="340"/>
+        <source>Add areas to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptTrk</name>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
@@ -7588,18 +7929,18 @@ or
 <context>
     <name>IUnit</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Error</source>
         <translation type="unfinished">Erreur</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation type="unfinished">Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Position values out of bounds. </source>
         <translation type="unfinished">Valeurs de la position hors de la plage autorisée.</translation>
     </message>
@@ -7639,6 +7980,26 @@ or
         <source>Icons...</source>
         <translation>Icônes</translation>
     </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="68"/>
+        <source>External Icons:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="75"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="82"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="95"/>
+        <source>All custom icons have to be *.bmp format.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
diff --git a/src/locale/qmapshack_nl.ts b/src/locale/qmapshack_nl.ts
index 0329a03..ffba047 100644
--- a/src/locale/qmapshack_nl.ts
+++ b/src/locale/qmapshack_nl.ts
@@ -124,6 +124,11 @@
         <source>View %1</source>
         <translation>Venster %1</translation>
     </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="674"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CColorChooser</name>
@@ -136,32 +141,32 @@
 <context>
     <name>CCommandProcessor</name>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
         <translation>Toon debug resultaat op scherm.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
         <translation>Sla debug resultaat op als bestand (tijdelijk psd).</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
         <translation>Toon geen splash scherm.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
         <translation>Bestand met QMapShack. configuratie.</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation>bestand</translation>
     </message>
     <message>
-        <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
+        <location filename="../setup/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
         <translation>Bestanden voor toekomstig gebruik.</translation>
     </message>
@@ -205,23 +210,23 @@
         <translation>Alle gegevens gegroepeerd per map.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="52"/>
         <source>MySQL Database</source>
         <translation>MySQL Database</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="55"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="59"/>
         <source>Server: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="64"/>
         <source> (No PW)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="72"/>
         <source>Error: </source>
         <translation>Fout: </translation>
     </message>
@@ -265,7 +270,7 @@
 <context>
     <name>CDBProject</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <location filename="../gis/db/CDBProject.cpp" line="219"/>
         <source>The item %1 has been changed by %2 (%3). 
 
 To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
@@ -274,47 +279,47 @@ To solve this conflict you can create and save a clone, force your version or dr
 Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer huidige versie of verwijder deze versie en kies een ander uit de database</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <location filename="../gis/db/CDBProject.cpp" line="225"/>
         <source>Conflict with database...</source>
         <translation>Conflict met database...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <location filename="../gis/db/CDBProject.cpp" line="226"/>
         <source>Clone && Save</source>
         <translation>Kloon && Opslaan</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <location filename="../gis/db/CDBProject.cpp" line="227"/>
         <source>Force Save</source>
         <translation>Forceer opslaan</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <location filename="../gis/db/CDBProject.cpp" line="228"/>
         <source>Take remote</source>
         <translation>Neem huidige</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <location filename="../gis/db/CDBProject.cpp" line="531"/>
         <source>Missing folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <location filename="../gis/db/CDBProject.cpp" line="532"/>
         <source>Failed to save project. The folder has been deleted in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <location filename="../gis/db/CDBProject.cpp" line="539"/>
         <source>Save ...</source>
         <translation>Opslaan...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>Error</source>
         <translation>Fout</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <location filename="../gis/db/CDBProject.cpp" line="602"/>
         <source>There was an unexpected database error:
 
 %1</source>
@@ -323,12 +328,12 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <location filename="../gis/db/CDBProject.cpp" line="727"/>
         <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
         <translation>Het project '%1' zal geupdated worden met de database.Er zijn nog veranderingen niet opgeslagen.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <location filename="../gis/db/CDBProject.cpp" line="728"/>
         <source>Save changes?</source>
         <translation>Veranderingen opslaan?</translation>
     </message>
@@ -336,12 +341,12 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Deactivate</source>
         <translation>Deactiveer</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="198"/>
+        <location filename="../dem/CDemList.cpp" line="202"/>
         <source>Activate</source>
         <translation>Activeer</translation>
     </message>
@@ -412,7 +417,7 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation>Zoeken naar afbeeldingen...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="264"/>
         <source>No images found</source>
         <translation>Geen afbeeldingen gevonden</translation>
     </message>
@@ -571,47 +576,47 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation type="obsolete">Vaste kleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="181"/>
         <source>Reduce visible track points</source>
         <translation>Reduceer zichtbare trackpunten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="184"/>
         <source>Change elevation of track points</source>
         <translation>Verander hoogte van trackpunten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="187"/>
         <source>Change timestamp of track points</source>
         <translation>Verander tijdstempels van trackpunten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="190"/>
         <source>Modify track points' extensions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>Cut track into pieces</source>
         <translation>Knip track in delen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="410"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="418"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="421"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="442"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="507"/>
         <source>Color</source>
         <translation>Kleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
         <source>Activity</source>
         <translation>Activiteit</translation>
     </message>
@@ -624,17 +629,17 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation type="obsolete">Geef track nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>Reset activities...</source>
         <translation>Herstel activiteiten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation>Dit zal alle activiteiten uit de track verwijderen. Doorgaan?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="747"/>
         <source>None</source>
         <translation>Geen</translation>
     </message>
@@ -658,17 +663,30 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CDeviceGarmin</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="254"/>
         <source>Picture%1</source>
         <translation>Afbeelding%1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <location filename="../gis/gpx/serialization.cpp" line="1038"/>
         <source>Unknown</source>
         <translation>Onbekend</translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarminArchive</name>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="30"/>
+        <source>Archive - expand to load</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="43"/>
+        <source>Archive - loaded</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -679,7 +697,7 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="57"/>
         <source>No extension available</source>
         <translation type="unfinished"></translation>
     </message>
@@ -711,12 +729,12 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="69"/>
         <source>FIT decoding error: protocol %1 version not supported.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="120"/>
         <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -795,52 +813,52 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation>_Kloon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="385"/>
         <source>Area: %1%2</source>
         <translation>Gebied: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="447"/>
         <source>Changed area shape.</source>
         <translation>Vorm gebied aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="455"/>
         <source>Changed name.</source>
         <translation>Naam aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
         <source>Changed border width.</source>
         <translation>Lijndikte aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="467"/>
         <source>Changed fill pattern.</source>
         <translation>Opvulling aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="473"/>
         <source>Changed opacity.</source>
         <translation>Transparantie aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="479"/>
         <source>Changed comment.</source>
         <translation>Notitie aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="485"/>
         <source>Changed description.</source>
         <translation>Beschrijving aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="491"/>
         <source>Changed links</source>
         <translation>Link aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed color</source>
         <translation>Kleur aangepast</translation>
     </message>
@@ -884,7 +902,7 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="485"/>
         <source>Time: %1 %2</source>
         <translation>Tijd: %1 %2</translation>
     </message>
@@ -904,12 +922,12 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation>met %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="487"/>
         <source>Distance: %1 %2</source>
         <translation>Afstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="601"/>
         <source>Changed route points.</source>
         <translation>Routepunten aangepast.</translation>
     </message>
@@ -917,7 +935,7 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <location filename="../gis/fit/serialization.cpp" line="182"/>
         <source>FIT file %1 contains no GPS data.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -948,40 +966,36 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation>Lezen gegevens mislukt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="118"/>
         <source>_Clone</source>
         <translation>_Kloon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="290"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Trackpunten aangepast, vorige gegevens overschreven.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
         <source>Length: %1 %2</source>
         <translation>Lengte: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="408"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation>, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
         <source>Time: %1</source>
-        <translation>Tijd: %1</translation>
+        <translation type="obsolete">Tijd: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
         <source>, Speed: %1 %2</source>
-        <translation>, Snelheid: %1 %2</translation>
+        <translation type="obsolete">, Snelheid: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
         <source>Moving: %1</source>
-        <translation>Beweging: %1</translation>
+        <translation type="obsolete">Beweging: %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
@@ -989,172 +1003,202 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation>Start: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="432"/>
         <source>End: %1</source>
         <translation>Einde: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
         <source>Points: %1 (%2)</source>
         <translation>Punten: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="527"/>
         <source>Ele.: %1 %2</source>
         <translation>Hoogte.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="530"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> helling: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="535"/>
         <source> speed: %1%2</source>
         <translation> snelheid: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="563"/>
         <source>... and %1 tags not displayed</source>
         <translation>... en %1 tags niet getoont</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="574"/>
+        <source>Descend: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
+        <source>Distance: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="576"/>
+        <source>Moving: - (-)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Stijging: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
+        <source>Hide point %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1445"/>
+        <source>Hide points %1..%2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
         <source>Ascend: - (-)</source>
         <translation>Stijging: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="587"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Daling: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
         <source> Descend: - (-) </source>
-        <translation> Daling: - (-) </translation>
+        <translation type="obsolete"> Daling: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Afstand.: %1%2 (%3%)</translation>
+        <translation type="obsolete">Afstand.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
         <source>Dist.: - (-)</source>
-        <translation>Afstand.: - (-)</translation>
+        <translation type="obsolete">Afstand.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="599"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> Beweging: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
         <source> Moving: - (-) </source>
-        <translation> Beweging: - (-) </translation>
+        <translation type="obsolete"> Beweging: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="621"/>
         <source>Ascend: %1%2</source>
         <translation>Stijging: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="626"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="638"/>
         <source>, %1%2</source>
         <translation>, %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
         <source>Ascend: -</source>
         <translation>Stijging: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="633"/>
         <source> Descend: %1%2</source>
         <translation> Daling: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="616"/>
         <source>Descend: -</source>
         <translation>Daling: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
         <source>Dist.: %1%2</source>
-        <translation>Afstand.: %1%2</translation>
+        <translation type="obsolete">Afstand.: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
         <source> Time: %1%2</source>
         <translation> Tijd: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Edit name...</source>
         <translation>Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="329"/>
         <source>Enter new track name.</source>
         <translation>Geef track nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="416"/>
+        <source>Time: %1, Speed: %2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="423"/>
+        <source>Moving: %1, Speed: %2 %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="593"/>
+        <source>Distance: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="643"/>
+        <source>Distance: %1%2</source>
+        <translation type="unfinished">Afstand: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1286"/>
         <source>Permanently removed points %1..%2</source>
         <translation>Permanent verwijderde punten %1..%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
         <source>Hide points.</source>
-        <translation>Verberg punten.</translation>
+        <translation type="obsolete">Verberg punten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1485"/>
         <source>Show points.</source>
         <translation>Toon punten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2040"/>
         <source>Changed name</source>
         <translation>Naam aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2046"/>
         <source>Changed comment</source>
         <translation>Notitie aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2052"/>
         <source>Changed description</source>
         <translation>Beschrijving aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2058"/>
         <source>Changed links</source>
         <translation>Link aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2085"/>
         <source>Changed activity to '%1' for complete track.</source>
         <translation>Activiteit aangepast naar '%1' voor gehele track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
         <translation>Activiteit aangepast naar '%1' voor bereik(%2..%3).</translation>
     </message>
@@ -1224,7 +1268,7 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
+        <location filename="../qlgt/converter.cpp" line="195"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation>Kopieer flag informatie vanuit QLandkarte GT track</translation>
     </message>
@@ -1410,203 +1454,207 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Edit..</source>
         <translation>Bewerken..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Show on Map</source>
         <translation>Toon op kaart</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Hide from Map</source>
         <translation>Toon niet op kaart</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Save</source>
         <translation>Opslaan</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save As...</source>
         <translation>Opslaan als...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Send to Devices</source>
         <translation>Verzend naar GPS</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Sync. with Database</source>
         <translation>Syngroniseren met database</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="111"/>
         <source>Close</source>
         <translation>Sluiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="118"/>
+        <location filename="../gis/CGisListWks.cpp" line="121"/>
         <source>Update Project on Device</source>
         <translation>Update project op GPS</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="119"/>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="123"/>
+        <location filename="../gis/CGisListWks.cpp" line="144"/>
         <source>Delete</source>
         <translation>Verwijder</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Edit...</source>
         <translation>Bewerken...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Copy to...</source>
         <translation>Kopieer naar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Track Profile</source>
         <translation>Track profiel</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <location filename="../gis/CGisListWks.cpp" line="139"/>
         <source>Select Range</source>
         <translation>Selecteer afstand</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Edit Track Points</source>
         <translation>Trackpunten bewerken</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="137"/>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
         <source>Reverse Track</source>
         <translation>Track omdraaien</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
         <source>Combine Tracks</source>
         <translation>Combineer tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="146"/>
+        <location filename="../gis/CGisListWks.cpp" line="150"/>
         <source>Show Bubble</source>
         <translation>Toon ballon</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="148"/>
+        <location filename="../gis/CGisListWks.cpp" line="152"/>
         <source>Move Waypoint</source>
         <translation>Verplaats waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="149"/>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
         <source>Proj. Waypoint...</source>
         <translation>Projecteer waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="157"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Route Instructions</source>
         <translation>Route instructies</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="159"/>
+        <location filename="../gis/CGisListWks.cpp" line="163"/>
         <source>Calculate Route</source>
         <translation>Route berekenen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="160"/>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
         <source>Reset Route</source>
         <translation>Route omkeren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="161"/>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
         <source>Edit Route</source>
         <translation>Bewerk route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="170"/>
+        <location filename="../gis/CGisListWks.cpp" line="174"/>
         <source>Edit Area Points</source>
         <translation>Bewerk gebied punten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="177"/>
+        <location filename="../gis/CGisListWks.cpp" line="181"/>
         <source>Create Route</source>
         <translation>Maak route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="621"/>
+        <location filename="../gis/CGisListWks.cpp" line="625"/>
         <source>Drop items...</source>
         <translation>Elementen wissen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="646"/>
-        <location filename="../gis/CGisListWks.cpp" line="1632"/>
-        <location filename="../gis/CGisListWks.cpp" line="1670"/>
+        <location filename="../gis/CGisListWks.cpp" line="650"/>
+        <location filename="../gis/CGisListWks.cpp" line="1581"/>
+        <location filename="../gis/CGisListWks.cpp" line="1619"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Updaten GPS</b><p>Updaten %1<br/>Moment geduld...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <location filename="../gis/CGisListWks.cpp" line="779"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Werkruimte opslaan. Moment geduld.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <location filename="../gis/CGisListWks.cpp" line="825"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Laden werkruimte. Moment geduld.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>Close all projects...</source>
         <translation>Sluit alle projecten...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <location filename="../gis/CGisListWks.cpp" line="1142"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dit zal alle projecten uit de werkruimte verwijderen.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Delete project...</source>
         <translation>Project verwijderen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <location filename="../gis/CGisListWks.cpp" line="1165"/>
         <source>Do you really want to delete %1?</source>
         <translation>Moet %1 werkelijk verwijderd worden?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
-        <translation>Kopieer elementen...</translation>
+        <translation type="obsolete">Kopieer elementen...</translation>
     </message>
 </context>
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>Load project...</source>
         <translation>Project laden...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <location filename="../gis/CGisWidget.cpp" line="134"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation>Het project "%1" is al geopend.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="529"/>
+        <source>Copy items...</source>
+        <translation type="unfinished">Kopieer elementen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Cut Track...</source>
         <translation>Track knippen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <location filename="../gis/CGisWidget.cpp" line="645"/>
         <source>Do you want to delete the original track?</source>
         <translation>Moet de orginele track verwijderd worden?</translation>
     </message>
@@ -1614,53 +1662,96 @@ Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer
 <context>
     <name>CGpsProject</name>
     <message>
+        <source>Failed to load file %1...</source>
+        <translation type="vanished">Kan bestand %1 niet laden...</translation>
+    </message>
+    <message>
+        <source>Failed to open %1</source>
+        <translation type="vanished">Openen mislukt-%1</translation>
+    </message>
+    <message>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="vanished">Lezen mislukt: %1
+lijn %2, kolom %3:
+ %4</translation>
+    </message>
+    <message>
+        <source>Not a GPX file: %1</source>
+        <translation type="vanished">Geen GPX bestand: %1</translation>
+    </message>
+    <message>
+        <source>File exists ...</source>
+        <translation type="vanished">Bestand bestaat al...</translation>
+    </message>
+    <message>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="vanished">Dit bestand bestaat al en is niet in QMapShack gemaakt. Wanneer op 'Ja' geklikt wordt zullen er gegevens verloren gaan. Alhoewel QMapShack dit GPX bestand kan openen is het mogelijk dat niet alle elementen opgeslagen kunnen worden. Geadviseerd wordt om een ander bestand te kiezen. <b>Moet dit bestand werkelijk overschreven worden?<b/></translation>
+    </message>
+    <message>
+        <source>Failed to create file '%1'</source>
+        <translation type="vanished">Maken bestand mislukt '%1'</translation>
+    </message>
+    <message>
+        <source>Failed to write file '%1'</source>
+        <translation type="vanished">Schrijven bestand mislukt '%1'</translation>
+    </message>
+    <message>
+        <source>Saving GIS data failed...</source>
+        <translation type="vanished">Opslaan GIS gegevens mislukt...</translation>
+    </message>
+</context>
+<context>
+    <name>CGpxProject</name>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
         <source>Failed to load file %1...</source>
-        <translation>Kan bestand %1 niet laden...</translation>
+        <translation type="unfinished">Kan bestand %1 niet laden...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
         <source>Failed to open %1</source>
-        <translation>Openen mislukt-%1</translation>
+        <translation type="unfinished">Openen mislukt-%1</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Lezen mislukt: %1
+        <translation type="unfinished">Lezen mislukt: %1
 lijn %2, kolom %3:
  %4</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
         <source>Not a GPX file: %1</source>
-        <translation>Geen GPX bestand: %1</translation>
+        <translation type="unfinished">Geen GPX bestand: %1</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
         <source>File exists ...</source>
-        <translation>Bestand bestaat al...</translation>
+        <translation type="unfinished">Bestand bestaat al...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>Dit bestand bestaat al en is niet in QMapShack gemaakt. Wanneer op 'Ja' geklikt wordt zullen er gegevens verloren gaan. Alhoewel QMapShack dit GPX bestand kan openen is het mogelijk dat niet alle elementen opgeslagen kunnen worden. Geadviseerd wordt om een ander bestand te kiezen. <b>Moet dit bestand werkelijk overschreven worden?<b/></translation>
+        <translation type="unfinished">Dit bestand bestaat al en is niet in QMapShack gemaakt. Wanneer op 'Ja' geklikt wordt zullen er gegevens verloren gaan. Alhoewel QMapShack dit GPX bestand kan openen is het mogelijk dat niet alle elementen opgeslagen kunnen worden. Geadviseerd wordt om een ander bestand te kiezen. <b>Moet dit bestand werkelijk overschreven worden?<b/></translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
         <source>Failed to create file '%1'</source>
-        <translation>Maken bestand mislukt '%1'</translation>
+        <translation type="unfinished">Maken bestand mislukt '%1'</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
         <source>Failed to write file '%1'</source>
-        <translation>Schrijven bestand mislukt '%1'</translation>
+        <translation type="unfinished">Schrijven bestand mislukt '%1'</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
         <source>Saving GIS data failed...</source>
-        <translation>Opslaan GIS gegevens mislukt...</translation>
+        <translation type="unfinished">Opslaan GIS gegevens mislukt...</translation>
     </message>
 </context>
 <context>
@@ -1793,664 +1884,669 @@ lijn %2, kolom %3:
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="617"/>
+        <location filename="../CMainWindow.cpp" line="643"/>
         <source>Ele: %1%2</source>
         <translation>Hoogte: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="633"/>
+        <location filename="../CMainWindow.cpp" line="659"/>
         <source>[Grid: %1]</source>
         <translation>[Raster: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="758"/>
+        <location filename="../CMainWindow.cpp" line="794"/>
         <source>Load GIS Data...</source>
         <translation>GIS gegevens laden...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
         <source>Select output file</source>
         <translation>Selecteer bestand</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="828"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>QMapShack View (*.view)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="818"/>
+        <location filename="../CMainWindow.cpp" line="854"/>
         <source>Select file to load</source>
         <translation>Selecteer bestand</translation>
     </message>
 </context>
 <context>
+    <name>CMapDraw</name>
+    <message>
+        <location filename="../map/CMapDraw.cpp" line="406"/>
+        <source>There are no maps right now. QMapShack is no fun without maps. You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. 
+
+If it's no fun, why don't you provide maps? Well to host maps ready for download and installation requires a good server. And this is not a free service. The project lacks the money. Additionally map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package the data. This is not that easy as it might sound and for some data you have to pay royalties. The project simply lacks resources to do this. And we think installing the stuff yourself is  [...]
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <location filename="../map/CMapIMG.cpp" line="145"/>
         <source>Failed ...</source>
         <translation>Mislukt...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
         <translation>Ongespecificeerd</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
         <translation>Frans</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
         <translation>Duits</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
         <translation>Nederlands</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
         <translation>Engels</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
         <translation>Italiaans</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
         <translation>Fins</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
         <translation>Zweeds</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
         <translation>Spaans</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
         <translation>Baskisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
         <translation>Catalaans</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
         <translation>Galicisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
         <translation>Wels</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
         <translation>Gaelisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
         <translation>Deens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
         <translation>Noors</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
         <translation>Portugees</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
         <translation>Slowaaks</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
         <translation>Tsjechisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
         <translation>Kroatisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
         <translation>Hongaars</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
         <translation>Pools</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
         <translation>Turks</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
         <translation>Grieks</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
         <translation>Sloveens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
         <translation>Russisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
         <translation>Ests</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
         <translation>Lets</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
         <translation>Roemeens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
         <translation>Albanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
         <translation>Bosnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
         <translation>Litouws</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
         <translation>Servisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
         <translation>Macedonisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
         <translation>Bulgaars</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
         <translation>Belangrijke snelweg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
         <translation>Gewone snelweg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
         <translation>Andere snelweg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
         <translation>Uitvalsweg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
         <translation>Verzamelweg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
         <translation>Woonstraat</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
         <translation>Laan/privéweg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
         <translation>Snelweg oprit, langzame snelheid</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
         <translation>Snelweg oprit, hoge snelheid</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
         <translation>Onverharde weg</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
         <translation>Belangrijke snelwegknooppunt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
         <translation>Rotonde</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
         <translation>Spoorlijn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
         <translation>Kustlijn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
         <translation>Pad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
         <translation>Stroom</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
         <translation>Tijdzone</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
         <translation>Veerdienst</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
         <translation>Staat/provinciegrens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
         <translation>Provincie/gemeentegrens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
         <translation>Internationale grens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
         <translation>Rivier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
         <translation>Klein hoogteverschil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
         <translation>Gemiddeld hoogteverschil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
         <translation>Groot hoogteverschil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
         <translation>Klein diepteverschil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
         <translation>Gemiddeld diepteverschil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
         <translation>Groot diepteverschil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
         <translation>Intermitterende beek</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
         <translation>Landingsbaan</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
         <translation>Pijplijn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
         <translation>Hoogspanningsleiding</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
         <translation>Zeegrens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
         <translation>Gevaarlijke grens</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Groot bevolkt gebied (&gt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Klein bevolt gebied (&lt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
         <translation>Landelijk woongebied</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
         <translation>Militaire basis</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
         <translation>Parkeerterrein</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
         <translation>Parkeergarage</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
         <translation>Vliegveld</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
         <translation>Winkelcentrum</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
         <translation>Jachthaven</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
         <translation>Universiteit/College</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
         <translation>Ziekenhuis</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
         <translation>Industrie</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
         <translation>Reservaat</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
         <translation>Gemaakt gebied</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
         <translation>Sprtcomplex</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
         <translation>Golfbaan</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
         <translation>Begraafplaats</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
         <translation>Nationaal park</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
         <translation>Stadspark</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
         <translation>Staatspark</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
         <translation>Bos</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
         <translation>Oceaan</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
         <translation>Blauw (onbekend</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
         <translation>Zee</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
         <translation>Groot meer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
         <translation>Middelmatig meer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
         <translation>Klein meer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
         <translation>Belangrijk meer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
         <translation>Belangrijke rivier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
         <translation>Groot rivier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
         <translation>Middelmatig rivier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
         <translation>Klein rivier</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
         <translation>Intermitterende water</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
         <translation>Moeras</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
         <translation>Gletsjer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
         <translation>Boomgaard/Plantage</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
         <translation>Struikgewas</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
         <translation>Toendra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
         <translation>Vlak</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
         <translation>???</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <location filename="../map/CMapIMG.cpp" line="435"/>
         <source>Failed to read: </source>
         <translation>Lezen mislukt:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <location filename="../map/CMapIMG.cpp" line="478"/>
         <source>Failed to open: </source>
         <translation>Openen mislukt:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <location filename="../map/CMapIMG.cpp" line="502"/>
+        <location filename="../map/CMapIMG.cpp" line="506"/>
         <source>Bad file format: </source>
         <translation>Verkeerd bestandsformaat:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <location filename="../map/CMapIMG.cpp" line="595"/>
         <source>Failed to read file structure: </source>
         <translation>Lezen bestandsstructuur mislukt:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <location filename="../map/CMapIMG.cpp" line="630"/>
         <source>Loading %1</source>
         <translation>Laden %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <location filename="../map/CMapIMG.cpp" line="636"/>
         <source>User abort: </source>
         <translation>Afgebroken door gebruiker: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation>Bestand is in NT formaat. QMapShack kan geen kaarten lezen met NT formaat:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>Bestand bevat geblokeerde / gecodeerde gegevens. Garmin staat niet toe dat deze gegeven door andere software gelezen kan worden.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2502"/>
-        <location filename="../map/CMapIMG.cpp" line="2510"/>
-        <location filename="../map/CMapIMG.cpp" line="2514"/>
-        <location filename="../map/CMapIMG.cpp" line="2519"/>
-        <location filename="../map/CMapIMG.cpp" line="2565"/>
-        <location filename="../map/CMapIMG.cpp" line="2573"/>
-        <location filename="../map/CMapIMG.cpp" line="2577"/>
-        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <location filename="../map/CMapIMG.cpp" line="2305"/>
+        <location filename="../map/CMapIMG.cpp" line="2311"/>
+        <location filename="../map/CMapIMG.cpp" line="2315"/>
         <source>Point of Interest</source>
         <translation>Interessant punt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <location filename="../map/CMapIMG.cpp" line="2401"/>
         <source>Unknown</source>
         <translation>Onbekend</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2755"/>
-        <location filename="../map/CMapIMG.cpp" line="2763"/>
-        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <location filename="../map/CMapIMG.cpp" line="2443"/>
+        <location filename="../map/CMapIMG.cpp" line="2451"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Area</source>
         <translation>Gebied</translation>
     </message>
@@ -2458,17 +2554,17 @@ lijn %2, kolom %3:
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Deactivate</source>
         <translation>Deactiveer</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="205"/>
+        <location filename="../map/CMapList.cpp" line="208"/>
         <source>Activate</source>
         <translation>Activeer</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="228"/>
+        <location filename="../map/CMapList.cpp" line="233"/>
         <source>Where do you want to store maps?</source>
         <translation>Waar moeten de kaarten opgeslagen worden?</translation>
     </message>
@@ -2802,12 +2898,17 @@ Onbekende structuur.</translation>
         <translation>Maak gebied</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="44"/>
+        <source>Select Items On Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
         <translation>Kopieer positie</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <location filename="../mouse/CMouseNormal.cpp" line="47"/>
         <source>Copy position (Grid)</source>
         <translation>Kopieer positie (Raster)</translation>
     </message>
@@ -2815,9 +2916,13 @@ Onbekende structuur.</translation>
 <context>
     <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
         <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
-        <translation><b>Opslaan of afdrukken kaart</b><br>Selecteer een rechthoekig deel van de kaart. Gebruik de linkertoets van de muis en beweeg deze. Annuleer door een rechter klik. Stel in door een hoek met linker muisknop te bewegen. Opslaan of afdrukken kan door op het icoon te klikken in het midden van de geselecteerde kaart.</translation>
+        <translation type="obsolete"><b>Opslaan of afdrukken kaart</b><br>Selecteer een rechthoekig deel van de kaart. Gebruik de linkertoets van de muis en beweeg deze. Annuleer door een rechter klik. Stel in door een hoek met linker muisknop te bewegen. Opslaan of afdrukken kan door op het icoon te klikken in het midden van de geselecteerde kaart.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMousePrint.cpp" line="31"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2829,6 +2934,39 @@ Onbekende structuur.</translation>
     </message>
 </context>
 <context>
+    <name>CMouseSelect</name>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="31"/>
+        <source><b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="96"/>
+        <source><b>Selected:</b><br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="98"/>
+        <source>%1 waypoints<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="97"/>
+        <source>%1 tracks<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="99"/>
+        <source>%1 routes<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseSelect.cpp" line="100"/>
+        <source>%1 areas<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPhotoAlbum</name>
     <message>
         <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
@@ -2837,6 +2975,19 @@ Onbekende structuur.</translation>
     </message>
 </context>
 <context>
+    <name>CPlot</name>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="55"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished">afstand [%1]</translation>
+    </message>
+    <message>
+        <location filename="../plot/CPlot.cpp" line="60"/>
+        <source>time</source>
+        <translation type="unfinished">tijd</translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
         <source>distance [%1]</source>
@@ -2854,7 +3005,7 @@ Onbekende structuur.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="78"/>
         <source>distance [%1]</source>
         <translation>afstand [%1]</translation>
     </message>
@@ -2863,7 +3014,7 @@ Onbekende structuur.</translation>
         <translation type="obsolete">tijd [u]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <location filename="../plot/CPlotProfile.cpp" line="79"/>
         <source>alt. [%1]</source>
         <translation>hoogte [%1]</translation>
     </message>
@@ -2987,14 +3138,12 @@ is geen geldig coordinaat definitie:
 <context>
     <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
         <source>distance [%1]</source>
-        <translation>afstand [%1]</translation>
+        <translation type="vanished">afstand [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
         <source>time</source>
-        <translation>tijd</translation>
+        <translation type="vanished">tijd</translation>
     </message>
 </context>
 <context>
@@ -3169,13 +3318,13 @@ is geen geldig coordinaat definitie:
     <name>CQmsProject</name>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open...</source>
         <translation>Openen mislukt...</translation>
     </message>
     <message>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="80"/>
         <source>Failed to open %1</source>
         <translation>Openen mislukt-%1</translation>
     </message>
@@ -3585,6 +3734,59 @@ is geen geldig coordinaat definitie:
     </message>
 </context>
 <context>
+    <name>CScrOptSelect</name>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="93"/>
+        <source><b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="97"/>
+        <source><b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="101"/>
+        <source><b>Add Tracks</b><br/>Add tracks to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="105"/>
+        <source><b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="109"/>
+        <source><b>Add Routes</b><br/>Add routes to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="113"/>
+        <source><b>Add Areas</b><br/>Add areas to list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="124"/>
+        <source><b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="128"/>
+        <source><b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="132"/>
+        <source><b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/CScrOptSelect.cpp" line="136"/>
+        <source><b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
@@ -3654,17 +3856,22 @@ is geen geldig coordinaat definitie:
 <context>
     <name>CSlfReader</name>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="63"/>
+        <source>Failed to parse timestamp `%1`</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="76"/>
         <source>%1 does not exist</source>
         <translation>%1 bestaat niet</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="81"/>
         <source>Failed to open %1</source>
         <translation>Openen mislukt-%1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="92"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3673,22 +3880,22 @@ lijn %2, kolom %3:
  %4</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="99"/>
         <source>Not a SLF file: %1</source>
         <translation>Geen SLF bestand: %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="106"/>
         <source>Unsupported revision %1: %2</source>
         <translation>Niet ondersteunende revisie %1: %2</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="181"/>
         <source>Break %1</source>
         <translation>Pauze %1</translation>
     </message>
     <message>
-        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <location filename="../gis/slf/CSlfReader.cpp" line="185"/>
         <source>Lap %1</source>
         <translation>Ronde %1</translation>
     </message>
@@ -3704,21 +3911,21 @@ lijn %2, kolom %3:
 <context>
     <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/serialization.cpp" line="588"/>
         <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <location filename="../gis/tnv/serialization.cpp" line="617"/>
         <location filename="../gis/tnv/serialization.cpp" line="645"/>
         <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
         <source>Error...</source>
         <translation>Fout...</translation>
     </message>
     <message>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
         <translation>Kan %1 niet openen.</translation>
     </message>
@@ -3742,6 +3949,14 @@ lijn %2, kolom %3:
     </message>
 </context>
 <context>
+    <name>CWptIconDialog</name>
+    <message>
+        <location filename="../helpers/CWptIconDialog.cpp" line="160"/>
+        <source>Path to user icons...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -4215,9 +4430,13 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation>Formulier</translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Om bestanden met hoogtegegevens toe te voegen gebruik Bestand ->Map DEM instellen. </translation>
+        <translation type="vanished">Om bestanden met hoogtegegevens toe te voegen gebruik Bestand ->Map DEM instellen. </translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
@@ -4497,12 +4716,12 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation type="obsolete">Grafieken</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1019"/>
         <source>Profile</source>
         <translation>Profiel</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1460"/>
         <source>Speed</source>
         <translation>Snelheid</translation>
     </message>
@@ -4517,22 +4736,22 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="444"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="473"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="538"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="564"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="593"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="711"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1040"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1069"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1101"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1137"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1198"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1234"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1263"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1295"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -4561,37 +4780,37 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation type="obsolete">uit gegevens</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="419"/>
         <source>Source</source>
         <translation>Bron</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="624"/>
         <source>Maximum</source>
         <translation>Maximum</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Use/edit user defined visibility of arrows for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="470"/>
         <source>Use/edit system's visibility of arrows for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="764"/>
         <source>Minimum</source>
         <translation>Minimum</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
         <source>Use/edit user defined scale factor for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
         <source>Use/edit system's default factor for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4600,22 +4819,22 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation type="obsolete">Vaste kleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="638"/>
         <source>x </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="631"/>
         <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="832"/>
         <source>Graphs</source>
         <translation>Grafieken</translation>
     </message>
@@ -4632,110 +4851,110 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation type="obsolete">Grafiek 1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="845"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="865"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="951"/>
         <source>max.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="984"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1005"/>
         <source>min.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="535"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1037"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1134"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1231"/>
         <source>User defined limits for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="561"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1066"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1260"/>
         <source>Automatic limits</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="590"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1098"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1195"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1292"/>
         <source>User defined limits for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="784"/>
         <source>Color</source>
         <translation>Kleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1324"/>
         <source>Activity</source>
         <translation>Activiteit</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1365"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation>Om de track statistieken te onderscheiden selecteer een activiteit uit de lijst voor de volledige track. Of selecteer een deel van de track om een activieteit toe te kennen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1392"/>
         <source>Points</source>
         <translation>Punten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1440"/>
         <source>Time</source>
         <translation>Tijd</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1445"/>
         <source>Ele.</source>
         <translation>Hoogte</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1450"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1455"/>
         <source>Dist.</source>
         <translation>Afstand.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1465"/>
         <source>Slope</source>
         <translation>Helling</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1470"/>
         <source>Ascend</source>
         <translation>Stijging</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1475"/>
         <source>Descend</source>
         <translation>Daling</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1480"/>
         <source>Position</source>
         <translation>Positie</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1489"/>
         <source>Filter</source>
         <translation>Filter</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1526"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -4817,7 +5036,7 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
 <context>
     <name>IDevice</name>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
+        <location filename="../device/IDevice.cpp" line="287"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
         <translation>Er is al een ander project met dezelfde naam. Bij drukken op 'OK' zal deze overschreven worden.</translation>
     </message>
@@ -5192,66 +5411,72 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation>[geen naam]</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <location filename="../gis/IGisItem.cpp" line="314"/>
         <source>The item is not part of the project in the database.</source>
         <translation>Het item is geen deel van het project in de database.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <location filename="../gis/IGisItem.cpp" line="315"/>
+        <source>
+It is either a new item or it has been deleted in the database by someone else.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="321"/>
         <source>The item is not in the database.</source>
         <translation>Het item is niet in de database.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <location filename="../gis/IGisItem.cpp" line="327"/>
         <source>The item might need to be saved</source>
         <translation>Het item dient opgeslagen te worden</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <location filename="../gis/IGisItem.cpp" line="411"/>
         <source>Initial version.</source>
         <translation>Orginele versie.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <location filename="../gis/IGisItem.cpp" line="519"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
         <translation><h3>%1<h3>Dit element is waarschijnlijk alleen lezen omdat dit niet gemaakt is in QMapShack. Normaal hoeven geen gegevens aangepast te worden na het importeren.  Om toch aan te passen druk dan op 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <location filename="../gis/IGisItem.cpp" line="520"/>
         <source>Read Only Mode...</source>
         <translation>Alleen lezen modus...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="670"/>
-        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschrijving:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="673"/>
-        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- geen beschrijving ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Notitie:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- geen notitie ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="698"/>
-        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <location filename="../gis/IGisItem.cpp" line="712"/>
+        <location filename="../gis/IGisItem.cpp" line="757"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Links:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="701"/>
-        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <location filename="../gis/IGisItem.cpp" line="715"/>
+        <location filename="../gis/IGisItem.cpp" line="760"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- geen links ---</p></translation>
     </message>
@@ -5269,59 +5494,59 @@ Als er alleen een halve track bewaard moet worden kunnen de overige punten verwi
         <translation><h3>%1</h3>Het project is veranderd. Voor het sluiten opslaan?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="258"/>
         <source>%1: Correlate tracks and waypoints.</source>
         <translation>%1: Correlatie van tracks en waypointen.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="268"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
         <translation><h3>%1</h3>Duurde dit te lang? Moet de correlatie van tracks en waypointen in dit project in de toekomst overgeslagen worden?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="269"/>
         <source>Canceled correlation...</source>
         <translation>Correlatie geanuleerd...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Save "%1" to...</source>
         <translation>Opslaan "%1" als...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="420"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Bestandsnaam: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="425"/>
         <source>Waypoints: %1</source>
         <translation>Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="429"/>
         <source>Tracks: %1</source>
         <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="433"/>
         <source>Routes: %1</source>
         <translation>Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="437"/>
         <source>Areas: %1</source>
         <translation>Gebieden: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="557"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Moet '%1' werkelijk verwijderd worden uit project '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="558"/>
         <source>Delete...</source>
         <translation>Verwijderen...</translation>
     </message>
@@ -5445,6 +5670,14 @@ Bestandsnaam: %1</translation>
     </message>
 </context>
 <context>
+    <name>ILineOp</name>
+    <message>
+        <location filename="../mouse/line/ILineOp.cpp" line="214"/>
+        <source>Routing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>ILinksDialog</name>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
@@ -5491,313 +5724,328 @@ Bestandsnaam: %1</translation>
         <translation>Instellingen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
+        <location filename="../IMainWindow.ui" line="103"/>
         <source>Window</source>
         <translation>Venster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
+        <location filename="../IMainWindow.ui" line="108"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
+        <location filename="../IMainWindow.ui" line="115"/>
         <source>Project</source>
         <translation>Project</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
+        <location filename="../IMainWindow.ui" line="126"/>
         <source>Tool</source>
         <translation>Extra</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
+        <location filename="../IMainWindow.ui" line="151"/>
         <source>Maps</source>
         <translation>Kaarten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
+        <location filename="../IMainWindow.ui" line="194"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Dig. Elev. Model (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Data</source>
         <translation>Gegevens</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
+        <location filename="../IMainWindow.ui" line="251"/>
         <source>Route</source>
         <translation>Route</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="285"/>
+        <location filename="../IMainWindow.ui" line="288"/>
         <source>Add Map View</source>
         <translation>Nieuw venster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
+        <location filename="../IMainWindow.ui" line="291"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
+        <location filename="../IMainWindow.ui" line="306"/>
         <source>Show Scale</source>
         <translation>Toon schaal</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="318"/>
         <source>Setup Map Font</source>
         <translation>Lettertype kaart instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="333"/>
         <source>Show Grid</source>
         <translation>Toon raster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
+        <location filename="../IMainWindow.ui" line="336"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
+        <location filename="../IMainWindow.ui" line="348"/>
         <source>Setup Grid</source>
         <translation>Raster instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
+        <location filename="../IMainWindow.ui" line="351"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="366"/>
         <source>Flip Mouse Wheel</source>
         <translation>Draai muiswiel om</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="381"/>
         <source>Setup Map Paths</source>
         <translation>Map met kaarten instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="396"/>
         <source>POI Text</source>
         <translation>POI tekst</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="411"/>
         <source>Night / Day</source>
         <translation>Dag/Nacht</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="426"/>
         <source>Map Tool Tip</source>
         <translation>Map Tool Tip</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
+        <location filename="../IMainWindow.ui" line="429"/>
         <source>Ctrl+I</source>
         <translation>Ctrl+I</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
+        <location filename="../IMainWindow.ui" line="441"/>
         <source>Setup DEM Paths</source>
         <translation>Map DEM instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="453"/>
         <source>About</source>
         <translation>Over</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="465"/>
         <source>Help</source>
         <translation>Help</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="468"/>
         <source>F1</source>
         <translation>F1</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <location filename="../IMainWindow.ui" line="442"/>
+        <location filename="../IMainWindow.ui" line="480"/>
+        <location filename="../IMainWindow.ui" line="483"/>
         <source>Setup Map View</source>
         <translation>Kaartinstellingen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="495"/>
         <source>Load GIS Data</source>
         <translation>GIS gegevens laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="498"/>
         <source>Load projects from file</source>
         <translation>Project laden uit bestand</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="457"/>
+        <location filename="../IMainWindow.ui" line="501"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="513"/>
         <source>Save All GIS Data</source>
         <translation>GIS gegevens opslaan</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="516"/>
         <source>Save all projects in the workspace</source>
         <translation>Sla alle projecten op in werkruimte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="472"/>
+        <location filename="../IMainWindow.ui" line="519"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="481"/>
+        <location filename="../IMainWindow.ui" line="531"/>
         <source>Setup Time Zone</source>
         <translation>Tijdzone instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="490"/>
+        <location filename="../IMainWindow.ui" line="543"/>
         <source>Add empty project</source>
         <translation>Nieuw leeg project</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="502"/>
+        <location filename="../IMainWindow.ui" line="558"/>
         <source>Search Google</source>
         <translation>Zoeken Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="570"/>
         <source>Close all projects</source>
         <translation>Sluit alle projecten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="514"/>
+        <location filename="../IMainWindow.ui" line="573"/>
         <source>F8</source>
         <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="523"/>
+        <location filename="../IMainWindow.ui" line="585"/>
         <source>Setup Units</source>
         <translation>Eenheden instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="597"/>
         <source>Setup Workspace</source>
         <translation>Werkruimte instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="535"/>
+        <location filename="../IMainWindow.ui" line="600"/>
         <source>Setup save on exit.</source>
         <translation>Oplaan bij afsluiten instellen.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="612"/>
         <source>Import Database from QLandkarte</source>
         <translation>Database van QLandkarte importeren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="547"/>
+        <location filename="../IMainWindow.ui" line="615"/>
         <source>Import QLandkarte GT database</source>
         <translation>QLandkarte database importeren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="627"/>
         <source>VRT Builder</source>
         <translation>VRT maken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="559"/>
+        <location filename="../IMainWindow.ui" line="630"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>GUI front end naar gdalbuildvrt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="642"/>
         <source>Store Map View</source>
         <translation>Kaart opslaan</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="571"/>
+        <location filename="../IMainWindow.ui" line="645"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation>Schrijf huidige actieve kaart en DEM lijst inclusief de eigenschappen naar een bestand</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="657"/>
         <source>Load Map View</source>
         <translation>Kaart laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="583"/>
+        <location filename="../IMainWindow.ui" line="660"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation>Herstel huidige actieve kaart en DEM lijst inclusief de eigenschappen naar een bestand</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="675"/>
         <source>Ext. Profile</source>
         <translation>Ext. profiel</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="598"/>
+        <location filename="../IMainWindow.ui" line="678"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="690"/>
         <source>Close</source>
         <translation>Sluiten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="610"/>
+        <location filename="../IMainWindow.ui" line="693"/>
         <source>Ctrl+Q</source>
         <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="705"/>
         <source>Clone Map View</source>
         <translation>Kloon venster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="622"/>
+        <location filename="../IMainWindow.ui" line="708"/>
         <source>Ctrl+Shift+T</source>
         <translation>Ctrl+Shift+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="631"/>
+        <location filename="../IMainWindow.ui" line="720"/>
         <source>Create Routino Database</source>
         <translation>Maak Routino database</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="732"/>
         <source>Save(Print) Map Screenshot</source>
         <translation>Kaartdeel opslaan/afdrukken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="735"/>
         <source>Print a selected area of the map</source>
         <translation>Geselecteerde deel van kaart afdrukken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="646"/>
+        <location filename="../IMainWindow.ui" line="738"/>
         <source>Ctrl+P</source>
         <translation>Ctrl+P</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="750"/>
         <source>Setup Coord. Format</source>
         <translation>Coördinaat formaat instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="658"/>
+        <location filename="../IMainWindow.ui" line="753"/>
         <source>Change the format coordinates are displayed</source>
         <translation>Getoonde coördinaat formaat aanpassen</translation>
     </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="765"/>
+        <source>Setup Map Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="777"/>
+        <source>Setup Waypoint Icons</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="780"/>
+        <source>Setup path to custom icons</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapList</name>
@@ -5807,9 +6055,13 @@ Bestandsnaam: %1</translation>
         <translation>Formulier</translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Om kaarten toe te voegen ->Map met kaarten instellen.</translation>
+        <translation type="vanished">Om kaarten toe te voegen ->Map met kaarten instellen.</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use <b>File->Setup Map Paths</b>. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
@@ -5993,62 +6245,62 @@ Ik wil de documentatie niet lezen!</translation>
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="264"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Nieuwe lijn</b><br/>Verplaats de muis en gebruik linker muisknop om een punt te plaatsen. Gebruik rechter muisknop om te stoppen.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation><b>Verwijder punt</b><br/>Beweeg de muis dicht bij een punt en druk op linkermuisknop om te verwijderen.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation><b>Selecteer reeks punten</b><br/>Klik op eerste punt van reeks. Klik op laatste punt van reeks en selecteer een optie. Gebruik rechter muisknop om te annuleren.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Verplaats punt</b><br/>Beweeg de muis dicht bij een punt en druk op linkermuisknop om het punt te laten plakken. Beweeg de muis om het punt te verplaatsen. Laat het punt los met linker muisknop. Gebruik rechterknop om te annuleren.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Punt toevoegen</b><br/>Beweeg de muis dicht bij een lijndeel en druk op linkermuisknop om het punt te laten plakken. Beweeg de muis om het punt te verplaatsen. Laat het punt los met linker muisknop. Gebruik rechterknop om te annuleren.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="347"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation><b>Geen routing</b><br/>Alle punten zullen met rechte lijnen verbonden worden.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="353"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation><b>Auto routing</b><br/>De huidige instelling wordt gebruikt voor berekening van een route tussen punten. <b>Notitie:</b>De geselecteerd route moet zelf routes kunnen maken. Offline routers kunnen dit online routers meestal niet.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="358"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation><b>Vector routing</b><br/>Verbind punten met een lijn op een geladen vector kaart indien mogelijk.</br></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="530"/>
         <source><b>%1 Metrics</b></source>
         <translation><b>%1 gegevens</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="533"/>
         <source>Distance:</source>
         <translation>Afstand:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="535"/>
         <source>Ascend:</source>
         <translation>Stijging:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="537"/>
         <source>Descend:</source>
         <translation>Daling:</translation>
     </message>
@@ -6070,27 +6322,32 @@ Ik wil de documentatie niet lezen!</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Reset Zoom</source>
         <translation>Herstel zoom</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="94"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Stop Range</source>
         <translation>Stop bereik</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="95"/>
+        <location filename="../plot/IPlot.cpp" line="96"/>
         <source>Save...</source>
         <translation>Opslaan...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="638"/>
+        <location filename="../plot/IPlot.cpp" line="98"/>
+        <source>Add Waypoint</source>
+        <translation type="unfinished">Maak waypoint</translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="647"/>
         <source>No or bad data.</source>
         <translation>Geen of ontbrekende gegevens.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <location filename="../plot/IPlot.cpp" line="1244"/>
         <source>Select output file</source>
         <translation>Selecteer bestand</translation>
     </message>
@@ -6356,8 +6613,12 @@ of
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path. You can create your own routing data with <b>Tool->Create Routino Database</b>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
-        <translation>Om offline routeing te gebruiken moet een map met gegevens gemaakt worden. Gebruik de setup toolknop om map te maken.</translation>
+        <translation type="vanished">Om offline routeing te gebruiken moet een map met gegevens gemaakt worden. Gebruik de setup toolknop om map te maken.</translation>
     </message>
 </context>
 <context>
@@ -6596,6 +6857,30 @@ of
     </message>
 </context>
 <context>
+    <name>IScrOptPrint</name>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulier</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="35"/>
+        <source>Save selected area as image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="38"/>
+        <location filename="../mouse/IScrOptPrint.ui" line="58"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptPrint.ui" line="55"/>
+        <source>Print selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptRangeLine</name>
     <message>
         <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
@@ -6719,6 +7004,78 @@ of
     </message>
 </context>
 <context>
+    <name>IScrOptSelect</name>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulier</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="59"/>
+        <source>Copy all selected items to a project.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="62"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="82"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="102"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="122"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="176"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="205"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="265"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="291"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="317"/>
+        <location filename="../mouse/IScrOptSelect.ui" line="343"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="79"/>
+        <source>Create a route from selected waypoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="99"/>
+        <source>Combine all selected tracks to a new one.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="119"/>
+        <source>Delete all selected items.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="173"/>
+        <source>Select all items that intersect the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="202"/>
+        <source>Select all itmes that are completely inside the selected area.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="262"/>
+        <source>Add tracks to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="288"/>
+        <source>Add waypoints to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="314"/>
+        <source>Add routes to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/IScrOptSelect.ui" line="340"/>
+        <source>Add areas to selection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IScrOptTrk</name>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
@@ -7459,13 +7816,13 @@ of
 <context>
     <name>IUnit</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Error</source>
         <translation>Fout</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="728"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation>Verkeerde invoer. Moet zijn: 
 "[N|Z] ddd mm.sss [W|O] ddd mm.sss"
@@ -7473,7 +7830,7 @@ of
 "[N|Z] ddd.ddd [W|O] ddd.ddd"</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="741"/>
+        <location filename="../units/IUnit.cpp" line="734"/>
         <source>Position values out of bounds. </source>
         <translation>Positiewaarden vallen buiten bereik. </translation>
     </message>
@@ -7513,6 +7870,26 @@ of
         <source>Icons...</source>
         <translation>Iconen...</translation>
     </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="68"/>
+        <source>External Icons:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="75"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="82"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IWptIconDialog.ui" line="95"/>
+        <source>All custom icons have to be *.bmp format.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QObject</name>
diff --git a/src/main.cpp b/src/main.cpp
index 9c809e6..92e8c34 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -17,15 +17,12 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
-#include "helpers/CAppSetup.h"
-#include "helpers/CCommandProcessor.h"
+#include "setup/IAppSetup.h"
 #include "version.h"
 
-#include <QtCore>
 #include <QtWidgets>
 #include <iostream>
 
-CAppOpts *qlOpts;
 
 int main(int argc, char ** argv)
 {
@@ -35,15 +32,10 @@ int main(int argc, char ** argv)
     QCoreApplication::setOrganizationName("QLandkarte");
     QCoreApplication::setOrganizationDomain("qlandkarte.org");
 
-    CAppSetup* env = CAppSetup::getPlattformInstance();
-    env->installMessageHandler();
-
-    CCommandProcessor cmdParse;
-    qlOpts = cmdParse.processOptions(app.arguments());
-
-    env->prepareConfig();
-    env->prepareTranslators(&app);
-    env->prepareGdal();
+    IAppSetup* env = IAppSetup::getPlatformInstance();
+    env->processArguments();
+    env->initLogHandler();
+    env->initQMapShack();
 
     QSplashScreen *splash = nullptr;
     if (!qlOpts->nosplash)
diff --git a/src/map/CMapDraw.cpp b/src/map/CMapDraw.cpp
index 73841da..8790ccc 100644
--- a/src/map/CMapDraw.cpp
+++ b/src/map/CMapDraw.cpp
@@ -25,13 +25,15 @@
 #include "map/CMapList.h"
 #include "map/CMapPathSetup.h"
 #include "map/IMap.h"
+#include "setup/IAppSetup.h"
 
 #include <QtGui>
 #include <QtWidgets>
 
 
+
 QList<CMapDraw*> CMapDraw::maps;
-QString CMapDraw::cachePath = QDir::home().absoluteFilePath(".QMapShack/");
+QString CMapDraw::cachePath = "";
 QStringList CMapDraw::mapPaths;
 QStringList CMapDraw::supportedFormats = QString("*.vrt|*.jnx|*.img|*.rmap|*.wmts|*.tms|*.gemf").split('|');
 
@@ -70,6 +72,10 @@ void CMapDraw::setProjection(const QString& proj) /* override */
 void CMapDraw::setupMapPath()
 {
     QStringList paths = mapPaths;
+    if(cachePath.isEmpty())
+    {
+        cachePath =  IAppSetup::getPlatformInstance()->defaultCachePath();
+    }
     CMapPathSetup dlg(paths, cachePath);
     if(dlg.exec() != QDialog::Accepted)
     {
@@ -95,7 +101,7 @@ void CMapDraw::setupMapPath(const QStringList& paths)
 {
     mapPaths = paths;
 
-    foreach(CMapDraw * map, maps)
+    for(CMapDraw * map : maps)
     {
         QStringList keys;
         map->saveActiveMapsList(keys);
@@ -247,11 +253,11 @@ void CMapDraw::buildMapList()
     QMutexLocker lock(&CMapItem::mutexActiveMaps);
     mapList->clear();
 
-    foreach(const QString &path, mapPaths)
+    for(const QString &path : mapPaths)
     {
         QDir dir(path);
         // find available maps
-        foreach(const QString &filename, dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
+        for(const QString &filename : dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
         {
             QFileInfo fi(filename);
 
@@ -317,7 +323,7 @@ void CMapDraw::restoreActiveMapsList(const QStringList& keys)
 {
     QMutexLocker lock(&CMapItem::mutexActiveMaps);
 
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         for(int i = 0; i < mapList->count(); i++)
         {
@@ -342,7 +348,7 @@ void CMapDraw::restoreActiveMapsList(const QStringList& keys, QSettings& cfg)
 {
     QMutexLocker lock(&CMapItem::mutexActiveMaps);
 
-    foreach(const QString &key, keys)
+    for(const QString &key : keys)
     {
         for(int i = 0; i < mapList->count(); i++)
         {
@@ -392,7 +398,7 @@ void CMapDraw::drawt(IDrawContext::buffer_t& currentBuffer) /* override */
     else
     {
         const int offMargin = currentBuffer.image.size().width()*0.1;
-        const int offTop    = currentBuffer.image.size().height()/2;
+        const int offTop    = currentBuffer.image.size().height()/3;
         QPainter p(&currentBuffer.image);
         p.setPen(Qt::black);
         p.translate(offMargin,offTop);
@@ -402,6 +408,13 @@ void CMapDraw::drawt(IDrawContext::buffer_t& currentBuffer) /* override */
             "QMapShack is no fun without maps. "
             "You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. "
             "Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. "
+            "\n\n"
+            "If it's no fun, why don't you provide maps? Well to host maps ready for download and installation "
+            "requires a good server. And this is not a free service. The project lacks the money. Additionally "
+            "map and DEM data has a copyright. Therefore the copyright holder has to be asked prior to package "
+            "the data. This is not that easy as it might sound and for some data you have to pay royalties. "
+            "The project simply lacks resources to do this. And we think installing the stuff yourself is not "
+            "that much to ask from you. After all the software is ditributed without a fee."
             );
 
         QTextDocument doc;
diff --git a/src/map/CMapGEMF.cpp b/src/map/CMapGEMF.cpp
index a1e1e1a..21fadff 100644
--- a/src/map/CMapGEMF.cpp
+++ b/src/map/CMapGEMF.cpp
@@ -16,13 +16,8 @@
 
 **********************************************************************************************/
 /*
- *
- *
- *
  * Map Driver Implementation for GEMF Maps
  * SPECs --> http://www.cgtk.co.uk/gemf
- *
- *
  */
 
 #include "CMainWindow.h"
@@ -35,6 +30,8 @@
 #include <QtGui>
 #include <QtWidgets>
 
+#define NAMEBUFLEN 1024
+
 inline int lon2tile(double lon, int z)
 {
     return (int)(qRound(256*(lon + 180.0) / 360.0 * qPow(2.0, z)));
@@ -74,30 +71,29 @@ CMapGEMF::CMapGEMF(const QString &filename, CMapDraw *parent)
     stream >> tileSize;
     stream >> sourceNr;
 
-    quint32 i;
-
-    for(i=0; i<sourceNr; i++)
+    for(quint32 i = 0; i < sourceNr; i++)
     {
         source_t source;
         quint32 len;
-        QByteArray name(NAMEBUFLEN,0);
+        QByteArray name(NAMEBUFLEN, 0);
         stream >> source.index;
-        stream >>len;
-        if(len>NAMEBUFLEN)
+        stream >> len;
+        if(len > NAMEBUFLEN)
         {
-            qDebug() << "CMapGEMF: Name longer than 1024 byte";
+            qDebug() << "CMapGEMF: Name longer than " << NAMEBUFLEN << " byte";
+            len = NAMEBUFLEN;
         }
-        len = (len>NAMEBUFLEN) ? NAMEBUFLEN : len;
+
         stream.readRawData(name.data(),len);
         source.name = QString().fromLocal8Bit(name,len);
         sources << source;
-        qDebug() << "CMapGEMF: Read Source " << source.name;
+        qDebug() << "CMapGEMF: Read Source " << i << " " << source.name;
     }
-    qDebug() << "CMapGEMF: Read "<< i << "Sources";
+
     stream >> rangeNum;
     QList<range_t> ranges;
     quint64 tiles=0;
-    for (i=0; i<rangeNum; i++)
+    for (quint32 i=0; i<rangeNum; i++)
     {
         range_t range;
         stream >> range.zoomlevel;
@@ -109,36 +105,35 @@ CMapGEMF::CMapGEMF(const QString &filename, CMapDraw *parent)
         stream >> range.offset;
 
         ranges << range;
-        tiles += (range.maxX +1 -range.minX)*(range.maxY+1-range.minY);
+        tiles += (range.maxX + 1 - range.minX)*(range.maxY + 1 - range.minY);
     }
-    qDebug() << "CMapGEMF: Read "<< i << "Ranges with " << tiles << " Tiles";
+    qDebug() << "CMapGEMF: Read " << rangeNum << "Ranges with " << tiles << " Tiles";
 
-    minZoom= MAX_ZOOM_LEVEL;
-    maxZoom= MIN_ZOOM_LEVEL;
+    minZoom = MAX_ZOOM_LEVEL;
+    maxZoom = MIN_ZOOM_LEVEL;
 
-    for(i=0; i<=MAX_ZOOM_LEVEL; i++)
+    for(quint32 i=0; i<=MAX_ZOOM_LEVEL; i++)
     {
         QList<range_t> rangeZoom;
-        QList<range_t>::iterator it;
-        for(it=ranges.begin(); it!=ranges.end(); it++)
+        for(const range_t &range : ranges)
         {
-            if(it->zoomlevel ==i)
+            if(range.zoomlevel == i)
             {
-                rangeZoom << *it;
-                minZoom = (i<minZoom) ? i : minZoom;
-                maxZoom = (i>maxZoom) ? i : maxZoom;
+                rangeZoom << range;
+                minZoom = qMin(i, minZoom);
+                maxZoom = qMax(i, maxZoom);
             }
         }
-        if(rangeZoom.length()!= 0)
+        if(!rangeZoom.empty())
         {
             rangesByZoom[i] = rangeZoom;
-            qDebug() << "CMapGEMF: Found " << rangeZoom.length() << "ranges for " << " Zoomlevel " << i;
+            qDebug() << "CMapGEMF: Found " << rangeZoom.length() << " ranges for zoomlevel " << i;
         }
     }
     QString partfile = filename;
     QFile f(partfile);
     f.open(QIODevice::ReadOnly);
-    i=1;
+    quint32 i=1;
     do
     {
         gemffile_t gf;
@@ -174,25 +169,25 @@ void CMapGEMF::draw(IDrawContext::buffer_t &buf)
     p.setOpacity(getOpacity()/100.0);
     p.translate(-pp);
 
-    qreal x1 = buf.ref1.x() < buf.ref4.x() ? buf.ref1.x() : buf.ref4.x();
-    qreal y1 = buf.ref1.y() > buf.ref2.y() ? buf.ref1.y() : buf.ref2.y();
+    qreal x1 = qMin(buf.ref1.x(), buf.ref4.x());
+    qreal y1 = qMax(buf.ref1.y(), buf.ref2.y());
 
-    qreal x2 = buf.ref2.x() > buf.ref3.x() ? buf.ref2.x() : buf.ref3.x();
-    qreal y2 = buf.ref3.y() < buf.ref4.y() ? buf.ref3.y() : buf.ref4.y();
+    qreal x2 = qMax(buf.ref2.x(), buf.ref3.x());
+    qreal y2 = qMin(buf.ref3.y(), buf.ref4.y());
 
     if(x1 < -180.0*DEG_TO_RAD)
     {
         x1 = -180*DEG_TO_RAD;
     }
-    if(x2 >  180.0*DEG_TO_RAD)
+    if(x2 > 180.0*DEG_TO_RAD)
     {
-        x2 =  180*DEG_TO_RAD;
+        x2 = 180*DEG_TO_RAD;
     }
 
 
-    QPointF s1  = buf.scale * buf.zoomFactor;
-    qreal d     = NOFLOAT;
-    quint32 z = MAX_ZOOM_LEVEL;
+    QPointF s1 = buf.scale * buf.zoomFactor;
+    qreal d    = NOFLOAT;
+    quint32 z  = MAX_ZOOM_LEVEL;
 
     for(quint32 i = 0; i < MAX_ZOOM_LEVEL; i++)
     {
@@ -204,38 +199,35 @@ void CMapGEMF::draw(IDrawContext::buffer_t &buf)
         }
     }
 
-    z = MAX_ZOOM_LEVEL   - z;
-
-    qint32 row1, row2, col1, col2;
+    z = MAX_ZOOM_LEVEL - z;
 
-    col1 = lon2tile(x1 * RAD_TO_DEG, z) / 256;
-    col2 = lon2tile(x2 * RAD_TO_DEG, z) / 256;
-    row1 = lat2tile(y1 * RAD_TO_DEG, z) / 256;
-    row2 = lat2tile(y2 * RAD_TO_DEG, z) / 256;
+    qint32 col1 = lon2tile(x1 * RAD_TO_DEG, z) / 256;
+    qint32 col2 = lon2tile(x2 * RAD_TO_DEG, z) / 256;
+    qint32 row1 = lat2tile(y1 * RAD_TO_DEG, z) / 256;
+    qint32 row2 = lat2tile(y2 * RAD_TO_DEG, z) / 256;
     for(qint32 row = row1; row <= row2; row++)
     {
         for(qint32 col = col1; col <= col2; col++)
         {
-            QPolygonF l;
-
             qreal xx1 = tile2lon(col, z) * DEG_TO_RAD;
             qreal yy1 = tile2lat(row, z) * DEG_TO_RAD;
             qreal xx2 = tile2lon(col + 1, z) * DEG_TO_RAD;
             qreal yy2 = tile2lat(row + 1, z) * DEG_TO_RAD;
 
+            QPolygonF l;
             l << QPointF(xx1, yy1) << QPointF(xx2, yy1) << QPointF(xx2, yy2) << QPointF(xx1, yy2);
 
-            QImage img = getTile(col,row,z);
+            const QImage &img = getTile(col, row, z);
             drawTile(img, l, p);
         }
     }
 }
 
-quint64 CMapGEMF::getFilenameFromAddress(const quint64 offset,QString &filename)
+quint64 CMapGEMF::getFilenameFromAddress(const quint64 offset, QString &filename)
 {
     quint64 temp = offset;
 
-    foreach (gemffile_t gf, files)
+    for(const gemffile_t &gf : files)
     {
         if(temp < gf.size)
         {
@@ -243,14 +235,11 @@ quint64 CMapGEMF::getFilenameFromAddress(const quint64 offset,QString &filename)
 
             return temp;
         }
-        else
-        {
-            temp -= gf.size;
-        }
+        temp -= gf.size;
     }
 
     qDebug() << "CMAPGemf: ImageAddress was wrong "<< offset;
-    return 0;  //
+    return 0;
 }
 
 QImage CMapGEMF::getTile(const quint32 row, const quint32 col, const quint32 z)
@@ -262,30 +251,37 @@ QImage CMapGEMF::getTile(const quint32 row, const quint32 col, const quint32 z)
     }
     QList<range_t> ranges = rangesByZoom[z];
 
-    foreach (range_t r,ranges)
+    for(const range_t &range : ranges)
     {
-        if(    row >= r.minX
-               && row <= r.maxX
-               && col >= r.minY
-               && col <= r.maxY)
+        if(row >= range.minX
+           && row <= range.maxX
+           && col >= range.minY
+           && col <= range.maxY)
         {
-            quint32 Xidx = row-r.minX;
-            quint32 Yidx = col-r.minY;
-            quint32 nrYVals = r.maxY + 1 - r.minY;
-            quint32 TileIdx = Xidx*nrYVals + Yidx;
-            quint64 offsetRange = TileIdx*12;         // 4 + 8
-            quint64 offsetGEMF = offsetRange +r.offset;
+            const quint32 Xidx = row - range.minX;
+            const quint32 Yidx = col - range.minY;
+            const quint32 nrYVals = range.maxY + 1 - range.minY;
+            const quint32 TileIdx = Xidx * nrYVals + Yidx;
+            const quint64 offsetRange = TileIdx * 12; // 4 + 8
+
+            quint64 offsetGEMF = offsetRange + range.offset;
             QString splitfile;
             offsetGEMF = getFilenameFromAddress(offsetGEMF, splitfile);
+
             QFile file(splitfile);
             file.open(QIODevice::ReadOnly);
             QDataStream dataFile(&file);
-            quint32 size;
-            quint64 imageDataAddress;
+
             dataFile.skipRawData(offsetGEMF);
+
+            quint64 imageDataAddress;
             dataFile >> imageDataAddress;
+
+            quint32 size;
             dataFile >> size;
+
             file.close();
+
             quint64 imageDataOffset = getFilenameFromAddress(imageDataAddress, splitfile);
             QFile imageFile(splitfile);
             imageFile.open(QIODevice::ReadOnly);
diff --git a/src/map/CMapGEMF.h b/src/map/CMapGEMF.h
index dbd8996..abdbcb5 100644
--- a/src/map/CMapGEMF.h
+++ b/src/map/CMapGEMF.h
@@ -18,21 +18,20 @@
 
 #ifndef CMAPGEMF_H
 #define CMAPGEMF_H
-#define    NAMEBUFLEN 1024
 
 #include "IMap.h"
 
-
 class CMapGEMF : public IMap
 {
     Q_OBJECT
 public:
     CMapGEMF(const QString& filename, CMapDraw *parent);
     void draw(IDrawContext::buffer_t& buf) override;
+
+private:
     const quint32 MAX_ZOOM_LEVEL = 21;
     const quint32 MIN_ZOOM_LEVEL = 0;
 
-private:
     QImage getTile(const quint32 col, const quint32 row,const quint32 z);
     quint64 getFilenameFromAddress(const quint64 offset, QString &filename );
 
diff --git a/src/map/CMapIMG.cpp b/src/map/CMapIMG.cpp
index 9b34fc4..6b01075 100644
--- a/src/map/CMapIMG.cpp
+++ b/src/map/CMapIMG.cpp
@@ -50,7 +50,7 @@ static inline bool isCompletlyOutside(const QPolygonF& poly, const QRectF &viewp
     qreal west  =  180.0 * DEG_TO_RAD;
     qreal east  = -180.0 * DEG_TO_RAD;
 
-    foreach(const QPointF &pt, poly)
+    for(const QPointF &pt : poly)
     {
         if(north < pt.y())
         {
@@ -81,12 +81,7 @@ static inline bool isCompletlyOutside(const QPolygonF& poly, const QRectF &viewp
         ref.setHeight(0.00001);
     }
 
-    if(viewport.intersects(ref))
-    {
-        return false;
-    }
-
-    return true;
+    return !viewport.intersects(ref);
 }
 
 static inline QImage img2line(const QImage &img, int width)
@@ -116,18 +111,14 @@ static inline QImage img2line(const QImage &img, int width)
     return newImage;
 }
 
-inline bool isCluttered(QVector<QRectF>& rectPois, const QRectF& rect)
+static inline bool isCluttered(QVector<QRectF>& rectPois, const QRectF& rect)
 {
-//    if(!CMainWindow::self().reducePoiIcons()) return false;
-    QVector<QRectF>::const_iterator rectPoiEnd   = rectPois.end();
-    QVector<QRectF>::const_iterator rectPoi      = rectPois.begin();
-    while(rectPoi != rectPoiEnd)
+    for(const QRectF &rectPoi : rectPois)
     {
-        if(rect.intersects(*rectPoi))
+        if(rect.intersects(rectPoi))
         {
             return true;
         }
-        rectPoi++;
     }
     rectPois << rect;
     return false;
@@ -159,10 +150,6 @@ CMapIMG::CMapIMG(const QString &filename, CMapDraw *parent)
     isActivated = true;
 }
 
-CMapIMG::~CMapIMG()
-{
-}
-
 void CMapIMG::setupTyp()
 {
     languages.clear();
@@ -294,67 +281,67 @@ void CMapIMG::setupTyp()
     polylineProperties[0x2b].strings[0x00] = tr("Hazard boundary");
 
     polygonProperties.clear();
-    polygonProperties[0x01] = CGarminTyp::polygon_property(0x01, Qt::NoPen,     "#d2c0c0", Qt::SolidPattern);
-    polygonProperties[0x02] = CGarminTyp::polygon_property(0x02, Qt::NoPen,     "#fbeab7", Qt::SolidPattern);
-    polygonProperties[0x03] = CGarminTyp::polygon_property(0x03, Qt::NoPen,     "#a4b094", Qt::SolidPattern);
-    polygonProperties[0x04] = CGarminTyp::polygon_property(0x04, Qt::NoPen,     "#808080", Qt::SolidPattern);
-    polygonProperties[0x05] = CGarminTyp::polygon_property(0x05, Qt::NoPen,     "#f0f0f0", Qt::SolidPattern);
-    polygonProperties[0x06] = CGarminTyp::polygon_property(0x06, Qt::NoPen,     "#cacaca", Qt::SolidPattern);
-    polygonProperties[0x07] = CGarminTyp::polygon_property(0x07, Qt::NoPen,     "#feebcf", Qt::SolidPattern);
-    polygonProperties[0x08] = CGarminTyp::polygon_property(0x08, Qt::NoPen,     "#fde8d5", Qt::SolidPattern);
-    polygonProperties[0x09] = CGarminTyp::polygon_property(0x09, Qt::NoPen,     "#fee8b8", Qt::SolidPattern);
-    polygonProperties[0x0a] = CGarminTyp::polygon_property(0x0a, Qt::NoPen,     "#fdeac6", Qt::SolidPattern);
-    polygonProperties[0x0b] = CGarminTyp::polygon_property(0x0b, Qt::NoPen,     "#fddfbd", Qt::SolidPattern);
-    polygonProperties[0x0c] = CGarminTyp::polygon_property(0x0c, Qt::NoPen,     "#ebeada", Qt::SolidPattern);
-    polygonProperties[0x0d] = CGarminTyp::polygon_property(0x0d, Qt::NoPen,     "#f8e3be", Qt::SolidPattern);
-    polygonProperties[0x0e] = CGarminTyp::polygon_property(0x0e, Qt::NoPen,     "#e0e0e0", Qt::SolidPattern);
-    polygonProperties[0x13] = CGarminTyp::polygon_property(0x13, Qt::NoPen,     "#cc9900", Qt::SolidPattern);
-    polygonProperties[0x14] = CGarminTyp::polygon_property(0x14, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x15] = CGarminTyp::polygon_property(0x15, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x16] = CGarminTyp::polygon_property(0x16, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x17] = CGarminTyp::polygon_property(0x17, Qt::NoPen,     "#90be00", Qt::SolidPattern);
-    polygonProperties[0x18] = CGarminTyp::polygon_property(0x18, Qt::NoPen,     "#00ff00", Qt::SolidPattern);
-    polygonProperties[0x19] = CGarminTyp::polygon_property(0x19, Qt::NoPen,     "#f8e3be", Qt::SolidPattern);
-    polygonProperties[0x1a] = CGarminTyp::polygon_property(0x1a, Qt::NoPen,     "#d3f5a5", Qt::SolidPattern);
-    polygonProperties[0x1e] = CGarminTyp::polygon_property(0x1e, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x1f] = CGarminTyp::polygon_property(0x1f, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x20] = CGarminTyp::polygon_property(0x20, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x28] = CGarminTyp::polygon_property(0x28, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x29] = CGarminTyp::polygon_property(0x29, Qt::NoPen,     "#0000ff", Qt::SolidPattern);
-    polygonProperties[0x32] = CGarminTyp::polygon_property(0x32, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x3b] = CGarminTyp::polygon_property(0x3b, Qt::NoPen,     "#0000ff", Qt::SolidPattern);
-    polygonProperties[0x3c] = CGarminTyp::polygon_property(0x3c, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x3d] = CGarminTyp::polygon_property(0x3d, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x3e] = CGarminTyp::polygon_property(0x3e, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x3f] = CGarminTyp::polygon_property(0x3f, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x40] = CGarminTyp::polygon_property(0x40, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x41] = CGarminTyp::polygon_property(0x41, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x42] = CGarminTyp::polygon_property(0x42, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x43] = CGarminTyp::polygon_property(0x43, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x44] = CGarminTyp::polygon_property(0x44, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x45] = CGarminTyp::polygon_property(0x45, Qt::NoPen,     "#0000ff", Qt::SolidPattern);
-    polygonProperties[0x46] = CGarminTyp::polygon_property(0x46, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x47] = CGarminTyp::polygon_property(0x47, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x48] = CGarminTyp::polygon_property(0x48, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x49] = CGarminTyp::polygon_property(0x49, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x01] = CGarminTyp::polygon_property(0x01, Qt::NoPen, "#d2c0c0", Qt::SolidPattern);
+    polygonProperties[0x02] = CGarminTyp::polygon_property(0x02, Qt::NoPen, "#fbeab7", Qt::SolidPattern);
+    polygonProperties[0x03] = CGarminTyp::polygon_property(0x03, Qt::NoPen, "#a4b094", Qt::SolidPattern);
+    polygonProperties[0x04] = CGarminTyp::polygon_property(0x04, Qt::NoPen, "#808080", Qt::SolidPattern);
+    polygonProperties[0x05] = CGarminTyp::polygon_property(0x05, Qt::NoPen, "#f0f0f0", Qt::SolidPattern);
+    polygonProperties[0x06] = CGarminTyp::polygon_property(0x06, Qt::NoPen, "#cacaca", Qt::SolidPattern);
+    polygonProperties[0x07] = CGarminTyp::polygon_property(0x07, Qt::NoPen, "#feebcf", Qt::SolidPattern);
+    polygonProperties[0x08] = CGarminTyp::polygon_property(0x08, Qt::NoPen, "#fde8d5", Qt::SolidPattern);
+    polygonProperties[0x09] = CGarminTyp::polygon_property(0x09, Qt::NoPen, "#fee8b8", Qt::SolidPattern);
+    polygonProperties[0x0a] = CGarminTyp::polygon_property(0x0a, Qt::NoPen, "#fdeac6", Qt::SolidPattern);
+    polygonProperties[0x0b] = CGarminTyp::polygon_property(0x0b, Qt::NoPen, "#fddfbd", Qt::SolidPattern);
+    polygonProperties[0x0c] = CGarminTyp::polygon_property(0x0c, Qt::NoPen, "#ebeada", Qt::SolidPattern);
+    polygonProperties[0x0d] = CGarminTyp::polygon_property(0x0d, Qt::NoPen, "#f8e3be", Qt::SolidPattern);
+    polygonProperties[0x0e] = CGarminTyp::polygon_property(0x0e, Qt::NoPen, "#e0e0e0", Qt::SolidPattern);
+    polygonProperties[0x13] = CGarminTyp::polygon_property(0x13, Qt::NoPen, "#cc9900", Qt::SolidPattern);
+    polygonProperties[0x14] = CGarminTyp::polygon_property(0x14, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x15] = CGarminTyp::polygon_property(0x15, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x16] = CGarminTyp::polygon_property(0x16, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x17] = CGarminTyp::polygon_property(0x17, Qt::NoPen, "#90be00", Qt::SolidPattern);
+    polygonProperties[0x18] = CGarminTyp::polygon_property(0x18, Qt::NoPen, "#00ff00", Qt::SolidPattern);
+    polygonProperties[0x19] = CGarminTyp::polygon_property(0x19, Qt::NoPen, "#f8e3be", Qt::SolidPattern);
+    polygonProperties[0x1a] = CGarminTyp::polygon_property(0x1a, Qt::NoPen, "#d3f5a5", Qt::SolidPattern);
+    polygonProperties[0x1e] = CGarminTyp::polygon_property(0x1e, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x1f] = CGarminTyp::polygon_property(0x1f, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x20] = CGarminTyp::polygon_property(0x20, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x28] = CGarminTyp::polygon_property(0x28, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x29] = CGarminTyp::polygon_property(0x29, Qt::NoPen, "#0000ff", Qt::SolidPattern);
+    polygonProperties[0x32] = CGarminTyp::polygon_property(0x32, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x3b] = CGarminTyp::polygon_property(0x3b, Qt::NoPen, "#0000ff", Qt::SolidPattern);
+    polygonProperties[0x3c] = CGarminTyp::polygon_property(0x3c, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x3d] = CGarminTyp::polygon_property(0x3d, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x3e] = CGarminTyp::polygon_property(0x3e, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x3f] = CGarminTyp::polygon_property(0x3f, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x40] = CGarminTyp::polygon_property(0x40, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x41] = CGarminTyp::polygon_property(0x41, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x42] = CGarminTyp::polygon_property(0x42, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x43] = CGarminTyp::polygon_property(0x43, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x44] = CGarminTyp::polygon_property(0x44, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x45] = CGarminTyp::polygon_property(0x45, Qt::NoPen, "#0000ff", Qt::SolidPattern);
+    polygonProperties[0x46] = CGarminTyp::polygon_property(0x46, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x47] = CGarminTyp::polygon_property(0x47, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x48] = CGarminTyp::polygon_property(0x48, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x49] = CGarminTyp::polygon_property(0x49, Qt::NoPen, "#0080ff", Qt::SolidPattern);
 #ifdef WIN32
-    polygonProperties[0x4a] = CGarminTyp::polygon_property(0x4a, "#000000",     qRgba(255,255,255,0), Qt::SolidPattern);
-    polygonProperties[0x4b] = CGarminTyp::polygon_property(0x4b, "#000000",     qRgba(255,255,255,0), Qt::SolidPattern);
+    polygonProperties[0x4a] = CGarminTyp::polygon_property(0x4a, "#000000", qRgba(255,255,255,0), Qt::SolidPattern);
+    polygonProperties[0x4b] = CGarminTyp::polygon_property(0x4b, "#000000", qRgba(255,255,255,0), Qt::SolidPattern);
 #else
-    polygonProperties[0x4a] = CGarminTyp::polygon_property(0x4a, "#000000",     Qt::transparent, Qt::NoBrush);
-    polygonProperties[0x4b] = CGarminTyp::polygon_property(0x4b, "#000000",     Qt::transparent, Qt::NoBrush);
+    polygonProperties[0x4a] = CGarminTyp::polygon_property(0x4a, "#000000", Qt::transparent, Qt::NoBrush);
+    polygonProperties[0x4b] = CGarminTyp::polygon_property(0x4b, "#000000", Qt::transparent, Qt::NoBrush);
 #endif
-    polygonProperties[0x4c] = CGarminTyp::polygon_property(0x4c, Qt::NoPen,     "#f0e68c", Qt::SolidPattern);
-    polygonProperties[0x4d] = CGarminTyp::polygon_property(0x4d, Qt::NoPen,     "#00ffff", Qt::SolidPattern);
-    polygonProperties[0x4e] = CGarminTyp::polygon_property(0x4e, Qt::NoPen,     "#d3f5a5", Qt::SolidPattern);
-    polygonProperties[0x4f] = CGarminTyp::polygon_property(0x4f, Qt::NoPen,     "#d3f5a5", Qt::SolidPattern);
-    polygonProperties[0x50] = CGarminTyp::polygon_property(0x50, Qt::NoPen,     "#b7e999", Qt::SolidPattern);
-    polygonProperties[0x51] = CGarminTyp::polygon_property(0x51, Qt::NoPen,     "#0000ff", Qt::DiagCrossPattern);
-    polygonProperties[0x52] = CGarminTyp::polygon_property(0x52, Qt::NoPen,     "#4aca4a", Qt::SolidPattern);
-    polygonProperties[0x53] = CGarminTyp::polygon_property(0x53, Qt::NoPen,     "#bcedfa", Qt::SolidPattern);
-    polygonProperties[0x54] = CGarminTyp::polygon_property(0x54, Qt::NoPen,     "#fde8d5", Qt::SolidPattern);
-    polygonProperties[0x59] = CGarminTyp::polygon_property(0x59, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
-    polygonProperties[0x69] = CGarminTyp::polygon_property(0x69, Qt::NoPen,     "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x4c] = CGarminTyp::polygon_property(0x4c, Qt::NoPen, "#f0e68c", Qt::SolidPattern);
+    polygonProperties[0x4d] = CGarminTyp::polygon_property(0x4d, Qt::NoPen, "#00ffff", Qt::SolidPattern);
+    polygonProperties[0x4e] = CGarminTyp::polygon_property(0x4e, Qt::NoPen, "#d3f5a5", Qt::SolidPattern);
+    polygonProperties[0x4f] = CGarminTyp::polygon_property(0x4f, Qt::NoPen, "#d3f5a5", Qt::SolidPattern);
+    polygonProperties[0x50] = CGarminTyp::polygon_property(0x50, Qt::NoPen, "#b7e999", Qt::SolidPattern);
+    polygonProperties[0x51] = CGarminTyp::polygon_property(0x51, Qt::NoPen, "#0000ff", Qt::DiagCrossPattern);
+    polygonProperties[0x52] = CGarminTyp::polygon_property(0x52, Qt::NoPen, "#4aca4a", Qt::SolidPattern);
+    polygonProperties[0x53] = CGarminTyp::polygon_property(0x53, Qt::NoPen, "#bcedfa", Qt::SolidPattern);
+    polygonProperties[0x54] = CGarminTyp::polygon_property(0x54, Qt::NoPen, "#fde8d5", Qt::SolidPattern);
+    polygonProperties[0x59] = CGarminTyp::polygon_property(0x59, Qt::NoPen, "#0080ff", Qt::SolidPattern);
+    polygonProperties[0x69] = CGarminTyp::polygon_property(0x69, Qt::NoPen, "#0080ff", Qt::SolidPattern);
 
     polygonProperties[0x01].strings[0x00] = tr("Large urban area (>200K)");
     polygonProperties[0x02].strings[0x00] = tr("Small urban area (<200K)");
@@ -493,7 +480,7 @@ void CMapIMG::readBasics()
 
     mask = (quint8)*file.data(0,1);
 
-    mask32   = mask;
+    mask32 = mask;
     mask32 <<= 8;
     mask32  |= mask;
     mask32 <<= 8;
@@ -659,7 +646,7 @@ void CMapIMG::readBasics()
 
     // combine copyright sections
     copyright.clear();
-    foreach(const QString &str, copyrights)
+    for(const QString &str : copyrights)
     {
         if(!copyright.isEmpty())
         {
@@ -673,7 +660,6 @@ void CMapIMG::readBasics()
 
 void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 {
-    quint32 i;
     // test for mandatory subfile parts
     if(!(subfile.parts.contains("TRE") && subfile.parts.contains("RGN")))
     {
@@ -746,11 +732,12 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
                                 "the one supplied by Garmin."));
     }
 
-    quint32 nlevels             = gar_load(uint32_t, pTreHdr->tre1_size) / sizeof(tre_map_level_t);
-    quint32 nsubdivs            = 0;
-    quint32 nsubdivs_last       = 0;
+    quint32 nlevels       = gar_load(uint32_t, pTreHdr->tre1_size) / sizeof(tre_map_level_t);
+    quint32 nsubdivs      = 0;
+    quint32 nsubdivs_last = 0;
+
     // count subsections
-    for(i=0; i<nlevels; ++i)
+    for(quint32 i=0; i<nlevels; ++i)
     {
         maplevel_t ml;
         ml.inherited    = TRE_MAP_INHER(pMapLevel);
@@ -806,11 +793,9 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
     //     qDebug() << "+++" << hex << rgnOffPoint2 << (rgnOffPoint2 + rgnLenPoint2);
 
     // parse all 16 byte subdivision entries
+    quint32 i;
     for(i=0; i<nsubdivs_next; ++i, --nsubdiv)
     {
-        qint32 cx,cy;
-        qint32 width, height;
-
         subdiv->n = i;
         subdiv->next         = gar_load(uint16_t, pSubDivN->next);
         subdiv->terminate    = TRE_SUBDIV_TERM(pSubDivN);
@@ -837,12 +822,12 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         subdiv->level = TRE_MAP_LEVEL(pMapLevel);
         subdiv->shift = 24 - pMapLevel->bits;
 
-        cx = gar_ptr_load(uint24_t, &pSubDivN->center_lng);
+        qint32 cx = gar_ptr_load(uint24_t, &pSubDivN->center_lng);
         subdiv->iCenterLng = cx;
-        cy = gar_ptr_load(uint24_t, &pSubDivN->center_lat);
+        qint32 cy = gar_ptr_load(uint24_t, &pSubDivN->center_lat);
         subdiv->iCenterLat = cy;
-        width   = TRE_SUBDIV_WIDTH(pSubDivN) << subdiv->shift;
-        height  = gar_load(uint16_t, pSubDivN->height) << subdiv->shift;
+        qint32 width   = TRE_SUBDIV_WIDTH(pSubDivN) << subdiv->shift;
+        qint32 height  = gar_load(uint16_t, pSubDivN->height) << subdiv->shift;
 
         subdiv->north = GARMIN_RAD(cy + height + 1);
         subdiv->south = GARMIN_RAD(cy - height);
@@ -851,12 +836,12 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 
         subdiv->area = QRectF(QPointF(subdiv->west, subdiv->north), QPointF(subdiv->east, subdiv->south));
 
-        subdiv->offsetPoints2       = 0;
-        subdiv->lengthPoints2       = 0;
-        subdiv->offsetPolylines2    = 0;
-        subdiv->lengthPolylines2    = 0;
-        subdiv->offsetPolygons2     = 0;
-        subdiv->lengthPolygons2     = 0;
+        subdiv->offsetPoints2    = 0;
+        subdiv->lengthPoints2    = 0;
+        subdiv->offsetPolylines2 = 0;
+        subdiv->lengthPolylines2 = 0;
+        subdiv->offsetPolygons2  = 0;
+        subdiv->lengthPolygons2  = 0;
 
         subdiv_prev = subdiv;
         ++pSubDivN;
@@ -870,8 +855,6 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
     // parse all 14 byte subdivision entries of last map level
     for(; i<nsubdivs; ++i)
     {
-        qint32 cx,cy;
-        qint32 width, height;
         subdiv->n = i;
         subdiv->next         = 0;
         subdiv->terminate    = TRE_SUBDIV_TERM(pSubDivL);
@@ -886,12 +869,12 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         subdiv->level = TRE_MAP_LEVEL(pMapLevel);
         subdiv->shift = 24 - pMapLevel->bits;
 
-        cx = gar_ptr_load(uint24_t, &pSubDivL->center_lng);
+        qint32 cx = gar_ptr_load(uint24_t, &pSubDivL->center_lng);
         subdiv->iCenterLng = cx;
-        cy = gar_ptr_load(uint24_t, &pSubDivL->center_lat);
+        qint32 cy = gar_ptr_load(uint24_t, &pSubDivL->center_lat);
         subdiv->iCenterLat = cy;
-        width   = TRE_SUBDIV_WIDTH(pSubDivL) << subdiv->shift;
-        height  = gar_load(uint16_t, pSubDivL->height) << subdiv->shift;
+        qint32 width   = TRE_SUBDIV_WIDTH(pSubDivL) << subdiv->shift;
+        qint32 height  = gar_load(uint16_t, pSubDivL->height) << subdiv->shift;
 
         subdiv->north = GARMIN_RAD(cy + height + 1);
         subdiv->south = GARMIN_RAD(cy - height);
@@ -900,12 +883,12 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 
         subdiv->area = QRectF(QPointF(subdiv->west, subdiv->north), QPointF(subdiv->east, subdiv->south));
 
-        subdiv->offsetPoints2       = 0;
-        subdiv->lengthPoints2       = 0;
-        subdiv->offsetPolylines2    = 0;
-        subdiv->lengthPolylines2    = 0;
-        subdiv->offsetPolygons2     = 0;
-        subdiv->lengthPolygons2     = 0;
+        subdiv->offsetPoints2    = 0;
+        subdiv->lengthPoints2    = 0;
+        subdiv->offsetPolylines2 = 0;
+        subdiv->lengthPolylines2 = 0;
+        subdiv->offsetPolygons2  = 0;
+        subdiv->lengthPolygons2  = 0;
 
         subdiv_prev = subdiv;
         ++pSubDivL;
@@ -925,11 +908,7 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         //        const quint32 entries1 = gar_load(uint32_t, pTreHdr->tre7_size) / gar_load(uint32_t, pTreHdr->tre7_rec_size);
         //        const quint32 entries2 = subdivs.size();
 
-        bool skipPois = true;
-        if(gar_load(uint16_t, pTreHdr->tre7_rec_size) == sizeof(tre_subdiv2_t))
-        {
-            skipPois = false;
-        }
+        bool skipPois = ( gar_load(uint16_t, pTreHdr->tre7_rec_size) != sizeof(tre_subdiv2_t) );
 
         //         for(int i = 0; i < pTreHdr->tre7_rec_size; ++i){
         //             if(i%4 == 0) fprintf(stderr,"\n");
@@ -1020,7 +999,7 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 
         QByteArray nethdr;
         quint32 offsetNet1  = 0;
-        hdr_net_t * pNetHdr = 0;
+        hdr_net_t * pNetHdr = nullptr;
         if(subfile.parts.contains("NET"))
         {
             readFile(file, subfile.parts["NET"].offset, sizeof(hdr_net_t), nethdr);
@@ -1040,72 +1019,57 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         {
         case 0x06:
             subfile.strtbl = new CGarminStrTbl6(codepage, mask, this);
-            subfile.strtbl->registerLBL1(offsetLbl1, gar_load(uint32_t, pLblHdr->lbl1_length), pLblHdr->addr_shift);
-            subfile.strtbl->registerLBL6(offsetLbl6, gar_load(uint32_t, pLblHdr->lbl6_length));
-            if(pNetHdr)
-            {
-                subfile.strtbl->registerNET1(offsetNet1, gar_load(uint32_t, pNetHdr->net1_length), pNetHdr->net1_addr_shift);
-            }
             break;
 
         case 0x09:
             subfile.strtbl = new CGarminStrTbl8(codepage, mask, this);
-            subfile.strtbl->registerLBL1(offsetLbl1, gar_load(uint32_t, pLblHdr->lbl1_length), pLblHdr->addr_shift);
-            subfile.strtbl->registerLBL6(offsetLbl6, gar_load(uint32_t, pLblHdr->lbl6_length));
-            if(pNetHdr)
-            {
-                subfile.strtbl->registerNET1(offsetNet1, gar_load(uint32_t, pNetHdr->net1_length), pNetHdr->net1_addr_shift);
-            }
             break;
 
         case 0x0A:
             subfile.strtbl = new CGarminStrTblUtf8(codepage, mask, this);
+            break;
+
+        default:
+            qWarning() << "Unknown label coding" << hex << pLblHdr->coding;
+        }
+
+        if(nullptr != subfile.strtbl)
+        {
             subfile.strtbl->registerLBL1(offsetLbl1, gar_load(uint32_t, pLblHdr->lbl1_length), pLblHdr->addr_shift);
             subfile.strtbl->registerLBL6(offsetLbl6, gar_load(uint32_t, pLblHdr->lbl6_length));
-            if(pNetHdr)
+            if(nullptr != pNetHdr)
             {
                 subfile.strtbl->registerNET1(offsetNet1, gar_load(uint32_t, pNetHdr->net1_length), pNetHdr->net1_addr_shift);
             }
-            break;
-
-        default:
-            ;
-            qWarning() << "Unknown label coding" << hex << pLblHdr->coding;
         }
     }
 }
 
 void CMapIMG::processPrimaryMapData()
 {
-    QMap<QString,subfile_desc_t>::const_iterator subfile = subfiles.begin();
     /*
      * Query all subfiles for possible maplevels.
      * Exclude basemap to avoid pollution.
      */
-    while (subfile != subfiles.end())
+    for(const subfile_desc_t &subfile : subfiles)
     {
-        QVector<maplevel_t>::const_iterator maplevel = subfile->maplevels.begin();
-
-        while (maplevel != subfile->maplevels.end())
+        for(const maplevel_t &maplevel : subfile.maplevels)
         {
-            if (!maplevel->inherited)
+            if(!maplevel.inherited)
             {
                 map_level_t ml;
-                ml.bits  = maplevel->bits;
-                ml.level = maplevel->level;
+                ml.bits  = maplevel.bits;
+                ml.level = maplevel.level;
                 ml.useBaseMap = false;
                 maplevels << ml;
             }
-            ++maplevel;
         }
-        ++subfile;
     }
 
     /* Sort all entries, note that stable sort should insure that basemap is preferred when available. */
     qStableSort(maplevels.begin(), maplevels.end(), map_level_t::GreaterThan);
     /* Delete any duplicates for obvious performance reasons. */
-    QVector<map_level_t>::iterator where;
-    where = std::unique(maplevels.begin(), maplevels.end());
+    auto where = std::unique(maplevels.begin(), maplevels.end());
     maplevels.erase(where, maplevels.end());
 
 
@@ -1247,7 +1211,7 @@ void CMapIMG::draw(IDrawContext::buffer_t& buf) /* override */
 //        bits += detailsFineTune;
 //    }
 
-    QVector<map_level_t>::const_iterator maplevel = maplevels.end();
+    QVector<map_level_t>::const_iterator maplevel = maplevels.constEnd();
     do
     {
         --maplevel;
@@ -1256,17 +1220,12 @@ void CMapIMG::draw(IDrawContext::buffer_t& buf) /* override */
             break;
         }
     }
-    while(maplevel != maplevels.begin());
-
-    QPointF pt1 = buf.ref1;
-    QPointF pt2 = buf.ref2;
-    QPointF pt3 = buf.ref3;
-    QPointF pt4 = buf.ref4;
+    while(maplevel != maplevels.constBegin());
 
-    qreal u1 = pt1.x() < pt4.x() ? pt1.x() : pt4.x();
-    qreal u2 = pt2.x() > pt3.x() ? pt2.x() : pt3.x();
-    qreal v1 = pt1.y() > pt2.y() ? pt1.y() : pt2.y();
-    qreal v2 = pt4.y() < pt3.y() ? pt4.y() : pt3.y();
+    qreal u1 = qMin(buf.ref1.x(), buf.ref4.x());
+    qreal u2 = qMax(buf.ref2.x(), buf.ref3.x());
+    qreal v1 = qMax(buf.ref1.y(), buf.ref2.y());
+    qreal v2 = qMin(buf.ref4.y(), buf.ref3.y());
 
     QRectF viewport(u1,v1, u2 - u1, v2 - v1);
     QVector<QRectF> rectPois;
@@ -1350,17 +1309,15 @@ void CMapIMG::loadVisibleData(bool fast, polytype_t& polygons, polytype_t& polyl
     }
 #endif
 
-    QMap<QString,subfile_desc_t>::const_iterator subfile = subfiles.constBegin();
-    while(subfile != subfiles.constEnd())
+    for(const subfile_desc_t &subfile : subfiles)
     {
 //        qDebug() << "-------";
 //        qDebug() << (viewport.topLeft() * RAD_TO_DEG) << (viewport.bottomRight() * RAD_TO_DEG);
-//        qDebug() << (subfile->area.topLeft() * RAD_TO_DEG) << (subfile->area.bottomRight() * RAD_TO_DEG);
-//        qDebug() << subfile->area.intersects(viewport);
+//        qDebug() << (subfile.area.topLeft() * RAD_TO_DEG) << (subfile.area.bottomRight() * RAD_TO_DEG);
+//        qDebug() << subfile.area.intersects(viewport);
 
-        if(!subfile->area.intersects(viewport))
+        if(!subfile.area.intersects(viewport))
         {
-            ++subfile;
             continue;
         }
 
@@ -1378,29 +1335,27 @@ void CMapIMG::loadVisibleData(bool fast, polytype_t& polygons, polytype_t& polyl
 #endif
 
         QByteArray rgndata;
-        readFile(file, subfile->parts["RGN"].offset, subfile->parts["RGN"].size, rgndata);
+        readFile(file, subfile.parts["RGN"].offset, subfile.parts["RGN"].size, rgndata);
 
-        //         qDebug() << "rgn range" << hex << subfile->parts["RGN"].offset << (subfile->parts["RGN"].offset + subfile->parts["RGN"].size);
+        // qDebug() << "rgn range" << hex << subfile.parts["RGN"].offset << (subfile.parts["RGN"].offset + subfile.parts["RGN"].size);
 
-        const QVector<subdiv_desc_t>&  subdivs = subfile->subdivs;
+        const QVector<subdiv_desc_t>& subdivs = subfile.subdivs;
         // collect polylines
-        QVector<subdiv_desc_t>::const_iterator subdiv = subdivs.constBegin();
-        while(subdiv != subdivs.constEnd())
+        for(const subdiv_desc_t &subdiv : subdivs)
         {
-            //             if(subdiv->level == level) qDebug() << "subdiv:" << subdiv->level << level <<  subdiv->area << viewport << subdiv->area.intersects(viewport);
-            if(subdiv->level != level || !subdiv->area.intersects(viewport))
+            // if(subdiv.level == level) qDebug() << "subdiv:" << subdiv.level << level <<  subdiv.area << viewport << subdiv.area.intersects(viewport);
+            if(subdiv.level != level || !subdiv.area.intersects(viewport))
             {
-                ++subdiv;
                 continue;
             }
             if(map->needsRedraw())
             {
                 break;
             }
-            loadSubDiv(file, *subdiv, subfile->strtbl, rgndata, fast, viewport, polylines, polygons, points, pois);
+            loadSubDiv(file, subdiv, subfile.strtbl, rgndata, fast, viewport, polylines, polygons, points, pois);
 
 #ifdef DEBUG_SHOW_SECTION_BORDERS
-            const QRectF& a = subdiv->area;
+            const QRectF& a = subdiv.area;
             qreal u[2] = {a.left(), a.right()};
             qreal v[2] = {a.top(), a.bottom()};
 
@@ -1413,14 +1368,13 @@ void CMapIMG::loadVisibleData(bool fast, polytype_t& polygons, polytype_t& polyl
             p.setBrush(Qt::NoBrush);
             p.drawPolygon(poly);
 #endif // DEBUG_SHOW_SECTION_BORDERS
-            ++subdiv;
         }
 
 #ifdef DEBUG_SHOW_SUBDIV_BORDERS
-        QPointF p1 = subfile->area.bottomLeft();
-        QPointF p2 = subfile->area.bottomRight();
-        QPointF p3 = subfile->area.topRight();
-        QPointF p4 = subfile->area.topLeft();
+        QPointF p1 = subfile.area.bottomLeft();
+        QPointF p2 = subfile.area.bottomRight();
+        QPointF p3 = subfile.area.topRight();
+        QPointF p4 = subfile.area.topLeft();
 
         map->convertRad2Px(p1);
         map->convertRad2Px(p2);
@@ -1433,8 +1387,6 @@ void CMapIMG::loadVisibleData(bool fast, polytype_t& polygons, polytype_t& polyl
         p.drawPolygon(poly);
 #endif // DEBUG_SHOW_SUBDIV_BORDERS
 
-        ++subfile;
-
 #ifdef Q_OS_WIN32
         file.close();
 #else
@@ -1520,16 +1472,13 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
     qDebug() << "polygons:          " << hex << opgon;
 #endif                       // DEBUG_SHOW_POLY_DATA
 
-    const quint8 *  pData;
-    const quint8 *  pEnd;
-
     CGarminPolygon p;
 
     // decode points
     if(subdiv.hasPoints && !fast && getShowPOIs())
     {
-        pData = pRawData + opnt;
-        pEnd  = pRawData + (oidx ? oidx : opline ? opline : opgon ? opgon : subdiv.rgn_end);
+        const quint8 *pData = pRawData + opnt;
+        const quint8 *pEnd  = pRawData + (oidx ? oidx : opline ? opline : opgon ? opgon : subdiv.rgn_end);
         while(pData < pEnd)
         {
             CGarminPoint p;
@@ -1554,8 +1503,8 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
     // decode indexed points
     if(subdiv.hasIdxPoints && !fast && getShowPOIs())
     {
-        pData = pRawData + oidx;
-        pEnd  = pRawData + (opline ? opline : opgon ? opgon : subdiv.rgn_end);
+        const quint8 *pData = pRawData + oidx;
+        const quint8 *pEnd  = pRawData + (opline ? opline : opgon ? opgon : subdiv.rgn_end);
         while(pData < pEnd)
         {
             CGarminPoint p;
@@ -1581,8 +1530,8 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
     if(subdiv.hasPolylines && !fast && getShowPolylines())
     {
         CGarminPolygon::cnt = 0;
-        pData = pRawData + opline;
-        pEnd  = pRawData + (opgon ? opgon : subdiv.rgn_end);
+        const quint8 *pData = pRawData + opline;
+        const quint8 *pEnd  = pRawData + (opgon ? opgon : subdiv.rgn_end);
         while(pData < pEnd)
         {
             pData += p.decode(subdiv.iCenterLng, subdiv.iCenterLat, subdiv.shift, true, pData, pEnd);
@@ -1610,8 +1559,8 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
     if(subdiv.hasPolygons && getShowPolygons())
     {
         CGarminPolygon::cnt = 0;
-        pData = pRawData + opgon;
-        pEnd  = pRawData + subdiv.rgn_end;
+        const quint8 *pData = pRawData + opgon;
+        const quint8 *pEnd  = pRawData + subdiv.rgn_end;
 
         while(pData < pEnd)
         {
@@ -1649,8 +1598,8 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
 
     if(subdiv.lengthPolygons2 && getShowPolygons())
     {
-        pData   = pRawData + subdiv.offsetPolygons2;
-        pEnd    = pData + subdiv.lengthPolygons2;
+        const quint8 *pData   = pRawData + subdiv.offsetPolygons2;
+        const quint8 *pEnd    = pData + subdiv.lengthPolygons2;
         while(pData < pEnd)
         {
             //             qDebug() << "rgn offset:" << hex << (rgnoff + (pData - pRawData));
@@ -1673,8 +1622,8 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
 
     if(subdiv.lengthPolylines2 && !fast && getShowPolylines())
     {
-        pData   = pRawData + subdiv.offsetPolylines2;
-        pEnd    = pData + subdiv.lengthPolylines2;
+        const quint8 *pData = pRawData + subdiv.offsetPolylines2;
+        const quint8 *pEnd  = pData + subdiv.lengthPolylines2;
         while(pData < pEnd)
         {
             //             qDebug() << "rgn offset:" << hex << (rgnoff + (pData - pRawData));
@@ -1697,8 +1646,8 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
 
     if(subdiv.lengthPoints2 && !fast && getShowPOIs())
     {
-        pData   = pRawData + subdiv.offsetPoints2;
-        pEnd    = pData + subdiv.lengthPoints2;
+        const quint8 *pData   = pRawData + subdiv.offsetPoints2;
+        const quint8 *pEnd    = pData + subdiv.lengthPoints2;
         while(pData < pEnd)
         {
             CGarminPoint p;
@@ -1723,26 +1672,22 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
 
 void CMapIMG::drawPolygons(QPainter& p, polytype_t& lines)
 {
-    quint32 type;
-    int n;
     const int N = polygonDrawOrder.size();
-    for(n = 0; n < N; ++n)
+    for(int n = 0; n < N; ++n)
     {
-        type = polygonDrawOrder[(N-1) - n];
+        quint32 type = polygonDrawOrder[(N-1) - n];
 
         p.setPen(polygonProperties[type].pen);
         p.setBrush(CMainWindow::self().isNight() ? polygonProperties[type].brushNight : polygonProperties[type].brushDay);
 
-        polytype_t::iterator item = lines.begin();
-        while (item != lines.end())
+        for(CGarminPolygon &line : lines)
         {
-            if(item->type != type)
+            if(line.type != type)
             {
-                ++item;
                 continue;
             }
 
-            QPolygonF& poly = item->pixel;
+            QPolygonF &poly = line.pixel;
 
             map->convertRad2Px(poly);
 
@@ -1754,7 +1699,6 @@ void CMapIMG::drawPolygons(QPainter& p, polytype_t& lines)
             {
                 qDebug() << "unknown polygon" << hex << type;
             }
-            ++item;
         }
     }
 }
@@ -1771,12 +1715,13 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
 
     QVector<qreal> lengths;
     lengths.reserve(100);
-
+/*
     int pixmapCount = 0;
     int borderCount = 0;
     int normalCount = 0;
     int imageCount = 0;
-//    int deletedCount = 0;
+    int deletedCount = 0;
+ */
 
     QHash<quint32, QList<quint32> > dict;
     for(int i = 0; i < lines.count(); ++i)
@@ -1791,22 +1736,22 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
         const quint32 &type = props.key();
         const CGarminTyp::polyline_property& property = props.value();
 
-        if(dict[type].count() == 0)
+        if(dict[type].isEmpty())
         {
             continue;
         }
 
         if(property.hasPixmap)
         {
-            const QImage &pixmap    = CMainWindow::self().isNight() ? property.imgNight : property.imgDay;
-            const qreal h          = pixmap.height();
+            const QImage &pixmap = CMainWindow::self().isNight() ? property.imgNight : property.imgDay;
+            const qreal h        = pixmap.height();
 
             QList<quint32>::const_iterator it = dict[type].constBegin();
             for(; it != dict[type].constEnd(); ++it)
             {
                 CGarminPolygon &item = lines[*it];
                 {
-                    pixmapCount++;
+                    //pixmapCount++;
 
                     QPolygonF& poly = item.pixel;
                     int size        = poly.size();
@@ -1828,19 +1773,18 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
 
                     lengths.reserve(size);
 
-                    qreal u1, u2, v1, v2;
                     QPainterPath path;
-                    qreal segLength, totalLength = 0;
+                    qreal totalLength = 0;
 
-                    u1 = poly[0].x();
-                    v1 = poly[0].y();
+                    qreal u1 = poly[0].x();
+                    qreal v1 = poly[0].y();
 
                     for(int i = 1; i < size; ++i)
                     {
-                        u2 = poly[i].x();
-                        v2 = poly[i].y();
+                        qreal u2 = poly[i].x();
+                        qreal v2 = poly[i].y();
 
-                        segLength    = qSqrt((u2 - u1) * (u2 - u1) + (v2 - v1) * (v2 - v1));
+                        qreal segLength = qSqrt((u2 - u1) * (u2 - u1) + (v2 - v1) * (v2 - v1));
                         totalLength += segLength;
                         lengths << segLength;
 
@@ -1860,13 +1804,13 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                     QPointF p2       = path.pointAtPercent(curLength / totalLength);
                     for(int i = 0; i < nLength; ++i)
                     {
-                        segLength = lengths.at(i);
+                        qreal segLength = lengths.at(i);
 
                         //                         qDebug() << curLength << totalLength << curLength / totalLength;
 
-                        QPointF p1      = p2;
-                        p2              = path.pointAtPercent((curLength + segLength) / totalLength);
-                        qreal angle    = qAtan((p2.y() - p1.y()) / (p2.x() - p1.x())) * 180 / M_PI;
+                        QPointF p1  = p2;
+                        p2          = path.pointAtPercent((curLength + segLength) / totalLength);
+                        qreal angle = qAtan((p2.y() - p1.y()) / (p2.x() - p1.x())) * 180 / M_PI;
 
                         if(p2.x() - p1.x() < 0)
                         {
@@ -1877,7 +1821,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                         p.translate(p1);
                         p.rotate(angle);
                         p.drawImage(0,-h/2, img2line(pixmap, segLength));
-                        imageCount++;
+                        //imageCount++;
 
                         p.restore();
                         curLength += segLength;
@@ -1895,7 +1839,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                 QList<quint32>::const_iterator it = dict[type].constBegin();
                 for(; it != dict[type].constEnd(); ++it)
                 {
-                    borderCount++;
+                    //borderCount++;
                     drawLine(p, lines[*it], property, metrics, font, scale);
                 }
                 // draw foreground line in a second run for nicer borders
@@ -1907,7 +1851,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                 QList<quint32>::const_iterator it = dict[type].constBegin();
                 for(; it != dict[type].constEnd(); ++it)
                 {
-                    normalCount++;
+                    //normalCount++;
                     drawLine(p, lines[*it], property, metrics, font, scale);
                 }
             }
@@ -1921,7 +1865,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
         const quint32 &type = props.key();
         const CGarminTyp::polyline_property& property = props.value();
 
-        if(dict[type].count() == 0)
+        if(dict[type].isEmpty())
         {
             continue;
         }
@@ -1990,27 +1934,9 @@ void CMapIMG::drawLine(QPainter& p, const CGarminPolygon& l)
 void CMapIMG::collectText(const CGarminPolygon& item, const QPolygonF& line, const QFont& font, const QFontMetricsF& metrics, qint32 lineWidth)
 {
     QString str;
-    if (!item.labels.isEmpty())
+    if(item.hasLabel())
     {
-        switch(item.type)
-        {
-        case 0x23:
-        case 0x20:
-        case 0x24:
-        case 0x21:
-        case 0x25:
-        case 0x22:
-        {
-            QString unit;
-            QString val = item.labels[0];
-            IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-            str = QString("%1 %2").arg(val).arg(unit);
-        }
-        break;
-
-        default:
-            str = item.labels.join(" ").simplified();
-        }
+        str = item.getLabelText();
     }
 
     if(str.isEmpty())
@@ -2019,24 +1945,53 @@ void CMapIMG::collectText(const CGarminPolygon& item, const QPolygonF& line, con
     }
 
     textpath_t tp;
-    tp.polyline     = line;
-    tp.font         = font;
-    tp.text         = str;
-    tp.lineWidth    = lineWidth;
+    tp.polyline  = line;
+    tp.font      = font;
+    tp.text      = str;
+    tp.lineWidth = lineWidth;
 
     const int size = line.size();
     for(int i = 1; i < size; ++i)
     {
         const QPointF &p1 = line[i-1];
         const QPointF &p2 = line[i];
-        qreal dx    = p2.x() - p1.x();
-        qreal dy    = p2.y() - p1.y();
+        qreal dx = p2.x() - p1.x();
+        qreal dy = p2.y() - p1.y();
         tp.lengths << qSqrt(dx * dx + dy * dy);
     }
 
     textpaths << tp;
 }
 
+bool CMapIMG::intersectsWithExistingLabel(const QRect &rect) const
+{
+    for(const strlbl_t &label : labels)
+    {
+        if(label.rect.intersects(rect))
+        {
+            return true;
+        }
+    }
+
+    return false;
+}
+
+void CMapIMG::addLabel(const CGarminPoint &pt, const QRect &rect, CGarminTyp::label_type_e type)
+{
+    QString str;
+    if(pt.hasLabel())
+    {
+        str = pt.getLabelText();
+    }
+
+    labels.push_back(strlbl_t());
+    strlbl_t& strlbl = labels.last();
+    strlbl.pt   = pt.pos.toPoint();
+    strlbl.str  = str;
+    strlbl.rect = rect;
+    strlbl.type = type;
+}
+
 void CMapIMG::drawPoints(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPois)
 {
     pointtype_t::iterator pt = pts.begin();
@@ -2086,55 +2041,10 @@ void CMapIMG::drawPoints(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPoi
             rect.adjust(0,0,4,4);
             rect.moveCenter(pt->pos.toPoint());
 
-            // test rectangle for intersection with existing labels
-            QVector<strlbl_t>::const_iterator label = labels.constBegin();
-            while(label != labels.constEnd())
-            {
-                if(label->rect.intersects(rect))
-                {
-                    break;
-                }
-                ++label;
-            }
-
             // if no intersection was found, add label to list
-            if(label == labels.constEnd())
+            if(!intersectsWithExistingLabel(rect))
             {
-                QString str;
-                if(!pt->labels.isEmpty())
-                {
-                    if((pt->type == 0x6200)||(pt->type == 0x6300))
-                    {
-                        QString unit;
-                        QString val = pt->labels[0];
-                        IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                        str = QString("%1 %2").arg(val).arg(unit);
-                    }
-                    else if(pt->type == 0x6616) //669 DAV
-                    {
-                        if(pt->labels.size()>1)
-                        {
-                            QString unit;
-                            QString val = pt->labels[1];
-                            IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                            str = QString("%1 %2 %3").arg(pt->labels[0]).arg(val).arg(unit);
-                        }
-                        else
-                        {
-                            str = pt->labels[0];
-                        }
-                    }
-                    else
-                    {
-                        str = pt->labels.join(" ");
-                    }
-                }
-
-                labels.push_back(strlbl_t());
-                strlbl_t& strlbl = labels.last();
-                strlbl.pt   = pt->pos.toPoint();
-                strlbl.str  = str;
-                strlbl.rect = rect;
+                addLabel(*pt, rect, CGarminTyp::eStandard);
             }
         }
         ++pt;
@@ -2146,103 +2056,50 @@ void CMapIMG::drawPois(QPainter& p, pointtype_t& pts, QVector<QRectF> &rectPois)
 {
     CGarminTyp::label_type_e labelType = CGarminTyp::eStandard;
 
-    QPixmap blueBullet(":/icons/8x8/bullet_blue.png");
-    QPixmap redBullet(":/icons/8x8/bullet_red.png");
-
-    pointtype_t::iterator pt = pts.begin();
-    while(pt != pts.end())
+    for(CGarminPoint &pt : pts)
     {
-        map->convertRad2Px(pt->pos);
+        map->convertRad2Px(pt.pos);
 
-        const QImage&  icon = CMainWindow::self().isNight() ? pointProperties[pt->type].imgNight : pointProperties[pt->type].imgDay;
+        const QImage&  icon = CMainWindow::self().isNight() ? pointProperties[pt.type].imgNight : pointProperties[pt.type].imgDay;
         const QSizeF&  size = icon.size();
 
-        if(isCluttered(rectPois, QRectF(pt->pos, size)))
+        if(isCluttered(rectPois, QRectF(pt.pos, size)))
         {
             if(size.width() <= 8 && size.height() <= 8)
             {
-                p.drawImage(pt->pos.x() - (size.width()/2), pt->pos.y() - (size.height()/2), icon);
+                p.drawImage(pt.pos.x() - (size.width()/2), pt.pos.y() - (size.height()/2), icon);
             }
             else
             {
-                p.drawPixmap(pt->pos.x() - 4, pt->pos.y() - 4, QPixmap(":/icons/8x8/bullet_blue.png"));
+                p.drawPixmap(pt.pos.x() - 4, pt.pos.y() - 4, QPixmap(":/icons/8x8/bullet_blue.png"));
             }
-            ++pt;
             continue;
         }
 
         labelType = CGarminTyp::eStandard;
-        if(pointProperties.contains(pt->type))
+        if(pointProperties.contains(pt.type))
         {
-            p.drawImage(pt->pos.x() - (size.width()/2), pt->pos.y() - (size.height()/2), icon);
-            labelType = pointProperties[pt->type].labelType;
+            p.drawImage(pt.pos.x() - (size.width()/2), pt.pos.y() - (size.height()/2), icon);
+            labelType = pointProperties[pt.type].labelType;
         }
         else
         {
-            p.drawPixmap(pt->pos.x() - 4, pt->pos.y() - 4, redBullet);
+            p.drawPixmap(pt.pos.x() - 4, pt.pos.y() - 4, QPixmap(":/icons/8x8/bullet_red.png"));
         }
 
         if(CMainWindow::self().isPOIText())
         {
             // calculate bounding rectangle with a border of 2 px
-            QRect rect = fm.boundingRect(pt->labels.join(" "));
+            QRect rect = fm.boundingRect(pt.labels.join(" "));
             rect.adjust(0,0,4,4);
-            rect.moveCenter(pt->pos.toPoint());
-
-            // test rectangle for intersection with existing labels
-            QVector<strlbl_t>::const_iterator label = labels.begin();
-            while(label != labels.end())
-            {
-                if(label->rect.intersects(rect))
-                {
-                    break;
-                }
-                ++label;
-            }
+            rect.moveCenter(pt.pos.toPoint());
 
             // if no intersection was found, add label to list
-            if(label == labels.end())
+            if(!intersectsWithExistingLabel(rect))
             {
-                QString str;
-                if(!pt->labels.isEmpty())
-                {
-                    if((pt->type == 0x6200)||(pt->type == 0x6300))
-                    {
-                        QString unit;
-                        QString val = pt->labels[0];
-                        IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                        str = QString("%1 %2").arg(val).arg(unit);
-                    }
-                    else if(pt->type == 0x6616) //669 DAV
-                    {
-                        if(pt->labels.size()>1)
-                        {
-                            QString unit;
-                            QString val = pt->labels[1];
-                            IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                            str = QString("%1 %2 %3").arg(pt->labels[0]).arg(val).arg(unit);
-                        }
-                        else
-                        {
-                            str = pt->labels[0];
-                        }
-                    }
-                    else
-                    {
-                        str = pt->labels.join(" ");
-                    }
-                }
-
-                labels.push_back(strlbl_t());
-                strlbl_t& strlbl = labels.last();
-                strlbl.pt   = pt->pos.toPoint();
-                strlbl.str  = str;
-                strlbl.rect = rect;
-                strlbl.type = labelType;
+                addLabel(pt, rect, labelType);
             }
         }
-
-        ++pt;
     }
 }
 
@@ -2254,40 +2111,34 @@ void CMapIMG::drawLabels(QPainter& p, const QVector<strlbl_t> &lbls)
     fonts[CGarminTyp::eSmall].setPointSize(f.pointSize() - 2);
     fonts[CGarminTyp::eLarge].setPointSize(f.pointSize() + 2);
 
-    QVector<strlbl_t>::const_iterator lbl = lbls.begin();
-    while(lbl != lbls.end())
+    for(const strlbl_t &lbl : lbls)
     {
-        CDraw::text(lbl->str, p, lbl->pt, Qt::black, fonts[lbl->type]);
-        ++lbl;
+        CDraw::text(lbl.str, p, lbl.pt, Qt::black, fonts[lbl.type]);
     }
 }
 
-
-#define D 80
 void CMapIMG::drawText(QPainter& p)
 {
     p.setPen(Qt::black);
 
-    QVector<textpath_t>::const_iterator textpath = textpaths.constBegin();
-    QVector<textpath_t>::const_iterator end      = textpaths.constEnd();
-    while(textpath != end)
+    for(const textpath_t &textpath : textpaths)
     {
         QPainterPath path;
-        QFont font = textpath->font;
+        QFont font = textpath.font;
         QFontMetricsF fm(font);
 
-        path.addPolygon(textpath->polyline);
+        path.addPolygon(textpath.polyline);
 
         // get path length and string length
-        qreal length        = qAbs(path.length());
-        qreal width         = fm.width(textpath->text);
+        qreal length = qAbs(path.length());
+        qreal width  = fm.width(textpath.text);
 
         // adjust font size until string fits into polyline
-        while(width  > (length * 0.7))
+        while(width > (length * 0.7))
         {
             font.setPixelSize(font.pixelSize() - 1);
             fm      = QFontMetricsF(font);
-            width   = fm.width(textpath->text);
+            width   = fm.width(textpath.text);
 
             if((font.pixelSize() < 8))
             {
@@ -2298,7 +2149,6 @@ void CMapIMG::drawText(QPainter& p)
         // no way to draw a readable string - skip
         if((font.pixelSize() < 8))
         {
-            ++textpath;
             continue;
         }
 
@@ -2306,7 +2156,7 @@ void CMapIMG::drawText(QPainter& p)
         p.setFont(font);
 
         // adjust exact offset to first half of segment
-        const QVector<qreal>& lengths = textpath->lengths;
+        const QVector<qreal>& lengths = textpath.lengths;
         const qreal ref = (length - width) / 2;
         qreal offset    = 0;
 
@@ -2328,12 +2178,11 @@ void CMapIMG::drawText(QPainter& p)
         }
 
         // get starting angle of first two letters
-        const QString& text = textpath->text;
+        const QString& text = textpath.text;
         qreal percent1  =  offset / length;
         qreal percent2  = (offset + fm.width(text.left(2))) / length;
 
         QPointF point1  = path.pointAtPercent(percent1);
-
         QPointF point2  = path.pointAtPercent(percent2);
 
         qreal angle     = qAtan((point2.y() - point1.y()) / (point2.x() - point1.x())) * 180 / M_PI;
@@ -2352,8 +2201,8 @@ void CMapIMG::drawText(QPainter& p)
 
         for(int i = 0; i < size; ++i)
         {
-            percent1  = percent2;
-            percent2  = (offset + fm.width(text[i])) / length;
+            percent1 = percent2;
+            percent2 = (offset + fm.width(text[i])) / length;
 
             point1  = point2;
             point2  = path.pointAtPercent(percent2);
@@ -2369,7 +2218,7 @@ void CMapIMG::drawText(QPainter& p)
             p.translate(point1);
             p.rotate(angle);
 
-            p.translate(0, -(textpath->lineWidth + 2));
+            p.translate(0, -(textpath.lineWidth + 2));
 
             QString str = text.mid(i,1);
             p.setPen(Qt::white);
@@ -2389,39 +2238,26 @@ void CMapIMG::drawText(QPainter& p)
 
             offset += fm.width(text[i]);
         }
-
-        ++textpath;
     }
 }
 
-
-void CMapIMG::getInfo(const QPoint& px, QString& str) /* override */
-{
-}
-
 void CMapIMG::getToolTip(const QPoint& px, QString& infotext) /* override */
 {
-    bool first = true;
     QString str;
 
     QMultiMap<QString, QString> dict;
-    getInfoPoints(px, dict);
-    getInfoPois(px, dict);
+    getInfoPoints(points, px, dict);
+    getInfoPoints(pois,   px, dict);
     getInfoPolylines(px, dict);
 
-    QList<QString> values = dict.values();
-    foreach(const QString &value, values)
+    for(const QString &value : dict.values())
     {
         if(value == "-")
         {
             continue;
         }
 
-        if(first)
-        {
-            first = false;
-        }
-        else
+        if(!str.isEmpty())
         {
             str += "\n";
         }
@@ -2432,19 +2268,14 @@ void CMapIMG::getToolTip(const QPoint& px, QString& infotext) /* override */
     {
         dict.clear();
         getInfoPolygons(px, dict);
-        QList<QString> values = dict.values();
-        foreach(const QString &value, values)
+        for(const QString &value : dict.values())
         {
             if(value == "-")
             {
                 continue;
             }
 
-            if(first)
-            {
-                first = false;
-            }
-            else
+            if(!str.isEmpty())
             {
                 str += "\n";
             }
@@ -2462,174 +2293,66 @@ void CMapIMG::getToolTip(const QPoint& px, QString& infotext) /* override */
     }
 }
 
-void CMapIMG::getInfoPoints(const QPoint& pt, QMultiMap<QString, QString>& dict)
+void CMapIMG::getInfoPoints(const pointtype_t &points, const QPoint& pt, QMultiMap<QString, QString>& dict)
 {
-    pointtype_t::const_iterator point = points.begin();
-    while(point != points.end())
+    for(const CGarminPoint &point : points)
     {
-        QPoint x = pt - QPoint(point->pos.x(), point->pos.y());
+        QPoint x = pt - QPoint(point.pos.x(), point.pos.y());
         if(x.manhattanLength() < 10)
         {
-            if(point->labels.size())
+            if(point.hasLabel())
             {
-                QString str;
-                if((point->type == 0x6200)||(point->type == 0x6300))
-                {
-                    QString unit;
-                    QString val = point->labels[0];
-                    IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                    str = QString("%1 %2").arg(val).arg(unit);
-                }
-                else if(point->type == 0x6616) //669 DAV
-                {
-                    if(point->labels.size()>1)
-                    {
-                        QString unit;
-                        QString val = point->labels[1];
-                        IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                        str = QString("%1 %2 %3").arg(point->labels[0]).arg(val).arg(unit);
-                    }
-                    else
-                    {
-                        str = point->labels[0];
-                    }
-                }
-                else
-                {
-                    str = point->labels.join(", ");
-                }
-
-                dict.insert(tr("Point of Interest"),str);
+                dict.insert(tr("Point of Interest"), point.getLabelText());
             }
             else
             {
-                if(pointProperties.contains(point->type))
+                if(pointProperties.contains(point.type))
                 {
-                    if(selectedLanguage != NOIDX)
-                    {
-                        dict.insert(tr("Point of Interest"),pointProperties[point->type].strings[selectedLanguage]);
-                    }
-                    else
-                    {
-                        dict.insert(tr("Point of Interest"),pointProperties[point->type].strings[0]);
-                    }
+                    dict.insert(tr("Point of Interest"),pointProperties[point.type].strings[selectedLanguage != NOIDX ? selectedLanguage : 0]);
                 }
                 else
                 {
-                    dict.insert(tr("Point of Interest"), QString(" (%1)").arg(point->type,2,16,QChar('0')));
+                    dict.insert(tr("Point of Interest"), QString(" (%1)").arg(point.type, 2, 16, QChar('0')));
                 }
             }
         }
-        ++point;
-    }
-}
-
-
-void CMapIMG::getInfoPois(const QPoint& pt, QMultiMap<QString, QString>& dict)
-{
-    pointtype_t::const_iterator point = pois.begin();
-    while(point != pois.end())
-    {
-        QPoint x = pt - QPoint(point->pos.x(), point->pos.y());
-        if(x.manhattanLength() < 10)
-        {
-            if(point->labels.size())
-            {
-                QString str;
-                if((point->type == 0x6200)||(point->type == 0x6300))
-                {
-                    QString unit;
-                    QString val = point->labels[0];
-                    IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                    str = QString("%1 %2").arg(val).arg(unit);
-                }
-                else if(point->type == 0x6616) //669 DAV
-                {
-                    if(point->labels.size()>1)
-                    {
-                        QString unit;
-                        QString val = point->labels[1];
-                        IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                        str = QString("%1 %2 %3").arg(point->labels[0]).arg(val).arg(unit);
-                    }
-                    else
-                    {
-                        str = point->labels[0];
-                    }
-                }
-                else
-                {
-                    str = point->labels.join(", ");
-                }
-
-                dict.insert(tr("Point of Interest"),str);
-            }
-            else
-            {
-                if(pointProperties.contains(point->type))
-                {
-                    if(selectedLanguage != NOIDX)
-                    {
-                        dict.insert(tr("Point of Interest"),pointProperties[point->type].strings[selectedLanguage]);
-                    }
-                    else
-                    {
-                        dict.insert(tr("Point of Interest"),pointProperties[point->type].strings[0]);
-                    }
-                }
-                else
-                {
-                    dict.insert(tr("Point of Interest"), QString(" (%1)").arg(point->type,2,16,QChar('0')));
-                }
-            }
-        }
-        ++point;
     }
 }
 
 void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& dict)
 {
-    int i = 0;                   // index into poly line
-    int len;                     // number of points in line
-    projXY p1, p2;               // the two points of the polyline close to pt
-    qreal dx,dy;                // delta x and y defined by p1 and p2
-    qreal d_p1_p2;              // distance between p1 and p2
+    projXY p1, p2;              // the two points of the polyline close to pt
     qreal u;                    // ratio u the tangent point will divide d_p1_p2
-    qreal x,y;                  // coord. (x,y) of the point on line defined by [p1,p2] close to pt
-    qreal distance;             // the distance to the polyline
-    qreal shortest;             // shortest distance sofar
+    qreal shortest = 20;        // shortest distance so far
 
     QPointF resPt = pt;
     QString key, value;
     quint32 type = 0;
 
-    shortest = 20;
-
     bool found = false;
 
-    polytype_t::const_iterator line = polylines.begin();
-    while(line != polylines.end())
+    for(const CGarminPolygon &line : polylines)
     {
-        len = line->pixel.size();
+        int len = line.pixel.size();
         // need at least 2 points
         if(len < 2)
         {
-            ++line;
             continue;
         }
 
         // see http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/
-        for(i=1; i<len; ++i)
+        for(int i=1; i<len; ++i)
         {
-            p1.u = line->pixel[i-1].x();
-            p1.v = line->pixel[i-1].y();
-            p2.u = line->pixel[i].x();
-            p2.v = line->pixel[i].y();
+            p1.u = line.pixel[i-1].x();
+            p1.v = line.pixel[i-1].y();
+            p2.u = line.pixel[i].x();
+            p2.v = line.pixel[i].y();
 
-            dx = p2.u - p1.u;
-            dy = p2.v - p1.v;
+            qreal dx = p2.u - p1.u;
+            qreal dy = p2.v - p1.v;
 
-            d_p1_p2 = qSqrt(dx * dx + dy * dy);
+            // distance between p1 and p2
+            qreal d_p1_p2 = qSqrt(dx * dx + dy * dy);
 
             u = ((pt.x() - p1.u) * dx + (pt.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
 
@@ -2638,54 +2361,23 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
                 continue;
             }
 
-            x = p1.u + u * dx;
-            y = p1.v + u * dy;
+            // coord. (x,y) of the point on line defined by [p1,p2] close to pt
+            qreal x = p1.u + u * dx;
+            qreal y = p1.v + u * dy;
 
-            distance = qSqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
+            qreal distance = qSqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
 
             if(distance < shortest)
             {
-                type = line->type;
+                type  = line.type;
+                value = line.hasLabel() ? line.getLabelText() : "-";
 
-                if(!line->labels.isEmpty())
-                {
-                    switch(type)
-                    {
-                    // "Minor depth contour"
-                    case 0x23:
-                    // "Minor land contour"
-                    case 0x20:
-                    // "Intermediate depth contour",
-                    case 0x24:
-                    // "Intermediate land contour",
-                    case 0x21:
-                    // "Major depth contour",
-                    case 0x25:
-                    // "Major land contour",
-                    case 0x22:
-                    {
-                        QString unit;
-                        QString val = line->labels[0];
-                        IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
-                        value = QString("%1 %2").arg(val).arg(unit);
-                    }
-                    break;
-
-                    default:
-                        value = line->labels.join(" ").simplified();
-                    }
-                }
-                else
-                {
-                    value = "-";
-                }
                 resPt.setX(x);
                 resPt.setY(y);
                 shortest = distance;
                 found = true;
             }
         }
-        ++line;
     }
 
     if(!found)
@@ -2719,27 +2411,23 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
 
 void CMapIMG::getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dict)
 {
-    int npol;
-    int i = 0, j = 0,c = 0;
     projXY p1, p2;               // the two points of the polyline close to pt
-    qreal x = pt.x();
-    qreal y = pt.y();
-    QString value;
+    const qreal x = pt.x();
+    const qreal y = pt.y();
 
-    polytype_t::const_iterator line = polygons.begin();
-    while(line != polygons.end())
+    for(const CGarminPolygon &line : polygons)
     {
-        npol = line->pixel.size();
+        int npol = line.pixel.size();
         if(npol > 2)
         {
-            c = 0;
+            bool c = false;
             // see http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/
-            for (i = 0, j = npol-1; i < npol; j = i++)
+            for (int i = 0, j = npol-1; i < npol; j = i++)
             {
-                p1.u = line->pixel[j].x();
-                p1.v = line->pixel[j].y();
-                p2.u = line->pixel[i].x();
-                p2.v = line->pixel[i].y();
+                p1.u = line.pixel[j].x();
+                p1.v = line.pixel[j].y();
+                p2.u = line.pixel[i].x();
+                p2.v = line.pixel[i].y();
 
                 if ((((p2.v <= y) && (y < p1.v))  || ((p1.v <= y) && (y < p2.v))) &&
                     (x < (p1.u - p2.u) * (y - p2.v) / (p1.v - p2.v) + p2.u))
@@ -2750,71 +2438,63 @@ void CMapIMG::getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dic
 
             if(c)
             {
-                if(line->labels.size())
+                if(line.labels.size())
                 {
-                    dict.insert(tr("Area"), line->labels.join(" ").simplified());
+                    dict.insert(tr("Area"), line.labels.join(" ").simplified());
                 }
                 else
                 {
                     if(selectedLanguage != NOIDX)
                     {
-                        if(polygonProperties[line->type].strings[selectedLanguage].size())
+                        if(polygonProperties[line.type].strings[selectedLanguage].size())
                         {
-                            dict.insert(tr("Area"), polygonProperties[line->type].strings[selectedLanguage]);
+                            dict.insert(tr("Area"), polygonProperties[line.type].strings[selectedLanguage]);
                         }
                     }
                     else
                     {
-                        if(polygonProperties[line->type].strings[0].size())
+                        if(polygonProperties[line.type].strings[0].size())
                         {
-                            dict.insert(tr("Area"), polygonProperties[line->type].strings[0]);
+                            dict.insert(tr("Area"), polygonProperties[line.type].strings[0]);
                         }
                     }
                 }
             }
         }
-        ++line;
     }
 }
 
 
 static qreal getDistance(const QPolygonF& line, const QPointF& pt, qreal threshold)
 {
-    int i = 0;                   // index into poly line
-    int len;                     // number of points in line
-    QPointF p1, p2;               // the two points of the polyline close to pt
-    qreal dx,dy;                // delta x and y defined by p1 and p2
-    qreal d_p1_p2;              // distance between p1 and p2
-    qreal u;                    // ratio u the tangent point will divide d_p1_p2
-    qreal x,y;                  // coord. (x,y) of the point on line defined by [p1,p2] close to pt
-    qreal distance;             // the distance to the polyline
-
     qreal d = threshold + 1;
 
-    len = line.size();
+    const int len = line.size();
     // see http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/
-    for(i=1; i<len; ++i)
+    for(int i=1; i<len; ++i)
     {
-        p1 = line[i-1];
-        p2 = line[i];
+        const QPointF &p1 = line[i-1];
+        const QPointF &p2 = line[i];
 
-        dx = p2.x() - p1.x();
-        dy = p2.y() - p1.y();
+        qreal dx = p2.x() - p1.x();
+        qreal dy = p2.y() - p1.y();
 
-        d_p1_p2 = qSqrt(dx * dx + dy * dy);
+        // distance between p1 and p2
+        qreal d_p1_p2 = qSqrt(dx * dx + dy * dy);
 
-        u = ((pt.x() - p1.x()) * dx + (pt.y() - p1.y()) * dy) / (d_p1_p2 * d_p1_p2);
+        // ratio u the tangent point will divide d_p1_p2
+        qreal u = ((pt.x() - p1.x()) * dx + (pt.y() - p1.y()) * dy) / (d_p1_p2 * d_p1_p2);
 
         if(u < 0.0 || u > 1.0)
         {
             continue;
         }
 
-        x = p1.x() + u * dx;
-        y = p1.y() + u * dy;
-
-        distance = qSqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
+        // coord. (x,y) of the point on line defined by [p1,p2] close to pt
+        qreal x = p1.x() + u * dx;
+        qreal y = p1.y() + u * dy;
 
+        qreal distance = qSqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
         if(distance < threshold)
         {
             d = threshold = distance;
@@ -2825,10 +2505,9 @@ static qreal getDistance(const QPolygonF& line, const QPointF& pt, qreal thresho
 }
 
 
-
 bool CMapIMG::findPolylineCloseBy(const QPointF& pt1, const QPointF& pt2, qint32 threshold, QPolygonF& polyline) /* override */
 {
-    foreach(const CGarminPolygon &line, polylines)
+    for(const CGarminPolygon &line : polylines)
     {
         if(line.pixel.size() < 2)
         {
diff --git a/src/map/CMapIMG.h b/src/map/CMapIMG.h
index 00ebc8b..0e98e85 100644
--- a/src/map/CMapIMG.h
+++ b/src/map/CMapIMG.h
@@ -49,50 +49,33 @@ public:
     /// subfile part (TRE, RGN, ...) location information
     struct subfile_part_t
     {
-        subfile_part_t() : offset(0), size(0)
-        {
-        }
-        /// file offset of subfile part
-        quint32 offset;
-        /// size of the subfile part
-        quint32 size;
+        quint32 offset = 0; //< file offset of subfile part
+        quint32 size   = 0; //< size of the subfile part
     };
 
     /// subdivision  information
     struct subdiv_desc_t
     {
         quint32 n;
-        /// section of next level
-        quint16 next;
-        /// end of section group
-        bool terminate;
-        /// offset into the subfile's RGN part
-        quint32 rgn_start;
-        /// end of section in RGN part (last offset = rgn_end - 1)
-        quint32 rgn_end;
-
-        /// there are points stored in the RGN subsection
-        bool hasPoints;
-        /// there are indexd points stored in the RGN subsection
-        bool hasIdxPoints;
-        /// there are polylines stored in the RGN subsection
-        bool hasPolylines;
-        /// there are polygons stored in the RGN subsection
-        bool hasPolygons;
-
-        /// the center longitude of the area covered by this subdivision
-        qint32 iCenterLng;
-        /// the center latitude of the area covered by this subdivision
-        qint32 iCenterLat;
-
-        /// north boundary of area covered by this subsection []
-        qreal north;
-        /// east boundary of area covered by this subsection []
-        qreal east;
-        /// south boundary of area covered by this subsection []
-        qreal south;
-        /// west boundary of area covered by this subsection []
-        qreal west;
+
+        quint16 next;      //< section of next level
+        bool terminate;    //< end of section group
+        quint32 rgn_start; //< offset into the subfile's RGN part
+        quint32 rgn_end;   //< end of section in RGN part (last offset = rgn_end - 1)
+
+
+        bool hasPoints;    //< there are points stored in the RGN subsection
+        bool hasIdxPoints; //< there are indexd points stored in the RGN subsection
+        bool hasPolylines; //< there are polylines stored in the RGN subsection
+        bool hasPolygons;  //< there are polygons stored in the RGN subsection
+
+        qint32 iCenterLng; //< the center longitude of the area covered by this subdivision
+        qint32 iCenterLat; //< the center latitude  of the area covered by this subdivision
+
+        qreal north; //< north boundary of area covered by this subsection []
+        qreal east;  //< east  boundary of area covered by this subsection []
+        qreal south; //< south boundary of area covered by this subsection []
+        qreal west;  //< west  boundary of area covered by this subsection []
 
         /// area in meter coordinates covered by this subdivision []
         QRectF area;
@@ -112,23 +95,15 @@ public:
 
     struct subfile_desc_t
     {
-        subfile_desc_t() : north(0.0), east(0.0), south(0.0), west(0.0), isTransparent(false), strtbl(0)
-        {
-        }
-
         /// the name of the subfile (not really needed)
         QString name;
         /// location information of all parts
         QMap<QString,subfile_part_t> parts;
 
-        /// north boundary of area covered by this subfile [rad]
-        qreal north;
-        /// east boundary of area covered by this subfile [rad]
-        qreal east;
-        /// south boundary of area covered by this subfile [rad]
-        qreal south;
-        /// west boundary of area covered by this subfile [rad]
-        qreal west;
+        qreal north = 0.0; //< north boundary of area covered by this subfile [rad]
+        qreal east  = 0.0; //< east  boundary of area covered by this subfile [rad]
+        qreal south = 0.0; //< south boundary of area covered by this subfile [rad]
+        qreal west  = 0.0; //< west  boundary of area covered by this subfile [rad]
 
         /// area in [] covered by this subfile
         QRectF area;
@@ -138,17 +113,16 @@ public:
         /// used maplevels
         QVector<maplevel_t> maplevels;
         /// bit 1 of POI_flags (TRE header @ 0x3F)
-        bool isTransparent;
+        bool isTransparent = false;
         /// object to manage the string tables
-        IGarminStrTbl * strtbl;
+        IGarminStrTbl * strtbl = nullptr;
     };
 
     CMapIMG(const QString &filename, CMapDraw *parent);
-    virtual ~CMapIMG();
+    virtual ~CMapIMG() = default;
 
     void draw(IDrawContext::buffer_t& buf) override;
 
-    void getInfo(const QPoint& px, QString& str) override;
     void getToolTip(const QPoint& px, QString& infotext) override;
 
     /**
@@ -178,18 +152,14 @@ private:
     };
     struct strlbl_t
     {
-        strlbl_t() : type(CGarminTyp::eStandard)
-        {
-        }
-
         QPoint pt;
         QRect rect;
         QString str;
-        CGarminTyp::label_type_e type;
+        CGarminTyp::label_type_e type = CGarminTyp::eStandard;
     };
 
 
-    quint8 scale2bits(const QPointF &scale);
+    static quint8 scale2bits(const QPointF &scale);
     void setupTyp();
     void readBasics();
     void readSubfileBasics(subfile_desc_t& subfile, CFileExt &file);
@@ -197,6 +167,8 @@ private:
     void readFile(CFileExt& file, quint32 offset, quint32 size, QByteArray& data);
     void loadVisibleData(bool fast, polytype_t& polygons, polytype_t& polylines, pointtype_t& points, pointtype_t& pois, unsigned level, const QRectF& viewport,QPainter& p);
     void loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStrTbl * strtbl, const QByteArray& rgndata, bool fast, const QRectF& viewport, polytype_t& polylines, polytype_t& polygons, pointtype_t& points, pointtype_t& pois);
+    bool intersectsWithExistingLabel(const QRect &rect) const;
+    void addLabel(const CGarminPoint &pt, const QRect &rect, CGarminTyp::label_type_e type);
     void drawPolygons(QPainter& p, polytype_t& lines);
     void drawPolylines(QPainter& p, polytype_t& lines, const QPointF &scale);
     void drawPoints(QPainter& p, pointtype_t& pts, QVector<QRectF> &rectPois);
@@ -209,8 +181,7 @@ private:
 
     void collectText(const CGarminPolygon& item, const QPolygonF& line, const QFont& font, const QFontMetricsF& metrics, qint32 lineWidth);
 
-    void getInfoPoints(const QPoint& pt, QMultiMap<QString, QString>& dict);
-    void getInfoPois(const QPoint& pt, QMultiMap<QString, QString>& dict);
+    void getInfoPoints(const pointtype_t &points, const QPoint& pt, QMultiMap<QString, QString>& dict);
     void getInfoPolylines(const QPoint& pt, QMultiMap<QString, QString>& dict);
     void getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dict);
 
@@ -422,37 +393,6 @@ private:
         quint32 net3_length;     ///< 0x0000002B .. 0x0000002E
     };
 
-    struct hdr_dem_t : public hdr_subfile_part_t
-    {
-        quint32 dem_flags;       ///< 0x00000015 .. 0x00000018
-        quint16 levels;          ///< 0x00000019 .. 0x0000001A
-        quint8 byte0x0000001B_0x0000001E[4];
-        quint16 blk3_size;       ///< 0x0000001f .. 0x00000020
-        quint32 blk3_offset;     ///< 0x00000021 .. 0x00000024
-    };
-
-    struct dem_level_t
-    {
-        quint16 index;
-        quint32 nPixelPerTileX;
-        quint32 nPixelPerTileY;
-        quint32 Unknown1;
-        quint32 Unknown2;
-        quint16 Unknown3;
-        quint32 nTilesX;
-        quint32 nTilesY;
-        quint16 format;
-        quint16 blk1_size;
-        quint32 blk1_offset;
-        quint32 blk2_offset;
-        quint32 westernBound;
-        quint32 northernBound;
-        quint32 PixelPerMeterX;
-        quint32 PixelPerMeterY;
-        quint16 minHeight;
-        quint16 maxHeight;
-    };
-
 #define TRE_MAP_LEVEL(r) ((r)->zoom & 0x0f)
 #define TRE_MAP_INHER(r) (((r)->zoom & 0x80) != 0)
 
@@ -557,7 +497,7 @@ private:
 
     struct textpath_t
     {
-        //            QPainterPath    path;
+        // QPainterPath path;
         QPolygonF polyline;
         QString text;
         QFont font;
diff --git a/src/map/CMapJNX.cpp b/src/map/CMapJNX.cpp
index 3fb587e..b031f8d 100644
--- a/src/map/CMapJNX.cpp
+++ b/src/map/CMapJNX.cpp
@@ -306,7 +306,7 @@ void CMapJNX::draw(IDrawContext::buffer_t& buf) /* override */
     p.setOpacity(getOpacity()/100.0);
     p.translate(-pp);
 
-    foreach(const file_t &mapFile, files)
+    for(const file_t &mapFile : files)
     {
         if(!viewport.intersects(mapFile.bbox))
         {
diff --git a/src/map/CMapPathSetup.cpp b/src/map/CMapPathSetup.cpp
index 4709d0d..bfc0c9b 100644
--- a/src/map/CMapPathSetup.cpp
+++ b/src/map/CMapPathSetup.cpp
@@ -35,7 +35,7 @@ CMapPathSetup::CMapPathSetup(QStringList &paths, QString& pathCache)
     connect(listWidget,  &QListWidget::itemSelectionChanged, this, &CMapPathSetup::slotItemSelectionChanged);
     connect(pushMapHonk, &QPushButton::clicked,              this, &CMapPathSetup::slotMapHonk);
 
-    foreach(const QString &path, paths)
+    for(const QString &path : paths)
     {
         QListWidgetItem * item = new QListWidgetItem(listWidget);
         item->setText(path);
diff --git a/src/map/CMapRMAP.cpp b/src/map/CMapRMAP.cpp
index 321caca..f1446ff 100644
--- a/src/map/CMapRMAP.cpp
+++ b/src/map/CMapRMAP.cpp
@@ -117,7 +117,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
     QString datum;
     QStringList lines = QString(charbuf).split("\r\n");
 
-    foreach(const QString &line, lines)
+    for(const QString &line : lines)
     {
 //        qDebug() << line;
         if(line.startsWith("Version="))
diff --git a/src/map/CMapTMS.cpp b/src/map/CMapTMS.cpp
index e457187..1cf1104 100644
--- a/src/map/CMapTMS.cpp
+++ b/src/map/CMapTMS.cpp
@@ -186,7 +186,7 @@ void CMapTMS::getLayers(QListWidget& list) /* override */
     }
 
     int i = 0;
-    foreach(const layer_t &layer, layers)
+    for(const layer_t &layer : layers)
     {
         QListWidgetItem * item = new QListWidgetItem(layer.title, &list);
         item->setCheckState(layer.enabled ? Qt::Checked : Qt::Unchecked);
@@ -239,7 +239,7 @@ void CMapTMS::loadConfig(QSettings& cfg)
 
     // enable layers stored in configuration
     enabled = cfg.value("enabledLayers", enabled).toStringList();
-    foreach(const QString &str, enabled)
+    for(const QString &str : enabled)
     {
         int idx = str.toInt();
         if(idx < layers.size())
@@ -271,7 +271,7 @@ void CMapTMS::slotQueueChanged()
 
             QNetworkRequest request;
             request.setUrl(url);
-            foreach(const rawHeaderItem_t &item, rawHeaderItems)
+            for(const rawHeaderItem_t &item : rawHeaderItems)
             {
                 request.setRawHeader(item.name.toLatin1(), item.value.toLatin1());
             }
@@ -460,7 +460,7 @@ void CMapTMS::draw(IDrawContext::buffer_t& buf) /* override */
     }
 
     // draw layers
-    foreach(const layer_t &layer, layers)
+    for(const layer_t &layer : layers)
     {
         if(!layer.enabled)
         {
diff --git a/src/map/CMapVRT.cpp b/src/map/CMapVRT.cpp
index 240199e..a6df58a 100644
--- a/src/map/CMapVRT.cpp
+++ b/src/map/CMapVRT.cpp
@@ -384,7 +384,6 @@ void CMapVRT::draw(IDrawContext::buffer_t& buf) /* override */
 
                             for (offset = 0; offset < sizeof(testPix) && *(((quint8 *)&testPix) + offset) != pbandColour; offset++)
                             {
-                                ;
                             }
                             if(offset < sizeof(testPix))
                             {
diff --git a/src/map/CMapWMTS.cpp b/src/map/CMapWMTS.cpp
index e6fb58c..628fb14 100644
--- a/src/map/CMapWMTS.cpp
+++ b/src/map/CMapWMTS.cpp
@@ -212,7 +212,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
         free(ptr1);
         free(ptr2);
 
-        if(tileset.pjsrc == 0)
+        if(tileset.pjsrc == nullptr)
         {
             QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("No georeference information found."));
             return;
@@ -271,7 +271,7 @@ void CMapWMTS::getLayers(QListWidget& list)
     }
 
     int i = 0;
-    foreach(const layer_t &layer, layers)
+    for(const layer_t &layer : layers)
     {
         QListWidgetItem * item = new QListWidgetItem(layer.title, &list);
         item->setCheckState(layer.enabled ? Qt::Checked : Qt::Unchecked);
@@ -323,7 +323,7 @@ void CMapWMTS::loadConfig(QSettings& cfg) /* override */
 
     // enable layers stored in configuration
     enabled = cfg.value("enabledLayers", enabled).toStringList();
-    foreach(const QString &str, enabled)
+    for(const QString &str : enabled)
     {
         int idx = str.toInt();
         if(idx < layers.size())
@@ -502,7 +502,7 @@ void CMapWMTS::draw(IDrawContext::buffer_t& buf) /* override */
     QRectF viewport(QPointF(x1,y1) * RAD_TO_DEG, QPointF(x2,y2) * RAD_TO_DEG);
 
     // draw layers
-    foreach(const layer_t &layer, layers)
+    for(const layer_t &layer : layers)
     {
         if(!layer.boundingBox.intersects(viewport) || !layer.enabled)
         {
@@ -529,7 +529,7 @@ void CMapWMTS::draw(IDrawContext::buffer_t& buf) /* override */
         QString tileMatrixId;
         QPointF s1 = (pt2 - pt1)/QPointF(buf.image.width(), buf.image.height());
         qreal d = NOFLOAT;
-        foreach(const QString &key, tileset.tilematrix.keys())
+        for(const QString &key : tileset.tilematrix.keys())
         {
             const tilematrix_t& tilematrix = tileset.tilematrix[key];
             qreal s2 = tilematrix.scale * 0.28e-3;
diff --git a/src/map/IMap.cpp b/src/map/IMap.cpp
index 8716b39..f194acc 100644
--- a/src/map/IMap.cpp
+++ b/src/map/IMap.cpp
@@ -80,7 +80,7 @@ IMapProp *IMap::getSetup()
 
 void IMap::convertRad2M(QPointF &p) const
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
@@ -89,7 +89,7 @@ void IMap::convertRad2M(QPointF &p) const
 
 void IMap::convertM2Rad(QPointF &p) const
 {
-    if(pjsrc == 0)
+    if(pjsrc == nullptr)
     {
         return;
     }
@@ -97,7 +97,7 @@ void IMap::convertM2Rad(QPointF &p) const
 }
 
 
-void IMap::drawTile(QImage& img, QPolygonF& l, QPainter& p)
+void IMap::drawTile(const QImage& img, QPolygonF& l, QPainter& p)
 {
     map->convertRad2Px(l);
 
diff --git a/src/map/IMap.h b/src/map/IMap.h
index 774147a..5bcafbf 100644
--- a/src/map/IMap.h
+++ b/src/map/IMap.h
@@ -203,7 +203,7 @@ protected:
        @param l     a 4 point polygon to fit the tile in
        @param p     the QPainter used to paint the tile
      */
-    void drawTile(QImage& img, QPolygonF& l, QPainter& p);
+    void drawTile(const QImage& img, QPolygonF& l, QPainter& p);
 
     /// the drawcontext this map belongs to
     CMapDraw * map;
@@ -213,12 +213,12 @@ protected:
         Has to be set by subclass. Destruction has to be
         handled by subclass.
      */
-    projPJ pjsrc = 0;
+    projPJ pjsrc = nullptr;
     /// target projection
     /**
         Is set by IMap() to WGS84. Will be freed by ~IMap()
      */
-    projPJ pjtar = 0;
+    projPJ pjtar = nullptr;
 
     /**
        @brief True if map was loaded successfully
diff --git a/src/map/IMapList.ui b/src/map/IMapList.ui
index 69b51e6..72be194 100644
--- a/src/map/IMapList.ui
+++ b/src/map/IMapList.ui
@@ -100,7 +100,7 @@
        <item>
         <widget class="QLabel" name="labelHelpFillMapList">
          <property name="text">
-          <string>To add maps use File->Setup Map Paths. </string>
+          <string>To add maps use <b>File->Setup Map Paths</b>. </string>
          </property>
          <property name="alignment">
           <set>Qt::AlignJustify|Qt::AlignVCenter</set>
diff --git a/src/map/cache/CDiskCache.cpp b/src/map/cache/CDiskCache.cpp
index b9fdc1a..045a7e4 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/src/map/cache/CDiskCache.cpp
@@ -30,7 +30,7 @@ CDiskCache::CDiskCache(const QString &path, qint32 size, qint32 days, QObject *
 
     dir.mkpath(dir.path());
     QFileInfoList files = dir.entryInfoList(QStringList("*.png"), QDir::Files);
-    foreach(const QFileInfo &fileinfo, files)
+    for(const QFileInfo &fileinfo : files)
     {
         QString hash    = fileinfo.baseName();
         table[hash]     = fileinfo.fileName();
@@ -116,7 +116,7 @@ void CDiskCache::slotCleanup()
     qint32 maxSize      = size * 1024 * 1024;
     qint32 tmpSize      = 0;
     // expire old files and calculate cache size
-    foreach(const QFileInfo &fileinfo, files)
+    for(const QFileInfo &fileinfo : files)
     {
         if(fileinfo.lastModified().daysTo(now) > days)
         {
@@ -136,7 +136,7 @@ void CDiskCache::slotCleanup()
     {
         files = dir.entryInfoList(QStringList("*.png"), QDir::Files, QDir::Time|QDir::Reversed);
         // if cache is still too large remove oldest files
-        foreach(const QFileInfo &fileinfo, files)
+        for(const QFileInfo &fileinfo : files)
         {
             QString hash = fileinfo.baseName();
             table.remove(hash);
diff --git a/src/map/garmin/CGarminPoint.cpp b/src/map/garmin/CGarminPoint.cpp
index 5cd6603..d13171b 100644
--- a/src/map/garmin/CGarminPoint.cpp
+++ b/src/map/garmin/CGarminPoint.cpp
@@ -25,34 +25,31 @@
 #include "CGarminPoint.h"
 #include "Garmin.h"
 #include "helpers/Platform.h"
+#include "units/IUnit.h"
 
 #include <QtCore>
 
 
 quint32 CGarminPoint::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shift, const quint8 * pData)
 {
-    qint16 dLng, dLat;
-
-    type        = (quint16)(*pData) << 8;
+    type       = (quint16)(*pData) << 8;
 
     ++pData;
 
-    lbl_ptr     = gar_ptr_load(uint24_t, pData);
-    hasSubType  = lbl_ptr & 0x00800000;
-    isLbl6      = lbl_ptr & 0x00400000;
-    lbl_ptr     = lbl_ptr & 0x003FFFFF;
+    lbl_ptr    = gar_ptr_load(uint24_t, pData);
+    hasSubType = lbl_ptr & 0x00800000;
+    isLbl6     = lbl_ptr & 0x00400000;
+    lbl_ptr    = lbl_ptr & 0x003FFFFF;
 
     pData += 3;
 
-    dLng = gar_ptr_load(int16_t, pData);
+    qint16 dLng = gar_ptr_load(int16_t, pData);
     pData += 2;
-    dLat = gar_ptr_load(int16_t, pData);
+    qint16 dLat = gar_ptr_load(int16_t, pData);
     pData += 2;
 
-    qint32 x1,y1;
-
-    x1 = ((qint32)dLng << shift) + iCenterLon;
-    y1 = ((qint32)dLat << shift) + iCenterLat;
+    qint32 x1 = ((qint32)dLng << shift) + iCenterLon;
+    qint32 y1 = ((qint32)dLat << shift) + iCenterLat;
     pos = QPointF(GARMIN_RAD(x1),GARMIN_RAD(y1));
 
 #ifdef DEBUG_SHOW_POINTS
@@ -71,7 +68,6 @@ quint32 CGarminPoint::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shift
 
 quint32 CGarminPoint::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 shift, const quint8 * pData, const quint8 * pEnd)
 {
-    qint16 dLng, dLat;
     quint32 byte_size = 6;
     quint8 subtype;
 
@@ -87,9 +83,9 @@ quint32 CGarminPoint::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 shif
         byte_size += 1;
     }
 
-    dLng = gar_ptr_load(int16_t, pData);
+    qint16 dLng = gar_ptr_load(int16_t, pData);
     pData += 2;
-    dLat = gar_ptr_load(int16_t, pData);
+    qint16 dLat = gar_ptr_load(int16_t, pData);
     pData += 2;
 
     qint32 x1,y1;
@@ -108,3 +104,37 @@ quint32 CGarminPoint::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 shif
 
     return byte_size;
 }
+
+QString CGarminPoint::getLabelText() const
+{
+    QString str;
+    if(!labels.isEmpty())
+    {
+        if((type == 0x6200) || (type == 0x6300))
+        {
+            QString unit;
+            QString val = labels[0];
+            IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
+            str = QString("%1 %2").arg(val).arg(unit);
+        }
+        else if(type == 0x6616) //669 DAV
+        {
+            if(labels.size() > 1)
+            {
+                QString unit;
+                QString val = labels[1];
+                IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
+                str = QString("%1 %2 %3").arg(labels[0]).arg(val).arg(unit);
+            }
+            else
+            {
+                str = labels[0];
+            }
+        }
+        else
+        {
+            str = labels.join(" ");
+        }
+    }
+    return str;
+}
diff --git a/src/map/garmin/CGarminPoint.h b/src/map/garmin/CGarminPoint.h
index 9f6f9e6..38b4c45 100644
--- a/src/map/garmin/CGarminPoint.h
+++ b/src/map/garmin/CGarminPoint.h
@@ -40,6 +40,13 @@ public:
     quint32 decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shift, const quint8 * pData);
     quint32 decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 shift, const quint8 * pData, const quint8 * pEnd);
 
+    QString getLabelText() const;
+
+    bool hasLabel() const
+    {
+        return !labels.isEmpty();
+    }
+
     quint32 type = 0;
     bool isLbl6 = false;
     bool hasSubType = false;
diff --git a/src/map/garmin/CGarminPolygon.cpp b/src/map/garmin/CGarminPolygon.cpp
index 34b5cbe..c6d5227 100644
--- a/src/map/garmin/CGarminPolygon.cpp
+++ b/src/map/garmin/CGarminPolygon.cpp
@@ -25,6 +25,7 @@
 #include "CGarminPolygon.h"
 #include "Garmin.h"
 #include "helpers/Platform.h"
+#include "units/IUnit.h"
 
 #include <assert.h>
 
@@ -97,10 +98,10 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
         bit 22      use extra bit for coordinates
         bit 23      use label data of NET section
      */
-    lbl_info    = gar_ptr_load(uint24_t, pData);
-    lbl_in_NET  = lbl_info & 0x800000;
-    extra_bit   = lbl_info & 0x400000;
-    lbl_info    = lbl_info & 0x3FFFFF;
+    lbl_info   = gar_ptr_load(uint24_t, pData);
+    lbl_in_NET = lbl_info & 0x800000;
+    extra_bit  = lbl_info & 0x400000;
+    lbl_info   = lbl_info & 0x3FFFFF;
 
     pData += 3;
 
@@ -139,7 +140,6 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
         bit 4..7    base bits latitude
      */
     bs_info = *pData++;
-    ;
 
     //if(extra_bit) qWarning("extrabit");
 
@@ -227,7 +227,6 @@ quint32 CGarminPolygon::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 sh
 
     type        = *pData++;
     subtype     = *pData++;
-    ;
 
     type        = 0x10000 + (quint16(type) << 8) + (subtype & 0x1f);
     hasV2Label  = subtype & 0x20;
@@ -401,6 +400,32 @@ void CGarminPolygon::bits_per_coord(quint8 base, quint8 bfirst, quint32& bx, qui
     }
 }
 
+QString CGarminPolygon::getLabelText() const
+{
+    QString str;
+
+    switch(type)
+    {
+    case 0x23: //< "Minor depth contour"
+    case 0x20: //< "Minor land contour"
+    case 0x24: //< "Intermediate depth contour"
+    case 0x21: //< "Intermediate land contour"
+    case 0x25: //< "Major depth contour"
+    case 0x22: //< "Major land contour"
+    {
+        QString unit;
+        QString val = labels[0];
+        IUnit::self().meter2elevation(val.toFloat() / 3.28084f, val, unit);
+        str = QString("%1 %2").arg(val).arg(unit);
+    }
+    break;
+
+    default:
+        str = labels.join(" ").simplified();
+    }
+
+    return str;
+}
 
 // extract bits per coordinate
 int CGarminPolygon::bits_per_coord(quint8 base, bool is_signed)
diff --git a/src/map/garmin/CGarminPolygon.h b/src/map/garmin/CGarminPolygon.h
index a1f809b..5e0288c 100644
--- a/src/map/garmin/CGarminPolygon.h
+++ b/src/map/garmin/CGarminPolygon.h
@@ -44,6 +44,13 @@ public:
     quint32 decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shift, bool line, const quint8 * pData, const quint8 * pEnd);
     quint32 decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 shift, bool line, const quint8 * pData, const quint8 * pEnd);
 
+    QString getLabelText() const;
+
+    bool hasLabel() const
+    {
+        return !labels.isEmpty();
+    }
+
     quint32 type = 0;
     /// direction of line (polyline, only)
     bool direction = false;
@@ -88,28 +95,18 @@ private:
     quint64 reg;
     /// the data stream to get data from
     const quint8 * pData;
-    /// bytes left in stream
-    quint32 bytes;
-    /// bitmask x coord.
-    quint32 xmask;
-    /// bitmask y coord.
-    quint32 ymask;
-    /// sign bit for x value
-    qint32 xsign;
-    /// sign bit for y value
-    qint32 ysign;
-    /// sign bit * 2 for x value
-    qint32 xsign2;
-    /// sign bit * 2 for y value
-    qint32 ysign2;
-    /// total bits in register
-    quint8 bits;
-    /// bits per x coord.
-    quint8 bits_per_x;
-    /// bits per y   coord.
-    quint8 bits_per_y;
-    /// bits per coord.
-    quint8 bits_per_coord;
+
+    quint32 bytes;         //< bytes left in stream
+    quint32 xmask;         //< bitmask x coord.
+    quint32 ymask;         //< bitmask y coord.
+    qint32 xsign;          //< sign bit for x value
+    qint32 ysign;          //< sign bit for y value
+    qint32 xsign2;         //< sign bit * 2 for x value
+    qint32 ysign2;         //< sign bit * 2 for y value
+    quint8 bits;           //< total bits in register
+    quint8 bits_per_x;     //< bits per x coord.
+    quint8 bits_per_y;     //< bits per y coord.
+    quint8 bits_per_coord; //< bits per coord.
 
     sign_info_t& sinfo;
 
diff --git a/src/mouse/CMouseDummy.cpp b/src/mouse/CMouseDummy.cpp
index 22f49af..39e40c1 100644
--- a/src/mouse/CMouseDummy.cpp
+++ b/src/mouse/CMouseDummy.cpp
@@ -19,7 +19,7 @@
 #include "CMouseDummy.h"
 
 CMouseDummy::CMouseDummy()
-    : IMouse(0,0)
+    : IMouse(nullptr, nullptr)
 {
     cursor = QCursor(QPixmap(":/cursors/cursorArrow.png"),0,0);
 }
diff --git a/src/mouse/CMouseEditArea.cpp b/src/mouse/CMouseEditArea.cpp
index ead7069..d8d3541 100644
--- a/src/mouse/CMouseEditArea.cpp
+++ b/src/mouse/CMouseEditArea.cpp
@@ -56,7 +56,7 @@ void CMouseEditArea::drawLine(const QPolygonF &l, const QColor color, int width,
     p.drawPolygon(l);
 }
 
-IGisLine * CMouseEditArea::getGisLine()
+IGisLine * CMouseEditArea::getGisLine() const
 {
     return dynamic_cast<CGisItemOvlArea*>(CGisWidget::self().getItemByKey(key));
 }
diff --git a/src/mouse/CMouseEditArea.h b/src/mouse/CMouseEditArea.h
index c68edcd..1366b03 100644
--- a/src/mouse/CMouseEditArea.h
+++ b/src/mouse/CMouseEditArea.h
@@ -42,7 +42,7 @@ protected slots:
 protected:
     void drawLine(const QPolygonF &l, const QColor color, int width, QPainter& p) override;
 
-    IGisLine * getGisLine() override;
+    IGisLine * getGisLine() const override;
 };
 
 #endif //CMOUSEEDITAREA_H
diff --git a/src/mouse/CMouseEditRte.cpp b/src/mouse/CMouseEditRte.cpp
index 10a2e20..5bda1e2 100644
--- a/src/mouse/CMouseEditRte.cpp
+++ b/src/mouse/CMouseEditRte.cpp
@@ -65,7 +65,7 @@ void CMouseEditRte::mousePressEvent(QMouseEvent * e)
     IMouseEditLine::mousePressEvent(e);
 }
 
-IGisLine * CMouseEditRte::getGisLine()
+IGisLine * CMouseEditRte::getGisLine() const
 {
     return dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
 }
diff --git a/src/mouse/CMouseEditRte.h b/src/mouse/CMouseEditRte.h
index c818665..888730b 100644
--- a/src/mouse/CMouseEditRte.h
+++ b/src/mouse/CMouseEditRte.h
@@ -39,9 +39,8 @@ protected slots:
     void slotCopyToNew()  override;
     void slotCopyToOrig() override;
 
-
 protected:
-    IGisLine* getGisLine() override;
+    IGisLine* getGisLine() const override;
 };
 
 #endif //CMOUSEEDITRTE_H
diff --git a/src/mouse/CMouseEditTrk.cpp b/src/mouse/CMouseEditTrk.cpp
index c7ae8c0..a4b2088 100644
--- a/src/mouse/CMouseEditTrk.cpp
+++ b/src/mouse/CMouseEditTrk.cpp
@@ -60,26 +60,26 @@ void CMouseEditTrk::mousePressEvent(QMouseEvent * e)
     IMouseEditLine::mousePressEvent(e);
 }
 
-IGisLine * CMouseEditTrk::getGisLine()
+IGisLine * CMouseEditTrk::getGisLine() const
 {
     return dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
 }
 
 void CMouseEditTrk::slotAbort()
 {
-    canvas->reportStatus(key.item,"");
+    canvas->reportStatus(key.item, "");
     IMouseEditLine::slotAbortEx(false);
 }
 
 void CMouseEditTrk::slotCopyToOrig()
 {
-    canvas->reportStatus(key.item,"");
+    canvas->reportStatus(key.item, "");
 
     if(!isNewLine)
     {
-        int res = QMessageBox::warning(canvas, tr("Warning!"), tr("This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently."), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
+        QMessageBox::StandardButton button = QMessageBox::warning(canvas, tr("Warning!"), tr("This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently."), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
 
-        if(res != QMessageBox::Ok)
+        if(button != QMessageBox::Ok)
         {
             return;
         }
@@ -122,7 +122,7 @@ void CMouseEditTrk::slotCopyToNew()
 
     CMainWindow::self().getElevationAt(points);
 
-    new CGisItemTrk(points,name, project, NOIDX);
+    new CGisItemTrk(points, name, project, NOIDX);
 
     canvas->resetMouse();
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
diff --git a/src/mouse/CMouseEditTrk.h b/src/mouse/CMouseEditTrk.h
index 024a404..e817591 100644
--- a/src/mouse/CMouseEditTrk.h
+++ b/src/mouse/CMouseEditTrk.h
@@ -40,7 +40,7 @@ protected slots:
 
 
 protected:
-    IGisLine* getGisLine() override;
+    IGisLine* getGisLine() const override;
     bool isNewLine = true;
 };
 
diff --git a/src/mouse/CMouseMoveWpt.cpp b/src/mouse/CMouseMoveWpt.cpp
index a72b056..d0d1ecb 100644
--- a/src/mouse/CMouseMoveWpt.cpp
+++ b/src/mouse/CMouseMoveWpt.cpp
@@ -32,35 +32,33 @@
 CMouseMoveWpt::CMouseMoveWpt(CGisItemWpt &wpt, CGisDraw * gis, CCanvas *parent)
     : IMouse(gis, parent)
 {
-    cursor      = QCursor(QPixmap(":/cursors/cursorMoveWpt.png"),0,0);
-    key         = wpt.getKey();
-    icon        = getWptIconByName(wpt.getIconName(), focus);
-    origPos     = wpt.getPosition() * DEG_TO_RAD;
+    cursor  = QCursor(QPixmap(":/cursors/cursorMoveWpt.png"), 0, 0);
+    key     = wpt.getKey();
+    icon    = getWptIconByName(wpt.getIconName(), focus);
+    origPos = wpt.getPosition() * DEG_TO_RAD;
 }
 
 CMouseMoveWpt::~CMouseMoveWpt()
 {
 }
 
-void CMouseMoveWpt::draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRect &rect)
+void CMouseMoveWpt::draw(QPainter& p, CCanvas::redraw_e, const QRect&)
 {
-    QString val, unit, str;
-    qreal d, a1 = 0, a2 = 0;
+    QString val, unit;
+    qreal a1 = 0, a2 = 0;
     QPointF p1 = origPos;
     QPointF p2 = newPos;
 
-    d = GPS_Math_Distance(p1.x(), p1.y(), p2.x(), p2.y(), a1, a2);
+    qreal d = GPS_Math_Distance(p1.x(), p1.y(), p2.x(), p2.y(), a1, a2);
     IUnit::self().meter2distance(d, val, unit);
-    str = QString("%1 %2, %3").arg(val).arg(unit).arg(a2, 0, 'f', 1);
+    const QString &str = QString("%1 %2, %3").arg(val).arg(unit).arg(a2, 0, 'f', 1);
 
     gis->convertRad2Px(p1);
     gis->convertRad2Px(p2);
 
-
     QPointF p11 = p1 + QPoint(17 * qCos((a1 - 90) * DEG_TO_RAD), 17 * qSin((a1 - 90) * DEG_TO_RAD));
     QPointF p22 = p2 + QPoint(21 * qCos((a2 + 90) * DEG_TO_RAD), 21 * qSin((a2 + 90) * DEG_TO_RAD));
 
-
     QPen pen(Qt::darkBlue, 3);
     pen.setCapStyle(Qt::RoundCap);
     pen.setJoinStyle(Qt::MiterJoin);
@@ -69,13 +67,13 @@ void CMouseMoveWpt::draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRec
     p.setBrush(Qt::NoBrush);
     p.drawEllipse(p1, 16, 16);
     p.drawEllipse(p2, 16, 16);
-    p.drawLine(p11,p22);
+    p.drawLine(p11, p22);
 
     p.save();
     p.translate(p22);
     p.rotate(a2 + 180);
     QPolygonF arrow;
-    arrow << QPointF(0,0) << QPointF(5, -20) << QPointF(0, -10) << QPointF(-5, -20);
+    arrow << QPointF(0, 0) << QPointF(5, -20) << QPointF(0, -10) << QPointF(-5, -20);
     p.setBrush(Qt::NoBrush);
     p.drawPolygon(arrow);
     p.restore();
@@ -90,7 +88,7 @@ void CMouseMoveWpt::slotPanCanvas()
 {
     IMouse::slotPanCanvas();
 
-    newPos  = point;
+    newPos = point;
     gis->convertPx2Rad(newPos);
 }
 
@@ -121,7 +119,7 @@ void CMouseMoveWpt::mousePressEvent(QMouseEvent * e)
 void CMouseMoveWpt::mouseMoveEvent(QMouseEvent * e)
 {
     point  = e->pos();
-    newPos  = point;
+    newPos = point;
     gis->convertPx2Rad(newPos);
 
     panCanvas(point);
@@ -129,10 +127,10 @@ void CMouseMoveWpt::mouseMoveEvent(QMouseEvent * e)
 
 void CMouseMoveWpt::mouseReleaseEvent(QMouseEvent *e)
 {
-    point  = e->pos();
+    point = e->pos();
 }
 
-void CMouseMoveWpt::wheelEvent(QWheelEvent * e)
+void CMouseMoveWpt::wheelEvent(QWheelEvent*)
 {
     canvas->update();
 }
diff --git a/src/mouse/CMouseNormal.cpp b/src/mouse/CMouseNormal.cpp
index 8d78a9d..8ae1dd0 100644
--- a/src/mouse/CMouseNormal.cpp
+++ b/src/mouse/CMouseNormal.cpp
@@ -36,11 +36,12 @@ CMouseNormal::CMouseNormal(CGisDraw *gis, CCanvas *canvas)
     screenUnclutter = new CScrOptUnclutter(this);
 
     menu = new QMenu(canvas);
-    menu->addAction(QIcon("://icons/32x32/AddWpt.png"), tr("Add Waypoint"), this, SLOT(slotAddWpt()));
-    menu->addAction(QIcon("://icons/32x32/AddTrk.png"), tr("Add Track"), this, SLOT(slotAddTrk()));
-    menu->addAction(QIcon("://icons/32x32/AddRte.png"), tr("Add Route"), this, SLOT(slotAddRte()));
-    menu->addAction(QIcon("://icons/32x32/AddArea.png"), tr("Add Area"), this, SLOT(slotAddArea()));
-
+    menu->addAction(QIcon("://icons/32x32/AddWpt.png"),  tr("Add Waypoint"), this, SLOT(slotAddWpt()));
+    menu->addAction(QIcon("://icons/32x32/AddTrk.png"),  tr("Add Track"),    this, SLOT(slotAddTrk()));
+    menu->addAction(QIcon("://icons/32x32/AddRte.png"),  tr("Add Route"),    this, SLOT(slotAddRte()));
+    menu->addAction(QIcon("://icons/32x32/AddArea.png"), tr("Add Area"),     this, SLOT(slotAddArea()));
+    menu->addSeparator();
+    menu->addAction(QIcon("://icons/32x32/SelectArea.png"), tr("Select Items On Map"), this, SLOT(slotSelectArea()));
     menu->addSeparator();
     menu->addAction(QIcon("://icons/32x32/Copy.png"), tr("Copy position"), this, SLOT(slotCopyPosition()));
     menu->addAction(QIcon("://icons/32x32/Copy.png"), tr("Copy position (Grid)"), this, SLOT(slotCopyPositionGrid()));
@@ -50,7 +51,7 @@ CMouseNormal::~CMouseNormal()
 {
 }
 
-void CMouseNormal::stopTracking()
+void CMouseNormal::stopTracking() const
 {
     const IGisItem::key_t& key = CGisItemTrk::getKeyUserFocus();
     if(!key.item.isEmpty())
@@ -158,7 +159,7 @@ void CMouseNormal::mouseReleaseEvent(QMouseEvent *e)
                 stateItemSel = eStateIdle;
 
                 IGisItem * item = CGisWidget::self().getItemByKey(screenUnclutter->getItemKey());
-                if(item)
+                if(nullptr != item)
                 {
                     item->treeWidget()->collapseAll();
                     item->treeWidget()->setCurrentItem(item);
@@ -211,9 +212,6 @@ void CMouseNormal::mouseReleaseEvent(QMouseEvent *e)
                 resetState();
                 break;
             }
-
-            default:
-                ;
             }
 
             canvas->update();
@@ -309,7 +307,7 @@ void CMouseNormal::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect
             break;
         }
 
-        foreach(IGisItem * item, items)
+        for(IGisItem * item : items)
         {
             item->drawHighlight(p);
             screenUnclutter->addItem(item);
@@ -347,34 +345,17 @@ void CMouseNormal::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect
 }
 
 
-void CMouseNormal::slotAddWpt()
+void CMouseNormal::slotAddWpt() const
 {
-    QString name;
-    QString icon;
     QPointF pt = point;
     gis->convertPx2Rad(pt);
     pt *= RAD_TO_DEG;
 
-    if(!CGisItemWpt::getNewWptData(pt, icon, name))
-    {
-        return;
-    }
-
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(nullptr == project)
-    {
-        return;
-    }
-
-    QMutexLocker lock(&IGisItem::mutexItems);
-    CGisItemWpt * wpt = new CGisItemWpt(pt, name, icon, project);
-    wpt->edit();
-
-
+    CGisWidget::self().addWptByPos(pt);
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
-void CMouseNormal::slotAddTrk()
+void CMouseNormal::slotAddTrk() const
 {
     QPointF pt = point;
     gis->convertPx2Rad(pt);
@@ -383,7 +364,7 @@ void CMouseNormal::slotAddTrk()
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
-void CMouseNormal::slotAddRte()
+void CMouseNormal::slotAddRte() const
 {
     QPointF pt = point;
     gis->convertPx2Rad(pt);
@@ -392,7 +373,7 @@ void CMouseNormal::slotAddRte()
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
-void CMouseNormal::slotAddArea()
+void CMouseNormal::slotAddArea() const
 {
     QPointF pt = point;
     gis->convertPx2Rad(pt);
@@ -401,7 +382,7 @@ void CMouseNormal::slotAddArea()
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
-void CMouseNormal::slotCopyPosition()
+void CMouseNormal::slotCopyPosition() const
 {
     QPointF pt = point;
     gis->convertPx2Rad(pt);
@@ -413,7 +394,7 @@ void CMouseNormal::slotCopyPosition()
     clipboard->setText(position);
 }
 
-void CMouseNormal::slotCopyPositionGrid()
+void CMouseNormal::slotCopyPositionGrid() const
 {
     QString position;
     QPointF pt = point;
@@ -424,3 +405,8 @@ void CMouseNormal::slotCopyPositionGrid()
     QClipboard *clipboard = QApplication::clipboard();
     clipboard->setText(position);
 }
+
+void CMouseNormal::slotSelectArea() const
+{
+    canvas->setMouseSelect();
+}
diff --git a/src/mouse/CMouseNormal.h b/src/mouse/CMouseNormal.h
index a5d227a..28a86f3 100644
--- a/src/mouse/CMouseNormal.h
+++ b/src/mouse/CMouseNormal.h
@@ -47,18 +47,19 @@ public:
     void keyPressEvent(QKeyEvent * e) override;
 
 private slots:
-    void slotAddWpt();
-    void slotAddTrk();
-    void slotAddRte();
-    void slotAddArea();
-    void slotCopyPosition();
-    void slotCopyPositionGrid();
+    void slotAddWpt()           const;
+    void slotAddTrk()           const;
+    void slotAddRte()           const;
+    void slotAddArea()          const;
+    void slotSelectArea()       const;
+    void slotCopyPosition()     const;
+    void slotCopyPositionGrid() const;
 
 private:
     bool setScreenOption(const QPoint& pt, IGisItem * item);
 
 protected:
-    void stopTracking();
+    void stopTracking() const;
     void resetState();
 
 
diff --git a/src/mouse/CMousePrint.cpp b/src/mouse/CMousePrint.cpp
index 0dd4904..9f278ca 100644
--- a/src/mouse/CMousePrint.cpp
+++ b/src/mouse/CMousePrint.cpp
@@ -18,301 +18,48 @@
 
 #include "gis/CGisDraw.h"
 #include "mouse/CMousePrint.h"
+#include "mouse/CScrOptPrint.h"
 #include "print/CPrintDialog.h"
 
 #include <QtWidgets>
 
 CMousePrint::CMousePrint(CGisDraw *gis, CCanvas *parent)
-    : IMouse(gis, parent)
+    : IMouseSelect(gis, parent)
 {
-    cursor      = QCursor(QPixmap("://cursors/cursorSave.png"),0,0);
+    cursor = QCursor(QPixmap("://cursors/cursorSave.png"),0,0);
 
-    canvas->reportStatus("CMousePrint", tr("<b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection."));
-}
-
-CMousePrint::~CMousePrint()
-{
-    canvas->reportStatus("CMousePrint", "");
-}
-
-void CMousePrint::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
-{
-    if(rectSelection.isNull())
-    {
-        return;
-    }
-
-    QPointF pt1 = rectSelection.topLeft();
-    QPointF pt2 = rectSelection.bottomRight();
-
-    gis->convertRad2Px(pt1);
-    gis->convertRad2Px(pt2);
-
-    QRectF rectSel(pt1,pt2);
-    QRectF rectScr = canvas->rect();
-
-    rectTopLeft.moveTopLeft(rectSel.topLeft());
-    rectTopRight.moveTopRight(rectSel.topRight());
-    rectBottomLeft.moveBottomLeft(rectSel.bottomLeft());
-    rectBottomRight.moveBottomRight(rectSel.bottomRight());
+    canvas->reportStatus("IMouseSelect", tr("<b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners."));
 
+    CScrOptPrint * scrOptPrint;
+    scrOpt = scrOptPrint = new CScrOptPrint(this);
 
-    QPainterPath path;
-    path.addRect(rectScr);
-    path.addRect(rectSel);
-
-    p.setPen(Qt::black);
-    p.setBrush(QColor(0,0,0,128));
-    p.drawPath(path);
-
-    p.setBrush(Qt::lightGray);
-    p.drawRect(rectTopLeft);
-    p.drawRect(rectTopRight);
-    p.drawRect(rectBottomLeft);
-    p.drawRect(rectBottomRight);
-
-    p.setBrush(Qt::red);
-    switch(corner)
-    {
-    case eCornerTopLeft:
-        p.drawRect(rectTopLeft);
-        break;
-
-    case eCornerTopRight:
-        p.drawRect(rectTopRight);
-        break;
-
-    case eCornerBottomLeft:
-        p.drawRect(rectBottomLeft);
-        break;
-
-    case eCornerBottomRight:
-        p.drawRect(rectBottomRight);
-        break;
-    }
-
-    if(rectSel.width() > 100 && rectSel.height() > 50)
-    {
-        rectPrintButton.moveCenter(rectSel.center() + QPointF(30,0));
-        p.setPen(corner == eCornerPrint ? QPen(Qt::red,3) : QPen(Qt::darkBlue,2));
-        p.setBrush(Qt::white);
-        p.drawRect(rectPrintButton.adjusted(-3,-3,3,3));
-        p.drawPixmap(rectPrintButton.topLeft(), QPixmap("://icons/48x48/Print.png"));
-
-        rectImageButton.moveCenter(rectSel.center() - QPointF(30,0));
-        p.setPen(corner == eCornerImage ? QPen(Qt::red,3) : QPen(Qt::darkBlue,2));
-        p.setBrush(Qt::white);
-        p.drawRect(rectImageButton.adjusted(-3,-3,3,3));
-        p.drawPixmap(rectImageButton.topLeft(), QPixmap("://icons/48x48/Save.png"));
-    }
+    connect(scrOptPrint->toolSave,  &QToolButton::clicked, this, &CMousePrint::slotSave);
+    connect(scrOptPrint->toolPrint, &QToolButton::clicked, this, &CMousePrint::slotPrint);
 }
 
-void CMousePrint::mousePressEvent(QMouseEvent * e)
+CMousePrint::~CMousePrint()
 {
-    e->accept();
-
-    canvas->reportStatus("CMousePrint", "");
-
-    if(e->button() == Qt::RightButton)
-    {
-        canvas->resetMouse();
-        canvas->update();
-    }
-    else if(e->button() == Qt::LeftButton)
-    {
-        switch(state)
-        {
-        case eStateIdle:
-        {
-            QPointF pos = e->pos();
-            gis->convertPx2Rad(pos);
-            rectSelection.setTopLeft(pos);
-            rectSelection.setBottomRight(pos);
-            posInitial = pos;
-            state = eStateInitial;
-            break;
-        }
-
-        case eStateMap:
-        {
-            if(corner != eCornerNone)
-            {
-                if(corner == eCornerPrint)
-                {
-                    CPrintDialog dlg(CPrintDialog::eTypePrint, rectSelection, canvas);
-                    dlg.exec();
-                    canvas->resetMouse();
-                    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
-                }
-                else if(corner == eCornerImage)
-                {
-                    CPrintDialog dlg(CPrintDialog::eTypeImage, rectSelection, canvas);
-                    dlg.exec();
-                    canvas->resetMouse();
-                    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
-                }
-                else
-                {
-                    state = eStateResize;
-                }
-            }
-            else
-            {
-                lastPos = e->pos();
-                state = eStateMapMoving;
-            }
-            break;
-        }
-        }
-    }
 }
 
-void CMousePrint::mouseMoveEvent(QMouseEvent * e)
+void CMousePrint::slotSave()
 {
-    e->accept();
-
-    switch(state)
-    {
-    case eStateInitial:
-    {
-        QPointF pos = e->pos();
-        gis->convertPx2Rad(pos);
-
-        if(pos.x() < posInitial.x())
-        {
-            rectSelection.setLeft(pos.x());
-        }
-        else
-        {
-            rectSelection.setRight(pos.x());
-        }
-
-        if(pos.y() < posInitial.y())
-        {
-            rectSelection.setBottom(pos.y());
-        }
-        else
-        {
-            rectSelection.setTop(pos.y());
-        }
-
-        canvas->update();
-        break;
-    }
-
-    case eStateMap:
-    {
-        corner_e _corner = corner;
-        QPoint pos = e->pos();
-        if(rectTopLeft.contains(pos))
-        {
-            offset = pos - rectTopLeft.topLeft();
-            corner = eCornerTopLeft;
-        }
-        else if(rectTopRight.contains(pos))
-        {
-            offset = pos - rectTopRight.topRight();
-            corner = eCornerTopRight;
-        }
-        else if(rectBottomLeft.contains(pos))
-        {
-            offset = pos - rectBottomLeft.bottomLeft();
-            corner = eCornerBottomLeft;
-        }
-        else if(rectBottomRight.contains(pos))
-        {
-            offset = pos - rectBottomRight.bottomRight();
-            corner = eCornerBottomRight;
-        }
-        else if(rectPrintButton.contains(pos))
-        {
-            corner = eCornerPrint;
-        }
-        else if(rectImageButton.contains(pos))
-        {
-            corner = eCornerImage;
-        }
-        else
-        {
-            corner = eCornerNone;
-        }
-
-        if(corner != _corner)
-        {
-            canvas->update();
-        }
-        break;
-    }
-
-    case eStateMapMoving:
-    {
-        QPoint pos = e->pos();
-
-        if(pos != lastPos)
-        {
-            QPoint delta = pos - lastPos;
-            canvas->moveMap(delta);
-            lastPos     = pos;
-        }
-        break;
-    }
-
-    case eStateResize:
-    {
-        QPointF pos = e->pos() - offset;
-        gis->convertPx2Rad(pos);
-        switch(corner)
-        {
-        case eCornerTopLeft:
-            rectSelection.setTopLeft(pos);
-            break;
+    CPrintDialog dlg(CPrintDialog::eTypeImage, rectSelection, canvas);
+    dlg.exec();
+    canvas->resetMouse();
+    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
 
-        case eCornerTopRight:
-            rectSelection.setTopRight(pos);
-            break;
-
-        case eCornerBottomLeft:
-            rectSelection.setBottomLeft(pos);
-            break;
-
-        case eCornerBottomRight:
-            rectSelection.setBottomRight(pos);
-            break;
-        }
-
-        canvas->update();
-        break;
-    }
-    }
+    canvas->resetMouse();
 }
 
-void CMousePrint::mouseReleaseEvent(QMouseEvent *e)
+void CMousePrint::slotPrint()
 {
-    e->accept();
-
-    if(!rectSelection.isNull())
-    {
-        QPointF pt1 = rectSelection.topLeft();
-        QPointF pt2 = rectSelection.bottomRight();
-
-        gis->convertRad2Px(pt1);
-        gis->convertRad2Px(pt2);
+    CPrintDialog dlg(CPrintDialog::eTypePrint, rectSelection, canvas);
+    dlg.exec();
+    canvas->resetMouse();
+    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
 
-        QRectF rectSel(pt1,pt2);
-
-        if(rectSel.width() < 40 || rectSel.height() < 40)
-        {
-            rectSelection = QRectF();
-        }
-    }
-
-    state = rectSelection.isNull() ? eStateIdle : eStateMap;
-
-    canvas->update();
+    canvas->resetMouse();
 }
 
-void CMousePrint::wheelEvent(QWheelEvent * e)
-{
-}
 
 
diff --git a/src/mouse/CMousePrint.h b/src/mouse/CMousePrint.h
index 08d6588..3b65c4b 100644
--- a/src/mouse/CMousePrint.h
+++ b/src/mouse/CMousePrint.h
@@ -19,60 +19,21 @@
 #ifndef CMOUSEPRINT_H
 #define CMOUSEPRINT_H
 
-#include "mouse/IMouse.h"
+#include "mouse/IMouseSelect.h"
 
 class CGisDraw;
 class CCanvas;
 
-class CMousePrint : public IMouse
+class CMousePrint : public IMouseSelect
 {
     Q_OBJECT
 public:
     CMousePrint(CGisDraw * gis, CCanvas * parent);
     virtual ~CMousePrint();
 
-    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override;
-    void mousePressEvent(QMouseEvent * e) override;
-    void mouseMoveEvent(QMouseEvent * e) override;
-    void mouseReleaseEvent(QMouseEvent *e) override;
-    void wheelEvent(QWheelEvent * e) override;
-
-private:
-    QPoint lastPos;
-    QPointF offset;
-    QPointF posInitial;
-
-    QRectF rectSelection;
-    QRectF rectTopLeft {0,0,20,20};
-    QRectF rectTopRight {0,0,20,20};
-    QRectF rectBottomLeft {0,0,20,20};
-    QRectF rectBottomRight {0,0,20,20};
-    QRectF rectPrintButton {0,0,48,48};
-    QRectF rectImageButton {0,0,48,48};
-
-    enum state_e
-    {
-        eStateIdle
-        ,eStateInitial
-        ,eStateMap
-        ,eStateMapMoving
-        ,eStateResize
-    };
-
-    state_e state = eStateIdle;
-
-    enum corner_e
-    {
-        eCornerNone
-        , eCornerTopLeft
-        , eCornerTopRight
-        , eCornerBottomLeft
-        , eCornerBottomRight
-        , eCornerPrint
-        , eCornerImage
-    };
-
-    corner_e corner = eCornerNone;
+private slots:
+    void slotSave();
+    void slotPrint();
 };
 
 #endif //CMOUSEPRINT_H
diff --git a/src/mouse/CMouseRangeTrk.h b/src/mouse/CMouseRangeTrk.h
index 6ebaffd..1f2388e 100644
--- a/src/mouse/CMouseRangeTrk.h
+++ b/src/mouse/CMouseRangeTrk.h
@@ -40,7 +40,7 @@ public:
     void mouseMoveEvent(QMouseEvent *e) override;
     void mouseReleaseEvent(QMouseEvent *e) override;
     void wheelEvent(QWheelEvent *e) override;
-    void keyPressEvent(QKeyEvent   *e) override;
+    void keyPressEvent(QKeyEvent *e) override;
 
 private slots:
     void slotHidePoints();
diff --git a/src/mouse/CMouseSelect.cpp b/src/mouse/CMouseSelect.cpp
new file mode 100644
index 0000000..0e8c9f0
--- /dev/null
+++ b/src/mouse/CMouseSelect.cpp
@@ -0,0 +1,155 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/CGisDraw.h"
+#include "gis/CGisWidget.h"
+#include "mouse/CMouseSelect.h"
+#include "mouse/CScrOptSelect.h"
+
+#include <QtWidgets>
+
+CMouseSelect::CMouseSelect(CGisDraw *gis, CCanvas *parent)
+    : IMouseSelect(gis, parent)
+{
+    cursor = QCursor(QPixmap("://cursors/cursorSelectArea.png"),0,0);
+
+    canvas->reportStatus("IMouseSelect", tr("<b>Select Items On Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners."));
+
+    CScrOptSelect * scrOptSelect;
+    scrOpt = scrOptSelect = new CScrOptSelect(this);
+
+    connect(scrOptSelect->toolCopy,         &QToolButton::clicked, this, &CMouseSelect::slotCopy);
+    connect(scrOptSelect->toolRoute,        &QToolButton::clicked, this, &CMouseSelect::slotRoute);
+    connect(scrOptSelect->toolCombineTracks, &QToolButton::clicked, this, &CMouseSelect::slotCombine);
+    connect(scrOptSelect->toolDelete,       &QToolButton::clicked, this, &CMouseSelect::slotDelete);
+}
+
+CMouseSelect::~CMouseSelect()
+{
+    canvas->reportStatus("CMouseSelect::Stat", "");
+}
+
+
+
+void CMouseSelect::findItems(QList<IGisItem*>& items)
+{
+    CScrOptSelect * scrOptSelect = dynamic_cast<CScrOptSelect*>((IScrOpt*)scrOpt);
+    IGisItem::selflags_t modeSelection = scrOptSelect->getModeSelection();
+
+    if((rectSelection == rectLastSel) && (modeSelection == modeLastSel))
+    {
+        if(!itemKeys.isEmpty())
+        {
+            CGisWidget::self().getItemsByKeys(itemKeys, items);
+        }
+    }
+    else
+    {
+        itemKeys.clear();
+
+        QRectF area;
+        rectRad2Px(rectSelection, area);
+        CGisWidget::self().getItemsByArea(area, modeSelection, items);
+
+        cntWpt = 0;
+        cntTrk = 0;
+        cntRte = 0;
+        cntOvl = 0;
+        for(IGisItem * item : items)
+        {
+            itemKeys << item->getKey();
+            switch(item->type())
+            {
+            case IGisItem::eTypeWpt:
+                cntWpt++;
+                break;
+
+            case IGisItem::eTypeTrk:
+                cntTrk++;
+                break;
+
+            case IGisItem::eTypeRte:
+                cntRte++;
+                break;
+
+            case IGisItem::eTypeOvl:
+                cntOvl++;
+                break;
+            }
+        }
+
+        QString msg = tr("<b>Selected:</b><br/>");
+        msg += tr("%1 tracks<br/>").arg(cntTrk);
+        msg += tr("%1 waypoints<br/>").arg(cntWpt);
+        msg += tr("%1 routes<br/>").arg(cntRte);
+        msg += tr("%1 areas<br/>").arg(cntOvl);
+
+        canvas->reportStatus("CMouseSelect::Stat",msg);
+
+        rectLastSel = rectSelection;
+        modeLastSel = modeSelection;
+    }
+
+    scrOptSelect->frameFunction->setDisabled(items.isEmpty());
+    scrOptSelect->toolRoute->setEnabled(cntWpt > 1);
+    scrOptSelect->toolCombineTracks->setEnabled(cntTrk > 1);
+}
+
+void CMouseSelect::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
+{
+    if(rectSelection.isNull())
+    {
+        return;
+    }
+
+    QList<IGisItem*> items;
+    findItems(items);
+
+    for(IGisItem * item : items)
+    {
+        item->drawHighlight(p);
+    }
+
+    IMouseSelect::draw(p, needsRedraw, rect);
+}
+
+
+
+void CMouseSelect::slotCopy() const
+{
+    CGisWidget::self().copyItemsByKey(itemKeys);
+    canvas->resetMouse();
+}
+
+void CMouseSelect::slotDelete() const
+{
+    CGisWidget::self().delItemsByKey(itemKeys);
+    canvas->resetMouse();
+}
+
+void CMouseSelect::slotRoute() const
+{
+    CGisWidget::self().makeRteFromWpt(itemKeys);
+    canvas->resetMouse();
+}
+
+void CMouseSelect::slotCombine() const
+{
+    CGisWidget::self().combineTrkByKey(itemKeys, itemKeys);
+    canvas->resetMouse();
+}
diff --git a/src/mouse/CMouseWptBubble.h b/src/mouse/CMouseSelect.h
similarity index 51%
copy from src/mouse/CMouseWptBubble.h
copy to src/mouse/CMouseSelect.h
index 585fc72..e26d2de 100644
--- a/src/mouse/CMouseWptBubble.h
+++ b/src/mouse/CMouseSelect.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,33 +16,52 @@
 
 **********************************************************************************************/
 
-#ifndef CMOUSEWPTBUBBLE_H
-#define CMOUSEWPTBUBBLE_H
+#ifndef CMOUSESELECT_H
+#define CMOUSESELECT_H
 
+#include "canvas/CCanvas.h"
 #include "gis/IGisItem.h"
-#include "mouse/IMouse.h"
+#include "mouse/IMouseSelect.h"
 
-class CGisItemWpt;
 class CGisDraw;
 class CCanvas;
+class CScrOptSelect;
 
-
-class CMouseWptBubble : public IMouse
+class CMouseSelect : public IMouseSelect
 {
     Q_OBJECT
 public:
-    CMouseWptBubble(const IGisItem::key_t& key, CGisDraw * gis, CCanvas * parent);
-    virtual ~CMouseWptBubble();
+    CMouseSelect(CGisDraw * gis, CCanvas * parent);
+    virtual ~CMouseSelect();
 
     void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override;
-    void mousePressEvent(QMouseEvent *e) override;
-    void mouseMoveEvent(QMouseEvent *e) override;
-    void mouseReleaseEvent(QMouseEvent *e) override;
-    void wheelEvent(QWheelEvent *e) override;
+
+private slots:
+    void slotCopy() const;
+    void slotRoute() const;
+    void slotCombine() const;
+    void slotDelete() const;
 
 private:
-    const IGisItem::key_t& key;
+    /**
+       @brief Get a temporary list of all items
+
+       @Note: The list of items is only temporary and maust not be used outside the calling method.
+
+       @param items a temporary list to collect all item pointers
+     */
+    void findItems(QList<IGisItem *> &items);
+
+
+    QList<IGisItem::key_t> itemKeys;
+    IGisItem::selflags_t modeLastSel   = IGisItem::eSelectionNone;
+    QRectF rectLastSel;
+
+    quint32 cntWpt = 0;
+    quint32 cntTrk = 0;
+    quint32 cntRte = 0;
+    quint32 cntOvl = 0;
 };
 
-#endif //CMOUSEWPTBUBBLE_H
+#endif //CMOUSESELECT_H
 
diff --git a/src/mouse/CMouseWptBubble.cpp b/src/mouse/CMouseWptBubble.cpp
index bfe7a3d..c9690ec 100644
--- a/src/mouse/CMouseWptBubble.cpp
+++ b/src/mouse/CMouseWptBubble.cpp
@@ -27,14 +27,14 @@ CMouseWptBubble::CMouseWptBubble(const IGisItem::key_t &key, CGisDraw * gis, CCa
     : IMouse(gis, parent)
     , key(key)
 {
-    cursor      = QCursor(QPixmap("://cursors/cursorArrow.png"),0,0);
+    cursor = QCursor(QPixmap("://cursors/cursorArrow.png"), 0, 0);
 }
 
 CMouseWptBubble::~CMouseWptBubble()
 {
 }
 
-void CMouseWptBubble::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
+void CMouseWptBubble::draw(QPainter&, CCanvas::redraw_e, const QRect&)
 {
 }
 
@@ -89,6 +89,6 @@ void CMouseWptBubble::mouseReleaseEvent(QMouseEvent *e)
     }
 }
 
-void CMouseWptBubble::wheelEvent(QWheelEvent * e)
+void CMouseWptBubble::wheelEvent(QWheelEvent*)
 {
 }
diff --git a/src/mouse/CMouseWptBubble.h b/src/mouse/CMouseWptBubble.h
index 585fc72..f3aa7b1 100644
--- a/src/mouse/CMouseWptBubble.h
+++ b/src/mouse/CMouseWptBubble.h
@@ -26,7 +26,6 @@ class CGisItemWpt;
 class CGisDraw;
 class CCanvas;
 
-
 class CMouseWptBubble : public IMouse
 {
     Q_OBJECT
diff --git a/src/mouse/CMouseDummy.cpp b/src/mouse/CScrOptPrint.cpp
similarity index 78%
copy from src/mouse/CMouseDummy.cpp
copy to src/mouse/CScrOptPrint.cpp
index 22f49af..a99b434 100644
--- a/src/mouse/CMouseDummy.cpp
+++ b/src/mouse/CScrOptPrint.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "CMouseDummy.h"
+#include "CScrOptPrint.h"
 
-CMouseDummy::CMouseDummy()
-    : IMouse(0,0)
-{
-    cursor = QCursor(QPixmap(":/cursors/cursorArrow.png"),0,0);
-}
+#include <QtWidgets>
 
-CMouseDummy::~CMouseDummy()
+CScrOptPrint::CScrOptPrint(IMouse *mouse)
+    : IScrOpt(mouse)
 {
+    setupUi(this);
+    adjustSize();
 }
 
+
diff --git a/src/units/CUnitsSetup.h b/src/mouse/CScrOptPrint.h
similarity index 70%
copy from src/units/CUnitsSetup.h
copy to src/mouse/CScrOptPrint.h
index 615a4cb..668e85a 100644
--- a/src/units/CUnitsSetup.h
+++ b/src/mouse/CScrOptPrint.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -15,21 +15,23 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 **********************************************************************************************/
-#ifndef CUNITSSETUP_H
-#define CUNITSSETUP_H
 
-#include "ui_IUnitsSetup.h"
-#include <QDialog>
+#ifndef CSCROPTPRINT_H
+#define CSCROPTPRINT_H
 
-class CUnitsSetup : public QDialog, private Ui::IUnitsSetup
+#include "mouse/IScrOpt.h"
+#include "ui_IScrOptPrint.h"
+
+class CScrOptPrint : public IScrOpt, public Ui::IScrOptPrint
 {
 public:
-    CUnitsSetup(QWidget * parent);
-    virtual ~CUnitsSetup();
+    CScrOptPrint(IMouse *mouse);
+    virtual ~CScrOptPrint() = default;
 
-public slots:
-    void accept() override;
+    void draw(QPainter& p) override
+    {
+    }
 };
 
-#endif //CUNITSSETUP_H
+#endif //CSCROPTPRINT_H
 
diff --git a/src/mouse/CScrOptSelect.cpp b/src/mouse/CScrOptSelect.cpp
new file mode 100644
index 0000000..9406e7f
--- /dev/null
+++ b/src/mouse/CScrOptSelect.cpp
@@ -0,0 +1,142 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "canvas/CCanvas.h"
+#include "helpers/CSettings.h"
+#include "mouse/CScrOptSelect.h"
+#include "mouse/IMouse.h"
+
+#include <QtWidgets>
+#include <functional>
+
+using std::bind;
+
+CScrOptSelect::CScrOptSelect(IMouse *mouse)
+    : IScrOpt(mouse)
+{
+    setupUi(this);
+    adjustSize();
+
+    SETTINGS;
+    cfg.beginGroup("Selection");
+    toolModeExact->setChecked(cfg.value("modeExact", toolModeExact->isChecked()).toBool());
+    toolModeIntersect->setChecked(cfg.value("modeIntersect", toolModeIntersect->isChecked()).toBool());
+    toolItemTrk->setChecked(cfg.value("itemTrk", toolItemTrk->isChecked()).toBool());
+    toolItemWpt->setChecked(cfg.value("itemWpt", toolItemWpt->isChecked()).toBool());
+    toolItemRte->setChecked(cfg.value("itemRte", toolItemRte->isChecked()).toBool());
+    toolItemOvl->setChecked(cfg.value("itemOvl", toolItemOvl->isChecked()).toBool());
+    cfg.endGroup(); //Selection
+
+    modeSelection |= toolModeExact->isChecked() ? IGisItem::eSelectionExact : 0;
+    modeSelection |= toolModeIntersect->isChecked() ? IGisItem::eSelectionIntersect : 0;
+    modeSelection |= toolItemTrk->isChecked() ? IGisItem::eSelectionTrk : 0;
+    modeSelection |= toolItemWpt->isChecked() ? IGisItem::eSelectionWpt : 0;
+    modeSelection |= toolItemRte->isChecked() ? IGisItem::eSelectionRte : 0;
+    modeSelection |= toolItemOvl->isChecked() ? IGisItem::eSelectionOvl : 0;
+
+    auto slotModeExact      = bind(&CScrOptSelect::slotModeSwitch, this, IGisItem::eSelectionExact, std::placeholders::_1);
+    auto slotModeIntersect  = bind(&CScrOptSelect::slotModeSwitch, this, IGisItem::eSelectionIntersect, std::placeholders::_1);
+    auto slotModeTrk        = bind(&CScrOptSelect::slotModeSwitch, this, IGisItem::eSelectionTrk, std::placeholders::_1);
+    auto slotModeWpt        = bind(&CScrOptSelect::slotModeSwitch, this, IGisItem::eSelectionWpt, std::placeholders::_1);
+    auto slotModeRte        = bind(&CScrOptSelect::slotModeSwitch, this, IGisItem::eSelectionRte, std::placeholders::_1);
+    auto slotModeOvl        = bind(&CScrOptSelect::slotModeSwitch, this, IGisItem::eSelectionOvl, std::placeholders::_1);
+
+    connect(toolModeExact,     &QToolButton::toggled, this, slotModeExact);
+    connect(toolModeIntersect, &QToolButton::toggled, this, slotModeIntersect);
+    connect(toolItemTrk,       &QToolButton::toggled, this, slotModeTrk);
+    connect(toolItemWpt,       &QToolButton::toggled, this, slotModeWpt);
+    connect(toolItemRte,       &QToolButton::toggled, this, slotModeRte);
+    connect(toolItemOvl,       &QToolButton::toggled, this, slotModeOvl);
+}
+
+CScrOptSelect::~CScrOptSelect()
+{
+    SETTINGS;
+    cfg.beginGroup("Selection");
+    cfg.setValue("modeExact", toolModeExact->isChecked());
+    cfg.setValue("modeIntersect", toolModeIntersect->isChecked());
+    cfg.setValue("itemTrk", toolItemTrk->isChecked());
+    cfg.setValue("itemWpt", toolItemWpt->isChecked());
+    cfg.setValue("itemRte", toolItemRte->isChecked());
+    cfg.setValue("itemOvl", toolItemOvl->isChecked());
+    cfg.endGroup(); //Selection
+
+    mouse->getCanvas()->reportStatus("CScrOptSelect","");
+}
+
+void CScrOptSelect::slotModeSwitch(IGisItem::selection_e mode, bool checked)
+{
+    CCanvas * canvas = mouse->getCanvas();
+
+    if(checked)
+    {
+        modeSelection |= mode;
+
+        switch(mode)
+        {
+        case IGisItem::eSelectionExact:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Exact Mode</b><br/>All selected items have to be completely inside the selected area.<br/>"));
+            break;
+
+        case IGisItem::eSelectionIntersect:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Intersecting Mode</b><br/>All selected items have to be inside or at least intersect the selected area.<br/>"));
+            break;
+
+        case IGisItem::eSelectionTrk:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Add Tracks</b><br/>Add tracks to list of selected items<br/>"));
+            break;
+
+        case IGisItem::eSelectionWpt:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Add Waypoints</b><br/>Add waypoints to list of selected items<br/>"));
+            break;
+
+        case IGisItem::eSelectionRte:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Add Routes</b><br/>Add routes to list of selected items<br/>"));
+            break;
+
+        case IGisItem::eSelectionOvl:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Add Areas</b><br/>Add areas to list of selected items<br/>"));
+            break;
+        }
+    }
+    else
+    {
+        modeSelection &= ~mode;
+
+        switch(mode)
+        {
+        case IGisItem::eSelectionTrk:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Ignore Tracks</b><br/>Ignore tracks in list of selected items<br/>"));
+            break;
+
+        case IGisItem::eSelectionWpt:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Ignore Waypoints</b><br/>Ignore waypoints in list of selected items<br/>"));
+            break;
+
+        case IGisItem::eSelectionRte:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Ignore Routes</b><br/>Ignore routes in list of selected items<br/>"));
+            break;
+
+        case IGisItem::eSelectionOvl:
+            canvas->reportStatus("CScrOptSelect", tr("<b>Ignore Areas</b><br/>Ignore areas in list of selected items<br/>"));
+            break;
+        }
+    }
+
+    canvas->update();
+}
diff --git a/src/gis/trk/filter/CFilterDeleteExtension.h b/src/mouse/CScrOptSelect.h
similarity index 58%
copy from src/gis/trk/filter/CFilterDeleteExtension.h
copy to src/mouse/CScrOptSelect.h
index b743c01..d9f6ecf 100644
--- a/src/gis/trk/filter/CFilterDeleteExtension.h
+++ b/src/mouse/CScrOptSelect.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,29 +16,39 @@
 
 **********************************************************************************************/
 
-#ifndef CFILTERDELETEEXTENSION_H
-#define CFILTERDELETEEXTENSION_H
+#ifndef CSCROPTSELECT_H
+#define CSCROPTSELECT_H
 
-#include "ui_IFilterDeleteExtension.h"
-#include <QWidget>
 
-class CGisItemTrk;
+#include "gis/IGisItem.h"
+#include "mouse/IScrOpt.h"
+#include "ui_IScrOptSelect.h"
 
-class CFilterDeleteExtension : public QWidget, private Ui::IFilterDeleteExtension
+class IMouse;
+
+class CScrOptSelect : public IScrOpt, public Ui::IScrOptSelect
 {
     Q_OBJECT
 public:
-    CFilterDeleteExtension(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterDeleteExtension();
+    CScrOptSelect(IMouse *mouse);
+    virtual ~CScrOptSelect();
+
+    void draw(QPainter& p) override
+    {
+    }
 
-    void update();
+    IGisItem::selflags_t getModeSelection() const
+    {
+        return modeSelection;
+    }
 
 private slots:
-    void slotApply();
+    void slotModeSwitch(IGisItem::selection_e mode, bool checked);
+
 
 private:
-    CGisItemTrk& trk;
+    IGisItem::selflags_t modeSelection = IGisItem::eSelectionNone;
 };
 
-#endif //CFILTERDELETEEXTENSION_H
+#endif //CSCROPTSELECT_H
 
diff --git a/src/mouse/CScrOptUnclutter.cpp b/src/mouse/CScrOptUnclutter.cpp
index 3c7f216..cdbd1b0 100644
--- a/src/mouse/CScrOptUnclutter.cpp
+++ b/src/mouse/CScrOptUnclutter.cpp
@@ -115,7 +115,7 @@ void CScrOptUnclutter::mouseMoveEvent(QMouseEvent * e)
 {
     IScrOpt::mouseMoveEvent(e);
 
-    foreach(const item_t &item, items)
+    for(const item_t &item : items)
     {
         if(item.active.contains(mousePos) || item.text.contains(mousePos))
         {
@@ -160,7 +160,7 @@ IGisItem::key_t CScrOptUnclutter::getItemKey(int index)
 
 const CScrOptUnclutter::item_t * CScrOptUnclutter::selectItem(const QPoint& point)
 {
-    foreach(const item_t &item, items)
+    for(const item_t &item : items)
     {
         if(item.active.contains(point) || item.text.contains(point))
         {
@@ -195,7 +195,7 @@ void CScrOptUnclutter::draw(QPainter& p)
         }
     }
 
-    foreach(const item_t &item, items)
+    for(const item_t &item : items)
     {
         p.setPen(Qt::NoPen);
         p.setBrush(QColor(255,255,255,255));
diff --git a/src/mouse/IMouse.h b/src/mouse/IMouse.h
index 2846166..0ff7c55 100644
--- a/src/mouse/IMouse.h
+++ b/src/mouse/IMouse.h
@@ -27,11 +27,9 @@
 
 class QMouseEvent;
 class QWheelEvent;
-class CCanvas;
 class QTimer;
 class CGisDraw;
 
-
 class IMouse : public QObject
 {
     Q_OBJECT
@@ -39,11 +37,6 @@ public:
     IMouse(CGisDraw * gis, CCanvas * canvas);
     virtual ~IMouse();
 
-    enum type_e
-    {
-        eNormal
-    };
-
     virtual void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) = 0;
     virtual void mousePressEvent(QMouseEvent *e) = 0;
     virtual void mouseMoveEvent(QMouseEvent *e) = 0;
diff --git a/src/mouse/CMousePrint.cpp b/src/mouse/IMouseSelect.cpp
similarity index 66%
copy from src/mouse/CMousePrint.cpp
copy to src/mouse/IMouseSelect.cpp
index 0dd4904..b6f1e0d 100644
--- a/src/mouse/CMousePrint.cpp
+++ b/src/mouse/IMouseSelect.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -17,38 +17,64 @@
 **********************************************************************************************/
 
 #include "gis/CGisDraw.h"
-#include "mouse/CMousePrint.h"
-#include "print/CPrintDialog.h"
+#include "mouse/IMouseSelect.h"
+#include "mouse/IScrOpt.h"
 
 #include <QtWidgets>
 
-CMousePrint::CMousePrint(CGisDraw *gis, CCanvas *parent)
-    : IMouse(gis, parent)
+IMouseSelect::IMouseSelect(CGisDraw *gis, CCanvas *canvas)
+    : IMouse(gis, canvas)
 {
-    cursor      = QCursor(QPixmap("://cursors/cursorSave.png"),0,0);
+}
 
-    canvas->reportStatus("CMousePrint", tr("<b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection."));
+IMouseSelect::~IMouseSelect()
+{
+    canvas->reportStatus("IMouseSelect", "");
+    delete scrOpt;
 }
 
-CMousePrint::~CMousePrint()
+void IMouseSelect::rectRad2Px(const QRectF& rectSrc, QRectF& rectTar) const
 {
-    canvas->reportStatus("CMousePrint", "");
+    QPointF pt1 = rectSrc.topLeft();
+    QPointF pt2 = rectSrc.bottomRight();
+
+    gis->convertRad2Px(pt1);
+    gis->convertRad2Px(pt2);
+
+    rectTar = QRectF(pt1,pt2);
 }
 
-void CMousePrint::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
+void IMouseSelect::placeScrOpt()
 {
-    if(rectSelection.isNull())
+    if(scrOpt.isNull())
     {
         return;
     }
 
-    QPointF pt1 = rectSelection.topLeft();
-    QPointF pt2 = rectSelection.bottomRight();
+    if((state == eStateMap) || (state == eStateMapMoving))
+    {
+        QRectF rectSel;
+        rectRad2Px(rectSelection, rectSel);
+        scrOpt->move(rectSel.topRight().toPoint());
+        scrOpt->show();
+    }
+    else
+    {
+        scrOpt->hide();
+    }
+}
 
-    gis->convertRad2Px(pt1);
-    gis->convertRad2Px(pt2);
 
-    QRectF rectSel(pt1,pt2);
+void IMouseSelect::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
+{
+    if(rectSelection.isNull())
+    {
+        return;
+    }
+
+    QRectF rectSel;
+    rectRad2Px(rectSelection, rectSel);
+
     QRectF rectScr = canvas->rect();
 
     rectTopLeft.moveTopLeft(rectSel.topLeft());
@@ -91,27 +117,14 @@ void CMousePrint::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &
         break;
     }
 
-    if(rectSel.width() > 100 && rectSel.height() > 50)
-    {
-        rectPrintButton.moveCenter(rectSel.center() + QPointF(30,0));
-        p.setPen(corner == eCornerPrint ? QPen(Qt::red,3) : QPen(Qt::darkBlue,2));
-        p.setBrush(Qt::white);
-        p.drawRect(rectPrintButton.adjusted(-3,-3,3,3));
-        p.drawPixmap(rectPrintButton.topLeft(), QPixmap("://icons/48x48/Print.png"));
-
-        rectImageButton.moveCenter(rectSel.center() - QPointF(30,0));
-        p.setPen(corner == eCornerImage ? QPen(Qt::red,3) : QPen(Qt::darkBlue,2));
-        p.setBrush(Qt::white);
-        p.drawRect(rectImageButton.adjusted(-3,-3,3,3));
-        p.drawPixmap(rectImageButton.topLeft(), QPixmap("://icons/48x48/Save.png"));
-    }
+    placeScrOpt();
 }
 
-void CMousePrint::mousePressEvent(QMouseEvent * e)
+void IMouseSelect::mousePressEvent(QMouseEvent * e)
 {
     e->accept();
 
-    canvas->reportStatus("CMousePrint", "");
+    canvas->reportStatus("IMouseSelect", "");
 
     if(e->button() == Qt::RightButton)
     {
@@ -137,24 +150,7 @@ void CMousePrint::mousePressEvent(QMouseEvent * e)
         {
             if(corner != eCornerNone)
             {
-                if(corner == eCornerPrint)
-                {
-                    CPrintDialog dlg(CPrintDialog::eTypePrint, rectSelection, canvas);
-                    dlg.exec();
-                    canvas->resetMouse();
-                    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
-                }
-                else if(corner == eCornerImage)
-                {
-                    CPrintDialog dlg(CPrintDialog::eTypeImage, rectSelection, canvas);
-                    dlg.exec();
-                    canvas->resetMouse();
-                    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
-                }
-                else
-                {
-                    state = eStateResize;
-                }
+                state = eStateResize;
             }
             else
             {
@@ -167,7 +163,8 @@ void CMousePrint::mousePressEvent(QMouseEvent * e)
     }
 }
 
-void CMousePrint::mouseMoveEvent(QMouseEvent * e)
+
+void IMouseSelect::mouseMoveEvent(QMouseEvent * e)
 {
     e->accept();
 
@@ -224,14 +221,6 @@ void CMousePrint::mouseMoveEvent(QMouseEvent * e)
             offset = pos - rectBottomRight.bottomRight();
             corner = eCornerBottomRight;
         }
-        else if(rectPrintButton.contains(pos))
-        {
-            corner = eCornerPrint;
-        }
-        else if(rectImageButton.contains(pos))
-        {
-            corner = eCornerImage;
-        }
         else
         {
             corner = eCornerNone;
@@ -286,7 +275,7 @@ void CMousePrint::mouseMoveEvent(QMouseEvent * e)
     }
 }
 
-void CMousePrint::mouseReleaseEvent(QMouseEvent *e)
+void IMouseSelect::mouseReleaseEvent(QMouseEvent *e)
 {
     e->accept();
 
@@ -311,8 +300,7 @@ void CMousePrint::mouseReleaseEvent(QMouseEvent *e)
     canvas->update();
 }
 
-void CMousePrint::wheelEvent(QWheelEvent * e)
+void IMouseSelect::wheelEvent(QWheelEvent * e)
 {
 }
 
-
diff --git a/src/mouse/CMousePrint.h b/src/mouse/IMouseSelect.h
similarity index 74%
copy from src/mouse/CMousePrint.h
copy to src/mouse/IMouseSelect.h
index 08d6588..cd34eca 100644
--- a/src/mouse/CMousePrint.h
+++ b/src/mouse/IMouseSelect.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,20 +16,21 @@
 
 **********************************************************************************************/
 
-#ifndef CMOUSEPRINT_H
-#define CMOUSEPRINT_H
+#ifndef IMOUSESELECT_H
+#define IMOUSESELECT_H
 
+#include "canvas/CCanvas.h"
 #include "mouse/IMouse.h"
 
 class CGisDraw;
-class CCanvas;
 
-class CMousePrint : public IMouse
+
+class IMouseSelect : public IMouse
 {
     Q_OBJECT
 public:
-    CMousePrint(CGisDraw * gis, CCanvas * parent);
-    virtual ~CMousePrint();
+    IMouseSelect(CGisDraw * gis, CCanvas * canvas);
+    virtual ~IMouseSelect();
 
     void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override;
     void mousePressEvent(QMouseEvent * e) override;
@@ -37,18 +38,20 @@ public:
     void mouseReleaseEvent(QMouseEvent *e) override;
     void wheelEvent(QWheelEvent * e) override;
 
-private:
+
+protected:
+    void rectRad2Px(const QRectF& rectSrc, QRectF& rectTar) const;
+    void placeScrOpt();
+
     QPoint lastPos;
     QPointF offset;
     QPointF posInitial;
 
     QRectF rectSelection;
-    QRectF rectTopLeft {0,0,20,20};
-    QRectF rectTopRight {0,0,20,20};
-    QRectF rectBottomLeft {0,0,20,20};
-    QRectF rectBottomRight {0,0,20,20};
-    QRectF rectPrintButton {0,0,48,48};
-    QRectF rectImageButton {0,0,48,48};
+    QRectF rectTopLeft     {0, 0, 20, 20};
+    QRectF rectTopRight    {0, 0, 20, 20};
+    QRectF rectBottomLeft  {0, 0, 20, 20};
+    QRectF rectBottomRight {0, 0, 20, 20};
 
     enum state_e
     {
@@ -73,7 +76,9 @@ private:
     };
 
     corner_e corner = eCornerNone;
+
+    QPointer<IScrOpt> scrOpt;
 };
 
-#endif //CMOUSEPRINT_H
+#endif //IMOUSESELECT_H
 
diff --git a/src/mouse/IScrOpt.cpp b/src/mouse/IScrOpt.cpp
index 2901378..440cbdc 100644
--- a/src/mouse/IScrOpt.cpp
+++ b/src/mouse/IScrOpt.cpp
@@ -38,7 +38,6 @@ IScrOpt::~IScrOpt()
     }
 }
 
-
 void IScrOpt::mouseMoveEvent(QMouseEvent * e)
 {
     mousePos = e->pos();
@@ -50,7 +49,6 @@ void IScrOpt::enterEvent(QEvent * e)
     CCanvas::restoreOverrideCursor("IScrOpt::enterEvent");
 }
 
-
 void IScrOpt::leaveEvent(QEvent * e)
 {
     QWidget::leaveEvent(e);
diff --git a/src/mouse/IScrOpt.h b/src/mouse/IScrOpt.h
index 83c7bab..8b55667 100644
--- a/src/mouse/IScrOpt.h
+++ b/src/mouse/IScrOpt.h
@@ -35,12 +35,12 @@ public:
     IScrOpt(IMouse *mouse);
     virtual ~IScrOpt();
 
-
     void setOrigin(const QPoint& pos)
     {
         origin = pos;
     }
-    const QPoint& getOrigin()
+
+    const QPoint& getOrigin() const
     {
         return origin;
     }
diff --git a/src/mouse/IScrOptPrint.ui b/src/mouse/IScrOptPrint.ui
new file mode 100644
index 0000000..432cc5b
--- /dev/null
+++ b/src/mouse/IScrOptPrint.ui
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IScrOptPrint</class>
+ <widget class="QWidget" name="IScrOptPrint">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>24</width>
+    <height>49</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QToolButton" name="toolSave">
+     <property name="toolTip">
+      <string>Save selected area as image.</string>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="icon">
+      <iconset resource="../resources.qrc">
+       <normaloff>:/icons/32x32/Save.png</normaloff>:/icons/32x32/Save.png</iconset>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QToolButton" name="toolPrint">
+     <property name="toolTip">
+      <string>Print selected area.</string>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="icon">
+      <iconset resource="../resources.qrc">
+       <normaloff>:/icons/32x32/Print.png</normaloff>:/icons/32x32/Print.png</iconset>
+     </property>
+     <property name="iconSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/mouse/IScrOptSelect.ui b/src/mouse/IScrOptSelect.ui
new file mode 100644
index 0000000..7c839d8
--- /dev/null
+++ b/src/mouse/IScrOptSelect.ui
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IScrOptSelect</class>
+ <widget class="QWidget" name="IScrOptSelect">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>24</width>
+    <height>248</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QFrame" name="frameFunction">
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Plain</enum>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="toolCopy">
+        <property name="toolTip">
+         <string>Copy all selected items to a project.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/Copy.png</normaloff>:/icons/32x32/Copy.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolRoute">
+        <property name="toolTip">
+         <string>Create a route from selected waypoints.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/Route.png</normaloff>:/icons/32x32/Route.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolCombineTracks">
+        <property name="toolTip">
+         <string>Combine all selected tracks to a new one.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/Combine.png</normaloff>:/icons/32x32/Combine.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolDelete">
+        <property name="toolTip">
+         <string>Delete all selected items.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/DeleteMultiple.png</normaloff>:/icons/32x32/DeleteMultiple.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QFrame" name="frameMode">
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Plain</enum>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="toolModeIntersect">
+        <property name="toolTip">
+         <string>Select all items that intersect the selected area.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/SelectIntersectArea.png</normaloff>:/icons/32x32/SelectIntersectArea.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+        <property name="autoExclusive">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolModeExact">
+        <property name="toolTip">
+         <string>Select all itmes that are completely inside the selected area.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/SelectExactArea.png</normaloff>:/icons/32x32/SelectExactArea.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="autoExclusive">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QFrame" name="frameItem">
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Plain</enum>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_4">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="toolItemTrk">
+        <property name="toolTip">
+         <string>Add tracks to selection.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/Track.png</normaloff>:/icons/32x32/Track.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolItemWpt">
+        <property name="toolTip">
+         <string>Add waypoints to selection.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/waypoints/32x32/FlagBlue.png</normaloff>:/icons/waypoints/32x32/FlagBlue.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolItemRte">
+        <property name="toolTip">
+         <string>Add routes to selection.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/Route.png</normaloff>:/icons/32x32/Route.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolItemOvl">
+        <property name="toolTip">
+         <string>Add areas to selection.</string>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+        <property name="icon">
+         <iconset resource="../resources.qrc">
+          <normaloff>:/icons/32x32/Area.png</normaloff>:/icons/32x32/Area.png</iconset>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/mouse/line/CLineOpAddPoint.cpp b/src/mouse/line/CLineOpAddPoint.cpp
index 938904a..c89f02e 100644
--- a/src/mouse/line/CLineOpAddPoint.cpp
+++ b/src/mouse/line/CLineOpAddPoint.cpp
@@ -26,7 +26,7 @@
 CLineOpAddPoint::CLineOpAddPoint(SGisLine& points, CGisDraw *gis, CCanvas * canvas, IMouseEditLine * parent)
     : ILineOp(points, gis, canvas, parent)
 {
-    cursor = QCursor(QPixmap(":/cursors/cursorAdd.png"),0,0);
+    cursor = QCursor(QPixmap(":/cursors/cursorAdd.png"), 0, 0);
 }
 
 CLineOpAddPoint::~CLineOpAddPoint()
@@ -174,7 +174,7 @@ void CLineOpAddPoint::mouseMoveEventEx(QMouseEvent * e)
 
             if((idxFocus == 0) || (idxFocus == (points.size() - 1)))
             {
-                isPoint  = true;
+                isPoint = true;
             }
         }
     }
@@ -222,7 +222,7 @@ void CLineOpAddPoint::drawFg(QPainter& p)
         else
         {
             line << pt1.pixel;
-            foreach(const IGisLine::subpt_t& pt, pt1.subpts)
+            for(const IGisLine::subpt_t& pt : pt1.subpts)
             {
                 line << pt.pixel;
             }
diff --git a/src/mouse/line/CLineOpDeletePoint.cpp b/src/mouse/line/CLineOpDeletePoint.cpp
index 4cb5b76..5b3316c 100644
--- a/src/mouse/line/CLineOpDeletePoint.cpp
+++ b/src/mouse/line/CLineOpDeletePoint.cpp
@@ -26,7 +26,7 @@
 CLineOpDeletePoint::CLineOpDeletePoint(SGisLine& points, CGisDraw *gis, CCanvas * canvas, IMouseEditLine * parent)
     : ILineOp(points, gis, canvas, parent)
 {
-    cursor  = QCursor(QPixmap(":/cursors/cursorDelete.png"),0,0);
+    cursor  = QCursor(QPixmap(":/cursors/cursorDelete.png"), 0, 0);
 }
 
 CLineOpDeletePoint::~CLineOpDeletePoint()
@@ -56,7 +56,7 @@ void CLineOpDeletePoint::mouseReleaseEventEx(QMouseEvent *e)
         // store to undo/redo history
         parentHandler->storeToHistory(points);
     }
-    idxFocus    = NOIDX;
+    idxFocus = NOIDX;
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawMouse);
 }
 
@@ -68,6 +68,5 @@ void CLineOpDeletePoint::drawFg(QPainter& p)
         return;
     }
 
-    const IGisLine::point_t& pt = points[idxFocus];
-    drawSinglePointLarge(pt.pixel, p);
+    drawSinglePointLarge(points[idxFocus].pixel, p);
 }
diff --git a/src/mouse/line/CLineOpDeletePoint.h b/src/mouse/line/CLineOpDeletePoint.h
index 2a2e778..80fd808 100644
--- a/src/mouse/line/CLineOpDeletePoint.h
+++ b/src/mouse/line/CLineOpDeletePoint.h
@@ -27,15 +27,13 @@ public:
     CLineOpDeletePoint(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
     virtual ~CLineOpDeletePoint();
 
-    void mousePressEventEx(QMouseEvent *e) override
+    void mousePressEventEx(QMouseEvent*) override
     {
     }
     void mouseMoveEventEx(QMouseEvent *e) override;
     void mouseReleaseEventEx(QMouseEvent *e) override;
 
     void drawFg(QPainter& p) override;
-
-private:
 };
 
 #endif //CLINEOPDELETEPOINT_H
diff --git a/src/mouse/line/CLineOpSelectRange.cpp b/src/mouse/line/CLineOpSelectRange.cpp
index 8e0f3f6..ad9592d 100644
--- a/src/mouse/line/CLineOpSelectRange.cpp
+++ b/src/mouse/line/CLineOpSelectRange.cpp
@@ -180,7 +180,7 @@ void CLineOpSelectRange::drawFg(QPainter& p)
             {
                 const IGisLine::point_t& point = points[i];
                 seg << point.pixel;
-                foreach(const IGisLine::subpt_t& subpt, point.subpts)
+                for(const IGisLine::subpt_t& subpt : point.subpts)
                 {
                     seg << subpt.pixel;
                 }
@@ -197,14 +197,14 @@ void CLineOpSelectRange::drawFg(QPainter& p)
             QRectF r(0,0,7,7);
             p.setPen(QPen(Qt::darkGreen,2));
             p.setBrush(Qt::darkGreen);
-            foreach(const QPointF &pt, seg)
+            for(const QPointF &pt : seg)
             {
                 r.moveCenter(pt);
                 p.drawRect(r);
             }
             p.setPen(Qt::NoPen);
             p.setBrush(Qt::black);
-            foreach(const QPointF &pt, seg)
+            for(const QPointF &pt : seg)
             {
                 r.moveCenter(pt);
                 p.drawRect(r);
@@ -221,9 +221,9 @@ void CLineOpSelectRange::resetState()
     {
         scrOptRangeLine->deleteLater();
     }
-    idxFocus    = NOIDX;
-    idx2nd      = NOIDX;
-    state       = eStateIdle;
+    idxFocus = NOIDX;
+    idx2nd   = NOIDX;
+    state    = eStateIdle;
 }
 
 void CLineOpSelectRange::slotDelete()
diff --git a/src/mouse/line/ILineOp.cpp b/src/mouse/line/ILineOp.cpp
index 73492a5..87a82e0 100644
--- a/src/mouse/line/ILineOp.cpp
+++ b/src/mouse/line/ILineOp.cpp
@@ -41,6 +41,7 @@ ILineOp::ILineOp(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLin
 
 ILineOp::~ILineOp()
 {
+    canvas->reportStatus("Routino", QString());
 }
 
 void ILineOp::cancelDelayedRouting()
@@ -101,7 +102,7 @@ void ILineOp::drawSinglePointLarge(const QPointF &pt, QPainter& p)
     p.drawRect(rectPoint);
 }
 
-void ILineOp::drawLeadLine(const QPolygonF& line, QPainter& p)
+void ILineOp::drawLeadLine(const QPolygonF& line, QPainter& p) const
 {
     p.setPen(QPen(Qt::yellow, 7, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
     p.drawPolyline(line);
@@ -119,11 +120,12 @@ void ILineOp::mousePressEvent(QMouseEvent * e)
 
         if(e->button() == Qt::LeftButton)
         {
-            lastPos     = pos;
-            mapMove     = true;
-            mapDidMove  = false;
+            lastPos    = pos;
+            mapMove    = true;
+            mapDidMove = false;
         }
     }
+    showRoutingErrorMessage(QString());
 }
 
 void ILineOp::mouseMoveEvent(QMouseEvent * e)
@@ -201,6 +203,40 @@ void ILineOp::updateLeadLines(qint32 idx)
     }
 }
 
+void ILineOp::showRoutingErrorMessage(const QString &msg) const
+{
+    if(msg.isEmpty())
+    {
+        canvas->reportStatus("Routino", QString());
+    }
+    else
+    {
+        canvas->reportStatus("Routino", QString("<span style='color: red;'><b>%1</b><br />%2</span>").arg(tr("Routing")).arg(msg));
+    }
+}
+
+void ILineOp::tryRouting(IGisLine::point_t& pt1, IGisLine::point_t& pt2) const
+{
+    QPolygonF subs;
+
+    try
+    {
+        if(CRouterSetup::self().calcRoute(pt1.coord, pt2.coord, subs) >= 0)
+        {
+            pt1.subpts.clear();
+            for(const QPointF &sub : subs)
+            {
+                pt1.subpts << IGisLine::subpt_t(sub);
+            }
+        }
+        showRoutingErrorMessage(QString());
+    }
+    catch(const QString &msg)
+    {
+        showRoutingErrorMessage(msg);
+    }
+}
+
 void ILineOp::finalizeOperation(qint32 idx)
 {
     if(idx == NOIDX)
@@ -213,33 +249,13 @@ void ILineOp::finalizeOperation(qint32 idx)
         CCanvas::setOverrideCursor(Qt::WaitCursor,"ILineOp::finalizeOperation");
         if(idx > 0)
         {
-            QPolygonF subs;
-            IGisLine::point_t& pt1 = points[idx - 1];
-            IGisLine::point_t& pt2 = points[idx];
-            if(CRouterSetup::self().calcRoute(pt1.coord, pt2.coord, subs) >= 0)
-            {
-                pt1.subpts.clear();
-                foreach(const QPointF &sub, subs)
-                {
-                    pt1.subpts << IGisLine::subpt_t(sub);
-                }
-            }
+            tryRouting(points[idx - 1], points[idx]);
         }
-
         if(idx < (points.size() - 1))
         {
-            QPolygonF subs;
-            IGisLine::point_t& pt1 = points[idx];
-            IGisLine::point_t& pt2 = points[idx + 1];
-            if(CRouterSetup::self().calcRoute(pt1.coord, pt2.coord, subs) >= 0)
-            {
-                pt1.subpts.clear();
-                foreach(const QPointF &sub, subs)
-                {
-                    pt1.subpts << IGisLine::subpt_t(sub);
-                }
-            }
+            tryRouting(points[idx], points[idx + 1]);
         }
+
         CCanvas::restoreOverrideCursor("ILineOp::finalizeOperation");
     }
     else if(parentHandler->useVectorRouting())
@@ -248,7 +264,7 @@ void ILineOp::finalizeOperation(qint32 idx)
         {
             IGisLine::point_t& pt1 = points[idx - 1];
             pt1.subpts.clear();
-            foreach(const QPointF &pt, subLineCoord1)
+            for(const QPointF &pt : subLineCoord1)
             {
                 pt1.subpts << IGisLine::subpt_t(pt);
             }
@@ -258,7 +274,7 @@ void ILineOp::finalizeOperation(qint32 idx)
         {
             IGisLine::point_t& pt1 = points[idx];
             pt1.subpts.clear();
-            foreach(const QPointF &pt, subLineCoord2)
+            for(const QPointF &pt : subLineCoord2)
             {
                 pt1.subpts << IGisLine::subpt_t(pt);
             }
@@ -269,7 +285,7 @@ void ILineOp::finalizeOperation(qint32 idx)
 }
 
 
-qint32 ILineOp::isCloseTo(const QPoint& pos)
+qint32 ILineOp::isCloseTo(const QPoint& pos) const
 {
     qint32 min = 30;
     qint32 idx = NOIDX;
@@ -289,8 +305,7 @@ qint32 ILineOp::isCloseTo(const QPoint& pos)
     return idx;
 }
 
-
-qint32 ILineOp::isCloseToLine(const QPoint& pos)
+qint32 ILineOp::isCloseToLine(const QPoint& pos) const
 {
     qint32 idx = NOIDX;
     qreal dist = 60;
@@ -307,7 +322,7 @@ qint32 ILineOp::isCloseToLine(const QPoint& pos)
         }
         else
         {
-            foreach(const IGisLine::subpt_t& pt, pt1.subpts)
+            for(const IGisLine::subpt_t& pt : pt1.subpts)
             {
                 line << pt.pixel;
             }
diff --git a/src/mouse/line/ILineOp.h b/src/mouse/line/ILineOp.h
index 050b932..07c99ab 100644
--- a/src/mouse/line/ILineOp.h
+++ b/src/mouse/line/ILineOp.h
@@ -46,23 +46,23 @@ public:
     virtual void mouseMoveEventEx(QMouseEvent * e) = 0;
     virtual void mouseReleaseEventEx(QMouseEvent *e) = 0;
 
-    virtual void wheelEvent(QWheelEvent * e)
+    virtual void wheelEvent(QWheelEvent*)
     {
     }
 
-    virtual void keyPressEvent(QKeyEvent * e)
+    virtual void keyPressEvent(QKeyEvent*)
     {
     }
 
     virtual void drawFg(QPainter& p) = 0;
     virtual void drawBg(QPainter& p);
 
-    const QCursor& getCursor()
+    const QCursor& getCursor() const
     {
         return cursor;
     }
 
-    virtual void canvasPanned(QPointF pos)
+    virtual void canvasPanned(QPointF)
     {
     }
 
@@ -89,12 +89,12 @@ protected:
     virtual void cancelDelayedRouting();
     virtual void startDelayedRouting();
     virtual void finalizeOperation(qint32 idx);
-    qint32 isCloseTo(const QPoint& pos);
-    qint32 isCloseToLine(const QPoint& pos);
+    qint32 isCloseTo(const QPoint& pos) const;
+    qint32 isCloseToLine(const QPoint& pos) const;
 
     void drawSinglePointSmall(const QPointF& pt, QPainter& p);
     void drawSinglePointLarge(const QPointF &pt, QPainter& p);
-    void drawLeadLine(const QPolygonF& line, QPainter& p);
+    void drawLeadLine(const QPolygonF& line, QPainter& p) const;
 
     void updateLeadLines(qint32 idx);
 
@@ -128,6 +128,9 @@ protected:
     QPolygonF subLinePixel2;
 
 private:
+    void showRoutingErrorMessage(const QString &msg) const;
+    void tryRouting(IGisLine::point_t& pt1, IGisLine::point_t& pt2) const;
+
     QTimer * timerRouting;
 };
 
diff --git a/src/mouse/line/IMouseEditLine.cpp b/src/mouse/line/IMouseEditLine.cpp
index 610a4d9..7f6dba7 100644
--- a/src/mouse/line/IMouseEditLine.cpp
+++ b/src/mouse/line/IMouseEditLine.cpp
@@ -18,12 +18,9 @@
 
 #include "CMainWindow.h"
 #include "GeoMath.h"
-#include "GeoMath.h"
 #include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
-#include "gis/CGisWidget.h"
 #include "gis/IGisLine.h"
-#include "gis/rte/router/CRouterSetup.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "helpers/CDraw.h"
 #include "helpers/CSettings.h"
@@ -160,12 +157,12 @@ void IMouseEditLine::abortStep()
     }
 }
 
-bool IMouseEditLine::useAutoRouting()
+bool IMouseEditLine::useAutoRouting() const
 {
     return scrOptEditLine->toolAutoRoute->isChecked();
 }
 
-bool IMouseEditLine::useVectorRouting()
+bool IMouseEditLine::useVectorRouting() const
 {
     return scrOptEditLine->toolVectorRoute->isChecked();
 }
@@ -179,7 +176,7 @@ void IMouseEditLine::drawLine(const QPolygonF &l, const QColor color, int width,
 
 void IMouseEditLine::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
 {
-    if(needsRedraw & (CCanvas::eRedrawMouse|CCanvas::eRedrawGis))
+    if(needsRedraw & (CCanvas::eRedrawMouse | CCanvas::eRedrawGis))
     {
         points.updatePixel(gis);
 
@@ -187,15 +184,13 @@ void IMouseEditLine::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRec
         pixelPts.clear();
         pixelSubs.clear();
 
-        for(int i = 0; i < points.size(); i++)
+        for(const IGisLine::point_t &pt : points)
         {
-            IGisLine::point_t& pt = points[i];
             pixelLine << pt.pixel;
             pixelPts << pt.pixel;
 
-            for(int n = 0; n < pt.subpts.size(); n++)
+            for(const IGisLine::subpt_t &sub : pt.subpts)
             {
-                IGisLine::subpt_t& sub = pt.subpts[n];
                 pixelLine << sub.pixel;
                 pixelSubs << sub.pixel;
             }
@@ -218,7 +213,7 @@ void IMouseEditLine::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRec
     p.setPen(Qt::NoPen);
     p.setBrush(Qt::white);
     QRect r1(0,0,9,9);
-    foreach(const QPointF &pt, pixelPts)
+    for(const QPointF &pt : pixelPts)
     {
         r1.moveCenter(pt.toPoint());
         p.drawRect(r1);
@@ -229,13 +224,13 @@ void IMouseEditLine::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRec
     p.setPen(Qt::NoPen);
     p.setBrush(Qt::black);
     QRect r2(0,0,7,7);
-    foreach(const QPointF &pt, pixelPts)
+    for(const QPointF &pt : pixelPts)
     {
         r2.moveCenter(pt.toPoint());
         p.drawRect(r2);
     }
 
-    foreach(const QPointF &pt, pixelSubs)
+    for(const QPointF &pt : pixelSubs)
     {
         p.drawEllipse(pt, 2, 2);
     }
@@ -350,6 +345,7 @@ void IMouseEditLine::slotAddPoint()
 void IMouseEditLine::slotNoRouting()
 {
     canvas->reportStatus(key.item, tr("<b>No Routing</b><br/>All points will be connected with a straight line.<br/>"));
+    canvas->reportStatus("Routino", QString());
 }
 
 void IMouseEditLine::slotAutoRouting()
@@ -360,6 +356,7 @@ void IMouseEditLine::slotAutoRouting()
 void IMouseEditLine::slotVectorRouting()
 {
     canvas->reportStatus(key.item, tr("<b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/>"));
+    canvas->reportStatus("Routino", QString());
 }
 
 
@@ -392,11 +389,11 @@ void IMouseEditLine::slotCopyToOrig()
 {
     QMutexLocker lock(&IGisItem::mutexItems);
 
-    IGisLine * l = getGisLine();
-    if(l != nullptr)
+    IGisLine * line = getGisLine();
+    if(line != nullptr)
     {
         CMainWindow::self().getElevationAt(points);
-        l->setDataFromPolyline(points);
+        line->setDataFromPolyline(points);
     }
 
 
@@ -464,7 +461,6 @@ void IMouseEditLine::slotRedo()
         idxHistory++;
     }
 
-
     points = history[idxHistory];
 
     scrOptEditLine->toolRedo->setEnabled(idxHistory < (history.size() - 1));
@@ -476,7 +472,7 @@ void IMouseEditLine::updateStatus()
 {
     if(!enableStatus || points.isEmpty())
     {
-        canvas->reportStatus("IMouseEditLine","");
+        canvas->reportStatus("IMouseEditLine", QString());
         return;
     }
 
@@ -487,19 +483,12 @@ void IMouseEditLine::updateStatus()
     qreal dist  = 0;
 
     qreal lastEle = points[0].ele;
-    qreal absDelta;
-    qreal delta;
-
-
     QPointF lastPos = points[0].coord;
 
-    for(int i = 0; i < points.size(); i++)
+    for(const IGisLine::point_t &pt1 : points)
     {
-        const IGisLine::point_t& pt1 = points[i];
-
-        delta       = pt1.ele - lastEle;
-        absDelta    = qAbs(delta);
-        if(absDelta > ASCEND_THRESHOLD)
+        qreal delta = pt1.ele - lastEle;
+        if(qAbs(delta) > ASCEND_THRESHOLD)
         {
             if(delta > 0)
             {
@@ -515,11 +504,10 @@ void IMouseEditLine::updateStatus()
         dist += GPS_Math_Distance(lastPos.x(), lastPos.y(), pt1.coord.x(), pt1.coord.y());
         lastPos = pt1.coord;
 
-        foreach(const IGisLine::subpt_t& pt, pt1.subpts)
+        for(const IGisLine::subpt_t& pt : pt1.subpts)
         {
-            delta       = pt.ele - lastEle;
-            absDelta    = qAbs(delta);
-            if(absDelta > ASCEND_THRESHOLD)
+            delta = pt.ele - lastEle;
+            if(qAbs(delta) > ASCEND_THRESHOLD)
             {
                 if(delta > 0)
                 {
diff --git a/src/mouse/line/IMouseEditLine.h b/src/mouse/line/IMouseEditLine.h
index 410cfb8..2673c47 100644
--- a/src/mouse/line/IMouseEditLine.h
+++ b/src/mouse/line/IMouseEditLine.h
@@ -38,8 +38,8 @@ class IMouseEditLine : public IMouse
 public:
     enum features_e
     {
-        eFeatureSnapToLines    = 0x01
-        ,eFeatureRouting        = 0x02
+        eFeatureSnapToLines = 0x01
+        , eFeatureRouting   = 0x02
     };
 
     /**
@@ -58,17 +58,17 @@ public:
     IMouseEditLine(const IGisItem::key_t &key, IGisLine &src, bool enableStatus, const QString& type, CGisDraw * gis, CCanvas * parent);
     virtual ~IMouseEditLine();
 
-    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRect &rect) override;
+    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override;
     void mousePressEvent(QMouseEvent *e) override;
     void mouseMoveEvent(QMouseEvent *e) override;
     void mouseReleaseEvent(QMouseEvent *e) override;
     void wheelEvent(QWheelEvent *e) override;
-    void keyPressEvent(QKeyEvent   *e) override;
+    void keyPressEvent(QKeyEvent *e) override;
 
     void abortStep();
 
-    bool useAutoRouting();
-    bool useVectorRouting();
+    bool useAutoRouting() const;
+    bool useVectorRouting() const;
 
     void setCanvasPanning(bool enable);
 
@@ -116,7 +116,7 @@ protected:
        @brief Get access to the IGisLine object a subclass of IMouseEditLine is handling.
        @return A valid pointer or 0.
      */
-    virtual IGisLine * getGisLine() = 0;
+    virtual IGisLine * getGisLine() const = 0;
 
     virtual void startNewLine(const QPointF &point);
 
@@ -130,7 +130,6 @@ protected:
     QList<SGisLine> history;
     qint32 idxHistory = NOIDX;
 
-
     /// the on screen buttons
     CScrOptEditLine * scrOptEditLine;
 
@@ -149,7 +148,7 @@ private:
     QPolygonF pixelSubs;
 
     /// the current active line operation (move, add, delete...)
-    ILineOp  * lineOp = nullptr;
+    ILineOp * lineOp = nullptr;
 
     bool enableStatus;
 
diff --git a/src/plot/CPlot.cpp b/src/plot/CPlot.cpp
index 68202b4..9da1a8f 100644
--- a/src/plot/CPlot.cpp
+++ b/src/plot/CPlot.cpp
@@ -42,15 +42,29 @@ CPlot::CPlot(CGisItemTrk *trk,  CLimit& limit, QWidget *parent)
     connect(&limit, &CLimit::sigChanged, this, &CPlot::setLimits);
 }
 
-void CPlot::setup(const QString& source, CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal f, fTrkPtGetVal funcGetX, fTrkPtGetVal funcGetY)
+void CPlot::setup(const CPropertyTrk::property_t& p)
 {
-    data->setXAxisType(type);
-    setXLabel(xLabel);
-    setYLabel(yLabel);
-    factor = f;
-    getX = funcGetX;
-    getY = funcGetY;
-    limit.setSource(source);
+    if(p.axisType == CPropertyTrk::property_t::eAxisDistance)
+    {
+        data->setXAxisType(CPlotData::eAxisLinear);
+
+        qreal scale;
+        QString unit;
+        IUnit::self().meter2unit(trk->getTotalDistance(), scale, unit);
+        setXTicScale(scale);
+        setXLabel(tr("distance [%1]").arg(unit));
+    }
+    else if(p.axisType == CPropertyTrk::property_t::eAxisTime)
+    {
+        data->setXAxisType(CPlotData::eAxisTime);
+        setXLabel(tr("time"));
+    }
+
+    setYLabel(p.yLabel);
+    factor  = p.factor;
+    getX    = p.getX;
+    getY    = p.getY;
+    limit.setSource(p.key);
     updateData();
 }
 
@@ -68,9 +82,9 @@ void CPlot::updateData()
 
     QPolygonF line;
     const CGisItemTrk::trk_t& t = trk->getTrackData();
-    foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+    for(const CGisItemTrk::trkseg_t& seg : t.segs)
     {
-        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+        for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
         {
             if(!(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
                && getY(trkpt) != NOFLOAT)
@@ -88,21 +102,21 @@ void CPlot::setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove)
 {
     if(nullptr == ptMouseMove ||  getX == nullptr || getY == nullptr)
     {
-        if(posMouse != NOPOINT)
+        if(posMouse1 != NOPOINT)
         {
-            posMouse = NOPOINT;
+            posMouse1 = NOPOINT;
             needsRedraw = true;
         }
     }
     else
     {
-        if(posMouse == NOPOINT)
+        if(posMouse1 == NOPOINT)
         {
             needsRedraw = true;
         }
 
-        posMouse.rx() = left  + data->x().val2pt(getX(*ptMouseMove));
-        posMouse.ry() = top  +  data->y().val2pt(getY(*ptMouseMove));
+        posMouse1.rx() = left  + data->x().val2pt(getX(*ptMouseMove));
+        posMouse1.ry() = top  +  data->y().val2pt(getY(*ptMouseMove));
     }
     update();
 }
diff --git a/src/plot/CPlot.h b/src/plot/CPlot.h
index 7292114..6c09cae 100644
--- a/src/plot/CPlot.h
+++ b/src/plot/CPlot.h
@@ -20,6 +20,7 @@
 #define CPLOT_H
 
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CPropertyTrk.h"
 #include "plot/IPlot.h"
 #include <functional>
 
@@ -33,7 +34,7 @@ public:
     CPlot(CGisItemTrk *trk, CLimit& limit,  QWidget *parent);
     virtual ~CPlot() = default;
 
-    void setup(const QString &source, CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal f, fTrkPtGetVal funcGetX, fTrkPtGetVal funcGetY);
+    void setup(const CPropertyTrk::property_t &p);
 
     void updateData() override;
 
diff --git a/src/plot/CPlotAxis.cpp b/src/plot/CPlotAxis.cpp
index be57a06..e9abd47 100644
--- a/src/plot/CPlotAxis.cpp
+++ b/src/plot/CPlotAxis.cpp
@@ -64,7 +64,7 @@ void CPlotAxis::setMinMax( qreal givenMin, qreal givenMax )
 
 void CPlotAxis::calc()
 {
-    qreal tmpAbs = qFabs(usedMax - usedMin);
+    qreal tmpAbs = qFabs(usedMax - usedMin) * ticScale;
     qreal tmp    = qLog10( tmpAbs / 10.0 );
 
     qreal exponent = (int) tmp;
@@ -81,7 +81,7 @@ void CPlotAxis::calc()
     }
 
     interval = exponent + residue;
-    interval = qPow( 10, interval );
+    interval = qPow( 10, interval ) / ticScale;
 
     if ( autoscale )
     {
@@ -102,9 +102,10 @@ void CPlotAxis::calc()
 
 const QString CPlotAxis::fmtsgl( qreal val )
 {
+    QString f;
     int exponent = (0. == val) ? 0 : (int) qLog10( qFabs(val) );
 
-    QString f;
+    val *= ticScale;
     if ( abs(exponent) > 5 )
     {
         f = "%1.2e";
@@ -142,7 +143,9 @@ const QString CPlotAxis::fmtsgl( qreal val )
 const QString CPlotAxis::fmtdbl( qreal val )
 {
     int exponent = 0;
+
     qreal residue  = 0;
+    val *= ticScale;
 
     if ( val != 0 )
     {
@@ -182,12 +185,12 @@ int CPlotAxis::getScaleWidth( const QFontMetrics& m )
     }
 
     int width = 0;
-    QString format_single_prec = fmtsgl( interval );
+    QString format_single_prec = ((interval * ticScale) < 1) ? fmtdbl(interval) : fmtsgl(interval);
 
     const tic_t * t = ticmark();
     while (nullptr != t)
     {
-        int tmp = m.width( QString().sprintf( format_single_prec.toLatin1().data(), t->val ) );
+        int tmp = m.width( QString().sprintf( format_single_prec.toLatin1().data(), t->val * ticScale) );
         width = qMax(width, tmp);
 
         t = ticmark(t);
@@ -207,7 +210,7 @@ void CPlotAxis::getLimits(qreal& limMin, qreal& limMax, qreal& useMin, qreal& us
 
 const CPlotAxis::tic_t* CPlotAxis::ticmark( const tic_t * t )
 {
-    QString format_single_prec = fmtsgl( interval );
+    QString format_single_prec = ((interval * ticScale) < 1) ? fmtdbl(interval) : fmtsgl(interval);
 
     switch ( ticType )
     {
@@ -280,7 +283,7 @@ const CPlotAxis::tic_t* CPlotAxis::ticmark( const tic_t * t )
         break;
     }
 
-    tic.lbl.sprintf( format_single_prec.toLatin1(), tic.val );
+    tic.lbl.sprintf( format_single_prec.toLatin1(), tic.val * ticScale );
 
     return &tic;
 }
diff --git a/src/plot/CPlotAxis.h b/src/plot/CPlotAxis.h
index f5f2b97..a20e39d 100644
--- a/src/plot/CPlotAxis.h
+++ b/src/plot/CPlotAxis.h
@@ -100,6 +100,11 @@ public:
         autoscale = on;
     }
 
+    void setTicScale(qreal scale)
+    {
+        ticScale = scale;
+    }
+
     inline tictype_e getTicType() const
     {
         return ticType;
@@ -153,10 +158,12 @@ protected:
      */
     qint32 scaleWidth = 0;
 
-    ///the ticmark generation type
+    /// the ticmark generation type
     tictype_e ticType = eTicNorm;
-    ///local copy of the last ticmark object
+    /// local copy of the last ticmark object
     tic_t tic;
+    /// this is the scale used to convert meters into the scale's unit (km, ft, ml, nm)
+    qreal ticScale = 1.0;
 
     ///points of dimension
     quint32 points = 0;
diff --git a/src/plot/CPlotProfile.cpp b/src/plot/CPlotProfile.cpp
index 24d768e..5090f19 100644
--- a/src/plot/CPlotProfile.cpp
+++ b/src/plot/CPlotProfile.cpp
@@ -63,6 +63,11 @@ void CPlotProfile::updateData()
 {
     clear();
 
+    qreal scale;
+    QString unit;
+    IUnit::self().meter2unit(trk->getTotalDistance(), scale, unit);
+    setXTicScale(scale);
+
     if(mode == eModeIcon)
     {
         setXLabel(trk->getName());
@@ -70,7 +75,7 @@ void CPlotProfile::updateData()
     }
     else
     {
-        setXLabel(tr("distance [%1]").arg(IUnit::self().baseunit));
+        setXLabel(tr("distance [%1]").arg(unit));
         setYLabel(tr("alt. [%1]").arg(IUnit::self().baseunit));
     }
 
@@ -82,9 +87,9 @@ void CPlotProfile::updateData()
 
     qreal basefactor = IUnit::self().basefactor;
     const CGisItemTrk::trk_t& t = trk->getTrackData();
-    foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+    for(const CGisItemTrk::trkseg_t& seg : t.segs)
     {
-        foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+        for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
         {
             if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
             {
@@ -132,21 +137,21 @@ void CPlotProfile::setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove)
 {
     if(nullptr == ptMouseMove)
     {
-        if(posMouse != NOPOINT)
+        if(posMouse1 != NOPOINT)
         {
-            posMouse = NOPOINT;
+            posMouse1 = NOPOINT;
             needsRedraw = true;
         }
     }
     else
     {
-        if(posMouse == NOPOINT)
+        if(posMouse1 == NOPOINT)
         {
             needsRedraw = true;
         }
 
-        posMouse.rx() = left + data->x().val2pt(ptMouseMove->distance);
-        posMouse.ry() = top  + data->y().val2pt(ptMouseMove->ele);
+        posMouse1.rx() = left + data->x().val2pt(ptMouseMove->distance);
+        posMouse1.ry() = top  + data->y().val2pt(ptMouseMove->ele);
     }
     update();
 }
diff --git a/src/plot/IPlot.cpp b/src/plot/IPlot.cpp
index a2ac5fc..6818cf4 100644
--- a/src/plot/IPlot.cpp
+++ b/src/plot/IPlot.cpp
@@ -23,6 +23,7 @@
 #include "CMainWindow.h"
 #include "gis/CGisWidget.h"
 #include "gis/trk/CActivityTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CDraw.h"
 #include "helpers/CSettings.h"
 #include "mouse/CScrOptRangeTrk.h"
@@ -93,6 +94,8 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
     actionResetZoom = menu->addAction(QIcon("://icons/32x32/Zoom.png"),        tr("Reset Zoom"), this, SLOT(slotResetZoom()));
     actionStopRange = menu->addAction(QIcon("://icons/32x32/SelectRange.png"), tr("Stop Range"), this, SLOT(slotStopRange()));
     actionPrint     = menu->addAction(QIcon("://icons/32x32/Save.png"),        tr("Save..."),    this, SLOT(slotSave()));
+    menu->addSeparator();
+    actionAddWpt    = menu->addAction(QIcon("://icons/32x32/AddWpt.png"),      tr("Add Waypoint"), this, SLOT(slotAddWpt()));
 
     connect(this, &IPlot::customContextMenuRequested, this, &IPlot::slotContextMenu);
 }
@@ -128,12 +131,19 @@ IPlot::~IPlot()
 
 void IPlot::clear()
 {
+    needsRedraw = true;
     data->lines.clear();
     data->tags.clear();
     data->badData = true;
     update();
 }
 
+void IPlot::setXTicScale(qreal scale)
+{
+    data->x().setTicScale(scale);
+    setSizes();
+    update();
+}
 
 void IPlot::setYLabel(const QString& str)
 {
@@ -233,7 +243,7 @@ void IPlot::resizeEvent(QResizeEvent * e)
 void IPlot::leaveEvent(QEvent * e)
 {
     needsRedraw = true;
-    posMouse    = NOPOINT;
+    posMouse1    = NOPOINT;
 
     CCanvas::restoreOverrideCursor("IPlot::leaveEvent");
     update();
@@ -307,13 +317,13 @@ void IPlot::mouseMoveEvent(QMouseEvent * e)
     }
 
     QPoint pos  = e->pos();
-    posMouse    = NOPOINT;
+    posMouse1    = NOPOINT;
     if(graphAreaContainsMousePos(pos))
     {
-        posMouse = pos;
+        posMouse1 = pos;
 
         // set point of focus at track object
-        qreal x = data->x().pt2val(posMouse.x() - left);
+        qreal x = data->x().pt2val(posMouse1.x() - left);
         setMouseFocus(x, CGisItemTrk::eFocusMouseMove);
 
         // update canvas if visible
@@ -324,6 +334,7 @@ void IPlot::mouseMoveEvent(QMouseEvent * e)
         }
         e->accept();
     }
+
     update();
 }
 
@@ -362,11 +373,9 @@ void IPlot::mousePressEvent(QMouseEvent * e)
     bool wasProcessed = true;
 
     QPoint pos  = e->pos();
-    posMouse    = NOPOINT;
-    if((e->button() == Qt::LeftButton) && graphAreaContainsMousePos(pos))
+    posMouse1    = graphAreaContainsMousePos(pos) ? pos : NOPOINT;
+    if(e->button() == Qt::LeftButton)
     {
-        posMouse = pos;
-
         if(mode == eModeIcon)
         {
             trk->edit();
@@ -374,7 +383,7 @@ void IPlot::mousePressEvent(QMouseEvent * e)
         else
         {
             // set point of focus at track object
-            qreal x = data->x().pt2val(posMouse.x() - left);
+            qreal x = data->x().pt2val(posMouse1.x() - left);
 
             switch(mouseClickState)
             {
@@ -392,7 +401,7 @@ void IPlot::mousePressEvent(QMouseEvent * e)
                         If the object is not the owner of the range selection, no action has to be taken.
                         However the user has to be informed, that he clicked on the wrong widget.
                      */
-                    new CFadingIcon(posMouse, "://icons/48x48/NoGo.png", this);
+                    new CFadingIcon(posMouse1, "://icons/48x48/NoGo.png", this);
                     wasProcessed = false;
                 }
                 break;
@@ -618,7 +627,7 @@ void IPlot::draw()
     {
         QRect r = rect();
         r.adjust(2,2,-2,-2);
-        if(underMouse() || posMouse != NOPOINT || solid)
+        if(underMouse() || posMouse1 != NOPOINT || solid)
         {
             p.setPen(solid ? CDraw::penBorderBlack : CDraw::penBorderBlue);
             p.setOpacity(1.0);
@@ -691,7 +700,7 @@ QPolygonF IPlot::getVisiblePolygon(const QPolygonF &polyline, QPolygonF &line) c
     int ptx = NOINT;
     int pty = NOINT;
 
-    foreach(const QPointF &pt, polyline)
+    for(const QPointF &pt : polyline)
     {
         int oldPtx = ptx;
         int oldPty = pty;
@@ -1036,17 +1045,17 @@ void IPlot::drawLegend(QPainter& p)
 
 void IPlot::drawDecoration( QPainter &p )
 {
-    if(posMouse != NOPOINT)
+    if(posMouse1 != NOPOINT)
     {
         // draw the vertical `you are here` line
-        int x = posMouse.x();
+        int x = posMouse1.x();
         p.setPen(QPen(Qt::red, 2));
         if(x >= left && x <= right)
         {
             p.drawLine(x, top, x, bottom);
 
             // check if the mouse is near a waypoint
-            foreach(const CPlotData::point_t& tag, data->tags)
+            for(const CPlotData::point_t& tag : data->tags)
             {
                 int ptx = left + data->x().val2pt( tag.point.x() );
 
@@ -1166,7 +1175,7 @@ void IPlot::drawActivities(QPainter& p)
 
     QRect rectIconFrame(0,0,20,20);
     QRect rectIcon(2,2,16,16);
-    foreach(const CActivityTrk::activity_range_t& range, ranges)
+    for(const CActivityTrk::activity_range_t& range : ranges)
     {
         int x1, x2;
         if(data->axisType == CPlotData::eAxisTime)
@@ -1219,8 +1228,13 @@ void IPlot::slotContextMenu(const QPoint & point)
     actionResetZoom->setEnabled(isZoomed());
     actionStopRange->setEnabled((mouseClickState != eMouseClickIdle) && !(idxSel1 == NOIDX || idxSel2 == NOIDX));
     actionPrint->setEnabled(mouseClickState != eMouseClick2nd);
+    actionAddWpt->setDisabled(posMouse1 == NOPOINT);
+
+    posMouse2 = posMouse1;
 
     menu->exec(p);
+
+    posMouse2 = NOPOINT;
 }
 
 void IPlot::slotSave()
@@ -1305,6 +1319,27 @@ void IPlot::slotResetZoom()
 }
 
 
+void IPlot::slotAddWpt()
+{
+    if(posMouse2 == NOPOINT)
+    {
+        return;
+    }
+
+    const CGisItemTrk::trkpt_t * trkpt = trk->getMouseMoveFocusPoint();
+    if(trkpt == nullptr)
+    {
+        return;
+    }
+
+    CGisWidget::self().addWptByPos({trkpt->lon, trkpt->lat});
+    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+    if(canvas != nullptr)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+    }
+}
+
 void IPlot::setMouseRangeFocus(const CGisItemTrk::trkpt_t * ptRange1, const CGisItemTrk::trkpt_t *ptRange2)
 {
     if(nullptr == ptRange1 || nullptr == ptRange2)
diff --git a/src/plot/IPlot.h b/src/plot/IPlot.h
index dd9f134..4a13634 100644
--- a/src/plot/IPlot.h
+++ b/src/plot/IPlot.h
@@ -53,6 +53,8 @@ public:
 
     bool isZoomed() const;
 
+    void clear();
+
     using INotifyTrk::setMouseFocus;
 
 signals:
@@ -67,12 +69,13 @@ private slots:
     void slotCopy();
     void slotStopRange();
     void slotResetZoom();
+    void slotAddWpt();
 
 
 protected:
+    void setXTicScale(qreal scale);
     void setYLabel(const QString& str);
     void setXLabel(const QString& str);
-    void clear();
     void newLine(const QPolygonF& line, const QString& label);
     void addLine(const QPolygonF& line, const QString& label);
     void setLimits();
@@ -127,7 +130,8 @@ protected:
     bool solid     = false;
 
     QImage buffer;
-    QPoint posMouse = NOPOINT;
+    QPoint posMouse1 = NOPOINT; ///< pixel coordinate of mouse in graph area while in focus
+    QPoint posMouse2 = NOPOINT; ///< pixel coordinate of mouse in graph area while in context menu function
 
     /**
        @brief The track this plot is attached to
@@ -170,6 +174,7 @@ protected:
     QAction * actionResetZoom;
     QAction * actionPrint;
     QAction * actionStopRange;
+    QAction * actionAddWpt;
 
     qint32 idxSel1 = NOIDX;
     qint32 idxSel2 = NOIDX;
diff --git a/src/plot/ITrack.cpp b/src/plot/ITrack.cpp
index bb39d00..e30f620 100644
--- a/src/plot/ITrack.cpp
+++ b/src/plot/ITrack.cpp
@@ -57,20 +57,20 @@ void ITrack::setupProjection(const QRectF& boundingBox)
     if(pjsrc)
     {
         pj_free(pjsrc);
-        pjsrc = 0;
+        pjsrc = nullptr;
     }
 
     if(boundingBox.top() > (60*DEG_TO_RAD))
     {
-        pjsrc =  pj_init_plus("+init=epsg:32661");
+        pjsrc = pj_init_plus("+init=epsg:32661");
     }
     else if(boundingBox.bottom() < (-60*DEG_TO_RAD))
     {
-        pjsrc =  pj_init_plus("+init=epsg:32761");
+        pjsrc = pj_init_plus("+init=epsg:32761");
     }
     else
     {
-        pjsrc =  pj_init_plus("+init=epsg:3857");
+        pjsrc = pj_init_plus("+init=epsg:3857");
     }
 }
 
@@ -94,7 +94,7 @@ void ITrack::setTrack(const QPolygonF& track)
 
 void ITrack::updateData()
 {
-    if((pjsrc == 0) || (nullptr == trk && coords.isEmpty()))
+    if((pjsrc == nullptr) || (nullptr == trk && coords.isEmpty()))
     {
         return;
     }
@@ -103,9 +103,9 @@ void ITrack::updateData()
     {
         coords.clear();
         const CGisItemTrk::trk_t& t = trk->getTrackData();
-        foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+        for(const CGisItemTrk::trkseg_t& seg : t.segs)
         {
-            foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+            for(const CGisItemTrk::trkpt_t& trkpt : seg.pts)
             {
                 if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
                 {
@@ -118,7 +118,7 @@ void ITrack::updateData()
     }
 
     line.clear();
-    foreach(const QPointF &trkpt, coords)
+    for(const QPointF &trkpt : coords)
     {
         QPointF pt(trkpt.x(), trkpt.y());
         pj_transform(pjtar, pjsrc, 1, 0, &pt.rx(), &pt.ry(), 0);
diff --git a/src/plot/ITrack.h b/src/plot/ITrack.h
index 4253065..9ef41da 100644
--- a/src/plot/ITrack.h
+++ b/src/plot/ITrack.h
@@ -45,10 +45,10 @@ protected:
     void draw(QPainter& p);
     void draw();
 
-    projPJ pjsrc = 0;
-    projPJ pjtar = 0;
+    projPJ pjsrc = nullptr;
+    projPJ pjtar = nullptr;
 
-    bool needsRedraw =true;
+    bool needsRedraw = true;
     CGisItemTrk * trk = nullptr;
     QPolygonF coords;
     QPolygonF line;
diff --git a/src/print/CPrintDialog.cpp b/src/print/CPrintDialog.cpp
index 918c513..dd68c2e 100644
--- a/src/print/CPrintDialog.cpp
+++ b/src/print/CPrintDialog.cpp
@@ -215,7 +215,7 @@ void CPrintDialog::slotPrint()
     int n = 0;
     PROGRESS_SETUP(tr("Printing pages."), 0, N, this);
 
-    foreach(const QPointF &pt, centers)
+    for(const QPointF &pt : centers)
     {
         if(!first)
         {
diff --git a/src/qlgt/CQlgtDb.cpp b/src/qlgt/CQlgtDb.cpp
index b92a210..a069d7b 100644
--- a/src/qlgt/CQlgtDb.cpp
+++ b/src/qlgt/CQlgtDb.cpp
@@ -432,7 +432,7 @@ void CQlgtDb::migrateDB(int version)
                 {
                 case eWpt:
                 {
-                    CQlgtWpt wpt(id, 0);
+                    CQlgtWpt wpt(id, nullptr);
                     stream >> wpt;
                     comment = wpt.getInfo();
                 }
@@ -440,7 +440,7 @@ void CQlgtDb::migrateDB(int version)
 
                 case eTrk:
                 {
-                    CQlgtTrack trk(id, 0);
+                    CQlgtTrack trk(id, nullptr);
                     stream >> trk;
                     comment = trk.getInfo();
                 }
@@ -448,7 +448,7 @@ void CQlgtDb::migrateDB(int version)
 
                 case eRte:
                 {
-                    CQlgtRoute rte(id, 0);
+                    CQlgtRoute rte(id, nullptr);
                     stream >> rte;
                     comment = rte.getInfo();
                 }
diff --git a/src/qlgt/CQlgtDiary.cpp b/src/qlgt/CQlgtDiary.cpp
index 5955738..4c41ac0 100644
--- a/src/qlgt/CQlgtDiary.cpp
+++ b/src/qlgt/CQlgtDiary.cpp
@@ -166,7 +166,7 @@ QDataStream& operator <<(QDataStream& s, CQlgtDiary& diary)
 //    s2.setVersion(QDataStream::Qt_4_5);
 
 //    s2 << diary.wpts.count();
-//    foreach(CWpt * wpt, diary.wpts)
+//    for(CWpt * wpt : diary.wpts)
 //    {
 //        s2 << *wpt;
 //    }
@@ -182,7 +182,7 @@ QDataStream& operator <<(QDataStream& s, CQlgtDiary& diary)
 //    s3.setVersion(QDataStream::Qt_4_5);
 
 //    s3 << diary.trks.count();
-//    foreach(CTrack * trk, diary.trks)
+//    for(CTrack * trk : diary.trks)
 //    {
 //        s3 << *trk;
 //    }
@@ -198,7 +198,7 @@ QDataStream& operator <<(QDataStream& s, CQlgtDiary& diary)
 //    s4.setVersion(QDataStream::Qt_4_5);
 
 //    s4 << diary.rtes.count();
-//    foreach(CRoute * rte, diary.rtes)
+//    for(CRoute * rte : diary.rtes)
 //    {
 //        s4 << *rte;
 //    }
diff --git a/src/qlgt/CQlgtFolder.cpp b/src/qlgt/CQlgtFolder.cpp
index 4f18951..6d52da0 100644
--- a/src/qlgt/CQlgtFolder.cpp
+++ b/src/qlgt/CQlgtFolder.cpp
@@ -26,7 +26,7 @@
 CQlgtFolder::CQlgtFolder(quint64 id, QSqlDatabase &db)
     : type(0)
     , locked(false)
-    , diary(0)
+    , diary(nullptr)
     , id(id)
 {
     QSqlQuery query(db);
diff --git a/src/qlgt/CQlgtTrack.cpp b/src/qlgt/CQlgtTrack.cpp
index bf9ea24..a23bd85 100644
--- a/src/qlgt/CQlgtTrack.cpp
+++ b/src/qlgt/CQlgtTrack.cpp
@@ -176,7 +176,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
                 s1 >> dummy;
                 s1 >> dummy;
 
-                pt1++;
+                ++pt1;
             }
             break;
         }
@@ -244,7 +244,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
                 s1 >> pt1->vy;
                 ///< [m/s] velocity
                 s1 >> pt1->vz;
-                pt1++;
+                ++pt1;
             }
 
             track.setExt1Data();
diff --git a/src/qlgt/CQlgtTrack.h b/src/qlgt/CQlgtTrack.h
index cf6db89..cd9292a 100644
--- a/src/qlgt/CQlgtTrack.h
+++ b/src/qlgt/CQlgtTrack.h
@@ -35,7 +35,7 @@ public:
     virtual ~CFlags()
     {
     }
-    const quint32 flag() const
+    quint32 flag() const
     {
         return flags;
     }
@@ -78,7 +78,7 @@ public:
         flags = f;
         return flags;
     }
-    const bool isChanged() const
+    bool isChanged() const
     {
         return changed;
     }
diff --git a/src/qlgt/CQlgtWpt.cpp b/src/qlgt/CQlgtWpt.cpp
index 204b704..94ee4db 100644
--- a/src/qlgt/CQlgtWpt.cpp
+++ b/src/qlgt/CQlgtWpt.cpp
@@ -299,7 +299,7 @@ QDataStream& operator <<(QDataStream& s, CQlgtWpt& wpt)
 
         s3 << cache.logs.count();
 
-        foreach(const CQlgtWpt::geocachelog_t& log, cache.logs)
+        for(const CQlgtWpt::geocachelog_t& log : cache.logs)
         {
             s3 << log.id;
             s3 << log.date;
diff --git a/src/qlgt/CQmsDb.cpp b/src/qlgt/CQmsDb.cpp
index 3fb331e..f9498d7 100644
--- a/src/qlgt/CQmsDb.cpp
+++ b/src/qlgt/CQmsDb.cpp
@@ -127,7 +127,7 @@ void CQmsDb::addFolder(CQlgtFolder& folder)
         generate key and info text properly
      */
     CDBProject project(folder);
-    foreach(quint64 id, folder.items)
+    for(quint64 id : folder.items)
     {
         quint64 idChild = mapItemIDs[id];
         query.prepare("SELECT type FROM items WHERE id=:id");
diff --git a/src/qlgt/converter.cpp b/src/qlgt/converter.cpp
index 4538c1a..40881b8 100644
--- a/src/qlgt/converter.cpp
+++ b/src/qlgt/converter.cpp
@@ -101,24 +101,21 @@ CGisItemWpt::CGisItemWpt(const CQlgtWpt& wpt1)
         geocache.state      = wpt1.geocache.state;
         geocache.locale     = wpt1.geocache.locale;
 
-        foreach(const CQlgtWpt::geocachelog_t& log1, wpt1.geocache.logs)
+        for(const CQlgtWpt::geocachelog_t& log1 : wpt1.geocache.logs)
         {
             CGisItemWpt::geocachelog_t log;
             log.id          = log1.id;
             IUnit::parseTimestamp(log1.date, log.date);
             log.type        = log1.type;
-            ;
             log.finderId    = log1.finderId;
-            ;
             log.finder      = log1.finder;
-            ;
             log.textIsHtml  = log1.text.contains("</");
             log.text        = log1.text;
             geocache.logs << log;
         }
     }
 
-    foreach(const CQlgtWpt::image_t& image1, wpt1.images)
+    for(const CQlgtWpt::image_t& image1 : wpt1.images)
     {
         CGisItemWpt::image_t image;
 
@@ -148,7 +145,7 @@ CGisItemTrk::CGisItemTrk(const CQlgtTrack &trk1)
 
     bool hasExtData = trk1.hasExt1Data();
     trkseg_t seg;
-    foreach(const CQlgtTrack::pt_t& pt1, trk1.track)
+    for(const CQlgtTrack::pt_t& pt1 : trk1.track)
     {
         trkpt_t pt;
         QDateTime time = QDateTime::fromTime_t(pt1._timestamp,QTimeZone("UTC"));
@@ -222,7 +219,7 @@ CGisItemTrk::CGisItemTrk(const IQlgtOverlay& ovl)
     trk.color   = ovl.color.name();
 
     trkseg_t seg;
-    foreach(const IQlgtOverlay::pt_t& pt1, ovl.points)
+    for(const IQlgtOverlay::pt_t& pt1 : ovl.points)
     {
         trkpt_t pt;
         pt.lon = pt1.u * RAD_TO_DEG;
@@ -257,7 +254,7 @@ CGisItemOvlArea::CGisItemOvlArea(const IQlgtOverlay& ovl)
     area.style      = ovl.style;
     area.opacity    = ovl.opacity != 255;
 
-    foreach(const IQlgtOverlay::pt_t& pt1, ovl.points)
+    for(const IQlgtOverlay::pt_t& pt1 : ovl.points)
     {
         pt_t pt;
         pt.lon = pt1.u * RAD_TO_DEG;
@@ -284,7 +281,7 @@ CGisItemRte::CGisItemRte(const CQlgtRoute& rte1)
     QPointF focus;
     QPixmap icon = getWptIconByName(rte1.iconString, focus);
 
-    foreach (const CQlgtRoute::pt_t& pt1, rte1.priRoute)
+    for(const CQlgtRoute::pt_t& pt1 : rte1.priRoute)
     {
         rtept_t pt;
         pt.lon      = pt1.lon;
diff --git a/src/resources.qrc b/src/resources.qrc
index eda6735..934b6bb 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -128,6 +128,9 @@
         <file>icons/32x32/PointShow.png</file>
         <file>icons/32x32/AreaMove.png</file>
         <file>icons/32x32/SelectRange.png</file>
+        <file>icons/32x32/SelectArea.png</file>
+        <file>icons/32x32/SelectExactArea.png</file>
+        <file>icons/32x32/SelectIntersectArea.png</file>
         <file>icons/32x32/Area.png</file>
         <file>icons/32x32/Reverse.png</file>
         <file>icons/32x32/Combine.png</file>
@@ -308,6 +311,9 @@
         <file>icons/48x48/PointShow.png</file>
         <file>icons/48x48/AreaMove.png</file>
         <file>icons/48x48/SelectRange.png</file>
+        <file>icons/48x48/SelectArea.png</file>
+        <file>icons/48x48/SelectExactArea.png</file>
+        <file>icons/48x48/SelectIntersectArea.png</file>
         <file>icons/48x48/Area.png</file>
         <file>icons/48x48/Reverse.png</file>
         <file>icons/48x48/Combine.png</file>
@@ -455,6 +461,7 @@
         <file>cursors/cursorMoveArea.png</file>
         <file>cursors/cursorDelete.png</file>
         <file>cursors/cursorSelectRange.png</file>
+        <file>cursors/cursorSelectArea.png</file>
         <file>cursors/cursorAdd.png</file>
         <file>cursors/cursorPrint.png</file>
         <file>cursors/cursorSave.png</file>
diff --git a/src/helpers/CAppOpts.h b/src/setup/CAppOpts.h
similarity index 100%
rename from src/helpers/CAppOpts.h
rename to src/setup/CAppOpts.h
diff --git a/src/setup/CAppSetupLinux.cpp b/src/setup/CAppSetupLinux.cpp
new file mode 100644
index 0000000..a5120ed
--- /dev/null
+++ b/src/setup/CAppSetupLinux.cpp
@@ -0,0 +1,68 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CAppSetupLinux.h"
+#include "config.h"
+
+#ifndef _MKSTR_1
+#define _MKSTR_1(x)    #x
+#define _MKSTR(x)      _MKSTR_1(x)
+#endif
+
+void CAppSetupLinux::initQMapShack()
+{
+    prepareGdal("", "");
+
+    // setup translators
+    QString resourceDir     = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
+    QString translationPath = QCoreApplication::applicationDirPath();
+    translationPath.replace(QRegExp("bin$"), "share/qmapshack/translations");
+    prepareTranslator(resourceDir, "qt_");
+    prepareTranslator(translationPath, "qmapshack_");
+
+    // create directories
+    IAppSetup::path(defaultCachePath(), 0, true, "CACHE");
+    IAppSetup::path(userDataPath("WaypointIcons"), 0, true, "USER DATA");
+    IAppSetup::path(logDir(), 0, true, "LOG");
+}
+
+
+QString CAppSetupLinux::routinoPath(QString xmlFile)
+{
+    QDir dirXml(_MKSTR(ROUTINO_XML_PATH));
+    return IAppSetup::path(dirXml.absolutePath(), xmlFile, false, "ROUTINO");
+}
+
+
+QString CAppSetupLinux::defaultCachePath()
+{
+    return IAppSetup::path(QDir::home().absolutePath(), ".QMapShack/", false, 0);
+}
+
+
+QString CAppSetupLinux::userDataPath(QString subdir)
+{
+    QString path = QDir::home().absoluteFilePath(CONFIGDIR);
+    return IAppSetup::path(path, subdir, false, 0);
+}
+
+
+QString CAppSetupLinux::logDir()
+{
+    return QDir::temp().absolutePath();
+}
diff --git a/src/gis/fit/decoder/CFitCrcState.h b/src/setup/CAppSetupLinux.h
similarity index 69%
copy from src/gis/fit/decoder/CFitCrcState.h
copy to src/setup/CAppSetupLinux.h
index 98bead3..2a5a336 100644
--- a/src/gis/fit/decoder/CFitCrcState.h
+++ b/src/setup/CAppSetupLinux.h
@@ -16,19 +16,22 @@
 
 **********************************************************************************************/
 
-#ifndef CFITCRCSTATE_H
-#define CFITCRCSTATE_H
+#ifndef CAPPSETUPLINUX_H
+#define CAPPSETUPLINUX_H
 
-#include "gis/fit/decoder/IFitDecoderState.h"
+#include "setup/IAppSetup.h"
 
-class CFitCrcState final : public IFitDecoderState
+#include <QtCore>
+
+class CAppSetupLinux : public IAppSetup
 {
 public:
-    CFitCrcState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileCrc) { reset(); }
-    virtual ~CFitCrcState() {}
-
-    void reset() override;
-    decode_state_e process(quint8 &dataByte) override;
+    void initQMapShack() override;
+    QString routinoPath(QString xmlFile) override;
+    QString defaultCachePath() override;
+    QString userDataPath(QString subdir = 0) override;
+    QString logDir() override;
 };
 
-#endif //CFITCRCSTATE_H
+
+#endif // CAPPSETUPLINUX_H
diff --git a/src/setup/CAppSetupMac.cpp b/src/setup/CAppSetupMac.cpp
new file mode 100644
index 0000000..df08d53
--- /dev/null
+++ b/src/setup/CAppSetupMac.cpp
@@ -0,0 +1,144 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "setup/CAppSetupMac.h"
+
+static QString relTranslationDir = "Resources/translations"; // app
+static QString relRoutinoDir     = "Resources/routino"; // app
+static QString relGdalDir        = "Resources/gdal"; // app
+static QString relProjDir        = "Resources/proj"; // app
+static QString relBinDir         = "Resources/bin"; // app
+
+static QString relLogDir         = "Library/Logs"; // home
+
+
+void CAppSetupMac::extendPath()
+{
+    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+    QStringList envlist = env.toStringList();
+    QString value = "";
+    for(int i=0; i < envlist.size(); i++)
+    {
+        QString entry = envlist[i];
+        if(entry.startsWith("PATH="))
+        {
+            int index = entry.indexOf("=");
+
+            if(index != -1)
+            {
+                value = entry.right(entry.length() - (index+1)) + ":";
+            }
+            break;
+        }
+    }
+    QString binDir = getApplicationDir(relBinDir).absolutePath();
+    qDebug() << "BIN" << binDir;
+    value += binDir;
+    qputenv("PATH", value.toLatin1().constData());
+}
+
+
+void CAppSetupMac::initQMapShack()
+{
+    extendPath();
+    // setup gdal
+    QString gdalDir = getApplicationDir(relGdalDir).absolutePath();
+    QString projDir = getApplicationDir(relProjDir).absolutePath();
+    prepareGdal(gdalDir, projDir);
+
+    // setup translators
+    QString translationPath = getApplicationDir(relTranslationDir).absolutePath();
+    prepareTranslator(translationPath, "qt_");
+    prepareTranslator(translationPath, "qmapshack_");
+
+    migrateDirContent(defaultCachePath());
+    migrateDirContent(userDataPath());
+
+    // create directories
+    IAppSetup::path(defaultCachePath(), 0, true, "CACHE");
+    IAppSetup::path(userDataPath("WaypointIcons"), 0, true, "USER DATA");
+    IAppSetup::path(logDir(), 0, false, "LOG");
+}
+
+
+QString CAppSetupMac::routinoPath(QString xmlFile)
+{
+    QDir dirXml = getApplicationDir(relRoutinoDir);
+    return IAppSetup::path(dirXml.absolutePath(), xmlFile, false, "ROUTINO");
+}
+
+
+QString CAppSetupMac::defaultCachePath()
+{
+    QString cachePath =  QStandardPaths::standardLocations(QStandardPaths::CacheLocation).first();
+    return IAppSetup::path(cachePath, 0, false, 0);
+}
+
+
+QString CAppSetupMac::userDataPath(QString subdir)
+{
+    QString dataDir = QStandardPaths::standardLocations(QStandardPaths::AppLocalDataLocation).first();
+    return IAppSetup::path(dataDir, subdir, false, 0);
+}
+
+
+QString CAppSetupMac::logDir()
+{
+    // home location returns / (root) instead of user home...
+    QString home = QStandardPaths::standardLocations(QStandardPaths::DesktopLocation).first();
+    QDir dir = QDir(home);
+    dir.cdUp();
+    return IAppSetup::path(dir.absolutePath(), relLogDir, false, 0);
+}
+
+
+QDir CAppSetupMac::getApplicationDir(QString subdir)
+{
+    QDir appDir(QCoreApplication::applicationDirPath());
+    appDir.cdUp();
+    appDir.cd(subdir);
+    return appDir;
+}
+
+
+void CAppSetupMac::migrateDirContent(QString dest)
+{
+    QString src = dest;
+    src.replace("/QLandkarte/", "/");
+    QDir dirDest = QDir(dest);
+    QDir dirSource = QDir(src);
+
+    if (!dirDest.exists() && dirSource.exists())
+    {
+        qDebug() << "src directory for migration" << src;
+        qDebug() << "dst directory for migration" << dest;
+
+        QDir wdir;
+        QString newdir = dest;
+        newdir.remove("/QMapShack");
+        wdir.mkdir(newdir);
+        qDebug() << "directory created" << newdir;
+
+        qDebug() << "migrate data from "<<dirSource.absolutePath() << "to" << dirDest.absolutePath();
+        QDir mvDir;
+        if(!mvDir.rename(dirSource.absolutePath(), dirDest.absolutePath()))
+        {
+            qDebug() << "error migrating directory" << dirSource;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/gis/fit/decoder/CFitHeaderState.h b/src/setup/CAppSetupMac.h
similarity index 65%
copy from src/gis/fit/decoder/CFitHeaderState.h
copy to src/setup/CAppSetupMac.h
index fb00090..a921320 100644
--- a/src/gis/fit/decoder/CFitHeaderState.h
+++ b/src/setup/CAppSetupMac.h
@@ -16,24 +16,27 @@
 
 **********************************************************************************************/
 
-#ifndef CFITHEADERSTATE_H
-#define CFITHEADERSTATE_H
+#ifndef CAPPSETUPMAC_H
+#define CAPPSETUPMAC_H
 
-#include "gis/fit/decoder/IFitDecoderState.h"
+#include "setup/IAppSetup.h"
 
-class CFitHeaderState final : public IFitDecoderState
+#include <QtCore>
+
+
+class CAppSetupMac : public IAppSetup
 {
 public:
-    CFitHeaderState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileHeader) { reset(); }
-    virtual ~CFitHeaderState() {}
-
-    void reset() override;
-    decode_state_e process(quint8 &dataByte) override;
+    void initQMapShack() override;
+    QString routinoPath(QString xmlFile) override;
+    QString defaultCachePath() override;
+    QString userDataPath(QString subdir = 0) override;
+    QString logDir() override;
 
 private:
-    quint8 offset;
-    quint8 headerLength;
-    quint32 dataSize;
+    QDir getApplicationDir(QString subdir);
+    void migrateDirContent(QString dest);
+    void extendPath();
 };
 
-#endif //CFITHEADERSTATE_H
+#endif // CAPPSETUPMAC_H
diff --git a/src/setup/CAppSetupWin.cpp b/src/setup/CAppSetupWin.cpp
new file mode 100644
index 0000000..0fc5987
--- /dev/null
+++ b/src/setup/CAppSetupWin.cpp
@@ -0,0 +1,73 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CAppSetupWin.h"
+#include "config.h"
+
+
+void CAppSetupWin::initQMapShack()
+{
+    // setup environment variables for GDAL/Proj4
+    QString apppath = QCoreApplication::applicationDirPath();
+    apppath = apppath.replace("/", "\\");
+    QString gdalDir = QString("%1\\data").arg(apppath);
+    QString projDir = QString("%1\\share").arg(apppath);
+
+    qunsetenv("GDAL_DRIVER_PATH");
+    IAppSetup::prepareGdal(gdalDir, projDir);
+
+    QString appResourceDir = QString("%1\\translations").arg(apppath).toUtf8();
+    prepareTranslator(appResourceDir, "qtbase_");
+    prepareTranslator(appResourceDir, "qmapshack_");
+
+    //reset PATH to avoid that wrong .dll's are loaded
+    qputenv("PATH", "");
+
+    // create directories
+    IAppSetup::path(defaultCachePath(), 0, true, "CACHE");
+    IAppSetup::path(userDataPath("WaypointIcons"), 0, true, "USER DATA");
+    IAppSetup::path(logDir(), 0, true, "LOG");
+}
+
+
+QString CAppSetupWin::routinoPath(QString xmlFile)
+{
+    QString apppath = QCoreApplication::applicationDirPath();
+    apppath = apppath.replace("/", "\\");
+    QDir dirXml(QString("%1\\routino-xml").arg(apppath).toUtf8());
+    return IAppSetup::path(dirXml.absolutePath(), xmlFile, false, "ROUTINO");
+}
+
+
+QString CAppSetupWin::defaultCachePath()
+{
+    return IAppSetup::path(QDir::home().absolutePath(), ".QMapShack/", false, 0);
+}
+
+
+QString CAppSetupWin::userDataPath(QString subdir)
+{
+    QString path = QDir::home().absoluteFilePath(CONFIGDIR);
+    return IAppSetup::path(path, subdir, false, 0);
+}
+
+
+QString CAppSetupWin::logDir()
+{
+    return QDir::temp().absolutePath();
+}
diff --git a/src/gis/fit/decoder/CFitCrcState.h b/src/setup/CAppSetupWin.h
similarity index 69%
copy from src/gis/fit/decoder/CFitCrcState.h
copy to src/setup/CAppSetupWin.h
index 98bead3..f679b94 100644
--- a/src/gis/fit/decoder/CFitCrcState.h
+++ b/src/setup/CAppSetupWin.h
@@ -16,19 +16,21 @@
 
 **********************************************************************************************/
 
-#ifndef CFITCRCSTATE_H
-#define CFITCRCSTATE_H
+#ifndef CAPPSETUPWIN_H
+#define CAPPSETUPWIN_H
 
-#include "gis/fit/decoder/IFitDecoderState.h"
+#include "setup/IAppSetup.h"
 
-class CFitCrcState final : public IFitDecoderState
+#include <QtCore>
+
+class CAppSetupWin : public IAppSetup
 {
 public:
-    CFitCrcState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileCrc) { reset(); }
-    virtual ~CFitCrcState() {}
-
-    void reset() override;
-    decode_state_e process(quint8 &dataByte) override;
+    void initQMapShack() override;
+    QString routinoPath(QString xmlFile) override;
+    QString defaultCachePath() override;
+    QString userDataPath(QString subdir = 0) override;
+    QString logDir() override;
 };
 
-#endif //CFITCRCSTATE_H
+#endif // CAPPSETUPWIN_H
diff --git a/src/helpers/CCommandProcessor.cpp b/src/setup/CCommandProcessor.cpp
similarity index 78%
rename from src/helpers/CCommandProcessor.cpp
rename to src/setup/CCommandProcessor.cpp
index 3adafd2..27334d2 100644
--- a/src/helpers/CCommandProcessor.cpp
+++ b/src/setup/CCommandProcessor.cpp
@@ -28,19 +28,19 @@ CAppOpts* CCommandProcessor::processOptions(const QStringList &arguments)
     QCommandLineParser parser;
     QCommandLineOption helpOption = parser.addHelpOption(); // h help
 
-    QCommandLineOption debugOption(QStringList() << "d" << "debug", QCoreApplication::translate("CCommandProcessor", "Print debug output to console."));
+    QCommandLineOption debugOption(QStringList() << "d" << "debug", tr("Print debug output to console."));
     parser.addOption(debugOption);
 
-    QCommandLineOption logfileOption(QStringList() << "f" << "logfile", QCoreApplication::translate("CCommandProcessor", "Print debug output to logfile (temp. path)."));
+    QCommandLineOption logfileOption(QStringList() << "f" << "logfile", tr("Print debug output to logfile (temp. path)."));
     parser.addOption(logfileOption);
 
-    QCommandLineOption nosplashOption(QStringList() << "n" << "no-splash", QCoreApplication::translate("CCommandProcessor", "Do not show splash screen."));
+    QCommandLineOption nosplashOption(QStringList() << "n" << "no-splash", tr("Do not show splash screen."));
     parser.addOption(nosplashOption);
 
-    QCommandLineOption configOption(QStringList() << "c" << "config", QCoreApplication::translate("CCommandProcessor", "File with QMapShack configuration."), QCoreApplication::translate("CCommandProcessor", "file"));
+    QCommandLineOption configOption(QStringList() << "c" << "config", tr("File with QMapShack configuration."), tr("file"));
     parser.addOption(configOption);
 
-    parser.addPositionalArgument("files", QCoreApplication::translate("CCommandProcessor", "Files for future use."));
+    parser.addPositionalArgument("files", tr("Files for future use."));
 
     if (!parser.parse(arguments))
     {
diff --git a/src/helpers/CCommandProcessor.h b/src/setup/CCommandProcessor.h
similarity index 91%
copy from src/helpers/CCommandProcessor.h
copy to src/setup/CCommandProcessor.h
index 362a5c8..55a41e8 100644
--- a/src/helpers/CCommandProcessor.h
+++ b/src/setup/CCommandProcessor.h
@@ -19,11 +19,12 @@
 #ifndef CCOMMANDPROCESSOR_H
 #define CCOMMANDPROCESSOR_H
 
-#include "CAppOpts.h"
-
+#include "setup/CAppOpts.h"
+#include <QCoreApplication>
 
 class CCommandProcessor
 {
+    Q_DECLARE_TR_FUNCTIONS(CCommandProcessor)
 public:
     CAppOpts* processOptions(const QStringList &arguments);
 };
diff --git a/src/setup/CLogHandler.cpp b/src/setup/CLogHandler.cpp
new file mode 100644
index 0000000..b75aeea
--- /dev/null
+++ b/src/setup/CLogHandler.cpp
@@ -0,0 +1,121 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CLogHandler.h"
+#include <iostream>
+
+
+CLogHandler::CLogHandler(QString logDirectory, bool writeToFile, bool debugOutput) :
+    writeToFile(writeToFile), debugOutput(debugOutput), logFile(QDir(logDirectory).absoluteFilePath(logfileName())),
+    fileStream(&logFile)
+{
+    if (writeToFile)
+    {
+        logFile.open(QIODevice::WriteOnly | QIODevice::Append);
+    }
+    qSetMessagePattern("%{time yyyy-MM-dd h:mm:ss.zzz} [%{type}] %{message}");
+}
+
+void CLogHandler::log(QtMsgType type, const QMessageLogContext &context, const QString &msg)
+{
+#if QT_VERSION >= 0x050400
+    QString txt = qFormatLogMessage(type, context, msg);
+#else
+    QString txt = msg;
+#endif
+    printToConsole(type, txt);
+    appendToFile(type, txt);
+}
+
+void CLogHandler::printLoggerInfo()
+{
+    qDebug() << "Log configuration:" << "log file=" << logFile.fileName() << "write to file=" << writeToFile <<
+        "debug output=" << debugOutput;
+}
+
+QString CLogHandler::logfileName()
+{
+    QStringList domainSplit = QCoreApplication::organizationDomain().split(".");
+    QString fileName;
+    for(const QString &part : domainSplit)
+    {
+        fileName = fileName.insert(0, part + ".");
+    }
+    fileName.append(QCoreApplication::applicationName() + ".log");
+    return fileName;
+}
+
+
+void CLogHandler::appendToFile(QtMsgType type, QString formatedMsg)
+{
+    Q_UNUSED(type);
+    if (writeToFile)
+    {
+        fileStream << formatedMsg << endl;
+    }
+}
+
+
+void CLogHandler::printToConsole(QtMsgType type, QString formatedMsg)
+{
+    switch (type)
+    {
+    case QtDebugMsg:
+        if (debugOutput)
+        {
+            std::cout << formatedMsg.toUtf8().constData() << std::endl;
+        }
+        break;
+
+#if QT_VERSION >= 0x050500
+    case QtInfoMsg:
+        std::cout << formatedMsg.toUtf8().constData() << std::endl;
+        break;
+
+#endif
+    case QtWarningMsg:
+        std::cerr << formatedMsg.toUtf8().constData() << std::endl;
+        break;
+
+    case QtCriticalMsg:
+        std::cerr << formatedMsg.toUtf8().constData() << std::endl;
+        break;
+
+    case QtFatalMsg:
+        std::cerr << formatedMsg.toUtf8().constData() << std::endl;
+        abort();
+        break;
+    }
+}
+
+static CLogHandler* logHandler = nullptr;
+
+static void logCallback(QtMsgType type, const QMessageLogContext &context, const QString &msg)
+{
+    logHandler->log(type, context, msg);
+}
+
+
+void CLogHandler::initLogHandler(QString logDirectory, bool writeToFile, bool debugOutput)
+{
+    logHandler = new CLogHandler(logDirectory, writeToFile, debugOutput);
+    qInstallMessageHandler(logCallback);
+    logHandler->printLoggerInfo();
+}
+
+
diff --git a/src/gis/fit/decoder/CFitFieldDefinitionState.h b/src/setup/CLogHandler.h
similarity index 59%
copy from src/gis/fit/decoder/CFitFieldDefinitionState.h
copy to src/setup/CLogHandler.h
index f052cf7..f544e3e 100644
--- a/src/gis/fit/decoder/CFitFieldDefinitionState.h
+++ b/src/setup/CLogHandler.h
@@ -16,26 +16,32 @@
 
 **********************************************************************************************/
 
-#ifndef CFITFIELDDEFINITIONSTATE_H
-#define CFITFIELDDEFINITIONSTATE_H
+#ifndef CLOGHANDLER_H
+#define CLOGHANDLER_H
 
-#include "gis/fit/decoder/IFitDecoderState.h"
+#include <QtCore>
 
-class CFitFieldDefinitionState final : public IFitDecoderState
+class CLogHandler
 {
 public:
-    CFitFieldDefinitionState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFieldDef) { reset(); }
-    virtual ~CFitFieldDefinitionState() {}
+    static void initLogHandler(QString logDirectory, bool writeToFile, bool debugOutput);
 
-    void reset() override;
-    decode_state_e process(quint8 &dataByte) override;
+    void log(QtMsgType type, const QMessageLogContext &context, const QString &msg);
 
 private:
-    quint8 offset;
+    CLogHandler(QString logDirectory, bool writeToFile, bool debugOutput);
+    void printLoggerInfo();
 
-    quint8 defNr;
-    quint8 type;
-    quint8 size;
+    void appendToFile(QtMsgType type, QString formatedMsg);
+    void printToConsole(QtMsgType type, QString formatedMsg);
+
+    QString logfileName();
+
+    bool writeToFile;
+    bool debugOutput;
+    QFile logFile;
+    QTextStream fileStream;
 };
 
-#endif //CFITFIELDDEFINITIONSTATE_H
+#endif // CLOGHANDLER_H
+
diff --git a/src/setup/IAppSetup.cpp b/src/setup/IAppSetup.cpp
new file mode 100644
index 0000000..55c8f5f
--- /dev/null
+++ b/src/setup/IAppSetup.cpp
@@ -0,0 +1,125 @@
+/**********************************************************************************************
+   Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+
+#include "CCommandProcessor.h"
+#include "setup/CLogHandler.h"
+#include "setup/IAppSetup.h"
+
+#include "setup/CAppSetupLinux.h"
+#include "setup/CAppSetupMac.h"
+#include "setup/CAppSetupWin.h"
+
+#include <gdal.h>
+
+
+static IAppSetup* instance = nullptr;
+
+IAppSetup* IAppSetup::getPlatformInstance()
+{
+    if(nullptr == instance)
+    {
+#if defined(Q_OS_MAC)
+        instance = new CAppSetupMac();
+#elif defined(Q_OS_LINUX)
+        instance = new CAppSetupLinux();
+#elif defined (Q_OS_WIN32)
+        instance = new CAppSetupWin();
+#else
+  #error OS not supported
+#endif
+    }
+    return instance;
+}
+
+
+void IAppSetup::prepareGdal(QString gdalDir, QString projDir)
+{
+    if(!gdalDir.isEmpty())
+    {
+        qputenv("GDAL_DATA", gdalDir.toUtf8());
+        qDebug() << "GDAL_DATA directory set to " + gdalDir;
+    }
+
+    if(!projDir.isEmpty())
+    {
+        qputenv("PROJ_LIB", projDir.toUtf8());
+        qDebug() << "PROJ_LIB directory set to " + projDir;
+    }
+
+    GDALAllRegister();
+}
+
+
+QString IAppSetup::path(QString path, QString subdir, bool mkdir, QString debugName)
+{
+    QDir pathDir(path);
+
+    if(subdir != 0)
+    {
+        pathDir = QDir(pathDir.absoluteFilePath(subdir));
+    }
+    if(mkdir && !pathDir.exists())
+    {
+        pathDir.mkpath(pathDir.absolutePath());
+        qDebug() << debugName << "path created" << pathDir.absolutePath();
+    }
+    else if (debugName != 0)
+    {
+        qDebug() << debugName << "path" << pathDir.absolutePath();
+    }
+    return pathDir.absolutePath();
+}
+
+
+void IAppSetup::prepareTranslator(QString translationPath, QString translationPrefix)
+{
+    QString locale = QLocale::system().name();
+    QDir dir(translationPath);
+    if(!QFile::exists(dir.absoluteFilePath(translationPrefix + locale)))
+    {
+        locale = locale.left(2);
+    }
+    qDebug() << "locale" << locale;
+
+    QApplication* app =  (QApplication*) QCoreApplication::instance();
+    QTranslator *qtTranslator = new QTranslator(app);
+    if (qtTranslator->load(translationPrefix + locale, translationPath))
+    {
+        app->installTranslator(qtTranslator);
+        qDebug() << "using file '"+ translationPath + "/" + translationPrefix + locale + ".qm' for translations.";
+    }
+    else
+    {
+        qWarning() << "no file found for translations '"+ translationPath + "/" + translationPrefix + locale + "' (using default).";
+    }
+}
+
+
+void IAppSetup::initLogHandler()
+{
+    CLogHandler::initLogHandler(logDir(), qlOpts->logfile, qlOpts->debug);
+}
+
+CAppOpts *qlOpts = nullptr;
+
+void IAppSetup::processArguments()
+{
+    CCommandProcessor cmdParse;
+    qlOpts = cmdParse.processOptions(QCoreApplication::instance()->arguments());
+}
diff --git a/src/helpers/CCommandProcessor.h b/src/setup/IAppSetup.h
similarity index 58%
rename from src/helpers/CCommandProcessor.h
rename to src/setup/IAppSetup.h
index 362a5c8..4364ea6 100644
--- a/src/helpers/CCommandProcessor.h
+++ b/src/setup/IAppSetup.h
@@ -16,17 +16,32 @@
 
 **********************************************************************************************/
 
-#ifndef CCOMMANDPROCESSOR_H
-#define CCOMMANDPROCESSOR_H
+#ifndef IAPPSETUP_H
+#define IAPPSETUP_H
 
 #include "CAppOpts.h"
+#include <QApplication>
+#include <QtCore>
 
 
-class CCommandProcessor
+class IAppSetup
 {
 public:
-    CAppOpts* processOptions(const QStringList &arguments);
-};
+    static IAppSetup *getPlatformInstance();
+    virtual void initQMapShack() = 0;
+    void initLogHandler();
+    void processArguments();
+
+    virtual QString routinoPath(QString xmlFile) = 0;
+    virtual QString defaultCachePath() = 0;
+    virtual QString userDataPath(QString subdir = 0) = 0;
+    virtual QString logDir() = 0;
 
+protected:
+    void prepareGdal(QString gdalDir, QString projDir);
+    void prepareTranslator(QString translationPath, QString translationPrefix);
+
+    QString path(QString path, QString subdir, bool mkdir, QString debugName);
+};
 
-#endif // CCOMMANDPROCESSOR_H
+#endif // IAPPSETUP_H
diff --git a/src/test/CGisItemTrk.cpp b/src/test/CGisItemTrk.cpp
new file mode 100644
index 0000000..6556ce6
--- /dev/null
+++ b/src/test/CGisItemTrk.cpp
@@ -0,0 +1,56 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "test/TestHelper.h"
+#include "test/test_QMapShack.h"
+
+#include "gis/gpx/CGpxProject.h"
+#include "gis/trk/CGisItemTrk.h"
+
+#include <QtCore>
+
+void test_QMapShack::_filterDeleteExtension()
+{
+    for(const QString &file : inputFiles)
+    {
+        IGisProject *proj = readProjFile(file);
+
+        expectedGisProject exp = TestHelper::readExpProj(fileToPath(file) + ".xml");
+        exp.changed = true; // filtering changes a project
+
+        for(int i = 0; i < proj->childCount(); i++)
+        {
+            CGisItemTrk *trk = dynamic_cast<CGisItemTrk*>(proj->child(i));
+            if(nullptr != trk)
+            {
+                expectedTrack &expTrk = exp.trks[trk->getName()];
+
+                while(!expTrk.extensions.empty())
+                {
+                    expectedExtension expExt = expTrk.extensions.take(expTrk.extensions.keys().first());
+
+                    trk->filterDeleteExtension(expExt.name);
+                    verify(exp, *proj);
+                }
+            }
+        }
+
+        delete proj;
+    }
+}
+
diff --git a/src/test/CGpxProject.cpp b/src/test/CGpxProject.cpp
index 43ee03b..82e1858 100644
--- a/src/test/CGpxProject.cpp
+++ b/src/test/CGpxProject.cpp
@@ -16,55 +16,33 @@
 
 **********************************************************************************************/
 
+#include "test/TestHelper.h"
 #include "test/test_QMapShack.h"
 
 #include "gis/gpx/CGpxProject.h"
 
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/trk/CKnownExtension.h"
-#include "gis/wpt/CGisItemWpt.h"
-
-static CGpxProject* readGpxFile(const QString &file, bool valid)
-{
-    // this does not ready anything, a bare CSlfProject is created
-    CGpxProject *proj = new CGpxProject("a very random string to prevent loading via constructor", (CGisListWks*) nullptr);
-
-    bool hadExc = false;
-    try
-    {
-        proj->blockUpdateItems(true);
-        CGpxProject::loadGpx(file, proj);
-        proj->blockUpdateItems(false);
-    }
-    catch(QString &errormsg)
-    {
-        SUBVERIFY(!valid, "Expected `" + file + "` to be valid, error while reading: " + errormsg);
-        hadExc = true;
-    }
-
-    SUBVERIFY(valid || hadExc, "File is neither valid, nor an exception was thrown")
-    SUBVERIFY(IGisProject::eTypeGpx == proj->getType(), "Project has invalid type");
-
-    return proj;
-}
-
-void test_QMapShack::readWriteGPXFile()
+void test_QMapShack::writeReadGpxFile(const QString &file)
 {
-    // step 1: read .gpx file
-    CGpxProject *proj = readGpxFile(testInput + "qtt_gpx_file0.gpx", true);
-    verify(testInput + "qtt_gpx_file0.gpx.xml", *proj);
+    IGisProject *proj = readProjFile(file);
 
-    // step 2: write to new .gpx file
-    QString tmpFile = getTempFileName("gpx");
+    QString tmpFile = TestHelper::getTempFileName("gpx");
     CGpxProject::saveAs(tmpFile, *proj);
 
     delete proj;
 
-    // step 3: read .gpx file from step 2
-    proj = readGpxFile(tmpFile, true);
-    verify(testInput + "qtt_gpx_file0.gpx.xml", *proj);
+    proj = readProjFile(tmpFile, true, false);
+    verify(file, *proj);
     delete proj;
 
     QFile(tmpFile).remove();
 }
 
+void test_QMapShack::_writeReadGpxFile()
+{
+    writeReadGpxFile("qtt_gpx_file0.gpx");
+    writeReadGpxFile("gpx_ext_GarminTPX1_gpxtpx.gpx");
+    writeReadGpxFile("gpx_ext_GarminTPX1_tp1.gpx");
+    writeReadGpxFile("V1.6.0_file1.qms");
+    writeReadGpxFile("V1.6.0_file2.qms");
+}
+
diff --git a/src/test/CKnownExtension.cpp b/src/test/CKnownExtension.cpp
new file mode 100644
index 0000000..ca222ed
--- /dev/null
+++ b/src/test/CKnownExtension.cpp
@@ -0,0 +1,95 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "test/TestHelper.h"
+#include "test/test_QMapShack.h"
+
+#include "gis/gpx/CGpxProject.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
+
+static QStringList GarminTPX1Exts = {"atemp", "wtemp", "depth", "hr", "cad"};
+
+void test_QMapShack::readExtGarminTPX1(const QString &file, const QString &ns)
+{
+    CGpxProject *proj = dynamic_cast<CGpxProject*>(readProjFile(file));
+
+    VERIFY_EQUAL(1, proj->childCount());
+
+    for(int i = 0; i < proj->childCount(); i++)
+    {
+        IGisItem *item = dynamic_cast<IGisItem*>(proj->child(i));
+
+        CGisItemTrk *itemTrk = dynamic_cast<CGisItemTrk*>(item);
+        if(nullptr != itemTrk)
+        {
+            const CGisItemTrk::trk_t &trk = itemTrk->getTrackData();
+
+            // filter all internal extensions (starting with ::ql:)
+            QStringList extensions = itemTrk->getExistingDataSources().filter(QRegExp("^((?!::ql:).)*$"));
+
+            VERIFY_EQUAL(GarminTPX1Exts.size(), extensions.size());
+            for(const QString &exp : GarminTPX1Exts)
+            {
+                const QString &fullExp = ns + ":TrackPointExtension|" + ns + ":" + exp;
+                SUBVERIFY(extensions.contains(fullExp), "Missing extension " + fullExp)
+            }
+
+            const fTrkPtGetVal &getAtemp = CKnownExtension::get(ns + ":TrackPointExtension|" + ns + ":atemp").valueFunc;
+            const fTrkPtGetVal &getWtemp = CKnownExtension::get(ns + ":TrackPointExtension|" + ns + ":wtemp").valueFunc;
+            const fTrkPtGetVal &getDepth = CKnownExtension::get(ns + ":TrackPointExtension|" + ns + ":depth").valueFunc;
+            const fTrkPtGetVal &getHR    = CKnownExtension::get(ns + ":TrackPointExtension|" + ns + ":hr").valueFunc;
+            const fTrkPtGetVal &getCad   = CKnownExtension::get(ns + ":TrackPointExtension|" + ns + ":cad").valueFunc;
+
+            int i = 0;
+            for(const CGisItemTrk::trkseg_t &seg : trk.segs)
+            {
+                for(const CGisItemTrk::trkpt_t &trkpt : seg.pts)
+                {
+                    SUBVERIFY((0. != trkpt.lat) || (0. != trkpt.lon), "Trackpoint has position 0/0");
+
+                    for(const QString &ext : trkpt.extensions.keys())
+                    {
+                        VERIFY_EQUAL(true, CKnownExtension::isKnown(ext));
+                    }
+
+                    // try to read values from the file, they start at a specific value and are incremented from trkpt to trkpt
+                    VERIFY_EQUAL( 20 + i, getAtemp(trkpt));
+                    VERIFY_EQUAL( 10 + i, getWtemp(trkpt));
+                    VERIFY_EQUAL(100 + i, getDepth(trkpt));
+                    VERIFY_EQUAL( 90 + i, getHR(trkpt));
+                    VERIFY_EQUAL( 60 + i, getCad(trkpt));
+
+                    ++i;
+                }
+            }
+        }
+    }
+
+    delete proj;
+}
+
+void test_QMapShack::_readExtGarminTPX1_tp1()
+{
+    readExtGarminTPX1(testInput + "gpx/gpx_ext_GarminTPX1_tp1.gpx", "tp1");
+}
+
+void test_QMapShack::_readExtGarminTPX1_gpxtpx()
+{
+    readExtGarminTPX1(testInput + "gpx/gpx_ext_GarminTPX1_gpxtpx.gpx", "gpxtpx");
+}
diff --git a/src/gis/trk/filter/CFilterDeleteExtension.h b/src/test/CQmsProject.cpp
similarity index 52%
copy from src/gis/trk/filter/CFilterDeleteExtension.h
copy to src/test/CQmsProject.cpp
index b743c01..754f164 100644
--- a/src/gis/trk/filter/CFilterDeleteExtension.h
+++ b/src/test/CQmsProject.cpp
@@ -16,29 +16,42 @@
 
 **********************************************************************************************/
 
-#ifndef CFILTERDELETEEXTENSION_H
-#define CFILTERDELETEEXTENSION_H
+#include <QtCore>
 
-#include "ui_IFilterDeleteExtension.h"
-#include <QWidget>
+#include "test/TestHelper.h"
+#include "test/test_QMapShack.h"
 
-class CGisItemTrk;
+#include "gis/gpx/CGpxProject.h"
+#include "gis/qms/CQmsProject.h"
 
-class CFilterDeleteExtension : public QWidget, private Ui::IFilterDeleteExtension
+void test_QMapShack::_readQmsFile_1_6_0()
 {
-    Q_OBJECT
-public:
-    CFilterDeleteExtension(CGisItemTrk& trk, QWidget * parent);
-    virtual ~CFilterDeleteExtension();
+    IGisProject *proj1 = readProjFile("V1.6.0_file1.qms");
+    verify("V1.6.0_file1.qms", *proj1);
+    delete proj1;
 
-    void update();
+    IGisProject *proj2 = readProjFile("V1.6.0_file2.qms");
+    verify("V1.6.0_file2.qms", *proj2);
+    delete proj2;
+}
 
-private slots:
-    void slotApply();
+void test_QMapShack::_writeReadQmsFile()
+{
+    for(const QString &file : inputFiles)
+    {
+        IGisProject *proj = readProjFile(file);
+
+        QString tmpFile = TestHelper::getTempFileName("qms");
+        CQmsProject::saveAs(tmpFile, *proj);
+
+        delete proj;
+
+        proj = readProjFile(tmpFile, true, false);
+        verify(file, *proj);
 
-private:
-    CGisItemTrk& trk;
-};
+        delete proj;
 
-#endif //CFILTERDELETEEXTENSION_H
+        QFile(tmpFile).remove();
+    }
+}
 
diff --git a/src/test/CSlfReader.cpp b/src/test/CSlfReader.cpp
index 311f50c..cca76e7 100644
--- a/src/test/CSlfReader.cpp
+++ b/src/test/CSlfReader.cpp
@@ -18,49 +18,15 @@
 
 #include "test/test_QMapShack.h"
 
-#include "gis/slf/CSlfProject.h"
-#include "gis/slf/CSlfReader.h"
+#include "gis/prj/IGisProject.h"
 
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/trk/CKnownExtension.h"
-#include "gis/wpt/CGisItemWpt.h"
-
-void test_QMapShack::readValidSLFFile()
+void test_QMapShack::_readValidSLFFile()
 {
-    // this does not ready anything, a bare CSlfProject is created
-    CSlfProject *proj = new CSlfProject("qtt_slf_file0.slf", false);
-
-    try
-    {
-        CSlfReader::readFile(testInput + "qtt_slf_file0.slf", proj);
-    }
-    catch(QString &errormsg)
-    {
-        SUBVERIFY(false, QString("Did not expect any error, but got: `%1`").arg(errormsg));
-    }
-
-    SUBVERIFY(IGisProject::eTypeSlf == proj->getType(), "Project has invalid type");
-
-    verify(testInput + "qtt_slf_file0.slf.xml", *proj);
-    delete proj;
+    verify("qtt_slf_file0.slf");
 }
 
-void test_QMapShack::readNonExistingSLFFile()
+void test_QMapShack::_readNonExistingSLFFile()
 {
-    // this does not ready anything, a bare CSlfProject is created
-    CSlfProject *proj = new CSlfProject("qtt_slf_DOES_NOT_EXIST.slf", false);
-
-    bool hadException = false;
-    try
-    {
-        CSlfReader::readFile(testInput + "qtt_slf_DOES_NOT_EXIST.slf", proj);
-    }
-    catch(QString &errormsg)
-    {
-        SUBVERIFY(errormsg.contains("does not exist"), "Wrong error message");
-        hadException = true;
-    }
-    SUBVERIFY(hadException, "File is neither valid, nor an exception was thrown");
-
-    delete proj;
+    delete readProjFile("qtt_slf_DOES_NOT_EXIST.slf", false, false);
 }
+
diff --git a/src/test/TestHelper.cpp b/src/test/TestHelper.cpp
new file mode 100644
index 0000000..7b75ffd
--- /dev/null
+++ b/src/test/TestHelper.cpp
@@ -0,0 +1,159 @@
+/**********************************************************************************************
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include <QDebug>
+#include <QDomNode>
+#include <QTemporaryFile>
+#include <QTest>
+
+#include "test/TestHelper.h"
+
+QString TestHelper::getTempFileName(const QString &ext)
+{
+    QTemporaryFile tmp("qtt_XXXXXX." + ext);
+    tmp.open();
+    QString tempFile = tmp.fileName();
+    tmp.remove();
+
+    return tempFile;
+}
+
+static QString getAttribute(const QDomNode &node, const QString &name)
+{
+    const QDomNamedNodeMap &attrs = node.attributes();
+    if(!attrs.contains(name))
+    {
+        QWARN( QString("Attribute `%1` does not exist in DomNode `%2`").arg(name).arg(node.nodeName()).toStdString().c_str() );
+        return QString();
+    }
+
+    return attrs.namedItem(name).nodeValue();
+}
+
+static QHash<QString, expectedArea> getExpectedAreas(const QDomNode &exp)
+{
+    QHash<QString, expectedArea> expOvls;
+    const QDomNodeList &ovlList = exp.namedItem("areas").childNodes();
+    for(int i = 0; i < ovlList.length(); i++)
+    {
+        const QDomNode &node = ovlList.item(i);
+
+        expectedArea ovl;
+        ovl.name     = getAttribute(node, "name");
+        ovl.colorIdx = getAttribute(node, "colorIdx").toInt();
+        ovl.ptCount  = getAttribute(node, "pointcount").toInt();
+
+        expOvls.insert(ovl.name, ovl);
+    }
+
+    return expOvls;
+}
+
+static QHash<QString, expectedRoute> getExpectedRoutes(const QDomNode &exp)
+{
+    QHash<QString, expectedRoute> expRtes;
+    const QDomNodeList &rteList = exp.namedItem("routes").childNodes();
+    for(int i = 0; i < rteList.length(); i++)
+    {
+        const QDomNode &node = rteList.item(i);
+
+        expectedRoute rte;
+        rte.name    = getAttribute(node, "name");
+        rte.ptCount = getAttribute(node, "pointcount").toInt();
+
+        expRtes.insert(rte.name, rte);
+    }
+
+    return expRtes;
+}
+
+static QHash<QString, expectedTrack> getExpectedTracks(const QDomNode &exp)
+{
+    QHash<QString, expectedTrack> expTrks;
+    const QDomNodeList &trkList = exp.namedItem("tracks").childNodes();
+    for(int i = 0; i < trkList.length(); i++)
+    {
+        const QDomNode &node = trkList.item(i);
+
+        expectedTrack trk;
+        trk.name     = getAttribute(node, "name");
+        trk.segCount = getAttribute(node, "segcount"  ).toInt();
+        trk.ptCount  = getAttribute(node, "pointcount").toInt();
+        trk.colorIdx = getAttribute(node, "colorIdx"  ).toInt();
+
+        QHash<QString, expectedExtension> extensions;
+        const QDomNodeList &extList = node.namedItem("colorSources").childNodes();
+        for(int j = 0; j < extList.length(); j++)
+        {
+            expectedExtension ext;
+            ext.name       = getAttribute(extList.item(j), "name");
+            ext.known      = getAttribute(extList.item(j), "known")      == "true";
+            ext.everyPoint = getAttribute(extList.item(j), "everypoint") == "true";
+            ext.derived    = getAttribute(extList.item(j), "derived")    == "true";
+
+            extensions.insert(ext.name, ext);
+        }
+        trk.extensions = extensions;
+
+        expTrks.insert(trk.name, trk);
+    }
+
+    return expTrks;
+}
+
+static QHash<QString, expectedWaypoint> getExpectedWaypoints(const QDomNode &exp)
+{
+    QHash<QString, expectedWaypoint> expWpts;
+    const QDomNodeList &wptList = exp.namedItem("waypoints").childNodes();
+    for(int i = 0; i < wptList.length(); i++)
+    {
+        const QDomNode &node = wptList.item(i);
+
+        expectedWaypoint wpt;
+        wpt.name = node.attributes().namedItem("name").nodeValue();
+
+        expWpts.insert(wpt.name, wpt);
+    }
+
+    return expWpts;
+}
+
+expectedGisProject TestHelper::readExpProj(const QString &fileName)
+{
+    QFile file(fileName);
+
+    QDomDocument xml;
+    QString msg;
+    int line;
+    int column;
+    SUBVERIFY(xml.setContent(&file, false, &msg, &line, &column), QString("[%1:%2] %3").arg(fileName).arg(line).arg(msg));
+
+    const QDomNode &exp = xml.namedItem("expected");
+
+    expectedGisProject proj;
+    proj.changed = false; //< projects should never be changed after loading
+    proj.name    = exp.namedItem("name").firstChild().nodeValue();
+    proj.desc    = exp.namedItem("desc").firstChild().nodeValue();
+
+    proj.wpts    = getExpectedWaypoints(exp);
+    proj.trks    = getExpectedTracks(exp);
+    proj.rtes    = getExpectedRoutes(exp);
+    proj.ovls    = getExpectedAreas(exp);
+
+    return proj;
+}
diff --git a/src/test/TestHelper.h b/src/test/TestHelper.h
new file mode 100644
index 0000000..d6bfc5e
--- /dev/null
+++ b/src/test/TestHelper.h
@@ -0,0 +1,90 @@
+/**********************************************************************************************
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef TESTHELPER_H
+#define TESTHELPER_H
+
+#include <QtCore>
+
+#define SUBVERIFY(EXPR, MSG) { \
+        if(!(EXPR)) { \
+            throw QString("Verification of `%1` failed: %2").arg(#EXPR).arg(MSG); \
+        } \
+}
+
+#define VERIFY_EQUAL(EXP, ACT) \
+    SUBVERIFY( (EXP == ACT), QTest::toString(QString("Expected `%1`, got `%2`").arg(EXP).arg(ACT)) );
+
+
+struct expectedWaypoint
+{
+    QString name;
+};
+
+struct expectedExtension
+{
+    QString name;    //< the name as used in the file
+    bool known;      //< if true, the value has to be known (e.g. CKnownExtension::isKnown() returns true)
+    bool everyPoint; //< if true, the value has to be set for every single trkpt
+    bool derived;    //< if true, the value is derived by QMS
+};
+
+struct expectedTrack
+{
+    QString name;
+    int colorIdx;
+    int segCount;
+    int ptCount;
+    QHash<QString, expectedExtension> extensions;
+};
+
+struct expectedRoute
+{
+    QString name;
+    int ptCount;
+};
+
+struct expectedArea
+{
+    QString name;
+    int colorIdx;
+    int ptCount;
+};
+
+struct expectedGisProject
+{
+    QString name;
+    QString desc;
+
+    bool changed;
+
+    QHash<QString, expectedWaypoint> wpts;
+    QHash<QString, expectedTrack>    trks;
+    QHash<QString, expectedRoute>    rtes;
+    QHash<QString, expectedArea>     ovls;
+};
+
+class TestHelper
+{
+public:
+    static QString getTempFileName(const QString &ext);
+
+    static expectedGisProject readExpProj(const QString &file);
+};
+
+#endif // TESTHELPER_H
diff --git a/src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx b/src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx
new file mode 100644
index 0000000..8aff30f
--- /dev/null
+++ b/src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <metadata>
+  <name>Garmin TPX1 Test NS gpxtpx</name>
+  <desc></desc>
+  <time>2015-11-14T19:09:45Z</time>
+ </metadata>
+ <trk>
+  <name>Track</name>
+  <trkseg>
+   <trkpt lat="49.43892301" lon="11.40093000">
+    <ele>525</ele>
+    <time>2015-10-02T13:56:08Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>10.0</gpxtpx:wtemp>
+      <gpxtpx:depth>100.0</gpxtpx:depth>
+      <gpxtpx:hr>90</gpxtpx:hr>
+      <gpxtpx:cad>60</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43895997" lon="11.40101994">
+    <ele>526</ele>
+    <time>2015-10-02T13:56:10Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>21.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>11.0</gpxtpx:wtemp>
+      <gpxtpx:depth>101.0</gpxtpx:depth>
+      <gpxtpx:hr>91</gpxtpx:hr>
+      <gpxtpx:cad>61</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43899702" lon="11.40111197">
+    <ele>527</ele>
+    <time>2015-10-02T13:56:12Z</time>
+    <extensions>
+      <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>22.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>12.0</gpxtpx:wtemp>
+      <gpxtpx:depth>102.0</gpxtpx:depth>
+      <gpxtpx:hr>92</gpxtpx:hr>
+      <gpxtpx:cad>62</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43903197" lon="11.40118993">
+    <ele>528</ele>
+    <time>2015-10-02T13:56:14Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>23.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>13.0</gpxtpx:wtemp>
+      <gpxtpx:depth>103.0</gpxtpx:depth>
+      <gpxtpx:hr>93</gpxtpx:hr>
+      <gpxtpx:cad>63</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43905997" lon="11.40126696">
+    <ele>529</ele>
+    <time>2015-10-02T13:56:16Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>24.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>14.0</gpxtpx:wtemp>
+      <gpxtpx:depth>104.0</gpxtpx:depth>
+      <gpxtpx:hr>94</gpxtpx:hr>
+      <gpxtpx:cad>64</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43908000" lon="11.40133300">
+    <ele>530</ele>
+    <time>2015-10-02T13:56:18Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>25.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>15.0</gpxtpx:wtemp>
+      <gpxtpx:depth>105.0</gpxtpx:depth>
+      <gpxtpx:hr>95</gpxtpx:hr>
+      <gpxtpx:cad>65</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43910699" lon="11.40139495">
+    <ele>531</ele>
+    <time>2015-10-02T13:56:20Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>26.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>16.0</gpxtpx:wtemp>
+      <gpxtpx:depth>106.0</gpxtpx:depth>
+      <gpxtpx:hr>96</gpxtpx:hr>
+      <gpxtpx:cad>66</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43913800" lon="11.40145999">
+    <ele>531</ele>
+    <time>2015-10-02T13:56:22Z</time>
+    <extensions>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>27.0</gpxtpx:atemp>
+      <gpxtpx:wtemp>17.0</gpxtpx:wtemp>
+      <gpxtpx:depth>107.0</gpxtpx:depth>
+      <gpxtpx:hr>97</gpxtpx:hr>
+      <gpxtpx:cad>67</gpxtpx:cad>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+  </trkseg>
+ </trk>
+</gpx>
diff --git a/src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx.xml b/src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx.xml
new file mode 100644
index 0000000..fd7d388
--- /dev/null
+++ b/src/test/input/gpx/gpx_ext_GarminTPX1_gpxtpx.gpx.xml
@@ -0,0 +1,25 @@
+<expected>
+    <name>Garmin TPX1 Test NS gpxtpx</name>
+    <desc></desc>
+
+    <waypoints></waypoints>
+
+    <tracks>
+        <track name="Track" colorIdx="12" colorName="Blue" segcount="1" pointcount="8">
+            <colorSources>
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:slope"                              />
+                <colorSource known="true" everypoint="false" derived="false" name="::ql:ele"                                />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:progress"                           />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:speed"                              />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:wtemp" />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:depth" />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:hr"    />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:cad"   />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes></routes>
+    <areas></areas>
+</expected>
diff --git a/src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx b/src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx
new file mode 100644
index 0000000..cfc45db
--- /dev/null
+++ b/src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <metadata>
+  <name>Garmin TPX1 Test NS tp1</name>
+  <desc></desc>
+  <time>2015-11-14T19:09:45Z</time>
+ </metadata>
+ <trk>
+  <name>Track</name>
+  <trkseg>
+   <trkpt lat="49.43892301" lon="11.40093000">
+    <ele>525</ele>
+    <time>2015-10-02T13:56:08Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>20.0</tp1:atemp>
+      <tp1:wtemp>10.0</tp1:wtemp>
+      <tp1:depth>100.0</tp1:depth>
+      <tp1:hr>90</tp1:hr>
+      <tp1:cad>60</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43895997" lon="11.40101994">
+    <ele>526</ele>
+    <time>2015-10-02T13:56:10Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>21.0</tp1:atemp>
+      <tp1:wtemp>11.0</tp1:wtemp>
+      <tp1:depth>101.0</tp1:depth>
+      <tp1:hr>91</tp1:hr>
+      <tp1:cad>61</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43899702" lon="11.40111197">
+    <ele>527</ele>
+    <time>2015-10-02T13:56:12Z</time>
+    <extensions>
+      <tp1:TrackPointExtension>
+      <tp1:atemp>22.0</tp1:atemp>
+      <tp1:wtemp>12.0</tp1:wtemp>
+      <tp1:depth>102.0</tp1:depth>
+      <tp1:hr>92</tp1:hr>
+      <tp1:cad>62</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43903197" lon="11.40118993">
+    <ele>528</ele>
+    <time>2015-10-02T13:56:14Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>23.0</tp1:atemp>
+      <tp1:wtemp>13.0</tp1:wtemp>
+      <tp1:depth>103.0</tp1:depth>
+      <tp1:hr>93</tp1:hr>
+      <tp1:cad>63</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43905997" lon="11.40126696">
+    <ele>529</ele>
+    <time>2015-10-02T13:56:16Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>24.0</tp1:atemp>
+      <tp1:wtemp>14.0</tp1:wtemp>
+      <tp1:depth>104.0</tp1:depth>
+      <tp1:hr>94</tp1:hr>
+      <tp1:cad>64</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43908000" lon="11.40133300">
+    <ele>530</ele>
+    <time>2015-10-02T13:56:18Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>25.0</tp1:atemp>
+      <tp1:wtemp>15.0</tp1:wtemp>
+      <tp1:depth>105.0</tp1:depth>
+      <tp1:hr>95</tp1:hr>
+      <tp1:cad>65</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43910699" lon="11.40139495">
+    <ele>531</ele>
+    <time>2015-10-02T13:56:20Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>26.0</tp1:atemp>
+      <tp1:wtemp>16.0</tp1:wtemp>
+      <tp1:depth>106.0</tp1:depth>
+      <tp1:hr>96</tp1:hr>
+      <tp1:cad>66</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43913800" lon="11.40145999">
+    <ele>531</ele>
+    <time>2015-10-02T13:56:22Z</time>
+    <extensions>
+     <tp1:TrackPointExtension>
+      <tp1:atemp>27.0</tp1:atemp>
+      <tp1:wtemp>17.0</tp1:wtemp>
+      <tp1:depth>107.0</tp1:depth>
+      <tp1:hr>97</tp1:hr>
+      <tp1:cad>67</tp1:cad>
+     </tp1:TrackPointExtension>
+    </extensions>
+   </trkpt>
+  </trkseg>
+ </trk>
+</gpx>
diff --git a/src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx.xml b/src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx.xml
new file mode 100644
index 0000000..e000b54
--- /dev/null
+++ b/src/test/input/gpx/gpx_ext_GarminTPX1_tp1.gpx.xml
@@ -0,0 +1,25 @@
+<expected>
+    <name>Garmin TPX1 Test NS tp1</name>
+    <desc></desc>
+
+    <waypoints></waypoints>
+
+    <tracks>
+        <track name="Track" colorIdx="12" colorName="Blue" segcount="1" pointcount="8">
+            <colorSources>
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:slope"                        />
+                <colorSource known="true" everypoint="false" derived="false" name="::ql:ele"                          />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:progress"                     />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:speed"                        />
+                <colorSource known="true" everypoint="true"  derived="false" name="tp1:TrackPointExtension|tp1:atemp" />
+                <colorSource known="true" everypoint="true"  derived="false" name="tp1:TrackPointExtension|tp1:wtemp" />
+                <colorSource known="true" everypoint="true"  derived="false" name="tp1:TrackPointExtension|tp1:depth" />
+                <colorSource known="true" everypoint="true"  derived="false" name="tp1:TrackPointExtension|tp1:hr"    />
+                <colorSource known="true" everypoint="true"  derived="false" name="tp1:TrackPointExtension|tp1:cad"   />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes></routes>
+    <areas></areas>
+</expected>
diff --git a/src/test/input/qtt_gpx_file0.gpx b/src/test/input/gpx/qtt_gpx_file0.gpx
similarity index 100%
rename from src/test/input/qtt_gpx_file0.gpx
rename to src/test/input/gpx/qtt_gpx_file0.gpx
diff --git a/src/test/input/gpx/qtt_gpx_file0.gpx.xml b/src/test/input/gpx/qtt_gpx_file0.gpx.xml
new file mode 100644
index 0000000..95c34ed
--- /dev/null
+++ b/src/test/input/gpx/qtt_gpx_file0.gpx.xml
@@ -0,0 +1,23 @@
+<expected>
+    <name>QTTest gpx file 0</name>
+    <desc>QTTest gpx input file 0</desc>
+
+    <waypoints></waypoints>
+
+    <tracks>
+        <track name="Track" colorIdx="4" colorName="DarkBlue" segcount="1" pointcount="521">
+            <colorSources>
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:slope"                              />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:speed"                              />
+                <colorSource known="true" everypoint="false" derived="false" name="::ql:ele"                                />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:progress"                           />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:hr"    />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes></routes>
+
+    <areas></areas>
+</expected>
diff --git a/src/test/input/qms/V1.6.0_file1.qms b/src/test/input/qms/V1.6.0_file1.qms
new file mode 100644
index 0000000..6b89a2b
Binary files /dev/null and b/src/test/input/qms/V1.6.0_file1.qms differ
diff --git a/src/test/input/qms/V1.6.0_file1.qms.xml b/src/test/input/qms/V1.6.0_file1.qms.xml
new file mode 100644
index 0000000..c7c950f
--- /dev/null
+++ b/src/test/input/qms/V1.6.0_file1.qms.xml
@@ -0,0 +1,26 @@
+<expected>
+    <name>1.6.0 Test1</name>
+    <desc></desc>
+
+    <waypoints>
+        <waypoint name="maybe go here?" />
+    </waypoints>
+
+    <tracks>
+        <track name="Schausenbuck" colorIdx="13" colorName="Magenta" segcount="1" pointcount="128">
+            <colorSources>
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:slope"    />
+                <colorSource known="true" everypoint="false" derived="false" name="::ql:ele"      />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:progress" />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes>
+        <route name="avenue" pointcount="6" />
+    </routes>
+
+    <areas>
+        <area name="Zoo" colorIdx="14" colorName="Cyan" pointcount="40" />
+    </areas>
+</expected>
diff --git a/src/test/input/qms/V1.6.0_file2.qms b/src/test/input/qms/V1.6.0_file2.qms
new file mode 100644
index 0000000..4b9a82a
Binary files /dev/null and b/src/test/input/qms/V1.6.0_file2.qms differ
diff --git a/src/test/input/qms/V1.6.0_file2.qms.xml b/src/test/input/qms/V1.6.0_file2.qms.xml
new file mode 100644
index 0000000..3d287c2
--- /dev/null
+++ b/src/test/input/qms/V1.6.0_file2.qms.xml
@@ -0,0 +1,26 @@
+<expected>
+    <name>1.6.0 Test2</name>
+    <desc></desc>
+
+    <waypoints>
+        <waypoint name="Hut" />
+    </waypoints>
+
+    <tracks>
+        <track name="Glasersberg" colorIdx="4" colorName="DarkBlue" segcount="1" pointcount="153">
+            <colorSources>
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:slope"    />
+                <colorSource known="true" everypoint="false" derived="false" name="::ql:ele"      />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:progress" />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes>
+        <route name="highway" pointcount="4" />
+    </routes>
+
+    <areas>
+        <area name="?" colorIdx="4" colorName="DarkBlue" pointcount="3" />
+    </areas>
+</expected>
diff --git a/src/test/input/qtt_gpx_file0.gpx.xml b/src/test/input/qtt_gpx_file0.gpx.xml
deleted file mode 100644
index 4ff4300..0000000
--- a/src/test/input/qtt_gpx_file0.gpx.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<expected>
-    <name>QTTest gpx file 0</name>
-    <desc>QTTest gpx input file 0</desc>
-
-    <waypoints></waypoints>
-
-    <tracks>
-        <track name="Track" colorIdx="4" colorName="DarkBlue" segcount="1" pointcount="521">
-            <colorSources>
-                <colorSource name="::ql:slope"                              />
-                <colorSource name="::ql:speed"                              />
-                <colorSource name="::ql:ele"                                />
-                <colorSource name="::ql:progress"                           />
-                <colorSource name="gpxtpx:TrackPointExtension|gpxtpx:hr"    />
-                <colorSource name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
-            </colorSources>
-        </track>
-    </tracks>
-
-    <routes></routes>
-
-    <areas></areas>
-</expected>
diff --git a/src/test/input/qtt_slf_file0.slf.xml b/src/test/input/qtt_slf_file0.slf.xml
deleted file mode 100644
index c976fe7..0000000
--- a/src/test/input/qtt_slf_file0.slf.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<expected>
-    <name>qttest slf file 0</name>
-    <desc>QTTest .slf input file 0</desc>
-
-    <waypoints>
-        <waypoint name="Break 0" />
-        <waypoint name="Break 1" />
-        <waypoint name="Lap 0"   />
-    </waypoints>
-
-    <tracks>
-        <track name="[no name]" colorIdx="4" colorName="DarkBlue" segcount="2" pointcount="2764">
-            <colorSources>
-                <colorSource name="::ql:slope"                              />
-                <colorSource name="::ql:speed"                              />
-                <colorSource name="::ql:ele"                                />
-                <colorSource name="::ql:progress"                           />
-                <colorSource name="speed"                                   />
-                <colorSource name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
-            </colorSources>
-        </track>
-    </tracks>
-
-    <routes></routes>
-
-    <areas></areas>
-</expected>
diff --git a/src/test/input/qtt_slf_file0.slf b/src/test/input/slf/qtt_slf_file0.slf
similarity index 100%
rename from src/test/input/qtt_slf_file0.slf
rename to src/test/input/slf/qtt_slf_file0.slf
diff --git a/src/test/input/slf/qtt_slf_file0.slf.xml b/src/test/input/slf/qtt_slf_file0.slf.xml
new file mode 100644
index 0000000..e6f402a
--- /dev/null
+++ b/src/test/input/slf/qtt_slf_file0.slf.xml
@@ -0,0 +1,27 @@
+<expected>
+    <name>qttest slf file 0</name>
+    <desc>QTTest .slf input file 0</desc>
+
+    <waypoints>
+        <waypoint name="Break 0" />
+        <waypoint name="Break 1" />
+        <waypoint name="Lap 0"   />
+    </waypoints>
+
+    <tracks>
+        <track name="qttest slf file 0" colorIdx="4" colorName="DarkBlue" segcount="2" pointcount="2764">
+            <colorSources>
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:slope"                              />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:speed"                              />
+                <colorSource known="true" everypoint="false" derived="false" name="::ql:ele"                                />
+                <colorSource known="true" everypoint="false" derived="true"  name="::ql:progress"                           />
+                <colorSource known="true" everypoint="true"  derived="false" name="speed"                                   />
+                <colorSource known="true" everypoint="true"  derived="false" name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes></routes>
+
+    <areas></areas>
+</expected>
diff --git a/src/test/main.cpp b/src/test/main.cpp
index 8807b1a..89fa0bd 100644
--- a/src/test/main.cpp
+++ b/src/test/main.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -19,125 +19,59 @@
 #include <QDebug>
 #include <QTemporaryFile>
 
+#include "test/TestHelper.h"
 #include "test/test_QMapShack.h"
 
-#include "helpers/CAppSetup.h"
-#include "helpers/CCommandProcessor.h"
-#include "helpers/CSettings.h"
-#include "units/IUnit.h"
-
-#include "gis/trk/CKnownExtension.h"
-
+#include "gis/gpx/CGpxProject.h"
+#include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
+#include "gis/qms/CQmsProject.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/slf/CSlfProject.h"
+#include "gis/slf/CSlfReader.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "helpers/CSettings.h"
+#include "setup/IAppSetup.h"
 
-struct expectedWaypoint
-{
-    QString name;
-};
-
-struct expectedTrack
-{
-    QString name;
-    int colorIdx;
-    int segCount;
-    int ptCount;
-    QStringList colorSources;
-};
-
-CAppOpts *qlOpts;
 QString testInput;
 
 void test_QMapShack::initTestCase()
 {
-    CCommandProcessor cmdParse;
-    qlOpts = cmdParse.processOptions(QStringList(""));
+    IAppSetup* env = IAppSetup::getPlatformInstance();
+    env->processArguments();
+    env->initLogHandler();
+    env->initQMapShack();
 
     SETTINGS;
-    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
+    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), nullptr);
     CKnownExtension::init(IUnit::self());
 
     testInput = QCoreApplication::applicationDirPath() + "/input/";
-}
 
-QString test_QMapShack::getAttribute(const QDomNode &node, const QString &name)
-{
-    const QDomNamedNodeMap &attrs = node.attributes();
-    if(!attrs.contains(name))
+    inputFiles =
     {
-        QWARN( QString("Attribute `%1` does not exist in DomNode `%2`").arg(name).arg(node.nodeName()).toStdString().c_str() );
-        return QString();
-    }
-
-    return attrs.namedItem(name).nodeValue();
+        "qtt_gpx_file0.gpx"
+        , "gpx_ext_GarminTPX1_gpxtpx.gpx"
+        , "gpx_ext_GarminTPX1_tp1.gpx"
+        , "V1.6.0_file1.qms"
+        , "V1.6.0_file2.qms"
+    };
 }
 
-void test_QMapShack::verify(const QString &expectFile, const IGisProject &proj)
+void test_QMapShack::verify(expectedGisProject exp, const IGisProject &proj)
 {
-    QFile file(expectFile);
-
-    QDomDocument xml;
-    QString msg;
-    int line;
-    int column;
-    SUBVERIFY(xml.setContent(&file, false, &msg, &line, &column), QString("[%1:%2] %3").arg(expectFile).arg(line).arg(msg));
-
-    const QDomNode &exp = xml.namedItem("expected");
-
-    const QString &expName = exp.namedItem("name").firstChild().nodeValue();
-    const QString &expDesc = exp.namedItem("desc").firstChild().nodeValue();
-
-    QHash<QString, expectedWaypoint> expWpts;
-    const QDomNodeList &wptList = exp.namedItem("waypoints").childNodes();
-    for(int i = 0; i < wptList.length(); i++)
-    {
-        const QDomNode &node = wptList.item(i);
-
-        expectedWaypoint wpt;
-        wpt.name = node.attributes().namedItem("name").nodeValue();
-
-        expWpts.insert(wpt.name, wpt);
-    }
-
-    QHash<QString, expectedTrack> expTrks;
-    const QDomNodeList &trkList = exp.namedItem("tracks").childNodes();
-    for(int i = 0; i < trkList.length(); i++)
-    {
-        const QDomNode &node = trkList.item(i);
-
-        expectedTrack trk;
-        trk.name     = getAttribute(node, "name");
-        trk.segCount = getAttribute(node, "segcount"  ).toInt();
-        trk.ptCount  = getAttribute(node, "pointcount").toInt();
-        trk.colorIdx = getAttribute(node, "colorIdx"  ).toInt();
-
-        QStringList colorSources;
-        const QDomNodeList &extList = node.namedItem("colorSources").childNodes();
-        for(int j = 0; j < extList.length(); j++)
-        {
-            colorSources << getAttribute(extList.item(j), "name");
-        }
-        colorSources.sort();
-        trk.colorSources = colorSources;
-
-        expTrks.insert(trk.name, trk);
-    }
-
-    //const QDomNodeList &expRtes = exp.namedItem("routes"   ).childNodes(); TODO
-    //const QDomNodeList &expOvls = exp.namedItem("areas"    ).childNodes(); TODO
+    VERIFY_EQUAL(true,        proj.isValid());
+    VERIFY_EQUAL(exp.changed, proj.isChanged());
 
+    VERIFY_EQUAL(exp.name, proj.getName());
+    VERIFY_EQUAL(exp.desc, proj.getDescription());
 
-    VERIFY_EQUAL(true,  proj.isValid());
-    VERIFY_EQUAL(false, proj.isChanged());
-
-    VERIFY_EQUAL(expName, proj.getName());
-    VERIFY_EQUAL(expDesc, proj.getDescription());
-
-    VERIFY_EQUAL(expWpts.count(), proj.getItemCountByType(IGisItem::eTypeWpt));
-    VERIFY_EQUAL(expTrks.count(), proj.getItemCountByType(IGisItem::eTypeTrk));
-    VERIFY_EQUAL(0, proj.getItemCountByType(IGisItem::eTypeRte)); // TODO
-    VERIFY_EQUAL(0, proj.getItemCountByType(IGisItem::eTypeOvl)); // TODO
+    VERIFY_EQUAL(exp.wpts.count(), proj.getItemCountByType(IGisItem::eTypeWpt));
+    VERIFY_EQUAL(exp.trks.count(), proj.getItemCountByType(IGisItem::eTypeTrk));
+    VERIFY_EQUAL(exp.rtes.count(), proj.getItemCountByType(IGisItem::eTypeRte));
+    VERIFY_EQUAL(exp.ovls.count(), proj.getItemCountByType(IGisItem::eTypeOvl));
 
     for(int i = 0; i < proj.childCount(); i++)
     {
@@ -146,8 +80,8 @@ void test_QMapShack::verify(const QString &expectFile, const IGisProject &proj)
         CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(item);
         if(nullptr != wpt)
         {
-            VERIFY_EQUAL(true, expWpts.contains(wpt->getName()));
-            expWpts.remove(wpt->getName());
+            VERIFY_EQUAL(true, exp.wpts.contains(wpt->getName()));
+            exp.wpts.remove(wpt->getName());
 
             SUBVERIFY(wpt->getPosition() != QPointF(0., 0.), "Waypoint has position 0/0");
         }
@@ -157,18 +91,27 @@ void test_QMapShack::verify(const QString &expectFile, const IGisProject &proj)
         {
             const CGisItemTrk::trk_t &trk = itemTrk->getTrackData();
 
-            SUBVERIFY(expTrks.contains(itemTrk->getName()), QString("Found track `%1`, there shouldn't be any track with that name").arg(itemTrk->getName()));
+            SUBVERIFY(exp.trks.contains(itemTrk->getName()), QString("Found track `%1`, there shouldn't be any track with that name").arg(itemTrk->getName()));
 
-            const expectedTrack &expTrk = expTrks.take(itemTrk->getName());
+            const expectedTrack &expTrk = exp.trks.take(itemTrk->getName());
 
             int trkptCount = 0;
-            foreach(const CGisItemTrk::trkseg_t &seg, trk.segs)
+            for(const CGisItemTrk::trkseg_t &seg : trk.segs)
             {
                 trkptCount += seg.pts.count();
 
-                foreach(const CGisItemTrk::trkpt_t &trkpt, seg.pts)
+                for(const CGisItemTrk::trkpt_t &trkpt : seg.pts)
                 {
                     SUBVERIFY((0. != trkpt.lat) || (0. != trkpt.lon), "Trackpoint has position 0/0");
+
+                    for(const QString &key : expTrk.extensions.keys())
+                    {
+                        VERIFY_EQUAL(CKnownExtension::isKnown(key), expTrk.extensions[key].known);
+                        if(expTrk.extensions[key].everyPoint)
+                        {
+                            SUBVERIFY(trkpt.extensions.contains(key), QString("Missing extension `%1`on trackpoint").arg(key));
+                        }
+                    }
                 }
             }
 
@@ -177,24 +120,125 @@ void test_QMapShack::verify(const QString &expectFile, const IGisProject &proj)
             VERIFY_EQUAL(expTrk.colorIdx, itemTrk->getColorIdx());
 
             QStringList existingSources = itemTrk->getExistingDataSources();
-            existingSources.sort();
-            SUBVERIFY(expTrk.colorSources == existingSources, "Expected and existing list of colorSources do not match");
+            for(const QString &ext : expTrk.extensions.keys())
+            {
+                SUBVERIFY(existingSources.contains(ext), QString("Missing extension `%1`").arg(ext));
+                existingSources.removeOne(ext);
+            }
+            SUBVERIFY(existingSources.isEmpty(), "existingSources is not empty");
+        }
+
+        CGisItemRte *itemRte = dynamic_cast<CGisItemRte*>(item);
+        if(nullptr != itemRte)
+        {
+            SUBVERIFY(exp.rtes.contains(itemRte->getName()), QString("Found route `%1`, there shouldn't be any route with that name").arg(itemRte->getName()));
+            const CGisItemRte::rte_t &rte = itemRte->getRoute();
+
+            const expectedRoute &expRte = exp.rtes.take(itemRte->getName());
+
+            VERIFY_EQUAL(expRte.ptCount, rte.pts.size());
+        }
+
+        CGisItemOvlArea *itemOvl = dynamic_cast<CGisItemOvlArea*>(item);
+        if(nullptr != itemOvl)
+        {
+            SUBVERIFY(exp.ovls.contains(itemOvl->getName()), QString("Found area `%1`, there shouldn't be any area with that name").arg(itemOvl->getName()));
+
+            const expectedArea &expOvl = exp.ovls.take(itemOvl->getName());
+            VERIFY_EQUAL(expOvl.colorIdx, itemOvl->getColorIdx());
+
+            const CGisItemOvlArea::area_t &area = itemOvl->getAreaData();
+            VERIFY_EQUAL(expOvl.ptCount, area.pts.size());
         }
     }
 
     // ensure all expected waypoints/tracks actually exist
-    SUBVERIFY(expWpts.isEmpty(), "Not all expected waypoints found");
-    SUBVERIFY(expTrks.isEmpty(), "Not all expected tracks found");
+    SUBVERIFY(exp.wpts.isEmpty(), "Not all expected waypoints found");
+    SUBVERIFY(exp.trks.isEmpty(), "Not all expected tracks found");
+    SUBVERIFY(exp.rtes.isEmpty(), "Not all expected routes found");
+    SUBVERIFY(exp.ovls.isEmpty(), "Not all expected areas found");
+}
+
+void test_QMapShack::verify(const QString &projFile, const IGisProject &proj)
+{
+    expectedGisProject exp = TestHelper::readExpProj(fileToPath(projFile) + ".xml");
+    verify(exp, proj);
+}
+
+void test_QMapShack::verify(const QString &projFile)
+{
+    IGisProject        *proj = readProjFile(projFile);
+    expectedGisProject exp  = TestHelper::readExpProj(fileToPath(projFile) + ".xml");
+
+    verify(exp, *proj);
+    delete proj;
+}
+
+QString test_QMapShack::fileToPath(const QString &file)
+{
+    if(!QFileInfo(file).exists())
+    {
+        return testInput + "/" + file.right(3) + "/" + file;
+    }
+    return file;
 }
 
-QString test_QMapShack::getTempFileName(const QString &ext)
+IGisProject* test_QMapShack::readProjFile(const QString &file, bool valid, bool forceVerify)
 {
-    QTemporaryFile tmp("qtt_XXXXXX." + ext);
-    tmp.open();
-    QString tempFile = tmp.fileName();
-    tmp.remove();
+    IGisProject *proj = nullptr;
+
+    try
+    {
+        if(file.endsWith(".gpx"))
+        {
+            CGpxProject *gpxProj = new CGpxProject("a very random string to prevent loading via constructor", (CGisListWks*) nullptr);
+            gpxProj->blockUpdateItems(true);
+            CGpxProject::loadGpx(fileToPath(file), gpxProj);
+            gpxProj->blockUpdateItems(false);
+            proj = gpxProj;
+            SUBVERIFY(IGisProject::eTypeGpx == proj->getType(), "Project has invalid type");
+        }
+        else if(file.endsWith(".qms"))
+        {
+            proj = new CQmsProject(fileToPath(file), (CGisListWks*) nullptr);
+            SUBVERIFY(IGisProject::eTypeQms == proj->getType(), "Project has invalid type");
+        }
+        else if(file.endsWith(".slf"))
+        {
+            CSlfProject *slfProj = new CSlfProject("a very random string to prevent loading via constructor", false);
+            proj = slfProj;
+            CSlfReader::readFile(fileToPath(file), slfProj);
+            SUBVERIFY(IGisProject::eTypeSlf == proj->getType(), "Project has invalid type");
+        }
+        else
+        {
+            SUBVERIFY(false, "Internal error: Can't read project file `" + file + "`");
+        }
+    }
+    catch(QString &errormsg)
+    {
+        SUBVERIFY(!valid, "Expected `" + file + "` to be valid, error while reading: " + errormsg);
+        if(proj)
+        {
+            delete proj;
+            proj = nullptr;
+        }
+    }
+
+    SUBVERIFY(valid || nullptr == proj, "File is neither valid, nor an exception was thrown");
+
+    if(nullptr != proj)
+    {
+        const QString &projPath = fileToPath(file);
+        SUBVERIFY(QFile(projPath + ".xml").exists() || !forceVerify, "Can't verify file `" + file + "`, .xml does not exist");
+
+        if(QFile(projPath + ".xml").exists())
+        {
+            verify(file, *proj);
+        }
+    }
 
-    return tempFile;
+    return proj;
 }
 
 QTEST_MAIN(test_QMapShack)
diff --git a/src/test/test_QMapShack.h b/src/test/test_QMapShack.h
index 1ca1c64..8e6688d 100644
--- a/src/test/test_QMapShack.h
+++ b/src/test/test_QMapShack.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -17,17 +17,16 @@
 **********************************************************************************************/
 
 #include <QTest>
-class IGisProject;
-class QDomNode;
+#include <QtCore>
 
-extern QString testInput;
+#include "test/TestHelper.h"
 
-#define SUBVERIFY(EXPR, MSG) \
-    { if(!(EXPR)) { throw QString("Verification of `%1` failed: %2").arg(#EXPR).arg(MSG); } \
-    }
+class IGisProject;
+class CGpxProject;
+class CQmsProject;
+class CSlfProject;
 
-#define VERIFY_EQUAL(EXP, ACT) \
-    SUBVERIFY( (EXP == ACT), QTest::toString(QString("Expected `%1`, got `%2`").arg(EXP).arg(ACT)) );
+extern QString testInput;
 
 #define TCWRAPPER( CALL ) { try { CALL; } catch(QString &error) { QFAIL(error.toStdString().c_str()); } \
 }
@@ -37,25 +36,46 @@ class test_QMapShack : public QObject
     Q_OBJECT
 
     QString testInput;
+    QList<QString> inputFiles;
 
     void verify(const QString &expectFile, const IGisProject &proj);
+    void verify(expectedGisProject exp, const IGisProject &proj);
+    void verify(const QString &projFile);
 
+    QString fileToPath(const QString &file);
 
-    /// helper functions
-    QString getAttribute(const QDomNode &node, const QString &name);
-    QString getTempFileName(const QString &ext);
+    IGisProject* readProjFile(const QString &file, bool valid = true, bool forceVerify = true);
 
-    /// CSlfReader
-    void readValidSLFFile();
-    void readNonExistingSLFFile();
+    // CSlfReader
+    void _readValidSLFFile();
+    void _readNonExistingSLFFile();
 
     // CGpxProject
-    void readWriteGPXFile();
+    void writeReadGpxFile(const QString &file);
+    void _writeReadGpxFile();
+
+    // CKnownExtension
+    void _readExtGarminTPX1_tp1();
+    void _readExtGarminTPX1_gpxtpx();
+
+    void readExtGarminTPX1(const QString &file, const QString &ns);
+
+    // CQmsProject
+    void _readQmsFile_1_6_0();
+    void _writeReadQmsFile();
+
+    // CGisItemTrk
+    void _filterDeleteExtension();
 
 private slots:
     void initTestCase();
 
-    void _readValidSLFFile()       { TCWRAPPER( readValidSLFFile()       ) }
-    void _readNonExistingSLFFile() { TCWRAPPER( readNonExistingSLFFile() ) }
-    void _readWriteGPXFile()       { TCWRAPPER( readWriteGPXFile()       ) }
+    void readValidSLFFile()         { TCWRAPPER( _readValidSLFFile()         ) }
+    void readNonExistingSLFFile()   { TCWRAPPER( _readNonExistingSLFFile()   ) }
+    void writeReadGpxFile()         { TCWRAPPER( _writeReadGpxFile()         ) }
+    void readQmsFile_1_6_0()        { TCWRAPPER( _readQmsFile_1_6_0()        ) }
+    void writeReadQmsFile()         { TCWRAPPER( _writeReadQmsFile()         ) }
+    void readExtGarminTPX1_gpxtpx() { TCWRAPPER( _readExtGarminTPX1_gpxtpx() ) }
+    void readExtGarminTPX1_tp1()    { TCWRAPPER( _readExtGarminTPX1_tp1()    ) }
+    void filterDeleteExtension()    { TCWRAPPER( _filterDeleteExtension()    ) }
 };
diff --git a/src/tool/CMapVrtBuilder.cpp b/src/tool/CMapVrtBuilder.cpp
index dc473ad..af05535 100644
--- a/src/tool/CMapVrtBuilder.cpp
+++ b/src/tool/CMapVrtBuilder.cpp
@@ -54,7 +54,7 @@ void CMapVrtBuilder::slotSelectSourceFiles()
     cfg.setValue("VrtBuilder/sourcePath", path);
 
     listWidget->clear();
-    foreach(const QString &file, files)
+    for(const QString &file : files)
     {
         new QListWidgetItem(QIcon("://icons/32x32/Map.png"), file, listWidget);
     }
@@ -99,7 +99,7 @@ void CMapVrtBuilder::slotStart()
     QStringList args;
     args << labelTargetFilename->text();
 
-    foreach(const QListWidgetItem * item, listWidget->findItems("*", Qt::MatchWildcard))
+    for(const QListWidgetItem * item : listWidget->findItems("*", Qt::MatchWildcard))
     {
         args << item->text();
     }
@@ -113,5 +113,4 @@ void CMapVrtBuilder::finished(int exitCode, QProcess::ExitStatus status)
     textBrowser->setTextColor(Qt::darkGreen);
     textBrowser->append(tr("!!! done !!!\n"));
     pushStart->setEnabled(true);
-    return;
 }
diff --git a/src/tool/CRoutinoDatabaseBuilder.cpp b/src/tool/CRoutinoDatabaseBuilder.cpp
index 78184cd..7c30be7 100644
--- a/src/tool/CRoutinoDatabaseBuilder.cpp
+++ b/src/tool/CRoutinoDatabaseBuilder.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "helpers/CAppSetup.h"
 #include "helpers/CSettings.h"
+#include "setup/IAppSetup.h"
 
 #include "tool/CRoutinoDatabaseBuilder.h"
 
@@ -64,7 +64,7 @@ void CRoutinoDatabaseBuilder::slotSelectSourceFiles()
     cfg.setValue("RoutinoDatabaseBuilder/sourcePath", path);
 
     listWidget->clear();
-    foreach(const QString &file, files)
+    for(const QString &file : files)
     {
         new QListWidgetItem(QIcon("://icons/32x32/Map.png"), file, listWidget);
     }
@@ -118,7 +118,7 @@ void CRoutinoDatabaseBuilder::slotStart()
     pushStart->setDisabled(true);
 
     sourceFiles.clear();
-    foreach(const QListWidgetItem * item, listWidget->findItems("*", Qt::MatchWildcard))
+    for(const QListWidgetItem * item : listWidget->findItems("*", Qt::MatchWildcard))
     {
         sourceFiles << item->text();
     }
@@ -143,7 +143,7 @@ void CRoutinoDatabaseBuilder::finished(int exitCode, QProcess::ExitStatus status
         return;
     }
 
-    CAppSetup* instance = CAppSetup::getPlattformInstance();
+    IAppSetup* instance = IAppSetup::getPlatformInstance();
     if(sourceFiles.isEmpty())
     {
         QStringList args;
diff --git a/src/units/CCoordFormatSetup.cpp b/src/units/CCoordFormatSetup.cpp
index 28bffb9..69c7be3 100644
--- a/src/units/CCoordFormatSetup.cpp
+++ b/src/units/CCoordFormatSetup.cpp
@@ -24,8 +24,7 @@ CCoordFormatSetup::CCoordFormatSetup(QWidget * parent)
 {
     setupUi(this);
 
-    IUnit::coord_format_e coordFormat;
-    IUnit::getCoordFormat(coordFormat);
+    IUnit::coord_format_e coordFormat = IUnit::getCoordFormat();
     switch(coordFormat)
     {
     case IUnit::eCoordFormat1:
diff --git a/src/units/CUnitImperial.cpp b/src/units/CUnitImperial.cpp
index b69f167..f38c73f 100644
--- a/src/units/CUnitImperial.cpp
+++ b/src/units/CUnitImperial.cpp
@@ -19,13 +19,12 @@
 
 #include "units/CUnitImperial.h"
 
-CUnitImperial::CUnitImperial(QObject * parent)
-    : IUnit(eTypeImperial, "ft", 3.28084, "ml/h", 2.23693164, parent)
-{
-}
-
+const qreal CUnitImperial::footPerMeter = 3.28084;
+const qreal CUnitImperial::milePerMeter = 0.6213699E-3;
+const qreal CUnitImperial::meterPerSecToMilePerHour = 2.23693164;
 
-CUnitImperial::~CUnitImperial()
+CUnitImperial::CUnitImperial(QObject * parent)
+    : IUnit(eTypeImperial, "ft", footPerMeter, "ml/h", meterPerSecToMilePerHour, parent)
 {
 }
 
@@ -39,7 +38,7 @@ void CUnitImperial::meter2elevation(qreal meter, QString& val, QString& unit) co
     }
     else
     {
-        val.sprintf("%1.0f", meter * 3.28084);
+        val.sprintf("%1.0f", meter * footPerMeter);
         unit = "ft";
     }
 }
@@ -54,27 +53,27 @@ void CUnitImperial::meter2distance(qreal meter, QString& val, QString& unit) con
     }
     else if(meter < 10)
     {
-        val.sprintf("%1.1f", meter * 3.28084);
+        val.sprintf("%1.1f", meter * footPerMeter);
         unit = "ft";
     }
     else if(meter < 1600)
     {
-        val.sprintf("%1.0f", meter * 3.28084);
+        val.sprintf("%1.0f", meter * footPerMeter);
         unit = "ft";
     }
     else if(meter < 16000)
     {
-        val.sprintf("%1.2f", meter * 0.6213699E-3);
+        val.sprintf("%1.2f", meter * milePerMeter);
         unit = "ml";
     }
     else if(meter < 32000)
     {
-        val.sprintf("%1.1f", meter * 0.6213699E-3);
+        val.sprintf("%1.1f", meter * milePerMeter);
         unit = "ml";
     }
     else
     {
-        val.sprintf("%1.0f", meter * 0.6213699E-3);
+        val.sprintf("%1.0f", meter * milePerMeter);
         unit = "ml";
     }
 }
@@ -88,14 +87,27 @@ void CUnitImperial::meter2area(qreal meter, QString& val, QString& unit) const /
     }
     else
     {
-        val.sprintf("%1.2f", meter / (1/0.6213699E-3 * 1/0.6213699E-3));
+        val.sprintf("%1.2f", meter / (1/milePerMeter * 1/milePerMeter));
         unit = "ml²";
     }
 }
 
-
-
 qreal CUnitImperial::elevation2meter(const QString& val) const /* override */
 {
-    return val.toDouble() / 3.28084;
+    return val.toDouble() / footPerMeter;
+}
+
+void CUnitImperial::meter2unit(qreal meter, qreal& scale, QString&  unit) const
+{
+    if(meter > 1600)
+    {
+        scale = milePerMeter;
+        unit  = "ml";
+    }
+    else
+    {
+        scale = footPerMeter;
+        unit  = "ft";
+    }
 }
+
diff --git a/src/units/CUnitImperial.h b/src/units/CUnitImperial.h
index ff9c252..e400159 100644
--- a/src/units/CUnitImperial.h
+++ b/src/units/CUnitImperial.h
@@ -23,15 +23,19 @@
 
 class CUnitImperial : public IUnit
 {
-    Q_OBJECT
 public:
     CUnitImperial(QObject * parent);
-    virtual ~CUnitImperial();
+    virtual ~CUnitImperial() = default;
 
     void meter2elevation(qreal meter, QString& val, QString& unit) const override;
     void meter2distance(qreal meter, QString& val, QString& unit) const override;
     void meter2area(qreal meter, QString& val, QString& unit) const override;
-
     qreal elevation2meter(const QString& val) const override;
+    void meter2unit(qreal meter, qreal& scale, QString&  unit) const override;
+
+private:
+    static const qreal footPerMeter;
+    static const qreal milePerMeter;
+    static const qreal meterPerSecToMilePerHour;
 };
 #endif //CUNITIMPERIAL_H
diff --git a/src/units/CUnitMetric.cpp b/src/units/CUnitMetric.cpp
index b5a92a4..4398eef 100644
--- a/src/units/CUnitMetric.cpp
+++ b/src/units/CUnitMetric.cpp
@@ -24,11 +24,6 @@ CUnitMetric::CUnitMetric(QObject * parent)
 }
 
 
-CUnitMetric::~CUnitMetric()
-{
-}
-
-
 void CUnitMetric::meter2elevation(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT || meter == NOINT)
@@ -121,3 +116,17 @@ qreal CUnitMetric::elevation2meter(const QString& val) const /* override */
 {
     return val.toDouble();
 }
+
+void CUnitMetric::meter2unit(qreal meter, qreal& scale, QString&  unit) const
+{
+    if(meter > 1000)
+    {
+        scale = 0.001;
+        unit  = "km";
+    }
+    else
+    {
+        scale = 1.0;
+        unit  = "m";
+    }
+}
diff --git a/src/units/CUnitMetric.h b/src/units/CUnitMetric.h
index 960ff5e..3f8c74a 100644
--- a/src/units/CUnitMetric.h
+++ b/src/units/CUnitMetric.h
@@ -23,16 +23,15 @@
 
 class CUnitMetric : public IUnit
 {
-    Q_OBJECT
 public:
     CUnitMetric(QObject * parent);
-    virtual ~CUnitMetric();
+    virtual ~CUnitMetric() = default;
 
     void meter2elevation(qreal meter, QString& val, QString& unit) const override;
     void meter2distance(qreal meter, QString& val, QString& unit) const override;
     void meter2speed(qreal meter, QString& val, QString& unit) const override;
     void meter2area(qreal meter, QString& val, QString& unit) const override;
-
     qreal elevation2meter(const QString& val) const override;
+    void meter2unit(qreal meter, qreal& scale, QString&  unit) const override;
 };
-#endif                           //CUNITMETRIC_H
+#endif // CUNITMETRIC_H
diff --git a/src/units/CUnitNautic.cpp b/src/units/CUnitNautic.cpp
index 8718577..d4f2a99 100644
--- a/src/units/CUnitNautic.cpp
+++ b/src/units/CUnitNautic.cpp
@@ -25,11 +25,6 @@ CUnitNautic::CUnitNautic(QObject * parent)
 }
 
 
-CUnitNautic::~CUnitNautic()
-{
-}
-
-
 void CUnitNautic::meter2elevation(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
@@ -93,3 +88,9 @@ qreal CUnitNautic::elevation2meter(const QString& val) const /* override */
 {
     return val.toDouble();
 }
+
+void CUnitNautic::meter2unit(qreal meter, qreal& scale, QString&  unit) const
+{
+    scale = basefactor;
+    unit  = "nm";
+}
diff --git a/src/units/CUnitNautic.h b/src/units/CUnitNautic.h
index bfe8886..d3afc9e 100644
--- a/src/units/CUnitNautic.h
+++ b/src/units/CUnitNautic.h
@@ -23,16 +23,15 @@
 
 class CUnitNautic : public IUnit
 {
-    Q_OBJECT
 public:
     CUnitNautic(QObject * parent);
-    virtual ~CUnitNautic();
+    virtual ~CUnitNautic() = default;
 
     void meter2elevation(qreal meter, QString& val, QString& unit) const override;
     void meter2distance(qreal meter, QString& val, QString& unit) const override;
     void meter2speed(qreal meter, QString& val, QString& unit) const override;
     void meter2area(qreal meter, QString& val, QString& unit) const override;
-
     qreal elevation2meter(const QString& val) const override;
+    void meter2unit(qreal meter, qreal& scale, QString&  unit) const override;
 };
 #endif //CUNITNAUTIC_H
diff --git a/src/units/CUnitsSetup.cpp b/src/units/CUnitsSetup.cpp
index 6689b78..8d083f6 100644
--- a/src/units/CUnitsSetup.cpp
+++ b/src/units/CUnitsSetup.cpp
@@ -41,10 +41,6 @@ CUnitsSetup::CUnitsSetup(QWidget *parent)
     }
 }
 
-CUnitsSetup::~CUnitsSetup()
-{
-}
-
 void CUnitsSetup::accept()
 {
     if(radioMetric->isChecked())
diff --git a/src/units/CUnitsSetup.h b/src/units/CUnitsSetup.h
index 615a4cb..765f796 100644
--- a/src/units/CUnitsSetup.h
+++ b/src/units/CUnitsSetup.h
@@ -25,7 +25,7 @@ class CUnitsSetup : public QDialog, private Ui::IUnitsSetup
 {
 public:
     CUnitsSetup(QWidget * parent);
-    virtual ~CUnitsSetup();
+    virtual ~CUnitsSetup() = default;
 
 public slots:
     void accept() override;
diff --git a/src/units/IUnit.cpp b/src/units/IUnit.cpp
index 21d9d81..61de648 100644
--- a/src/units/IUnit.cpp
+++ b/src/units/IUnit.cpp
@@ -24,7 +24,7 @@
 
 #include <QtWidgets>
 #include <proj_api.h>
-IUnit * IUnit::m_self = nullptr;
+const IUnit * IUnit::m_self = nullptr;
 
 const QPointF NOPOINTF(NOFLOAT, NOFLOAT);
 const QPoint NOPOINT (NOINT, NOINT);
@@ -421,15 +421,15 @@ const char * IUnit::tblTimezone[] =
 
 const int N_TIMEZONES = sizeof(IUnit::tblTimezone)/sizeof(const char*);
 
-QRegExp IUnit::reCoord1("^\\s*([N|S]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s+([E|W|O]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s*$");
+const QRegExp IUnit::reCoord1("^\\s*([N|S]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s+([E|W|O]){1}\\W*([0-9]+)\\W*([0-9]+\\.[0-9]+)\\s*$");
 
-QRegExp IUnit::reCoord2("^\\s*([N|S]){1}\\s*([0-9]+\\.[0-9]+)\\W*\\s+([E|W|O]){1}\\s*([0-9]+\\.[0-9]+)\\W*\\s*$");
+const QRegExp IUnit::reCoord2("^\\s*([N|S]){1}\\s*([0-9]+\\.[0-9]+)\\W*\\s+([E|W|O]){1}\\s*([0-9]+\\.[0-9]+)\\W*\\s*$");
 
-QRegExp IUnit::reCoord3("^\\s*([-0-9]+\\.[0-9]+)\\s+([-0-9]+\\.[0-9]+)\\s*$");
+const QRegExp IUnit::reCoord3("^\\s*([-0-9]+\\.[0-9]+)\\s+([-0-9]+\\.[0-9]+)\\s*$");
 
-QRegExp IUnit::reCoord4("^\\s*([N|S]){1}\\s*([0-9]+)\\W+([0-9]+)\\W+([0-9]+\\.[0-9]+)\\W*([E|W|O]){1}\\W*([0-9]+)\\W+([0-9]+)\\W+([0-9]+\\.[0-9]+)\\W*\\s*$");
+const QRegExp IUnit::reCoord4("^\\s*([N|S]){1}\\s*([0-9]+)\\W+([0-9]+)\\W+([0-9]+\\.[0-9]+)\\W*([E|W|O]){1}\\W*([0-9]+)\\W+([0-9]+)\\W+([0-9]+\\.[0-9]+)\\W*\\s*$");
 
-QRegExp IUnit::reCoord5("^\\s*([-0-9]+\\.[0-9]+)([N|S])\\s+([-0-9]+\\.[0-9]+)([W|E])\\s*$");
+const QRegExp IUnit::reCoord5("^\\s*([-0-9]+\\.[0-9]+)([N|S])\\s+([-0-9]+\\.[0-9]+)([W|E])\\s*$");
 
 IUnit::IUnit(const type_e &type, const QString& baseunit, const qreal basefactor, const QString& speedunit, const qreal speedfactor, QObject * parent)
     : QObject(parent)
@@ -440,7 +440,7 @@ IUnit::IUnit(const type_e &type, const QString& baseunit, const qreal basefactor
     , speedfactor(speedfactor)
 {
     //there can be only one...
-    if(m_self)
+    if(nullptr != m_self)
     {
         delete m_self;
     }
@@ -448,10 +448,6 @@ IUnit::IUnit(const type_e &type, const QString& baseunit, const qreal basefactor
 }
 
 
-IUnit::~IUnit()
-{
-}
-
 void IUnit::setUnitType(type_e t, QObject * parent)
 {
     switch(t)
@@ -639,11 +635,8 @@ void IUnit::degToStr(const qreal& x, const qreal& y, QString& str)
 
     case eCoordFormat2:
     {
-        bool signLat = y < 0;
-        bool signLon = x < 0;
-
-        const QString &lat = signLat ? "S" : "N";
-        const QString &lng = signLon ? "W" : "E";
+        const QString &lat = (y < 0) ? "S" : "N";
+        const QString &lng = (x < 0) ? "W" : "E";
         str.sprintf("%s%02.6f° %s%03.6f°",lat.toUtf8().data(),qAbs(y),lng.toUtf8().data(),qAbs(x));
         break;
     }
@@ -767,8 +760,5 @@ bool IUnit::isValidCoordString(const QString& str)
     {
         return true;
     }
-    else
-    {
-        return false;
-    }
+    return false;
 }
diff --git a/src/units/IUnit.h b/src/units/IUnit.h
index 382f534..a6b0967 100644
--- a/src/units/IUnit.h
+++ b/src/units/IUnit.h
@@ -34,9 +34,9 @@ class IUnit : public QObject
 {
     Q_OBJECT
 public:
-    virtual ~IUnit();
+    virtual ~IUnit() = default;
 
-    static IUnit& self()
+    static const IUnit& self()
     {
         return *m_self;
     }
@@ -51,14 +51,15 @@ public:
     virtual void meter2area(qreal meter, QString& val, QString& unit) const = 0;
     /// convert seconds to a timespan of days, hours, minutes and seconds
     virtual void seconds2time(quint32 ttime, QString& val, QString& unit) const;
-
     /// convert an elevation string to a float
     virtual qreal elevation2meter(const QString& val) const = 0;
+    /// convert a range in meter into a scale and a matching unit
+    virtual void meter2unit(qreal meter, qreal& scale, QString&  unit) const  = 0;
 
 
     enum type_e {eTypeMetric, eTypeImperial, eTypeNautic};
     /// instantiate the correct unit object
-    static void setUnitType(type_e t, QObject *parent);
+    static void setUnitType(type_e t, QObject * parent);
 
     /// parse a string for a timestamp
     static bool parseTimestamp(const QString &time, QDateTime &datetime);
@@ -113,9 +114,9 @@ public:
         ,eCoordFormat3
     };
 
-    static void getCoordFormat(coord_format_e& format)
+    static enum coord_format_e getCoordFormat()
     {
-        format = coordFormat;
+        return coordFormat;
     }
 
     static void setCoordFormat(const coord_format_e format)
@@ -123,21 +124,14 @@ public:
         coordFormat = format;
     }
 
-
     static void degToStr(const qreal& x, const qreal& y, QString& str);
 
     static bool strToDeg(const QString& str, qreal& lon, qreal& lat);
 
     static bool isValidCoordString(const QString& str);
 
-    static QRegExp reCoord1;
-    static QRegExp reCoord2;
-    static QRegExp reCoord3;
-    static QRegExp reCoord4;
-    static QRegExp reCoord5;
-
 protected:
-    IUnit(const type_e& type, const QString& baseunit, const qreal basefactor, const QString& speedunit, const qreal speedfactor, QObject * parent);
+    IUnit(const type_e& type, const QString& baseunit, const qreal basefactor, const QString& speedunit, const qreal speedfactor, QObject *parent);
 
     static QDateTime parseTimestamp(const QString &timetext, int& tzoffset);
 
@@ -148,6 +142,12 @@ protected:
     static coord_format_e coordFormat;
 
 private:
-    static IUnit * m_self;
+    static const IUnit * m_self;
+
+    static const QRegExp reCoord1;
+    static const QRegExp reCoord2;
+    static const QRegExp reCoord3;
+    static const QRegExp reCoord4;
+    static const QRegExp reCoord5;
 };
 #endif //IUNIT_H
diff --git a/src/widgets/CHistoryListWidget.cpp b/src/widgets/CHistoryListWidget.cpp
index e7a504c..180a52c 100644
--- a/src/widgets/CHistoryListWidget.cpp
+++ b/src/widgets/CHistoryListWidget.cpp
@@ -47,7 +47,7 @@ void CHistoryListWidget::setupHistory(IGisItem& gisItem)
 
     const IGisItem::history_t& history = gisItem.getHistory();
 
-    //foreach(const IGisItem::history_event_t& event, history.events)
+    //for(const IGisItem::history_event_t& event : history.events)
     for(int i = 0; i < history.events.size(); i++)
     {
         const IGisItem::history_event_t& event = history.events[i];
diff --git a/src/widgets/CPhotoAlbum.cpp b/src/widgets/CPhotoAlbum.cpp
index acc92fc..81e2ebb 100644
--- a/src/widgets/CPhotoAlbum.cpp
+++ b/src/widgets/CPhotoAlbum.cpp
@@ -44,7 +44,7 @@ void CPhotoAlbum::resizeEvent(QResizeEvent * e)
 
 void CPhotoAlbum::mouseReleaseEvent(QMouseEvent * e)
 {
-    CPhotoViewer dlg(images, 0,this);
+    CPhotoViewer dlg(images, 0, this);
     dlg.exec();
 
     e->accept();
@@ -75,7 +75,7 @@ void CPhotoAlbum::slotAddImage()
     {
         return;
     }
-    foreach(const QString &filename, filenames)
+    for(const QString &filename : filenames)
     {
         CGisItemWpt::image_t image;
         image.fileName = filename;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qmapshack.git



More information about the Pkg-grass-devel mailing list